Olá a todos. No post anterior, vimos como migrar e atualizar uma base de dados do 11g para o 12c. Essa base migrada será do tipo “non-CDB”. Para concluír o procedimento, será necessário converter essa base “non-CDB” para a arquitetura Multitenant, permitindo que ela seja “plugada” em um CDB. Neste post mostrarei como fazer isso.

 

1. Considerações iniciais

Todas as bases pré-12c são chamadas de “non-CDB”

No 12c, caso uma base seja criada com o parâmetro ENABLE_PLUGGABLE_DATABASE = FALSE, essa base também é do tipo “non-CDB”.

Existem algumas maneiras de criar um PDB a partir de um “non-CDB”:

* Usando o pacote DBMS_PDB, que gera os metadados para a criação do PDB. Esse pacote geram um .xml contendo metadados sobre os datafiles do non-CDB. Neste post vamos usar esse pacote.

OBS1: A limitação dessa tecnica é que o non-CDB deve ser 12c ou superior. Para que bases de dados de versões anteriores possam ser convertidas para um PDB através dessa tecnica, essas bases devem ser atualizadas para o 12c.

* Datapump, usando a feature de Transportable Tablespaces

* Goldengate

 

2. Passos

2.1) Colocar a base non-CDB em read-only

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMPiBTVEFSVFVQIE1PVU5UOwpTUUw+IEFMVEVSIERBVEFCQVNFIE9QRU4gUkVBRCBPTkxZOw==” hover_enabled=”0″]U1FMPiBTVEFSVFVQIE1PVU5UOwpTUUw+IEFMVEVSIERBVEFCQVNFIE9QRU4gUkVBRCBPTkxZOw==[/et_pb_dmb_code_snippet]

2.2) Gerar um XML contendo a estrutura da base non-CDB

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”QkVHSU4KREJNU19QREIuREVTQ1JJQkUocGRiX2Rlc2NyX2ZpbGUgPT4gJy9wYXRoL2Rlc3Rpbm8vYmFzZV9ub25jZGIueG1sJyk7CkVORDs=” hover_enabled=”0″]QkVHSU4KREJNU19QREIuREVTQ1JJQkUocGRiX2Rlc2NyX2ZpbGUgPT4gJy9wYXRoL2Rlc3Rpbm8vYmFzZV9ub25jZGIueG1sJyk7CkVORDs=[/et_pb_dmb_code_snippet]

2.3) Desligar a base non-CDB

 

2.4) Setar as variáveis de ambiente da base CDB que hospedará a base non-CDB, e se conectar a ela

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwb3J0IE9SQUNMRV9TSUQ9YmFzZV9jZGIKCmV4cG9ydCBPUkFDTEVfSE9NRT08cGF0aF9iYXNlXzEyYz4KCnNxbHBsdXMgLyBhcyBzeXNkYmE=” hover_enabled=”0″]ZXhwb3J0IE9SQUNMRV9TSUQ9YmFzZV9jZGIKCmV4cG9ydCBPUkFDTEVfSE9NRT08cGF0aF9iYXNlXzEyYz4KCnNxbHBsdXMgLyBhcyBzeXNkYmE=[/et_pb_dmb_code_snippet]

