Comando CREATE DATABASE para CDB

Um banco de dados CDB também pode ser criado sem o DBCA.

O DBCA tem o inconveniente abaixo em bancos CDB. Mesmo com o Template Custom, não é possível remover funcionalidades que não serão utilizadas. E tratando-se de bancos de dados, menos é mais.

DBCA-CDB-Custom

Fui então atrás dos comandos para criá-lo manualmente. Mas, mesmo criando um banco de dados manualmente – via comando CREATE DATABASE – para CDBs, tudo isso é instalado. Desconfiei disso pela demora na execução do último comando, o catcbd.sql. Depois fui olhar na v$OPTION, e lá estavam o Multimedia, OLAP, Spatial…

Enfim, para criar um banco de dados CDB, o pacote abaixo (OEL 7 / RHEL 7 / CentOS 7) deve ser instalado para executar o comando final de criação do dicionário de dados. Isto não é necessário para bancos non-CDB.

$ sudo yum -y install perl-TermReadKey.x86_64

Abaixo está a criação dos diretórios que serão utilizados.

$ mkdir -p /u01/app/oracle/audit/EECDB01
$ mkdir -p /u01/app/oracle/oradata/EECDB01
$ mkdir -p /u01/app/oracle/oradata/EECDB01/pdbseed/

E abaixo está o PFILE que será utilizado. Atenção para o parâmetro que habilita o uso de PDBs (em negrito), e os parâmetros que desabilitam funcionalidades da Enterprise Edition (em itálico).

$ cat $ORACLE_HOME/dbs/initEECDB01.ora
*.audit_file_dest='/u01/app/oracle/audit/EECDB01/'
*.audit_trail='NONE'
*.compatible='12.1.0.2.0'
*.control_files='/u01/app/oracle/oradata/EECDB01/control01.dbf','/u01/app/oracle/oradata/EECDB01/control02.dbf'
*.db_block_size=8192
*.db_name='EECDB01'
*.diagnostic_dest='/u01/app/oracle'
*.enable_pluggable_database=true
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='BRAZILIAN PORTUGUESE'
*.nls_territory='BRAZIL'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1024m
*.undo_tablespace='UNDOTBS1'
*.CONTROL_MANAGEMENT_PACK_ACCESS='NONE'
*.PARALLEL_MAX_SERVERS=0
*.RESOURCE_LIMIT='FALSE'
*.DEFERRED_SEGMENT_CREATION='FALSE'
*.OPTIMIZER_USE_SQL_PLAN_BASELINES='FALSE'
*.OPTIMIZER_ADAPTIVE_FEATURES='FALSE'

Em seguida, iniciar a instância em NOMOUNT.

$ export ORACLE_SID=EECDB01
$ rlwrap sqlplus / AS SYSDBA
SQL> STARTUP NOMOUNT;

Em seguida, executar o comando CREATE DATABASE, adequado à sua necessidade.

SQL> CREATE DATABASE EECDB01
USER SYS IDENTIFIED BY Nerv2016
USER SYSTEM IDENTIFIED BY Nerv2016
LOGFILE
	GROUP 1 ('/u01/app/oracle/oradata/EECDB01/redo01a.log','/u01/app/oracle/oradata/EECDB01/redo01b.log') SIZE 100M BLOCKSIZE 512,
	GROUP 2 ('/u01/app/oracle/oradata/EECDB01/redo02a.log','/u01/app/oracle/oradata/EECDB01/redo02b.log') SIZE 100M BLOCKSIZE 512,
	GROUP 3 ('/u01/app/oracle/oradata/EECDB01/redo03a.log','/u01/app/oracle/oradata/EECDB01/redo03b.log') SIZE 100M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/EECDB01/system01.dbf'
	SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
SYSAUX DATAFILE '/u01/app/oracle/oradata/EECDB01/sysaux01.dbf'
	SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
DEFAULT TABLESPACE users DATAFILE '/u01/app/oracle/oradata/EECDB01/users01.dbf'
	SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u01/app/oracle/oradata/EECDB01/temp01.dbf'
	SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1 DATAFILE '/u01/app/oracle/oradata/EECDB01/undotbs01.dbf'
	SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
ENABLE PLUGGABLE DATABASE
SEED
	FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/EECDB01/', '/u01/app/oracle/oradata/EECDB01/pdbseed/')
	SYSTEM DATAFILES SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
	SYSAUX DATAFILES SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

O script abaixo cria o dicionário de dados, e substitui os antigos catalog.sql, catproc.sql e utlrp.sql. Os scrips antigos ainda devem ser utilizados em criação de bancos sem CDB.

SQL> @?/rdbms/admin/catcdb.sql

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.