Использование DBCA для создания БД

Процесс создания БД состоит из следующих шагов

  1. Создание файла параметров
  2. Создание экземпляра
  3. Выполнение команды CREATE DATABASE / это приведёт к созданию минимум файла контроля, двух файлов логов, двух файлов данных для табличных пространств SYSTEM и SYSAUX внутри которых будет создан словарь данных.
  4. Запуск SQL скриптов для создания представлений надо словарём данных и необходимых PL/SQL объектов
  5. Запуск SQL скриптов для создания объектов необходимых для работы Enterprise Manager Database Control и других настроеных в процессе установки утилит

В системе Windows также необходим дополнительный шаг, так как в Windows Oracle сервер работает как сервис. Oracle предоставляет дополнительный инструмент oradim.exe в помощь при создании этого сервиса

Эти шаги могут быть последовательно выполнены из SQL *Plus или с помощью специального графического инструмента DBCA (Database Configuration Assistant). Также вы можете написать свои скрипты для этой цели или использовать «тихую» установку.

Наиболее простым способом является создание БД с помощью DBCA. Это мастер-установщик который в режиме диалога запросит необходимые параметры и сделает всё в автоматическом режиме.

DBCA написан на Java и поэтому он выглядит одинаково на всех платформах. На Unix подобных системах вы запускаете DBCA на компьютере где вы хотите создать БД, однако выводить графические интерейс можно на любом компьютере где установлен X сервер для отображения графической информации. Путём установки системной переменной DISPLAY можно перенаправить вывод инфомрации на другое устройство. К примеру команда export DISPLAY=10.10.10.65:0.0 перенаправит информацию на компьютер с етевым адресом 10.10.10.65 вне зависимости от того где реально запущен DBCA.

Для запуска DBCA на Linux вначале необходимо установить системные переменные ORACLE_BASE,ORACLE_HOME,PATH и LD_LIBRARY_PATH. Примерные значения могут быть такими

export ORACLE_BASE=/u02/app/db11g

export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

И запустить приложение вызвав команду dbca.

Помните, что почти все параметры (за исключением одного) можно изменить после создания БД, но это потребует нефункционирования БД.

Если будет установлен Enterprise Manager Database Control, то тогда необходимо выполнить ещё один предварительные шаг; настройка listener-а БД. Это необходимо так как Database Control всегда подключается к БД с помощью listener-а и в процесе установки проверяет наличие хотя бы одного доступного listener-а. Listener можно легко настроить с помощью Net Configuration Assistant (netca).

 Скрипты и файлы создаваемые DBCA

DBCA создаёт скрипты и файлы которые находятся в папке ORACLE_BASE/admin/DB_NAME/scripts.

Файл параметров Parameter File

Рассмотрим файл параметров, с именем init.ora. Ниже представлен фрагмент сгенерированного DBCA файла

######################################################################

# Copyright (c) 1991, 2001, 2002 by Oracle Corporation

######################################################################

###########################################

# Cache and I/O

###########################################

db_block_size=8192

###########################################

# Cursors and Library Cache

###########################################

open_cursors=300

###########################################

# Database Identification

###########################################

db_domain=»»

db_name=ocp11g

###########################################

# File Configuration

###########################################

control_files=(«D:\oracle\app\oradata\ocp11g\control01.ctl»,

«D:\oracle\app\oradata\ocp11g\control02.ctl»,

«D:\oracle\app\oradata\ocp11g\control03.ctl»)

db_recovery_file_dest=D:\oracle\app\flash_recovery_area

db_recovery_file_dest_size=2147483648

###########################################

# Job Queues

###########################################

job_queue_processes=10

###########################################

# Miscellaneous

###########################################

compatible=11.1.0.0.0

diagnostic_dest=D:\oracle\app

###########################################

# NLS

###########################################

nls_language=»ENGLISH»

nls_territory=»UNITED KINGDOM»

###########################################

# Processes and Sessions

###########################################

processes=150

###########################################

# SGA Memory

###########################################

sga_target=318767104

###########################################

# Security and Auditing

###########################################

audit_file_dest=D:\oracle\app\admin\ocp11g\adump

audit_trail=db

remote_login_passwordfile=EXCLUSIVE

###########################################

# Shared Server

