Oracle 12c多租戶的一些日常簡單維護

charsi發表於2016-04-11
1.多租戶(multi-tenant)介紹
  多租戶是Oracle 12c版本中推出的一個新特性,按官方的說法是基於雲的理念,我們不去討論雲的概念。簡單來講,多租戶架構就是資料庫中一個容器database(CDB)中包含多個可插拔DB(Pluggable Database)。簡單來說,就是在一個大的容器中,包含有多個資料庫。


2.Oracle中的CDB和PDB
  一個CDB中含有3種型別的容器:
  root容器,包含後設資料的資訊
  seed容器,主要是建立一個新的pdb時,提供一個初始化的模版
  pdb,即可插拔的資料庫。包含有使用者資料,使用者的資料都建立在這些資料庫中,對於使用者來說,他們並不知道訪問的是一個pdb還是一個獨立的instance資料庫


3.CDB和PDB中的日常維護管理命令
  1)檢視資料庫是否為cdb
     簡單的方法就是查詢v$datbase.cdb。CDB是Oracle 12c中新提出的特性,在12c 版本v$database檢視中新增加了相應的cdb的欄位。


SQL> select cdb from v$database;


CDB
---
YES


  2)建立PDB資料庫
    建立PDB可以通過以下幾種方式:


   a.通過seed新建一個PDB資料庫
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password
  STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M)
  DEFAULT TABLESPACE sales 
    DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
  PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'
  FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', '/disk1/oracle/dbs/salespdb/');


也可以用下面的語句來建立:
CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY password FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', '/disk1/oracle/dbs/salespdb/');


   
   b.通過克隆一個現有的PDB資料庫或非CDB資料庫(non-CDB)來建立一個新的PDB
通過一個現有的pdb1建立新的pdb2
CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 
  FILE_NAME_CONVERT = ('/disk1/oracle/pdb1/', '/disk2/oracle/pdb2/‘);


通過non-cdb建立pdb
(1)首先需要將non-cdb置為只讀
(2)建立連線指向non-cdb的dblink
(3)建立pdb
  CREATE PLUGGABLE DATABASE pdb2 FROM mydb@mydb_link FILE_NAME_CONVERT = ('/disk1/oracle/non-cdb1/', '/disk2/oracle/pdb2/‘);
  CREATE PLUGGABLE DATABASE pdb2 FROM NON$CDB@mydb_link FILE_NAME_CONVERT = ('/disk1/oracle/non-cdb1/', '/disk2/oracle/pdb2/‘);
  上面這兩個語句是等效的。
(4)在pdb上執行@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql指令碼




   c.使用XML後設資料描述檔案將資料庫插入到CDB中
     生成XML描述檔案
     exec dbms_pdb.DESCRIBE('/home/oracle/pdbprod3_describe.xml','PDBPROD3');


     
     DROP PDB
     drop pluggable database PDBPROD3 keep datafiles;


DECLARE
    compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/home/oracle/pdbprod3_describe.xml',
pdb_name       => 'PDBPROD3')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
  DBMS_OUTPUT.PUT_LINE(compatible);
END;



將PDBPROD3中的資料檔案目錄MOVE為PDBTEST01(資料檔案中存在PDBPROD3也改為PDBTEST01);


將資料庫改名插入到CDB中,使用NOCOPY的方式:
CREATE PLUGGABLE DATABASE PDBTEST01 USING '/home/oracle/pdbprod3_describe_new.xml'
  SOURCE_FILE_NAME_CONVERT = ('PDBPROD3', 'PDBTEST01')
NOCOPY;




   d.使用DBMS_PDB方式
    將Non-CDB遷移到PDB資料庫有幾種方式
    (1).通過克隆的方式進行遷移,即第二種方式中使用dblink方式進行建立,這種方式需要PDB和Non-CDB資料庫的版本都要高於12.1.0.2,如果沒有12.1.0.2,則需要將資料庫升級到12.1.0.2之後的版本
    (2).通過DBMS_PDB的方式生成XML後設資料檔案進行遷移。這種方式要求Non-CDB資料庫的版本高於12c。該節我們主要介紹這種方法
    (3).使用資料泵EXPDP/IMPDP的方式。這種方式要求Non-CDB資料庫的版本高於11.2.0.3,在使用該方式的時候,expdp資料時,需要新增VERSION引數version=12。如果Non-CDB資料庫版本低於11.2.0.3,則可以使用傳輸表空間的方式進行遷移
    (4)使用GoldenGate的方式進行遷移




    我們主要看一下使用DBMS_PDB的方式將Non-CDB轉化為PDB對方式:
    (1)將Non-CDB資料庫置為只讀
    (2)生成XML描述檔案。exec dbms_pdb.describe('/home/oracle/prod4_describe.xml');
    (3)關閉Non-CDB資料庫
    (4)在CDB資料庫中建立PDB。
         CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/prod4_describe.xml' COPY FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/PROD4','/u01/app/oracle/oradata/PRODCDB/ncdb');
        建立完成之後不要立即開啟PDB,還需要執行noncdb_to_pdb.sql指令碼
     (5)執行@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql指令碼
         alter session set container=NCDB;
         @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
      (6) 確認沒有問題後,開啟資料庫
          alter pluggable database NCDB open;
     




3)刪除PDB
  不保留資料檔案:
  drop pluggable database pdb_name including datafiles; 


  保留資料檔案:首先將資料庫unplug,然後drop keep datafiles
  alter pluggable database PDBPROD2 unplug into '/home/oracle/pdbprod2_describe.xml';
  drop pluggable database pdb_name keep datafiles;




4)檢視PDB
  show pdbs
  或檢視dba_pdbs檢視


5)切換pdb
  alter session set container=pdb_name;   —切換到某個PDB
  alter session set container=cdb$root;   —切換到cdb root


  如果需要建立全域性使用者,角色時,在cdb root下執行建立語句
  




admin user 這個使用者是做什麼用的?可以刪除,賦予的許可權是pdb_dba

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23850820/viewspace-2079301/,如需轉載,請註明出處,否則將追究法律責任。

相關文章