26.02.2016 3 min to read

Как создать экземпляр СУБД Oracle из командной строки

Category : Статьи

Процесс установки экземпляра БД (instance) рассматривается для Oracle 11g (release 1, 2) под управлением ОС Linux. В данном примере подразумевается, что сам oracle установлен в директории /opt/oracle. В качестве имени sid используется MYSID.

  1. Установка переменных окружения. В зависимости от настроек ОС, переменные можно задать в .bash_profile или .bashrc
    export ORACLE_SID=MYSID
    export ORACLE_UNQNAME=MYSID
    export ORACLE_BASE=/opt/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
    export PATH=$PATH:$ORACLE_HOME/bin
    
    export NLS_LANG=RUSSIAN_RUSSIA.CL8KOI8R
    export NLS_SORT=RUSSIAN
    export NLS_DATE_LANGUAGE=RUSSIAN
    
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

     

  2. Создание ini файла. Этот файл содержит базовые параметры экземпляра БД Oracle, располагается в директории $ORACLE_HOME/dbs и называется init<sid>.ora. В ini-файле можно задать месторасположение служебных файлов, размеров используемой памяти, параметров аудита и пр. Минимальный файл, достаточный для создания БД с Enterprise manager’ом содержит следующие параметры:
    db_name = 'MYSID'
    remote_login_passwordfile = 'EXCLUSIVE'
    undo_tablespace = 'UNDOTBS1'
    control_files = (/opt/oracle/oradata/MYSID/ora_control1.ctl,
    /opt/oracle/oradata/MYSID/ora_control2.ctl,
    /opt/oracle/oradata/MYSID/ora_control3.ctl)
    shared_pool_size=268435456
    java_pool_size=67108864
    audit_file_dest = '/opt/oracle/admin/MYSID/audit'
    db_block_size = 16384
    
    open_cursors = 300
    processes = 50
    job_queue_processes = 10

     

  3. Создание экземпляра БД. Для выполнения SQL-команды создания базы, необходима утилита sqlplus.
    bash$ sqlplus /nolog
    SQL> connect / as sysdba
    SQL> create SPFILE from PFILE;
    SQL> startup nomount;

    Синтаксис SQL-команды имеет различия в ORACLE 11gR1 и 11gR2. При создании указывается расположение файлов табличных пространств и блоков REDO. Все директории, в которых будут располагаться файлы, должны быть созданы заранее.

    Вариант для Oracle 11g Release 2:

    create database MYSID user sys identified by manager
    user system identified by manager2
    logfile group 1 ('/opt/oracle/log/MYSID/redo01a.log',
    '/opt2/oracle/log/MYSID/redo01b.log')
    size 100M blocksize 512,
    group 2 ('/opt/oracle/log/MYSID/redo02a.log',
    '/opt2/oracle/log/MYSID/redo02b.log')
    size 100m blocksize 512,
    group 3 ('/opt/oracle/log/MYSID/redo03a.log',
    '/opt2/oracle/log/MYSID/redo03b.log')
    size 100m blocksize 512
    maxlogfiles 5
    maxlogmembers 5
    maxloghistory 1
    maxdatafiles 100
    CHARACTER SET CL8KOI8R
    NATIONAL CHARACTER SET AL16UTF16
    EXTENT MANAGEMENT LOCAL
    DATAFILE '/opt/oracle/oradata/MYSID/system01.dbf' SIZE 1024M REUSE
    SYSAUX
    DATAFILE '/opt/oracle/oradata/MYSID/sysaux01.dbf' SIZE 1024M REUSE
    DEFAULT TABLESPACE users
    DATAFILE '/opt/oracle/oradata/MYSID/users01.dbf' SIZE 50M REUSE
    AUTOEXTEND ON MAXSIZE UNLIMITED
    DEFAULT TEMPORARY TABLESPACE temp
    TEMPFILE '/opt/oracle/oradata/MYSID/temp01.dbf' SIZE 500M REUSE
    UNDO TABLESPACE undotbs1
    DATAFILE '/opt/oracle/oradata/MYSID/undotbs01.dbf' SIZE 500M REUSE
    AUTOEXTEND ON MAXSIZE UNLIMITED;

     

    Вариант для Oracle 11g Release 1:

    create database MYSID user sys identified by manager
    user system identified by manager2
    logfile
    group 1 ('/opt/oracle/oradata/MYSID/redo01a.log', '/opt2/oracle/oradata/MYSID/redo01b.log') size 100M,
    group 2 ('/opt/oracle/oradata/MYSID/redo02a.log', '/opt2/oracle/oradata/MYSID/redo02b.log') size 100M,
    group 3 ('/opt/oracle/oradata/MYSID/redo03a.log', '/opt2/oracle/oradata/MYSID/redo03b.log') size 100M
    maxlogfiles 5
    maxlogmembers 5
    maxloghistory 1
    maxdatafiles 100
    CHARACTER SET CL8KOI8R
    NATIONAL CHARACTER SET AL16UTF16
    EXTENT MANAGEMENT LOCAL
    DATAFILE '/opt/oracle/oradata/MYSID/system01.dbf' SIZE 1024M REUSE
    SYSAUX
    DATAFILE '/opt/oracle/oradata/MYSID/sysaux01.dbf' SIZE 1024M REUSE
    DEFAULT TABLESPACE users
    DATAFILE '/opt/oracle/oradata/MYSID/users01.dbf' SIZE 50M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
    DEFAULT TEMPORARY TABLESPACE temp
    TEMPFILE '/opt/oracle/oradata/MYSID/temp01.dbf' SIZE 500M REUSE
    UNDO TABLESPACE undotbs1
    DATAFILE '/opt/oracle/oradata/MYSID/undotbs01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

     

    После успешного завершения команды создания базы, необходимо выполненить скрипты создания словарей и др. служебных объектов.

    SQL> @?/rdbms/admin/catalog.sql
    SQL> @?/rdbms/admin/catproc.sql
    SQL> exit

     

    Выполнение дополнительных скриптов для создания таблицы профилей пользователей (PRODUCT_USER_PROFILE – позволяет отключать возможность выполнения заданных команд SQL и SQL*Plus) и Java-объектов. Выполняется от пользователя system.

    bash$ sqlplus system
    SQL> @?/sqlplus/admin/pupbld.sql
    SQL> @?/javavm/install/initjvm.sql
    SQL> exit

     

    bash$ sqlplus / as sysdba
    SQL> alter system register;
    SQL> exit

     

  4. Создание файла паролей. Чтобы иметь возможность назначать пользователям привилегии SYSDBA и SYSOPER, необходимо создать файл паролей.
    Для linux-систем имя такого файла по-умолчанию orapw<sid>, расположение по-умолчанию: $ORACLE_HOME/dbs.

    bash$ cd $ORACLE_HOME/dbs
    bash$ orapwd file=orapwMYSID entries=10

     

    Теперь можно назначить пользователю sys привилегию sysdba.

    bash$ sqlplus / as sysdba
    SQL> grant sysdba to sys;

     

  5. Настройка прослушивателя (Listener). Для этого ОБЯЗАТЕЛЬНО должно быть задано имя компьютера для того ip-адреса, на котором предполагается работа прослушивателя. Конфигурация хранится в файле $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
        (DESCRIPTION=
            (ADDRESS_LIST=
                (ADDRESS=(PROTOCOL=tcp)(HOST=myhost.mydomain)(PORT=1521))
                (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC))
            )
        )
    
    SID_LIST_LISTENER=
        (SID_LIST=
            (SID_DESC=
                (SID_NAME=MYSID)
                (ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1)
            )
        )

     

    Запуск прослушивателя:

    bash$ lsnrctl
    LSNRCTL> start

     

  6. Создание репозитория для запуска Enterprise Manager’а.
    bash$ emca -config dbcontrol db -repos create
    
    
    STARTED EMCA at Oct 21, 2009 8:57:05 PM
    EM Configuration Assistant, Version 11.2.0.0.2 Production
    Copyright (c) 2003, 2005, Oracle. All rights reserved.
    
    Enter the following information:
    Database SID: MYSID
    Listener port number: 1521
    Listener ORACLE_HOME [ /opt/oracle/product/11.2.0/dbhome_1 ]:
    Password for SYS user: Password for DBSNMP user: Password for SYSMAN user: Email address for notifications (optional):
    Outgoing Mail (SMTP) server for notifications (optional):
    -----------------------------------------------------------------
    
    You have specified the following settings
    
    Database ORACLE_HOME ................ /opt/oracle/product/11.2.0/dbhome_1
    
    Local hostname ................ myhost.mydomain
    Listener ORACLE_HOME ................ /opt/oracle/product/11.2.0/dbhome_1
    Listener port number ................ 1521
    Database SID ................ MYSID
    Email address for notifications ...............
    Outgoing Mail (SMTP) server for notifications ...............
    
    -----------------------------------------------------------------
    Do you wish to continue? [yes(Y)/no(N)]: y

    Запуск Enterprise Manager:

    bash$ emctl start dbconsole