###########################################

dispatchers=»(PROTOCOL=TCP) (SERVICE=ocp11gXDB)»

###########################################

# Sort, Hash Joins, Bitmap Indexes

###########################################

pga_aggregate_target=105906176

###########################################

# System Managed Undo and Rollback Segments

###########################################

undo_management=AUTO

undo_tablespace=UNDOTBS1

 

Все строки начинающиеся с символа # являются комментариями. Всего доступно около 300 параметров однако DBCA устанавливает значения только для некоторых. Два главных это DB_BLOCK_SIZE и CONTROL_FILES. DB_BLOCK_SIZE устанавливает значение размера буферов в буфере кэша БД (database buffer cache). Так же это значение будет использовано для форматирования файлов данных табличных пространств SYSTEM и SYSAUX. После создания нельзя изменить это значение. CONTROL_FILES являетяс указателем на все копии контрольного файла. В данный момент времени этот файл не существует и значение укажет экзмепляру где создать новый файл.  Назначение некоторых других параметров понятно, и все они описаны в документации Oracle. Единственный параметр у которого нет значения по умолчанию – это DB_NAME.

Скрипт создания БД

Ниже представлен скрипт который DBCA выполняет в процессе создания БД (пример для Windows).

mkdir D:\oracle\app

mkdir D:\oracle\app\admin\ocp11g\adump

mkdir D:\oracle\app\admin\ocp11g\dpdump

mkdir D:\oracle\app\admin\ocp11g\pfile

mkdir D:\oracle\app\cfgtoollogs\dbca\ocp11g

mkdir D:\oracle\app\flash_recovery_area

mkdir D:\oracle\app\oradata\ocp11g

mkdir D:\oracle\app\product\11.1.0\db_3\database

set ORACLE_SID=ocp11g

set PATH=%ORACLE_HOME%\bin;%PATH%

D:\oracle\app\product\11.1.0\db_3\bin\oradim.exe -new -sid OCP11G

-startmode manual -spfile

D:\oracle\app\product\11.1.0\db_3\bin\oradim.exe -edit -sid OCP11G

-startmode auto -srvcstart system

D:\oracle\app\product\11.1.0\db_3\bin\sqlplus /nolog

@D:\oracle\app\admin\db11g\scripts\ocp11g.sql

 

Вначале скрипт создаёт несколько папок внутри папки ORACLE_BASE. Далее устанавливаются значения системной переменной ORACLE_SID и добавляется путь ORACLE_HOME/bin к переменной PATH. Две команды которые используют oradim.exe не используются в Linux. В Windows они нужны чтобы настроить запуск экземпляра БД как сервиса.

После скрипт запускает SQL *Plus и выполняется SQL скрипт %DB_NAME%.sql который управляет процессом создания БД

set verify off

PROMPT specify a password for sys as parameter 1;

DEFINE sysPassword = &1

PROMPT specify a password for system as parameter 2;

DEFINE systemPassword = &2

PROMPT specify a password for sysman as parameter 3;

DEFINE sysmanPassword = &3

PROMPT specify a password for dbsnmp as parameter 4;

DEFINE dbsnmpPassword = &4

host D:\oracle\app\product\11.1.0\db_3\bin\orapwd.exe

file=D:\oracle\app\product\11.1.0\db_3\database\PWDocp11g.ora

password=&&sysPassword force=y

@D:\oracle\app\admin\ocp11g\scripts\CreateDB.sql

@D:\oracle\app\admin\ocp11g\scripts\CreateDBFiles.sql

@D:\oracle\app\admin\ocp11g\scripts\CreateDBCatalog.sql

@D:\oracle\app\admin\ocp11g\scripts\emRepository.sql

@D:\oracle\app\admin\ocp11g\scripts\postDBCreation.sql

 

Вначале задаются пароли для системных учётных записей (эти пароли указываются в процессе работы с DBCA). Потомы вызывается программа orapwd которая создаст файл паролей для БД. Имя файла будет %ORACLE_HOME%\database\PWD<db_name>.ora для Windows или $ORACLE_HOME/dbs/orapw<db_name> для Linux. После этого запускается скрипт CreateDB.sql который непосредственно создаёт БД.

Команда CREATE DATABASE

