quinta-feira, 21 de dezembro de 2017

Criando e Configurando um CDB

Ambiente Utilizado

Abaixo estão as principais caracteristicas do ambiente que será atualizado:


Servidoresol6-ora121-rac1ol6-ora121-rac2
Database NameCDBSPCDBSP
Instance NameCDBSP1CDBSP2
GI Version12.1.0.212.1.0.2
Source Version11.2.0.411.2.0.4
Dest Version12.1.0.212.1.0.2
ASM Comp12.1.0.0.012.1.0.0.0
ASM DG Comp10.1.0.0.010.1.0.0.0
DB Comp11.2.0.01.2.0.0
SO Red Hat 6.8Red Hat 6.8

Razões para se criar um CDB


O CDB (Container Database) é a base de toda arquitetura multitenant, a razão principal para se criar um novo CDB é a consolidação de bases de dados Oracle, entre as diversas vantagem em utilizar um CDB podemos citar a melhor utilização de recurso de maquina, redução de custo operacional e licença.

Ferramentas Para se criar um novo CDB


OUI - O OUI pode criar uma base de dados durante a instalação de um novo binário, o que no final das contas o OUI acaba utilizando o DBCA para criar o banco de dados.

DBCA - É a ferramenta mais indicada para criar uma nova base de dados, ela irá atualizar qualquer outro arquivo do sistema operacional de forma automatica, se chamada fora do OUI aumenta muito o leque de opções o que flexibiliza muito a criação da base de dados.

SQL*Plus - É a ferramenta que possibilita total controle da criação da base de dados, além de todos os recursos do DBCA, também é possivel instalar o minimo de componentes necessários para uma base de dados, porém requer mais esforço que o DBCA.


Considerações Antes de se criar um CDB


- CHARACTER_SET - O Character Set deve ser escolhido com muito cuidado pois o Character-set dos PDBs devem ser "Sub-Set" do CDB, ou seja compátiveis, portanto, a recomendação da Oracle é que seja utilizado unicode  como Character set do CDB.

- Componentes - Os componentes que podem ser utilizados em cada PDB também devem ser herdados do CDB, portanto na duvida considerar a lista de componentes mais abrangente possivel.

Sizing - No que diz respeito a parametrização e capacidade, pois os recursos são compartilhados entre todos os PDBs do CDB.

- Service Name - O Service Name utilizado para cada PDB deve ser unico dentro do Listener que é utilizado para ser registrado.

Criando um CDB através do DBCA

O DBCA é o metodo preferencial para se criar uma base de dados, houve algumas alterações e  melhorias entre o DBCA do 11g para o 12c, mas a diferença entre a criação de um banco Non-CDB e um banco de dados CDB esta na opção de selectionar o banco de dados como CDB ou Non-CDB durante a sua criação, claro que dependendo da resposta de leva a uma ou outra etapada.

Segue:


















Criando um CDB com SQL*Plus


A criação do CDB é muito mais prático e fácil através do DBCA, porém ele também pode ser criado através do SQLPlus, uma das razões para se criar o CDB pelo SQLPlus é que podemos ter um controle maior dos componentes que serão instalados, podemos instalar somente aqueles componentes os quais realmente serão utilizados. Pensando um pouco, não achei essa abordagem muito legal pois o objetivo do CDB é a consolidação e os PDBs somente terão os componentes que o CDB também possuir, portanto, até para os PDBs futuros, na minha visão seria legal ter todos os componentes instalados, já que não podemos prever o que pode acontecer no mundo coorporativo.

Há dois metodos possiveis para se criar um CDB

- Gerar os scripts através do DBCA, podendo edita-los para assim executa-los manualmente.
- Criar os scripts de forma manual e popular o dicionário de dados.

Não considerando o metodo do DBCA devemos então passar por todas as etapas manualmente, são elas:


  • Criar um pfile com as parametrizações necessárias.
  • Ajustar o sistema operacional
  • Criar o base dados com a instuação create database
  • Popular o dicionário de dados e instalar os componentes necessários


Criando o PFile inicial


Ao ser criado o arquivo de parametrização inicial para o CDB, obrigatóriamente deve ser habilitado o parametro ENABLE_PLUGGABLE_DATABASE para True, caso contrario a instrução de create database irá  finalizar com erros.

