quarta-feira, 2 de abril de 2014

Oracle Multitenant: Abordando a realização de backups com o RMAN nos Pluggable Databases (PDB) e Container Databases (CDB) no Oracle 12c

Olá,




Nos artigos de Fevereiro/2014 e Março/2014 abordei sobre a arquitetura Multitenant do Oracle 12c de forma prática afim de demonstrar alguns conceitos e propriedades por trás dos bancos de dados de containers (CDBs) e dos bancos de dados plugáveis (PDBs). Neste artigo irei abordar a realização de backups dos bancos de dados CDBs e PDBs através do utilitário RMAN (Recovery Manager). Vale a pena salientar que irei focar apenas na realização dos backups, sem qualquer ação de recovery. A seguir, irei conectar no banco de dados de container CDB01 e realizar o backup do mesmo utilizando o RMAN. Pode-se notar abaixo que no RMAN da versão 12c é possível executar instruções SQL da mesma forma que no SQL*Plus.


C:\>set ORACLE_SID=CDB01

C:\>rman target /

Gerenciador de Recuperação: Release 12.1.0.1.0 - Production on Qua Abr 2 11:34:47 2014

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

conectado ao banco de dados de destino: CDB01 (DBID=1370556575)

RMAN> select con_id,dbid,name,open_mode from v$pdbs;

    CON_ID       DBID NAME              OPEN_MODE
---------- ---------- ----------------- ----------
         2 4076210644 PDB$SEED          READ ONLY
         3 3898013363 PDB01             READ WRITE
         4 3947824578 PDB02             READ WRITE
         5 4001514065 PDB03             READ WRITE

No resultado do SQL acima, pode-se notar a existência de 4 bancos de dados plugáveis (PDBs). Por padrão, o banco de dados PDB$SEED usado como template para criação de novos bancos de dados PDBs se mantém no estado somente leitura (READ ONLY). Abaixo irei realizar o backup do banco de dados CDB01. Como pré requisito para realização de Hot Backup, o banco de dados CDB01 foi alterado para operar no modo ARCHIVELOG.


Backup do Container Database (CDB) 

RMAN> backup database plus archivelog;

Iniciando backup em 02/04/14
log atual arquivado
usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=23 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=11 RECID=1 STAMP=842882988
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00001 nome=D:\ORACLE\APP\ORADATA\CDB01\SYSTEM01.DBF
número do arquivo=00005 nome=D:\ORACLE\APP\ORADATA\CDB01\UNDOTBS01.DBF
número do arquivo=00003 nome=D:\ORACLE\APP\ORADATA\CDB01\SYSAUX01.DBF
número do arquivo=00006 nome=D:\ORACLE\APP\ORADATA\CDB01\USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:02:26
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00004 nome=D:\ORACLE\APP\ORADATA\CDB01\PDBSEED\SYSAUX01.DBF
número do arquivo=00002 nome=D:\ORACLE\APP\ORADATA\CDB01\PDBSEED\SYSTEM01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\02C6D349454A4F42BE1E114F23...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:05
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00013 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSAUX01.DBF
número do arquivo=00012 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSTEM01.DBF
número do arquivo=00014 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\PDB01_USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\A1D71A8D231B4153A6189ECF7C...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:15
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00018 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB02\SYSAUX01.DBF
número do arquivo=00017 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB02\SYSTEM01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BBF9D856E6144A5586175255D5...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:05
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00023 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB03\SYSAUX01.DBF
número do arquivo=00022 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB03\SYSTEM01.DBF
número do arquivo=00024 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB03\PDB01_USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\8C150C75FFDE4362A4CDF6C7B2...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:55
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
log atual arquivado
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=12 RECID=2 STAMP=842883401
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando Control File and SPFILE Autobackup em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\AUTOBACKUP\2014_04_02\O1_M...
Finalizado Control File and SPFILE Autobackup em 02/04/14

No resultado apresentado acima, pode-se notar que ao realizar o backup de um banco de dados de container CDB, o mesmo acontece com todos os bancos de dados PDBs existentes.


Backup do Container ROOT (CDB$ROOT)