2.5) Checar se a base non-CDB é compatível com a base CDB que a hospedará

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U0VUIFNFUlZFUk9VVFBVVCBPTgpERUNMQVJFCmhvbGRfdmFyIGJvb2xlYW47CmJlZ2luCi0tIGZvcm5lY2VyIG8gZGVzdGlubyBkbyB4bWwgY3JpYWRvIG5vIHBhc3NvIDIuMgpob2xkX3ZhciA6PSBEQk1TX1BEQi5DSEVDS19QTFVHX0NPTVBBVElCSUxJVFkocGRiX2Rlc2NyX2ZpbGU9PiAnL3BhdGgvZGVzdGluby9iYXNlX25vbmNkYi54bWwnKTsKaWYgaG9sZF92YXIgdGhlbgpkYm1zX291dHB1dC5wdXRfbGluZSgnWUVTJyk7ICAgIC0taW5kaWNhIHF1ZSBuw6NvIGjDoSBwcm9ibGVtYXMKZWxzZQpkYm1zX291dHB1dC5wdXRfbGluZSgnTk8nKTsgICAgICAtLSBpbmRpY2EgcHJvYmxlbWFzLiBjaGVjYXIgYSB2aWV3IHBkYl9wbHVnX2luX3Zpb2xhdGlvbnMKZW5kIGlmOwplbmQ7Ci8=” hover_enabled=”0″]U0VUIFNFUlZFUk9VVFBVVCBPTgpERUNMQVJFCmhvbGRfdmFyIGJvb2xlYW47CmJlZ2luCi0tIGZvcm5lY2VyIG8gZGVzdGlubyBkbyB4bWwgY3JpYWRvIG5vIHBhc3NvIDIuMgpob2xkX3ZhciA6PSBEQk1TX1BEQi5DSEVDS19QTFVHX0NPTVBBVElCSUxJVFkocGRiX2Rlc2NyX2ZpbGU9PiAnL3BhdGgvZGVzdGluby9iYXNlX25vbmNkYi54bWwnKTsKaWYgaG9sZF92YXIgdGhlbgpkYm1zX291dHB1dC5wdXRfbGluZSgnWUVTJyk7ICAgIC0taW5kaWNhIHF1ZSBuw6NvIGjDoSBwcm9ibGVtYXMKZWxzZQpkYm1zX291dHB1dC5wdXRfbGluZSgnTk8nKTsgICAgICAtLSBpbmRpY2EgcHJvYmxlbWFzLiBjaGVjYXIgYSB2aWV3IHBkYl9wbHVnX2luX3Zpb2xhdGlvbnMKZW5kIGlmOwplbmQ7Ci8=[/et_pb_dmb_code_snippet]

2.6) Criar o PDB a partir do XML criado no passo 2.2

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Q1JFQVRFIFBMVUdHQUJMRSBEQVRBQkFTRSBka3BkYgpVU0lORyAnL3BhdGgvZGVzdGluby9iYXNlX25vbmNkYi54bWwnCkNPUFkKRklMRV9OQU1FX0NPTlZFUlQgPSAoJy91MDEvb3JhZGF0YS9vcmlnZW0vJywnL3UwMS9vcmFkYXRhL0NEQi9kZXN0aW5vLycpOw==” hover_enabled=”0″]Q1JFQVRFIFBMVUdHQUJMRSBEQVRBQkFTRSBka3BkYgpVU0lORyAnL3BhdGgvZGVzdGluby9iYXNlX25vbmNkYi54bWwnCkNPUFkKRklMRV9OQU1FX0NPTlZFUlQgPSAoJy91MDEvb3JhZGF0YS9vcmlnZW0vJywnL3UwMS9vcmFkYXRhL0NEQi9kZXN0aW5vLycpOw==[/et_pb_dmb_code_snippet]

2.7) Se conectar a PDB recem-criada e executar o seguinte script. Após a execução desse script, a nova base PDB deve ser aberta em READ-WRITE (tentar abri-la em READ-ONLY lançará um erro):

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”c3FscGx1cyBzeXMvc2VuaGExMjNAcGRiCgpAPy9yZGJtcy9hZG1pbi9ub25jZGJfdG9fcGRiLnNxbA==” hover_enabled=”0″]c3FscGx1cyBzeXMvc2VuaGExMjNAcGRiCgpAPy9yZGJtcy9hZG1pbi9ub25jZGJfdG9fcGRiLnNxbA==[/et_pb_dmb_code_snippet]

2.8) Ao término desse procedimento, a base non-CDB ainda existirá, bem como existirá o PDB criado a partir dessa base de dados.

 

Com isso, a base “non-CDB” migrada do 11g para o 12c fará parte de um CDB como uma Pluggable Database.

Até a próxima, pessoal.