Документ создан: 11.02.2010

Создание базы данных в ручном режиме в *nix

Подразумевается, что вы уже произвели установку Oracle DB.

Данная инструкция проверена на Oracle DB 10.2.0.1.0 for Linux под CentOS 5.0 и KUbuntu 7.04

  1. Заходим под созданным в преинсталл шаге пользователем:
    su - oracle
  2. Выставляем переменные окружения (для bash):
    • Если базы данных ещё не существует:
      export NLS_LANG=.CL8ISO8859P5
      export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1
      export ORACLE_SID=db01
      export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    • Если база данных уже имеется:
      export ORACLE_SID=db01
  3. Создаём файл паролей:
    orapwd FILE=/opt/oracle/product/10.2.0/db_1/dbs/orapwdb01 PASSWORD=secret ENTRIES=30
  4. Создаём файл инициализационных параметров, например, "/opt/oracle/product/10.2.0/db_1/dbs/initdb01.ora", примерно со следующим содержимым:
    db_cache_size=247463936
    java_pool_size=4194304
    large_pool_size=4194304
    shared_pool_size=104857600
    streams_pool_size=0
    audit_file_dest='/opt/oracle/admin/db01/adump'
    background_dump_dest='/opt/oracle/admin/db01/bdump'
    compatible='10.2.0.1.0'
    control_files='/opt/oracle/oradata/db01/control01.ctl','/opt/oracle/oradata/db01/control02.ctl','/opt/oracle/oradata/db01/control03.ctl'
    core_dump_dest='/opt/oracle/admin/db01/cdump'
    db_block_size=8192
    db_domain=''
    db_file_multiblock_read_count=16
    db_name='db01'
    db_recovery_file_dest='/opt/oracle/flash_recovery_area'
    db_recovery_file_dest_size=2147483648
    dispatchers='(PROTOCOL=TCP) (SERVICE=oracleXDB)'
    job_queue_processes=10
    nls_language='RUSSIAN'
    nls_territory='RUSSIA'
    open_cursors=300
    pga_aggregate_target=121634816
    processes=150
    remote_login_passwordfile='EXCLUSIVE'
    sga_target=364904448
    undo_management='AUTO'
    undo_tablespace='UNDOTBS1'
    user_dump_dest='/opt/oracle/admin/db01/udump'
    log_archive_dest='/opt/oracle/admin/db01/archlog'
    log_archive_format="arc_%r_%t_%s.log"
  5. Создаём необходимые директории:
    mkdir -p /opt/oracle/admin/db01/adump
    mkdir -p /opt/oracle/admin/db01/bdump
    mkdir -p /opt/oracle/admin/db01/cdump
    mkdir -p /opt/oracle/admin/db01/udump
    mkdir -p /opt/oracle/admin/db01/archlog
    mkdir -p /opt/oracle/oradata/db01
  6. Запускаем sqlplus:
    sqlplus /nolog
  7. Соединяемся с базой данных (пароль был задан в п.3):
    connect sys/secret as sysdba;
  8. Создаём spfile из pfile:
    create spfile='/opt/oracle/product/10.2.0/db_1/dbs/spfiledb01.ora' from pfile='/opt/oracle/product/10.2.0/db_1/dbs/initdb01.ora';
  9. Стартуем инстанцию без подключения к базе данных:
    startup nomount;
  10. Создаём базу данных:
    CREATE DATABASE db01
    LOGFILE GROUP 1 ('/opt/oracle/oradata/db01/redo01.log') SIZE 100M,
            GROUP 2 ('/opt/oracle/oradata/db01/redo02.log') SIZE 100M,
            GROUP 3 ('/opt/oracle/oradata/db01/redo03.log') SIZE 100M
    MAXLOGFILES 5
    MAXLOGMEMBERS 5
    MAXLOGHISTORY 1
    MAXDATAFILES 100
    MAXINSTANCES 1
    ARCHIVELOG
    CHARACTER SET CL8ISO8859P5
    NATIONAL CHARACTER SET AL16UTF16
    DATAFILE '/opt/oracle/oradata/db01/system01.dbf' SIZE 325M REUSE
    EXTENT MANAGEMENT LOCAL
    SYSAUX DATAFILE '/opt/oracle/oradata/db01/sysaux01.dbf' SIZE 325M REUSE
    DEFAULT TEMPORARY TABLESPACE temptbs
            TEMPFILE '/opt/oracle/oradata/db01/temp01.dbf'
            SIZE 200M REUSE EXTENT MANAGEMENT LOCAL UNIFORM SIZE 160M
    UNDO TABLESPACE undotbs1
         DATAFILE '/opt/oracle/oradata/db01/undotbs01.dbf'
         SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

    Обратите внимание на то, что имя UNDO TABLESPACE (undotbs1) должно соответствовать имени, указанному в параметре undo_tablespace (UNDOTBS1) файла initdb01.ora (п.4.). Регистр значания не имеет.

  11. Создаём tablespace "users" для назначения default tablespace пользователям:
     CREATE TABLESPACE users LOGGING DATAFILE '/opt/oracle/oradata/db01/users01.dbf'
        SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
  12. Создаём tablespace "indx" для индексов:
    CREATE TABLESPACE indx LOGGING DATAFILE '/opt/oracle/oradata/db01/indx01.dbf'
        SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
  13. Запускаем скрипты, необходимые для создания вьюшек, синонимов и пакетов (views, synonyms, packages). Предварительно задаём вывод логов в файлы:
    spool /home/oracle/catalog.log;
    @/opt/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql;
    spool off;
    spool /home/oracle/catproc.log;
    @/opt/oracle/product/10.2.0/db_1/rdbms/admin/catproc.sql;
    spool off;
  14. Меняем пароль sys и system на нужный нам:
    alter user sys identified by syspassword;
    alter user system identified by syspassword;
  15. Выходим из sqlplus:
    quit;
  16. Корректируем файлы:
    • Если базы данных ещё не существует:
      1. Создаём "$ORACLE_HOME/network/admin/listener.ora" со следующим содержимым:
        SID_LIST_LISTENER =
          (SID_LIST =
            (SID_DESC =
              (SID_NAME = db01)
              (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
            )
          )
        
        LISTENER =
          (DESCRIPTION_LIST =
            (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.mydomain)(PORT = 1521))
            )
          )
      2. Создаём "$ORACLE_HOME/network/admin/tnsnames.ora" со следующим содержимым:
        DB01 =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.mydomain)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = db01)
            )
          )
      3. Создаём "$ORACLE_HOME/network/admin/sqlnet.ora" со следующим содержимым:
        NAMES.DIRECTORY_PATH= (TNSNAMES)
      4. Запускаем listener:
        $ORACLE_HOME/bin/lsnrctl start
    • Если база данных уже существует:
      1. Добавляем в секцию SID_LIST_LISTENER файла "$ORACLE_HOME/network/admin/listener.ora":
        (SID_DESC =
                	(SID_NAME = db01)
                	(ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
                )
      2. Добавляем секцию в "$ORACLE_HOME/network/admin/tnsnames.ora":
        DB01 =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.mydomain)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = db01)
            )
          )
  17. Проверяем запущенные инстансы:
    $ORACLE_HOME/bin/lsnrctl status