COMPATIBLE ='12.0.0'
DB_NAME='CDBRJ'
DB_UNIQUE_NAME='CDBRJ'
DB_DOMAIN=''
CONTROL_FILES='+DATA','+FRA'
DB_CREATE_FILE_DEST='+DATA'
DB_CREATE_ONLINE_LOG_DEST_1='+DATA'
DB_CREATE_ONLINE_LOG_DEST_2='+FRA'
DIAGNOSTIC_DEST=/u01/app/oracle
AUDIT_FILE_DEST="/u01/app/oracle/admin/cdbrj/adump"
ENABLE_PLUGGABLE_DATABASE=TRUE
DB_BLOCK_SIZE=8192
OPEN_CURSORS=300
PROCESSES=300
SGA_TARGET=1G
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=UNDOTBS01
PGA_AGGREGATE_TARGET=400M


Ajustar o sistema operacional

Deve ser ajustado qualquer parametrização de Sistema Operacional, variavel de ambientes, arquivos e diretórios antes de iniciar a instancia, como o DIAG_DEST e AUDIT_FILE_DEST, caso contrário irá ocorrer erros para iniciar a base de dados.


Criando a base de dados

Antes de iniciar a base de dados deve ser iniciada a instancia em modo de nomount:

SQL> startup nomount
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size     2932632 bytes
Variable Size   281018472 bytes
Database Buffers   784334848 bytes
Redo Buffers     5455872 bytes
SQL> 

Para ser criado o CDB a instrução a similiar a Non-CDB, o que muda é que devemos especificar que se trata de um pluggable database  com a instrução,  ENABLE PLUGGABLE DATABASE, além disso devemos controlar onde serão gerados os arquivos, para isso pode utilizar:

Parametros de instancia

db_create_file_dest - Se configurado não há a necessidade de controlar o caminho da criação dos arquivos durante o comando create database, utiliza-se OMF.

db_create_online_log_dest_n - Se configurado não é necessário controlar o caminho dos logs durante o create database, utiliza-se OMF.

pdb_file_name_convert - Novo parametro para 12c, especifica duas padrões, origem e destino, e converte o nome do caminho dos arquivos do SEED.

Instrução Create Database

SEED FILE_NAME_CONVERT - Controla a conversão dos nomes dos arquivos de origem para o destino

SEED SYSTEM DATAFILE - Controla os atributos da tablespace System

SEED SYSAUX DATAFILE - Controla os atributos da tablespace Sysaux

SEED USER_DATA TABLESPACE - Controla os atributos da default tablespace para usuário

Caso esses parametros sejam configurados no momento da criação da instancia eles seram replicados todas as vezes que um PDB for criado a partir do PDB$SEED.

Como estamos utilizando DB_CREATE_FILE_DEST e DB_CREATE_ONLINE_LOG_DEST_n, não é necessário tratar a conversão dos paths do arquivos do banco, será utilizado OMF.

CREATE DATABASE cdbrj
USER SYS IDENTIFIED BY ORACLE
USER SYSTEM IDENTIFIED BY ORACLE
LOGFILE GROUP 1
('+DATA','+FRA') SIZE 100M,
GROUP 2
('+DATA','+FRA') SIZE 100M
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE TEMP
UNDO TABLESPACE UNDOTBS01
ENABLE PLUGGABLE DATABASE;


Popular o dicionário de dados

Para um ambiente Non-CDB para se popular o dicionário de dados bastava  executar uma unica vez os scripts como catproc.sql, catalog.sql, pupbld.sql, etc, porém para ambientes CDBs esses scripts devem ser executados em todos os PDBs, portanto a recomendação da Oracle é utilizar o catcdb.sql que popula todo o dicionário de dados, o unico problema do catcdb.sql é que ele instala componentes talvez indesejados, para contornar pode utilizar o utilitário catcon.pl e executar cada script individualmente em todos os containers necessários.

Segue portanto a sequencia necessária para se criar popular o dicionário de dados:

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u sys -d $ORACLE_HOME/rdbms/admin -b catalog_output -e -l /home/oracle catalog.sql
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u sys -d $ORACLE_HOME/rdbms/admin -b catproc_output -e -l /home/oracle catproc.sql
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u system -d $ORACLE_HOME/sqlplus/admin -b pupbld_output -e -l /home/oracle pupbld.sql
@?/rdbms/admin/utlrp.sql

Para referencia completa de como utilizar o catcon.pl 


Referencia

Melhor nota que achei a respeito de criação de CDB ToadWorld.com - Criando CDB

Nenhum comentário: