Если вы сисадмин Linux или разработчик, то приходит время, когда вам потребуется управление базой данных Oracle, которая может работать в вашей среде.
В этом случае важно, чтобы понять некоторые основные DBA деятельности Oracle. В этом уроке мы расскажем, как создать базу данных Oracle из командной строки.
При установке программного обеспечения Oracle, даст вам возможность создать новую базу данных из пользовательского интерфейса.
Если вы решили не создавать новую базу данных, а установить только программное обеспечение Oracle, то вы можете потом создать базу данных отдельно.
Для того, чтобы создать базу данных 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
Затем создайте файл 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'
Несколько пунктов необходимо рассмотреть в указанном файле:
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
Перед тем, как создать базу данных, мы должны запустить экземпляр для базы данных «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'
Используйте следующую команду 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;
В приведенной выше команде:
Например, если вы указали это в файле 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.
В качестве последнего шага, выполните 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
И, наконец, выполнить регулярные выключения и запуск, чтобы убедиться, что все работает, как ожидается, на этой новой базе данных.
$ 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.