Если вы сисадмин Linux или разработчик, то приходит время, когда вам потребуется управление базой данных Oracle, которая может работать в вашей среде.
В этом случае важно, чтобы понять некоторые основные DBA деятельности Oracle. В этом уроке мы расскажем, как создать базу данных Oracle из командной строки.
При установке программного обеспечения Oracle, даст вам возможность создать новую базу данных из пользовательского интерфейса.
Если вы решили не создавать новую базу данных, а установить только программное обеспечение Oracle, то вы можете потом создать базу данных отдельно.
Для того, чтобы создать базу данных Oracle, у вас есть два варианта:
- Использование базы данных конфигурации помощник (DBCA) и создать новую базу данных с помощью графического интерфейса. Это довольно прямо.
- Использовать команду «Create Database», чтобы создать новую базу данных Oracle из командной строки. Этот метод полезен, когда вы не имеете доступ к консоли сервера для запуска DBCA. Или, если ваш сервер не имеет правильных настроек Xterm, используйте этот метод.
1. Настройка соответствующих переменных среды Oracle
Во-первых, вы должны установить соответствующую переменную среды на сервере правильно.
В этом примере предполагается, что оракул установлен в каталоге /u01/app/oracle/product. Измените это значение в соответствии с вашей средой.
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0
Наиболее важным параметром является ORACLE_SID, которая будет иметь имя новой базы данных Oracle, который вы хотите создать. В этом примере имя новой базы данных установлено в положении «dev», как показано ниже.
export ORACLE_SID=dev
2. Создание файла ini-initdev.ora
Затем создайте файл ora.ini для новой базы данных. Это файл инициализации для новой базы данных.
В зависимости от версии вашей Oracle, вы можете увидеть образец файла init.ora в $ ORACLE_HOME. Если у вас есть, используйте его в качестве базового и отредактируйте соответствующие значения.
cd $ORACLE_HOME/dbs cp init.ora initdev.ora
Если вы не видите шаблон по умолчанию init.ora в вашем $ORACLE_HOME/DBS, используйте следующий образец.
*.db_name='dev' *.db_domain='' *.audit_file_dest='/u01/app/oracle/admin/dev/adump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.memory_target=1G *.control_files='/u01/app/oracle/oradata/dev/control01.ctl','/home/oracle/u02/oradata/dev/control02.ctl' *.db_block_size=8192 *.diagnostic_dest='/u01/app/oracle/admin/dev' *.open_cursors=250 *.processes=100 *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace='UNDOTS'
Несколько пунктов необходимо рассмотреть в указанном файле:
- В указанном файле, убедитесь, что вы установите db_name на имя ORACLE_SID, установленной в предыдущем шаге
- Как бы ни называлось undo_tablespace, мы указываем, что должны использовать точное название в команде CREATE DATABASE.
- Изменение расположения каталогов надлежащим образом, основываясь на вашей системе. Не забудьте изменить «dev» в вышеуказанном каталоге на ваше имя ORACLE_SID.
3. Создание Serve Parameter file (spfile)
SP файл означает файл параметров сервера. В отличие от файла sp, инициализация файла ведется в двоичном файле, и вы не можете отредактировать SPFILE вручную.
Файл sp создается из ini файла. Преимущество sp-файла является то, что вы можете изменить значение параметров инициализации после запуска базы данных с помощью команды ALTER SYSTEM.
Другими словами, при использовании команды «ALTER SYSTEM» для изменения любого значения параметра, он сохраняет их в файле sp.
Затем, при запуске базы данных Oracle, он сначала ищет файл sp для значения параметра. Если он не может найти файл sp, то он будет использовать текст на основе ini-файла.
Чтобы создать файл sp для нашей новой базы данных, используйте следующую команду.
Во-первых, используйте команду sqlplus и получить приглашение SYSDBA Oracle, откуда мы создадим новую базу данных.
$ sqlplus / as sysdba Connected to an idle instance. SQL>
Если вы заметили в выводе выше, он говорит: «Connected to an idle instance.». Это происходит потому, что наш текущий ORACLE_SID установлен dev, который представляет собой новую базу данных, которую мы еще не создали.
Таким образом, первый шаг заключается в создании нового файла sp, основанный на ini-файле. spfile означает ini файл. Следующая команда создаст новый spfile.
SQL> CREATE SPFILE FROM PFILE; File created.
Как вы видите ниже, команда автоматически создала spfiledev.ora.
$ ls -1 $ORACLE_HOME/dbs/ initdev.ora spfiledev.ora
4. Запустите Idle Instance
Перед тем, как создать базу данных, мы должны запустить экземпляр для базы данных «dev» с помощью команды STARTUP NOMOUNT. Как вы, возможно, уже догадались, эта команда не будет подключена к базе данных. Это просто начать новый пустой простой экземпляр ORACLE_SID с именем «dev».
SQL> STARTUP NOMOUNT; ORACLE instance started. Total System Global Area 1258291200 bytes Fixed Size 1261564 bytes Variable Size 520093700 bytes Database Buffers 721420288 bytes Redo Buffers 15515648 bytes
В команде выше, он будет читать spfile по умолчанию с именем spfile{ORACLE_SID}.ora от места расположения spfile по умолчанию $ORACLE_HOME/dbs. Если spfile не существует, он будет использовать по умолчанию инициализацию файла init{ORACLE_SID}.ora
По какой-то причине, если вы хотите указать местоположение spfile у себя, вы можете сделать это путем передачи параметра spfile, как показано ниже.
SQL> STARTUP NOMOUNT PFILE=/tmp/initdev.ora
Кроме того, вы можете получить следующее ORA-01078 и LRM-00109, если spfile, или файл инициализации отсутствует в расположении по умолчанию.
SQL> STARTUP NOMOUNT ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbs/initdev.ora'
5. Создание новой базы данных Oracle
Используйте следующую команду CREATE DATABASE, чтобы создать пустую базу данных.
SQL> CREATE DATABASE dev USER SYS IDENTIFIED BY DevSysPass USER SYSTEM IDENTIFIED BY DevSystemPass LOGFILE GROUP 1 ('/home/oracle/u02/oradata/dev/redomed_01.log') SIZE 50M, GROUP 2 ('/home/oracle/u02/oradata/dev/redomed_02.log') SIZE 50M, MAXLOGFILES 5 MAXLOGHISTORY 10 MAXDATAFILES 50 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DATAFILE '/home/oracle/u02/oradata/dev/system01.dbf' SIZE 100M REUSE SYSAUX DATAFILE '/home/oracle/u02/oradata/dev/sysaux01.dbf' SIZE 100M REUSE DEFAULT TABLESPACE USERS DATAFILE '/home/oracle/u02/oradata/dev/users01.dbf' SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMPTS TEMPFILE '/home/oracle/u02/oradata/dev/tempts01.dbf' SIZE 30M REUSE UNDO TABLESPACE UNDOTS DATAFILE '/home/oracle/u02/oradata/dev/undots01.dbf' SIZE 100M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
В приведенной выше команде:
- Команда Create database создаст базу данных Oracle с именем «dev»
- Пароль, указанный во 2-й строке будет назначен пользователю SYS
- Пароль, указанный в 3-й строке будет назначен пользователю SYSTEM
- Мы создаем два повторных логов с размером 100МБ каждый.
- MAXLOGFILES — Максимальное количество файлов журнальных установлен в 5
- MAXDATAFILES — Это указывает на то, что максимальное количество файлов данных Oracle, которые могут быть созданы для этой базы данных.
- DATAFILE — Указывает на файл данных, который будет использоваться в табличной СИСТЕМЕ
- SYSAUX DATAFILE — Это свидетельствует о том, что файл данных будет использоваться в табличном пространстве SYSAUX
- Табличное пространство по умолчанию для этой базы данных устанавливаются в USERS
- Временное табличное пространство по умолчанию устанавливается в TEMPTS
- Отмены табличного пространство устанавливается в UNDOTS
Например, если вы указали это в файле initdev.ora.
# vi initdev.ora DB_CREATE_FILE_DEST='/home/oracle/u02/oradata/dev'
В этом случае, вы можете упростить вашу команду CREATE DATBASE, как показано ниже.
SQL> CREATE DATABASE dev USER SYS IDENTIFIED BY DevSysPass USER SYSTEM IDENTIFIED BY DevSystemPass MAXLOGFILES 5 MAXLOGHISTORY 10 MAXDATAFILES 50 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DEFAULT TABLESPACE USERS DEFAULT TEMPORARY TABLESPACE TEMPTS UNDO TABLESPACE UNDOTS
Команды выше создадут соответствующие файлы данных, необходимые для всех табличных пространств (undo, temporary и т.д.) в соответствии с местом, указанным в каталоге DB_CREATE_FILE_DEST.
6. Постройте словарь данных Views
В качестве последнего шага, выполните catalog.sql и catproc.sql. каталог сценарий создаст все словарные таблицы, представления, связанные с производительностью, необходимые общественные синонимы. Он также предоставит соответствующий доступ ко всем синонимам, который был создан. Скрипт catproc выполняет все сценарии, которые необходимы для функциональности PL/SQL.
SQL> @?/rdbms/admin/catalog.sql; SQL> @?/rdbms/admin/catproc.sql
Частичный вывод из указанных выше команд.
SQL> @?/rdbms/admin/catalog.sql; DOC>###################################################################### DOC>###################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error and terminate the SQLPLUS session if the user is not SYS. DOC> Disconnect and reconnect with AS SYSDBA. DOC>###################################################################### DOC>###################################################################### DOC># no rows selected Package created. Package body created. .. .. Synonym created. Grant succeeded. PL/SQL procedure successfully completed. SQL> @?/rdbms/admin/catproc.sql .. .. Comment created. Synonym created. Grant succeeded. PL/SQL procedure successfully completed.
Если вам интересно, вы можете посмотреть на каталог и сценарий catproc, чтобы понять, что именно он делает.
vi $ORACLE_HOME/rdbms/admin/catalog.sql; vi $ORACLE_HOME/rdbms/admin/catproc.sql
7. Проверка — Завершение работы и ввод в эксплуатацию
И, наконец, выполнить регулярные выключения и запуск, чтобы убедиться, что все работает, как ожидается, на этой новой базе данных.
$ sqlplus / as sysdba SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP; ORACLE instance started. Total System Global Area 1234563200 bytes Fixed Size 1262454 bytes Variable Size 522935700 bytes Database Buffers 720583588 bytes Redo Buffers 12946358 bytes Database mounted.