Видим подобное (для двух инстансов):

  LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-FEB-2008 12:32:00
  Copyright (c) 1991, 2005, Oracle.  All rights reserved.
  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
  STATUS of the LISTENER
  ------------------------
  Alias                     LISTENER
  Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
  Start Date                12-FEB-2008 12:23:02
  Uptime                    0 days 0 hr. 8 min. 58 sec
  Trace Level               off
  Security                  ON: Local OS Authentication
  SNMP                      OFF
  Listener Parameter File   /opt/oracle/product/10.2.0/db_1/network/admin/listener.ora
  Listener Log File         /opt/oracle/product/10.2.0/db_1/network/log/listener.log
  Listening Endpoints Summary...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost.mydomain)(PORT=1521)))
  Services Summary...
  Service "db01" has 1 instance(s).
    Instance "db01", status READY, has 1 handler(s) for this service...
  Service "db01_XPT" has 1 instance(s).
    Instance "db01", status READY, has 1 handler(s) for this service...
  Service "db02" has 1 instance(s).
    Instance "db02", status READY, has 1 handler(s) for this service...
  Service "db02_XPT" has 1 instance(s).
    Instance "db02", status READY, has 1 handler(s) for this service...
  Service "oracleXDB" has 2 instance(s).
    Instance "db01", status READY, has 1 handler(s) for this service...
    Instance "db02", status READY, has 1 handler(s) for this service...
  The command completed successfully

Вот и всё.


 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate