ORACLE 19C 使用unplug/plug 方式迁移PDB

目标:
       使用unplug/plug 把PDB1 从CDB1中迁移到CDB2

环境:
    源端:CDB1
   目标:CDB2

   需要迁移的PDB:PDB1

步骤:


1.登陆CDB1 


[oracle@dbserver ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:03:52 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

@ >conn / as sysdba
Connected.
SYS@cdb1 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB3                           MOUNTED
         6 PDB_ORCL                       READ WRITE NO

2.关闭PDB1

SYS@cdb1 >alter pluggable database pdb1 close;

Pluggable database altered.

SYS@cdb1 >select name from v$datafile where con_id=3;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/tsp_pdb1.dbf

3.拔下 PDB1

SYS@cdb1 >alter pluggable database pdb1 unplug into '/tmp/pdb1.xml';

Pluggable database altered.

--验证XML文件存在
SYS@cdb1 >! ls -ltr /tmp/pdb1.xml
-rw-r--r-- 1 oracle asmadmin 7903 Oct 22 14:06 /tmp/pdb1.xml

SYS@cdb1 >

4.删除PDB1

SYS@cdb1 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           MOUNTED
         4 PDB3                           MOUNTED
         6 PDB_ORCL                       READ WRITE NO

SYS@cdb1 >drop pluggable database pdb1;                    

Pluggable database dropped.

--确认PDB1在CDB1不再存在

SYS@cdb1 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         4 PDB3                           MOUNTED
         6 PDB_ORCL                       READ WRITE NO
SYS@cdb1 >

--说明

5.文件拷贝


 
   生产中,CDB1和CDB2不在同一台机器,这个时候,需要把 PDB1的数据文件和XML文件一同拷贝到CDB2去,我们这里都在一台机器,所以,此步骤略。

6.登陆CDB2

[oracle@dbserver ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Oct 22 14:09:17 2023
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

@ >conn / as sysdba
Connected.
SYS@cdb2 >show con_name

CON_NAME
------------------------------
CDB$ROOT
SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO

7.创建PDB 

  使用拔下的PDB1

SYS@cdb2 >create pluggable database pdb1
  2        using '/tmp/pdb1.xml' 
  3        nocopy;

Pluggable database created.

SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO
         4 PDB1                           MOUNTED

8.数据文件及GUID不变

SYS@cdb2 >select name from v$datafile where con_id=4;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/CDB1/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB1/pdb1/tsp_pdb1.dbf

SYS@cdb2 >select name,guid from v$pdbs where con_id=4;

NAME                                  GUID
-----------------------------         --------------------------------
PDB1                                  07BE9065CAE69697E0637885A8C080A5

9.打开
 SYS@cdb2 >show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO
         4 PDB1                           MOUNTED
SYS@cdb2 >alter pluggable database pdb1 open;

SYS@cdb2 >show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB2                           READ WRITE NO
         4 PDB1                           READ WRITE NO
SYS@cdb2 >
 

<think>好的,用户问的是如何在Oracle 19c中配置CDB和PDB。我需要根据提供的引用资料和已有的知识来构建一个清晰的步骤指南。首先,我应该先确认用户的问题范围,他们可能想了解从创建CDB到管理PDB的全过程。 根据引用[2],创建CDB的过程与非CDB类似,但需要指定enable_pluggable_database参数。所以第一步应该是创建CDB,这可能包括使用DBCA工具或者SQL命令。然后,引用[3]提到了一些常用的CDB和PDB命令,比如切换容器、启动关闭PDB等,这些需要详细列出。 接下来,用户提供的引用[1]中有一个错误示例,ORA-65019,说明在打开PDB时如果已经打开的话会报错,所以需要确保在操作时PDB处于正确的状态。这可能涉及到使用alter pluggable database命令,如打开或关闭PDB,这部分需要包括在配置步骤中。 另外,引用[4]提到增加监听配置,这部分可能涉及到修改listener.ora文件,确保PDB能够被正确访问。因此,配置监听也是关键步骤之一,需要详细说明如何添加SID描述和重启监听服务。 可能还需要考虑创建新PDB的方法,比如从种子创建或克隆现有PDB。引用[3]中有创建PDB的命令示例,应该包括这些步骤,并说明如何通过SQL命令执行。 最后,测试连接部分也很重要,确保配置正确。可能需要使用sqlplus连接到不同的PDB,或者通过应用程序测试连接字符串。 需要确保步骤逻辑清晰,分阶段进行:创建CDB、创建PDB、配置监听、管理PDB状态、测试连接。每个步骤都需要具体的命令和注意事项,例如在打开PDB时的错误处理,引用[1]中的例子需要提醒用户检查当前状态。 还要注意引用标记的正确使用,比如在提到启动PDB时引用[1],创建CDB时引用[2],命令示例引用[3],监听配置引用[4]。确保每个引用都自然融入文本,并在相关位置标注。 最后生成相关问题,可能涉及CDB与PDB的区别、迁移数据、备份恢复、常见错误解决等,参考用户之前的示例问题结构。</think>以下是在Oracle 19c中配置CDB和PDB的详细步骤指南: ### 一、创建CDB容器数据库 1. **通过DBCA工具创建** 使用Database Configuration Assistant(DBCA)选择"Create Container Database"选项,勾选`Enable Pluggable Database`[^2],设置CDB名称(如ORCLCDB)和PDB种子模板。 2. **手动SQL创建** 在创建数据库时添加参数: ```sql CREATE DATABASE ORCLCDB ENABLE PLUGGABLE DATABASE FILE_NAME_CONVERT=('/opt/oracle/oradata/ORCLCDB/pdbseed/','/opt/oracle/oradata/ORCLCDB/ORCLPDB/'); ``` --- ### 二、创建可插拔数据库PDB) 1. **从PDB种子创建** ```sql CREATE PLUGGABLE DATABASE ORCLPDB ADMIN USER pdbadmin IDENTIFIED BY password FILE_NAME_CONVERT=('/opt/oracle/oradata/ORCLCDB/pdbseed/','/opt/oracle/oradata/ORCLCDB/ORCLPDB/'); ``` 2. **查看PDB状态** ```sql SELECT name, open_mode FROM v$pdbs; ``` --- ### 三、管理PDB生命周期 1. **启动/关闭PDB** ```sql ALTER PLUGGABLE DATABASE ORCLPDB OPEN; -- 打开PDB[^1] ALTER PLUGGABLE DATABASE ORCLPDB CLOSE IMMEDIATE; -- 强制关闭 ``` 2. **切换容器** ```sql ALTER SESSION SET CONTAINER=ORCLPDB; -- 进入PDB[^3] ALTER SESSION SET CONTAINER=CDB$ROOT; -- 返回CDB ``` --- ### 四、监听配置(关键步骤) 修改`$ORACLE_HOME/network/admin/listener.ora`: ```xml SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCLPDB) (SID_NAME = ORCLCDB) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) ) ) ``` 重启监听: ```bash lsnrctl stop lsnrctl start ``` (配置后需验证tnsping连通性)[^4] --- ### 五、连接测试 1. **CDB级连接** ```bash sqlplus sys@ORCLCDB as sysdba ``` 2. **PDB级连接** ```bash sqlplus pdbadmin/password@ORCLPDB ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值