Oracle 12c多租戶的一些日常簡單維護
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
多租戶是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c多租戶特性詳解:PDB 的建立、克隆與維護Oracle
- Oracle 12c多租戶特性詳解:全域性使用者與本地使用者的原理與維護Oracle
- oracle 12c 多租戶體系結構概念Oracle
- Oracle 12c 多租戶 CDB 與 PDB 備份Oracle
- Oracle RAC 日常維護Oracle
- Oracle 12c系列(一)|多租戶容器資料庫Oracle資料庫
- Oracle OGG日常維護Oracle
- 針對oracle日常維護Oracle
- 收集oracle日常維護的工作命令Oracle
- Oracle 12c 多租戶配置和修改 CDB 和 PDB 引數Oracle
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- GoldenGate 12.2抽取Oracle 12c多租戶配置過程GoOracle
- Oracle多租戶特性的常用操作Oracle
- ORACLE DG 日常維護常用SQLOracleSQL
- 【轉】ORACLE CRS日常維護命令Oracle
- Oracle資料庫日常維護Oracle資料庫
- Oracle DBA 日常維護手冊Oracle
- Oracle RAC日常基本維護命令Oracle
- Oracle 12c多租戶特性詳解:PDB 的出與入 InAndOutOracleNaN
- Oracle 12c多租戶特性詳解:PDB 的備份與恢復Oracle
- 12c多租戶架構下部署GoldenGate 12c架構Go
- linux中oracle的日常維護命令LinuxOracle
- Oracle 12c 多租戶專題|CDB後設資料內幕Oracle
- Oracle 12c 多租戶在 CDB 中 Plug A PDB,Unplugging A PDBOracle
- 多租戶
- 【轉】Oracle RAC日常基本維護命令Oracle
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫
- Part II 配置和管理多租戶環境概述-Oracle多租戶管理員指南Oracle
- 12C多租戶關於CDB、PDB的常用SQL語句SQL
- Oracle 20C 多租戶_新特性Oracle
- Oracle多租戶架構優勢分析Oracle架構
- RAC日常維護命令
- PG日常維護(一)
- Oracle 12c 多租戶 CDB 與 PDB之 shared undo 與 Local undo 切換Oracle
- 【轉】Oracle資料庫日常維護手冊Oracle資料庫
- Oracle資料庫日常維護手冊 (zt)Oracle資料庫
- 物理standby database的日常維護Database
- 【多租戶技術】