ORACLE 12C PDB 维护基础知识介绍
什么是ORACLE 12C PDB
ORACLE 12C PDB 是Oracle数据库12C版本中提供的一种新的数据库容器化技术,其全名为“Pluggable Database”. And PDB是一个可以独立部署、管理和维护的数据库对象,它是若干个Pluggable Database的容器,每个容器内可以有独立的用户和数据,同时也可以与其他容器共享配置和数据。这种架构提供了更好的资源隔离和灵活性,并使得应用程序更容易部署和维护。
PDB维护的基础知识
在ORACLE 12C PDB维护工作中,需要了解以下的基础知识:
1. 连接PDB
通过下述命令可以连接PDB:
sqlplus sys/oracle@HOSTNAME:PDBNAME as sysdba
其中HOSTNAME为主机名,PDBNAME为PDB的名称。
2. 查看PDB状态
通过下述命令可以查看PDB的状态:
select name, open_mode from v$pdbs;
其中,name为PDB的名称,open_mode为PDB的开启模式。
3. 开启或关闭PDB
通过下述命令可以开启或关闭PDB:
alter pluggable database PDBNAME open/close;
其中,PDBNAME为PDB的名称。
4. 备份和恢复PDB
备份PDB的方法和备份传统数据库的方法类似,其中需要注意:
-
需要备份PDB及其所在的Container Database(CDB),因为CDB保存了PDB的元数据和配置信息。
-
为每个PDB分别备份,可以使用expdp命令。
例如:
expdp username/password@PDBNAME directory=BACKUP_DIR dumpfile=PDBNAME_backup.dmp logfile=PDBNAME_backup.log
恢复PDB的命令如下:
impdp username/password@PDBNAME directory=BACKUP_DIR dumpfile=PDBNAME_backup.dmp logfile=PDBNAME_restore.log
5. 移动PDB
移动PDB的方法和移动传统数据库的方法类似,其中需要注意:
-
使用dbms_pdb.desist以及dbms_pdb.deregister命令,使得PDB从源CDB中移除。
-
使用dbms_pdb.register以及dbms_pdb.startup命令,将PDB添加到目标CDB中。
例如:
-- 源CDB
sqlplus sys/oracle@SOURCE_CDB as sysdba
SQL> alter pluggable database PDBNAME close immediate;
SQL> execute dbms_pdb.desist('PDBNAME');
SQL> execute dbms_pdb.deregister('PDBNAME');
-- 目标CDB
sqlplus sys/oracle@TARGET_CDB as sysdba
SQL> execute dbms_pdb.register('PDBNAME','/u01/app/oracle/oradata/12c/pdb/PDBNAME.xml');
SQL> alter pluggable database PDBNAME open;
示例1:移动PDB
假设目前有一个PDB名为“mydb”,需要从旧的CDB(OLD_CDB)迁移到新的CDB(NEW_CDB)中,迁移步骤如下:
- 在源CDB中关闭PDB,然后移除它。
sqlplus sys/oracle@OLD_CDB as sysdba
SQL> alter session set container=mydb;
SQL> alter pluggable database mydb close immediate;
SQL> execute dbms_pdb.desist('mydb');
SQL> execute dbms_pdb.deregister('mydb');
- 将PDB的所有数据文件和xml文件复制到目标CDB服务器上后,在目标CDB上进行注册,并以非容器模式打开PDB。
sqlplus sys/oracle@NEW_CDB as sysdba
SQL> execute dbms_pdb.register('mydb','/u01/app/oracle/oradata/12c/pdb/mydb.xml');
SQL> alter pluggable database mydb open;
SQL> exit
示例2:备份PDB
假设需要对名为PDB1的PDB进行备份操作,备份的细节如下:
- 在RMAN中备份PDB及其所在的CDB,并记录备份信息:
rman target sys/oracle@CDB1 auxiliary sys/oracle@CDB2
RMAN> backup pluggable database PDB1 format '/backup/%d_%U' plus archivelog tag='PDB1';
RMAN> exit
- 使用expdp命令备份PDB内的数据:
expdp username/password@PDB1 directory=BACKUP_DIR dumpfile=PDB1_backup.dmp logfile=PDB1_backup.log
- 恢复PDB1的步骤:
a. 使用impdp命令将数据恢复到目标PDB中。
impdp username/password@PDB1 directory=BACKUP_DIR dumpfile=PDB1_backup.dmp logfile=PDB1_restore.log
b. 更改目标PDB的状态,并打开它。
sqlplus sys/oracle@CDB1 as sysdba
SQL> alter session set container=PDB1;
SQL> alter pluggable database PDB1 open;
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ORACLE 12C PDB 维护基础知识介绍 - Python技术站