O backup do banco de dados de container ROOT é semelhante ao backup do banco de dados de CDB, com a diferença de que os bancos de dados PDB não são incluídos no backup. Segue abaixo a demonstração de realização do backup do container ROOT.

RMAN> backup database root plus archivelog;

Iniciando backup em 02/04/14
log atual arquivado
usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=34 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=13 RECID=3 STAMP=842884398
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00001 nome=D:\ORACLE\APP\ORADATA\CDB01\SYSTEM01.DBF
número do arquivo=00005 nome=D:\ORACLE\APP\ORADATA\CDB01\UNDOTBS01.DBF
número do arquivo=00003 nome=D:\ORACLE\APP\ORADATA\CDB01\SYSAUX01.DBF
número do arquivo=00006 nome=D:\ORACLE\APP\ORADATA\CDB01\USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:02:15
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
log atual arquivado
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=14 RECID=4 STAMP=842884538
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando Control File and SPFILE Autobackup em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\AUTOBACKUP\2014_04_02\O1_M...
Finalizado Control File and SPFILE Autobackup em 02/04/14 

Backup dos Pluggable Databases (PDB)



É possível realizar o backup de um ou mais bancos de dados plugáveis de uma só uma vez. Segue abaixo o exemplo de realização de backup dos bancos de dados PDB01 e PDB02.

RMAN> backup pluggable database pdb01, pdb02 plus archivelog;

Iniciando backup em 02/04/14
log atual arquivado
usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=30 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=13 RECID=3 STAMP=842884398
thread do log arquivado de entrada=1 sequência=14 RECID=4 STAMP=842884538
thread do log arquivado de entrada=1 sequência=15 RECID=5 STAMP=842885189
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00013 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSAUX01.DBF
número do arquivo=00012 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSTEM01.DBF
número do arquivo=00014 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\PDB01_USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\02C6D349454A4F42BE1E114F23...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:05
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00018 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB02\SYSAUX01.DBF
número do arquivo=00017 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB02\SYSTEM01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BBF9D856E6144A5586175255D5...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:15
Finalizado backup em 02/04/14

Iniciando backup em 02/04/14
log atual arquivado
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backups de log arquivado
canal ORA_DISK_1: especificando log(s) arquivado no conjunto de backups
thread do log arquivado de entrada=1 sequência=16 RECID=6 STAMP=842885334
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\BACKUPSET\2014_04_02\O1_MF...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:01
Finalizado backup em 02/04/14

Iniciando Control File and SPFILE Autobackup em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\AUTOBACKUP\2014_04_02\O1_M...
Finalizado Control File and SPFILE Autobackup em 02/04/14

Até agora demonstrei a realização de backups dos bancos de dados estando conectado no banco de dados de container ROOT. É possível realizar o backup de um banco de dados PDB conectando diretamente no mesmo pelo RMAN através de um serviço TNS. Como exemplo, segue abaixo o serviço TNS criado no TNSNAMES.ORA da minha máquina local.

PDB01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDB01)
    )
  )


A seguir, irei utilizar o serviço PDB01 acima para conectar no banco de dados PDB01. Após a realização da conexão será possível realizar o backup do mesmo como demonstrado abaixo.
 
C:\>rman target /@PDB01

Gerenciador de Recuperação: Release 12.1.0.1.0 - Production on Qua Abr 2 11:58:00 2014

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

conectado ao banco de dados de destino: CDB01 (DBID=1370556575)

RMAN> backup database;

Iniciando backup em 02/04/14
usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=35 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados no conjunto de backups
número do arquivo=00013 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSAUX01.DBF
número do arquivo=00012 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\SYSTEM01.DBF
número do arquivo=00014 nome=D:\ORACLE\APP\ORADATA\CDB01\PDB01\PDB01_USERS01.DBF
canal ORA_DISK_1: iniciando o componente 1 em 02/04/14
canal ORA_DISK_1: componente 1 finalizado em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\02C6D349454A4F42BE1E114F23...
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:01:15
Finalizado backup em 02/04/14

Iniciando Control File and SPFILE Autobackup em 02/04/14
handle de componente=D:\ORACLE\APP\FAST_RECOVERY_AREA\CDB01\AUTOBACKUP\2014_04_02\O1_M...
Finalizado Control File and SPFILE Autobackup em 02/04/14