Пример скрипта CreateDB.sql

 

connect «SYS»/»&&sysPassword» as SYSDBA

set echo on

spool D:\oracle\app\admin\ocp11g\scripts\CreateDB.log

startup nomount pfile=»D:\oracle\app\admin\ocp11g\scripts\init.ora»;

CREATE DATABASE «ocp11g»

MAXINSTANCES 8

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

DATAFILE ‘D:\oracle\app\oradata\ocp11g\system01.dbf’

SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE ‘D:\oracle\app\oradata\ocp11g\sysaux01.dbf’

SIZE 120M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE

‘D:\oracle\app\oradata\ocp11g\temp01.dbf’ SIZE 20M REUSE

AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

SMALLFILE UNDO TABLESPACE «UNDOTBS1» DATAFILE

‘D:\oracle\app\oradata\ocp11g\undotbs01.dbf’ SIZE 200M REUSE

AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

CHARACTER SET WE8MSWIN1252

NATIONAL CHARACTER SET AL16UTF16

LOGFILE GROUP 1 (‘D:\oracle\app\oradata\ocp11g\redo01.log’) SIZE 51200K,

GROUP 2 (‘D:\oracle\app\oradata\ocp11g\redo02.log’) SIZE 51200K,

GROUP 3 (‘D:\oracle\app\oradata\ocp11g\redo03.log’) SIZE 51200K

USER SYS IDENTIFIED BY «&&sysPassword»

USER SYSTEM IDENTIFIED BY «&&systemPassword»;

spool off

 

Скрипт подключается к экземпляру, используя авторизацию из файла паролей. Команды echo и spool выводя в лог всё что происходит.

Команда STARTUP NOMOUNT создаёт структуры экземпляр в памяти используя файл параметров. NO MOUNT означает что база данных не будет подключена и открыта. После того как эта команда выполнена – экземпляр существует в памяти и работают фоновые процессы. Размеры SGA установлены согласна файла параметров.

Команда CREATE DATABASE использует имя базы данных и множество параметров. Вначале устанавливаются определенные ограничения для всей БД. Они могут изменять позже, но лучше всего устанавливать допустимые значения сейчас, поскольку их изменение очень трудоёмкая операция. Далее указываются где создать файлы данных для табличных пространств SYSTEM, SYSAUX и UNDO. Также указываются где хранить файлы для временного табличного пространства (TEMPORARY tablespace). Так же указывается кодировка БД для словаря данных и столбцов типа VARCHAR2, CHAR и CLOB. Параметры для файлов логов и т.д. В конце идёт указание на использование паролей из файла паролей и отключение записи в лог.

Этот файл с командой CREATE DATABASE создаст базу данных. После успешного выполнения экзмепляр будет работать в памяти и БД будет создана, включая файлы контроля, файлы данных и файлы логов. Словарь данных будет сгенерирован в табличном пространстве SYSTEM. Однако несмотря на то что БД создана, она пока непригодна для использования. Оставшиеся скрипты, которые вызовет файл %DB_NAME%.sql исправят это. У команды CREATE DATABASE много параметров, однако все они имеют значение по умолчанию. Например если вы не укажете файлы данных для табличного пространства SYSTEM все равно создатся минимум один файл. Для табличных пространств UNDO и TEMPORARY нет значений по умолчанию – но БД может быть создана без них, а потом можно указать эти значения.

Скрипты после создания БД

Остальные скрипты вызываемые %DB_NAME%.sql зависят от выбора в процессе работы с DBCA. В нашем примере был выбран только Enterprise Manager Database Control и поэтому будут запущены только 4 скрипта.

CreateDBfiles.sql – создаёт небольшон табличное пространство USERS где будет хранится объекты созданные пользователями

CreateDBCatalog.sql – важный скрипт. Он запускает скрипты для построения представлений над словарём данных и генерации PL/SQL объектов которые делают возможным управление БД

emRepository.sql – этот скрипт создаёт объекты необходимые для работы Enterprise Manager Database Control

postDBCreation.sql – создание файла параметров сервера из файла параметров init.ora, включение пользователей DBSNMP и SYSMAN используемых для работы Enterprise Manager и запуск Enterprise Manager Configuration Assistant (emca) для настройки новой БД.

Добавить комментарий