24 Temmuz 2015 Cuma

Non-CDB database'in PDB'ye convert edilmesi

Oracle 11gR2 sürümünden 12C'ye upgrade işleminden sonra artık elimizde 12C üzerinde çalışan Non-CDB bir databaseimiz var. 12C'de yeni gelen özelliklerden birtanesi olan pluggable databaseler hakkında geçtiğimiz aylarda bir yazı yazmıştım. (burdan erişebilirsiniz)
12C'de 3 farklı konfigürasyon yapabiliriz ihtiyacımıza göre;
Multitenant özelliklerinden faydalanmak istemiyorsak eski mimari ile alıştığımız 11g database özellikleri ile databaseimizi kurup yönetebiliriz.
İleride bu mimariye geçiş yapma ihtilamine karşılık 12c kurulumu esnasında 1 CDB ve 1PDB ile kurulumu gerçekleştirip, Multitenant architecture in single tenant konfigürasyonunu kullanabiliriz..Bu opsiyon için Multitenant lisans ücreti ödemiyoruz.
Son olarak ise multiple PDB per CDB olarak adlandırılan konfigürasyonla Multitenant özelliğini tam olarak kullanabiliriz,bu konfigürasyon için Multitenant lisansının olması gerekiyor..

Upgrade işleminden sonra biz ilk bahsedilen eski yapıdaki yani NON-CDB olan bir database'e sahibiz. Şimdi ise bu database'i Multitenant mimarisine uygun, pluggable bir database'e convert etmeye çalışalım.

oracle@db01-test ~$ sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Fri Jul 24 09:27:04 2015Copyright (c) 1982, 2014, Oracle.  All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Advanced Analytics and Real Application Testing options
SQL> select name, cdb from v$database;
NAME   CDB--------- ---ORCL   NO

 NON-CDB database'imizin adı ORCL, 2 nodelu 12.1.0.2 üzerinde koşuyor. Bu sistem üzerinde yeni bir Conteiner DB yaratıyoruz. DBCA yı çalıştırarak CDB database i oluşturuyoruz


Create database seçeneği ile yeni bir CDB yaratacağız.

 RAC database oluşturacağız.

 Container DB yaratacağımızı bu adımda belirtiyoruz aynı zamanda boş bir CDB yaratabilir yada bu işlemle birlikte bir de PDB yaratılmasını isteyebiliriz.

 Hangi nodelar üzerinde yaratacağımızı belirliyoruz.

 DB nin ASM diskini kullanması için gerekli ayarları bu aşamada yapıyoruz. Compatible.asm parametresi disk grubum için 11.2.0 olduğu için 12.1.0 DByi üzerinde depolamak için bu parametreyi aşağıdaki gibi update ediyoruz.

SQL> ALTER DISKGROUP DATADG SET ATTRIBUTE 'compatible.asm'='12.1';
Diskgroup altered.

 Automatic Memory Management kullanımı ve memory seçeneklerini belirledikten sonra artık kurulum aşamasına geçiyorum ve CDB'yi oluşturuyorum. Kurulum sonrası sqlplus ile instance'a bağlanıp kontrol ediyoruz;

oracle@db01-test ~$ . oraenv
ORACLE_SID = [CDBNEW1] ? 
The Oracle base remains unchanged with value /u01/app/oracle
oracle@db01-test ~$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Fri Jul 24 11:08:16 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> select name, cdb from v$database;                           

NAME  CDB
--------- ---
CDBNEW  YES

Şimdi NON-CDB veritabanımıza bağlanıp pluggable hale getirmek için gerekli konfigürasyonları yapıyoruz;

Databasei readonly modda açtıktan sonra PDB olarak convert etmek için gerekli xml file'ı oluşturmak için aşağıdaki sqli çalıştırıyoruz.

oracle@db01-test ~$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Fri Jul 24 11:11:35 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount exclusive
ORACLE instance started.
Total System Global Area 2516582400 bytes
Fixed Size    2927528 bytes
Variable Size  738198616 bytes
Database Buffers 1761607680 bytes
Redo Buffers   13848576 bytes
Database mounted.
SQL> alter database open read only; 
alter database open read only
SQL> select status from v$instance;  
STATUS
------------
MOUNTED

SQL> alter database open read only;

Database altered.

SQL> exec dbms_pdb.describe(pdb_descr_file=>'/u01/app/oracle/product/12.1.0.2/db_2/noncdb.xml');

PL/SQL procedure successfully completed.

SQL> exit

Bu işlemden sonra CDBNEW veritabanına bağlanıp verilen xml dosyasını kullanarak DB dosyalarının kopyalanmadan orjinallerinin PDB olarak kullanılması seçeneğiyle işlemi yapıyorum. DB dosyalarının orjinallerinin kullanılmasını istemiyorsak file name convert parametresini ekleyerek orjinal dosyalarının birer kopyasının alınarak PDB oluşturulmasını sağlayabiliriz.


SQL> create pluggable database ORCL as clone using '/u01/app/oracle/product/12.1.0.2/db_2/noncdb.xml' nocopy;

Pluggable database created.

Kontrol ettiğimiz zaman PDBlerin durumu aş. gibidir. PDB'yi başlatmak için ise aş. komutu kullanabiliriz..

SQL> SELECT pdb_name, status
FROM   dba_pdbs
ORDER BY pdb_name;  2    3  

PDB_NAME
--------------------------------------------------------------------------------
STATUS
---------
ORCL
NEW

PDB$SEED
NORMAL

PDB1
NORMAL


SQL> ALTER PLUGGABLE DATABASE ORCL OPEN READ WRITE  ;

İyi Çalışmalar..



    0 yorum:

    Yorum Gönder