Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Oracle Blog
8i, 9i, 10g, 11g, 12c ...
Para melhor visualização, recomendo resolução de no mínimo 1024 x 768 e navegador Mozilla Firefox
Busca
Google
Somente neste blog
Siga-me no Google+
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Como já foi abordado no artigo de Junho/2013, o Oracle Database 12c agora
suporta uma nova arquitetura (option) chamada Multitenant que permite que Eduardo Legatti
tenhamos um ou mais "sub-bancos de dados" dentro e um único "super banco de
Seguir
dados". Este "super banco de dados" é chamado de CDB (Container Database) e
os "sub-bancos de dados" são chamados de PDBs (Pluggable Databases) ou 629 seguidores
containers de bancos de dados plugáveis. O CDB também pode ser chamado de
container ROOT (CDB$ROOT). Em outras palavras, essa nova arquitetura permite a
criação de muitos PDBs dentro de um único CDB. A idéia principal por trás
deste conceito consiste em permitir um uso mais eficiente dos recursos do Assine em um leitor RSS
sistema, além de oferecer um gerenciamento mais simplificado.
Até o Oracle 12c release 12.1, o número máximo de PDBs que podem ser criados é
de 252. O Oracle 12c suporta tanto a criação de bancos de dados CDBs quanto a Quem sou eu
criação de bancos de dados não-CDBs que são aqueles que temos o costume de Eduardo Legatti
usar e que possuem a arquitetura que conhecemos nas versões 11g, 10g, 9i, 8i, Belo Horizonte, MG, Brazil
etc. Aliás, é possível atualizarmos um banco de dados Oracle pré 12c (não-CDB)
para o Oracle 12c e continuarmos a operá-lo como tal. Do ponto de vista de um
cliente que se conecta via Oracle Net a uma instância do Oracle, o PDB é o Analista de Sistemas e Administrador de banco
banco de dados. Do ponto de vista do sistema operacional, o CDB é que é o de dados. Sou pós graduado em Gerência da
banco de dados. No mais, neste artigo irei demonstrar a criação de um banco de Tecnologia da Informação, possuo as
dados CDB usando o DBCA (Database Configuration Assistant) e a criação de certificações OCA 9i - OCP 9i/10g/11g – OCE
SQL Expert, e venho trabalhando como DBA
dois bancos PDBs (um via DBCA e outro manualmente via SQL*Plus). A minha
Oracle desde a versão 8.0.5. Me interesso
intenção é demonstrar algumas propriedades e características dessa nova
particularmente em planejar estratégias de
arquitetura de forma simples e objetiva. backup/recovery, performance tuning e
projetos de bancos de dados (modelagem física
Vale a pena salientar que essa arquitetura permite que tenhamos vários PDBs no e lógica). Como Oracle ACE, tenho o hábito de
mesmo CDB cada um tendo usuários, tablespaces, database links, directories, disseminar meu conhecimento através de
etc... com o mesmo nome. Por exemplo, poderemos ter o usuário SCOTT tanto no artigos, grupos de discussão (Oracle OTN
banco de dados PDB01 quanto no banco PDB02. Do ponto de vista da arquitetura, Forums) e me dedico a compartilhar
veremos mais abaixo que um CDB é composto de um container root chamado de informações de forma a motivar novos DBAs.
CDB$ROOT responsável por armazenar o dicionário de dados, o motor PL/SQL e Siga-me no Google+
usuários comuns (common users). Outro componente é o seed de um banco de dados Visualizar meu perfil completo
PDB chamado PDB$SEED que é utilizado como template para criação de novos PDBs.
Segue abaixo algumas características e peculiaridades da arquitetura física e Siga por email
lógica do Oracle 12c Multitenant:
Endereço de email... Enviar
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Multitenant é uma option do Oracle Enterprise Edition.
Um container CDB pode conter zero, um ou mais PDBs (Até o release 12.1
máximo de 252).
Existe apenas um conjunto de control files e online redo log files para
todo o CDB, ou seja, os mesmos são compartilhados.
Pode ser criada uma tablespace TEMP default para todo o CDB, mas cada PDB
pode ter tablespaces temporárias adicionais.
Existe apenas uma única SGA (System Global Area) compartilhada para todos
os PDBs.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Quando o CDB é aberto (startup) os PDBs permanecem no estado MOUNT e Mais acessados
precisam ser abertos individualmente através do comando ALTER PLUGGABLE
Introdução ao conceito de Tablespaces
DATABASE.
Reorganizando o Tablespace ...
Estratégia de backup - RMAN
Existe somente um arquivo de inicialização spfile para todo o CDB. Os
Um pouco sobre índices particionados no
PDBs podem ter configurações próprias, mas essas configurações são Oracle ...
persistidas no dicionário de dados do Oracle e não em spfiles adicionais Criando um banco de dados no modo
para cada PDB criado. silencioso com o DBCA
Restaurando e recuperando um banco de
Além das views de dicionário de dados DBA/ALL/USER uma nova categoria com dados em outra máquina com o RMAN
o prefixo CDB foi criada para disponibilizar informações e metadados dos Monitorando o percentual de espaço livre
bancos de dados PDBs dentro de um CDB. na tablespace. Quando devemos nos
preocupar?
Introdução ao tipo de dado TIMESTAMP e
Em resumo, veremos que o container ROOT (CDB$ROOT) contém as tablespaces suas variações ...
SYSTEM, SYSAUX, TEMP, e UNDO além dos control files e redo log files. O SEED Database Point-In-Time Recovery
(DBPITR) e Tablespace Point-in-Time
container (PDB$SEED) contém as tablespaces SYSTEM, SYSAUX, TEMP (opcional). Recovery (TSPITR) na prática com o
Vale a pena salientar que este artigo terá com foco apenas a criação dos RMAN ...
bancos de dados CDB e PDBs com o objetivo de demonstrar algumas propriedades Clonando um banco de dados Oracle com
de sua arquitetura. Demais demonstrações como ações de plugar, desplugar, o RMAN - DUPLICATE DATABASE
clonar, alterações de configurações, backups, entre outros, serão apresentados Ignorando caracteres acentuados,
em artigos posteriores. maiúsculos e minúsculos no Oracle (Case
Insensitive/Accent Insensitive)
RMAN - RECOVER DROP TABLESPACE (10g
vs 11g)
Criando o banco de dados de container (CDB) Certificação Oracle OCA,OCP, OCM ...
Criando um banco de dados standby com
Bom, iniciarei a criação do banco de dados de container CDB01 (sem maiores o RMAN e abordando o ACTIVE DATA
detalhes) através do utilitário DBCA (Database Configuration Assistant) GUARD e o SNAPSHOT STANDBY no Oracle
conforme demonstrado pela figura abaixo: 11g
Um pouco sobre o particionamento por
referência (Reference Partitioning) no
Oracle 11g
RMAN - Backup Incremental Cumulativo
vs. Backup Incremental Diferencial
DBNEWID - Alterando o nome de um
banco de dados Oracle
Interval Partitioning. Abordando um
conceito de particionamento por
intervalo do Oracle 11g.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Qual é mesmo o tamanho de uma tabela
no Oracle?
READ ONLY table? Abordando uma nova
funcionalidade do Oracle 11g ...
Descomplicando RAID 01 (0+1) e RAID 10
(1+0)
Salvo pelo _allow_resetlogs_corruption
....
Utlizando MD5 no Oracle para geração de
senhas
Estágios de inicialização do Oracle
(NOMOUNT | MOUNT | OPEN)
Arquivo do blog
► 2017 (11)
► 2016 (12)
► 2015 (12)
▼ 2014 (12)
► Dezembro (1)
► Novembro (1)
► Outubro (1)
► Setembro (1)
► Agosto (1)
► Julho (1)
► Junho (1)
► Maio (1)
► Abril (1)
Após a criação do banco de dados CDB01 poderemos verificar abaixo consultando ► Março (1)
a view V$DATABASE que o mesmo se trata de um container database. Realizando ▼ Fevereiro (1)
uma consulta em uma nova view dinâmica de desempenho V$CONTAINER, poderemos Oracle Multitenant: Abordando a
verificar que, além do container CDB$ROOT, também temos um seed container arquitetura e cria...
chamado PDB$SEED. Através do resultado da view V$PDBS iremos notar que o ► Janeiro (1)
banco de dados PDB$SEED é somente leitura. O propósito do mesmo é servir como ► 2013 (14)
um template para criação de novos PDBs. Consultando a view DBA_PDBS podemos ► 2012 (12)
verificar que o mesmo se encontra aberto. ► 2011 (15)
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
C:\>sqlplus / as sysdba ► 2010 (12)
► 2009 (30)
SQL*Plus: Release 12.1.0.1.0 Production on Seg Fev 3 18:45:39 2014
► 2008 (35)
Copyright (c) 1982, 2013, Oracle. All rights reserved. ► 2007 (14)
► 2006 (1)
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Marcadores
SQL> select name,cdb,con_id,con_dbid from v$database;
dba (55) sql (29) oracle 11g (26)
NAME CDB CON_ID CON_DBID oracle 10g (24) rman (22) tablespace
-------------- --- ---------- ---------- (19) desenvolvedor (17) oracle (16)
CDB01 YES 0 1370556575 oracle 12c (14) recovery (13) segurança
SQL> select con_id, name from v$containers; (10) linux (9) backup (8) certificação (8)
datapump (8) table partition (8) backup físico
CON_ID NAME (7) oracle 9i (7) atualização (6) backup lógico
---------- ----------------- (6) exame (6) exp (6) oracle 8i (6) oracle
1 CDB$ROOT metalink (6) archivelog (5) critical patch
2 PDB$SEED update (5) modelagem de dados (5)
noarchivelog (5) spfile (5) tecnologia flashback
SQL> select name, open_mode from v$pdbs; (5) bug (4) mercado (4) multitenant (4) oca (4)
senha (4) cold backup (3) criptografia (3) disable
NAME OPEN_MODE validate (3) instalação (3) integridade referencial (3)
-------------------- ---------- ocp (3) oracle xe (3) rownum (3) unlimited
PDB$SEED READ ONLY tablespace (3) acid (2) assistente de instalação (2)
dbms_metadata (2) pluggable database (2)
SQL> select pdb_id,pdb_name,dbid,status from dba_pdbs; securefiles (2) timestamp (2) Oracle ACE (1)
_allow_resetlogs_corruption (1) raid (1)
PDB_ID PDB_NAME DBID STATUS
sec_case_sensitive_logon (1)
---------- -------------- ---------- --------
2 PDB$SEED 4076210644 NORMAL
Contato
Uma outra forma de verificar se um banco de dados é CDB ou não-CDB é
verificando o parâmetro de inicialização ENABLE_PLUGGABLE_DATABASE.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SQL> show parameter enable_pluggable_database;
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Criando o banco de dados PDB manualmente com o SQL*Plus
Podemos também criar bancos de dados plugáveis manualmente através do comando
CREATE PLUGGABLE DATABASE. Utilizarei o SQL*Plus para criar o banco de dados
PDB02 conforme demonstração abaixo:
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SQL> create pluggable database PDB02
2 admin user pdb_admin identified by manager
3 file_name_convert =
4 (
5 'D:\oracle\app\oradata\CDB01\pdbseed',
6 'D:\oracle\app\oradata\CDB01\PDB02'
7 );
Após a criação dos bancos de dados plugáveis PDB01 e PDB02, irei comentar
abaixo sobre algumas peculiaridades dos mesmos.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Para facilitar o entendimento da arquitetura física dos arquivos de banco de
dados envolvidos, segue abaixo a hierarquia dos diretórios criados após a
criação dos bancos de dados:
D:\oracle\app\oradata> tree /F /A
D:.
\---CDB01
| CONTROL01.CTL
| CONTROL02.CTL
| REDO01.LOG
| REDO02.LOG
| REDO03.LOG
| SYSAUX01.DBF
| SYSTEM01.DBF
| TEMP01.DBF
| UNDOTBS01.DBF
| USERS01.DBF
|
+---PDB01
| PDB01_USERS01.DBF
| PDBSEED_TEMP01.DBF
| SYSAUX01.DBF
| SYSTEM01.DBF
|
+---PDB02
| PDBSEED_TEMP01.DBF
| SYSAUX01.DBF
| SYSTEM01.DBF
|
\---pdbseed
PDBSEED_TEMP01.DBF
SYSAUX01.DBF
SYSTEM01.DBF
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
C:\>lsnrctl status
A view dinâmica de desempenho V$SERVICES também pode ser utilizada para obter
informações dos serviços de bancos de dados disponíveis como demonstrado
abaixo:
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SQL> select name,pdb from v$services;
NAME PDB
--------------- -------------------
CDB01 CDB$ROOT
CDB01XDB CDB$ROOT
pdb01 PDB01
pdb02 PDB02
SYS$BACKGROUND CDB$ROOT
SYS$USERS CDB$ROOT
6 linhas selecionadas.
CON_NAME
------------------------
CDB$ROOT
FILE_ID FILE_NAME
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
---------- -----------------------------------------
1 D:\ORACLE\APP\ORADATA\CDB01\SYSTEM01.DBF
3 D:\ORACLE\APP\ORADATA\CDB01\SYSAUX01.DBF
5 D:\ORACLE\APP\ORADATA\CDB01\UNDOTBS01.DBF
6 D:\ORACLE\APP\ORADATA\CDB01\USERS01.DBF
Sessão alterada.
CON_NAME
------------------------------
PDB01
FILE_ID FILE_NAME
---------- ---------------------------------------------------
7 D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSTEM01.DBF
8 D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSAUX01.DBF
9 D:\ORACLE\APP\ORADATA\CDB01\PDB01\PDB01_USERS01.DBF
Sessão alterada.
CON_NAME
------------------------------
CDB$ROOT
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Realizando STARTUP e SHUTDOWN dos bancos de dados
C:\>sqlplus / as sysdba
SQL> startup
Instância ORACLE iniciada.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Total System Global Area 1068937216 bytes
Fixed Size 2410864 bytes
Variable Size 373294736 bytes
Database Buffers 687865856 bytes
Redo Buffers 5365760 bytes
Banco de dados montado.
Banco de dados aberto.
Para realizar o startup de todos os bancos de dados PDBs de uma única vez,
poderemos executar o comando ALTER PLUGGABLE DATABASE ALL OPEN conforme
demonstrado a seguir:
Para evitar que precisemos executar o comando acima todas as vezes que
inicializamos a instância CDB, poderemos criar uma trigger de banco de dados
chamando o evento AFTER STARTUP ON DATABASE conforme exemplo abaixo:
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SQL> create or replace trigger open_all_pdbs
2 after startup on database
3 begin
4 execute immediate 'alter pluggable database all open';
5 end open_all_pdbs;
6 /
Gatilho criado.
sqlplus system/manager@localhost:1521/CDB01
sqlplus system/manager@localhost:1521/PDB01
sqlplus system/manager@localhost:1521/PDB02
C:\>sqlplus system/manager@localhost:1521/PDB01
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
NAME
----------------------
CDB01
CON_NAME
-----------------------
PDB01
SYS_CONTEXT('USERENV','CON_NAME')
---------------------------------
PDB01
Da mesma forma que existem usuários comuns e locais, também existem roles
comuns (Common Roles) e roles locais (Local Roles). Todo o banco de dados CDB
possui um ambiente de usuários comuns. Um usuário que existe no container ROOT
pode se conectar em qualquer PDB com os privilégios apropriados e, por padrão,
são mapeados para todos os PDBs atuais e aos PDBs criados futuramente. Um
usuário comum não pode ser criado em um banco de dados PDB, somente em um
CDB. Os usuários comuns precisam ser criados utilizando o prefixo C## ou c##.
Já os usuários locais podem somente ser criados nos PDBs. Veja o exemplo
abaixo:
C:\>sqlplus system/manager@localhost/PDB01
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Usuário criado.
Concessão bem-sucedida.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
banco de dados PDB01), possuem o valor "NO" na coluna COMMON, o que significa
que os mesmos são usuários locais do banco de dados PDB01.
USERNAME COM
-------------------------- ---
PDB_ADMIN NO
SCOTT NO
Abaixo irei criar um usuário comum no banco de dados CDB. Podemos verificar
abaixo que se tentarmos criar um usuário comum se usar o prefixo C## o erro
ORA-65096 será emitido.
C:\>sqlplus system/manager@localhost/CDB01
Usuário criado.
Concessão bem-sucedida.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SQL> grant create session to c##global container=ALL;
Concessão bem-sucedida.
C:\>sqlplus C##global/global@localhost/PDB02
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
CON_NAME
----------------------
PDB02
Resumo
Para ilustrar um pouco do que foi demonstrado nesse artigo, segue abaixo uma
figura que resume bem o conceito por trás da arquitetura Multitenant do Oracle
12c.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Para finalizar, segue abaixo alguns exemplos das opções que temos para abrir
(startup) e fechar (shutdown) um banco de dados plugável no Oracle 12c. Em
alguns dos exemplos, entenda o caractere | (pipe) como ENTER.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
-- startup
-- shutdown
Google+
Like 22 Share 4
Posts Relacionados
Oracle Multitenant: Abordando a realização de backups com o RMAN nos Pluggable Databases (PDB) e Container
Databases (CDB) no Oracle 12c
Oracle Multitenant: Clonando e movendo Pluggable Databases (PDB) entre Container Databases (CDB) no Oracle 12c
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Oracle 12c Release 2 disponível para download
Abordando o novo privilégio READ do Oracle 12c
Detectando sessões bloqueadoras e sessões bloqueadas no Oracle: DBA_WAITERS, V$LOCKED_OBJECT, V$LOCK,
V$SESSION
Abordando uma "New Feature" do particionamento por referência (Reference Partitioning) do Oracle 12c
Oracle Multitenant: Alterando parâmetros de inicialização do Container Database (CDB) e Pluggable Databases (PDBs)
no Oracle 12c
Oracle Multitenant: Abordando a arquitetura e criação do Container Database (CDB) e Pluggable Databases no Oracle
12c
18 comentários:
Olá João,
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
sim. Separar em schemas? Pode ser. Me lembro que ao desenvolver o
modelo de dados no PostgreSQL, eu divida as várias tabelas dos sistemas
em seus respectivos shemas. Todos os sistemas eram integrados e tinham
relacionamentos entre eles. Utilizávamos muito a variável "search_path"
para não ter que qualificar as tabelas com os schemas. Em um modelo de
dados multitenant, teríamos uma mesma tabela em vários schemas distintos
sem qualquer conflito entre eles. Na época preferimos segregar os dados
utilizando o código da empresa/cliente entre as várias tabelas existentes.
Uma outra opção poderia ser criar bancos de dados separados onde cado
banco poderia ser um tenant. Geralmente vejo um banco de dados e vários
schemas distintos, ou seja, um banco de dados para todos os tenants, mas
um schema por tenant.
Legatti
Adoro Oracle, mas infelizmente vejo muita gente deixar de usar muitos
recursos por causa dos altos custos das options!
Olá Fábio,
Realmente não sei se faz muito sentido cobrar por uma coisa que já está aí a
décadas em outras plataformas. A operação de "detach" and "attach" do SQL
Server por exemplo, eu acho bem simples e prática. Tem muitas coisas
legais em outras plataformas!!
Abraços
Legatti
Forte abraço...
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Olá Wellington,
Legatti
Abraço,
Marcelo Graçadio
Olá Marcelo,
Legatti
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
13 de agosto de 2014 12:14
Olá Rui,
Abraços
Legatti
Boa noite, muito boa sua explicação parabéns, agora uma pergunta quantos
cdb eu posso ter?
Ou somente 1?
Mais uma vez ti parabenizo!!!
Olá Rodrigo,
Abraços,
Legatti
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Boa noite, qual é o comando pra criar um cdb? Desde já agradeço
Olá Rodrigo,
Abraços,
Legatti
Olá Lilian,
Abraços,
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Legatti
Eduardo, parabéns pelo seu artigo. Inclusive estou indicando para outros
profissionais da nossa área, por ser de fácil compreensão.
At.
Fabio Fonseca
Olá Fábio,
Abraços,
Legatti
Postar um comentário
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Downloads
Assistente de Instalação do Oracle Instant Client 10g (20M)
Assistente de Instalação do Oracle Instant Client 11g (26M)
Postagens populares
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
LogMiner - Analisando o conteúdo de um ARCHIVED REDO LOG através da package DBMS_LOGMNR
Olá, Quando precisamos visualizar o conteúdo dos arquivos de redo log, utilizamos um recurso
presente no banco de dados Oracle chamado L...
Clonando um banco de dados Oracle com o RMAN - DUPLICATE DATABASE (10g vs 11g)
Olá, Neste artigo irei demonstrar na prática como clonar um banco de dados Oracle no mesmo
servidor através do comando DUPLICATE DATABAS...
Oracle Blog by Eduardo Legatti is licensed under a Creative Commons Atribuição-Uso Não-Comercial 2.5 Brasil License.
Oracle Blog não se responsabiliza pelo uso dos códigos e informações aqui fornecidas.
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD