一:该方法失败了!使用rman 备份某个pdb,来实现迁移某个pdb的目的:
针对19c制定备份任务,可以选择只备份特定的pdb,这样有个好处是,如果需要恢复,不用恢复重置文件和参数文件,直接恢复某个pdb即可,具体得做个试验记录下,这只是我的猜测!恢复某个或者多个pdb的时候,不需要停止其他的pdb; 然后再做一个试验,是不是可以从新起名来恢复某个pdb,例如liu_pdb恢复成he_pdb;
首先在81.94上备份liu_pdb的pdb数据库,
backup pluggable
database liu_pdb;
尝试在81.93上恢复,前提是81.93上没有liu_pdb这个pdb,如下告诉rman的备份文件路径,发现报错
RMAN> catalog start with '/data/u01/backup';
searching for all files that match the pattern /data/u01/backup
List of Files Unknown to the Database
=====================================
File Name: /data/u01/backup/liu_PDB_20210313_2_1
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
no files cataloged
List of Files Which Were Not Cataloged
=======================================
File Name: /data/u01/backup/liu_PDB_20210313_2_1
RMAN-07518: Reason: Foreign database file DBID: 457766100 Database Name: LIUDB
然后尝试先创建上liu_pdb看看是不是能解决,估计不可以!因为他报错的是db_name 是liudb,但是81.93这里是db_name 为liuhe!
DBID是DataBase IDentifier的缩写,意思就是数据库的唯一标识符。这个DBID在数据文件头和控制文件都是存在的,可以用于标示数据文件的归属,异地恢复的时候db_name不可以变化!
如果db_name一样,是不是可以这样来迁移某个pdb?试了下也不行,依旧报错!虽然db_name一样,但是dbid不一样也不行!
RMAN-07518: Reason: Foreign database file DBID: 457766100 Database Name: LIUDB
然后尝试先恢复参数文件再恢复控制文件,最后恢复pdb,这个操作是在空环境下进行的(也就是只有数据库软件)试试可以吗?
具体过程:首先备份pdb02,开启自动备份了参数和控制文件
RMAN> backup pluggable database PDB02 format '/data/u01/PDB02_%T_%s_%p';
然后先恢复参数文件,再恢复控制文件
RMAN>restore spfile to '$ORACLE_HOME/dbs/initliuhe.ora' from '/data/u01/backup/c-457766100-20210313-07';
RMAN> restore controlfile from '/data/u01/backup/c-457766100-20210313-07';
RMAN> catalog start with '/data/u01/backup';
RMAN> restore pluggable database PDB02; ---成功
但是当你recover的时候失败:其实就算成功了,也不行,因为你就没有cdb,怎么启动pdb呢?
RMAN> recover pluggable database PDB02;
Starting recover at 13-MAR-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=9 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/13/2021 23:09:13
RMAN-06067: RECOVER DATABASE required with a backup or created control file
最后尝试下修改dbid为源端数据库的dbid 但是nid也只能修改成从新生成的dbid,也不能自定义改成源端一样的dbid
[oracle@tvy-dbtest-04 dbs]$ nid target=/
失败了,不能通过backup 某个pdb,然后恢复到另一个实例!
二:采用拔出某个pdb,然后scp 对应文件和xml文件到目的端,最后再插入pdb来实现迁移数据库!这样来迁移数据和用户都会迁移过去!
如下这样来实现迁移某个pdb的性能 ,expdp ,rman 三者的性能对比?
备份:注意需要先close 源pdb。
SQL>alter pluggable database pdb01 close immediate;
然后拔出PDB01,注意必须起名字为.xml后缀!
SQL>alter pluggable database pdb01 unplug into '/home/oracle/pdb01.xml';
SQL> alter pluggable database LIU_PDB unplug into '/home/oracle/LIU_PDB0313';
alter pluggable database LIU_PDB unplug into '/home/oracle/LIU_PDB0313 *
ERROR at line 1:
ORA-65125: valid XML or PDB archive file name is required
注意执行完unplug之后,该pdb就无法打开了,
SQL> select pdb_id,pdb_name,dbid,STATUS from dba_pdbs where pdb_name='LIU_PDB';
pdb_id pdb_name dbid STATUS
3
pdb01
527541637
UNPLUGGED
恢复分两种情况:
一)在本地恢复
1)本地没有删除原来的
pdb01,需要加as clone 关键字来避开conflicts with the GUID的错误!
具体操作如下:
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml';
报错如下,
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml';
create pluggable database pdb01 using '/home/oracle/pdb01.xml' *
ERROR at line 1:
ORA-65018: FILE_NAME_CONVERT or NOCOPY must be specified
可以通过设置参数db_create_file_dest来指定新创建的pdb的文件的路径,也可以设置FILE_NAME_CONVERT来实现转换(前提得知道原来的
unplug的pdb的文件路径)
注意如果FILE_NAME_CONVERT指定的目录不存在会自动创建上!
方法1:如果没有设置db_create_file_dest,则需要指定FILE_NAME_CONVERT来实现转换目录:
create pluggable database pdb02 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
因为我是在同一个cbd中,先把liu_pdb导出来,然后创建成另一个名字的pdb,就会如下报错,其实就是pdb的id冲突!加上
as clone关键字 就可以从新生成一个!
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
create pluggable database pdb01 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01')
*
ERROR at line 1:
ORA-65122: Pluggable database GUID conflicts with the GUID of an existing
container.
解决加个as clone即可:
SQL> create pluggable database pdb01
as clone using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
Pluggable database created.
创建完pdb01会创建如下的文件:
/data/u01/app/oracle/oradata/LIUDB/pdb01/system01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/sysaux01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/undotbs01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/users01.dbf
方法2:设置db_create_file_dest,这样创建的pdb就默认在设置db_create_file_dest的目录下了,
SQL> alter system set db_create_file_dest='/data/u01/app/oracle/oradata/LIUDB/';
System altered.
然后可以直接执行创建
SQL> create pluggable database pdb02 as clone using '/home/oracle/pdb01.xml';
然后会自动创建如下所示的文件:自动生产的名字,建议首选第一种,是在不知道原来的pdb的文件目录的时候迫不得已再选择设置
db_create_file_dest
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_system_j4s1vvw4_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_sysaux_j4s1vvw5_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_undotbs1_j4s1vvw6_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_users_j4s1vvw7_.dbf
注释
如下语句
create pluggable database pdb03 as clone using '/home/oracle/pdb01.xml' nocopy tempfile reuse;
其中as clone表示是克隆,那么pdb03的pdb_id和GUID会从新生成;
其中nocopy表示不复制数据文件,仍用原来的位置的文件作为新的pdb的数据文件,但是pdb_id也会从新生成一个新的!
其中 tempfile reuse表示复用临时文件
二):异地恢复,也就说在另一台机器上恢复
alter pluggable database liu_pdb unplug into '/home/oracle/pdb01.xml';这里生产的xml文件只是记录了pdb1的一些信息,例如相关数据文件的路径,pdb_id ,GUID等等信息,如果需要异地恢复,需要把对应的pdb01的数据文件也一并拷贝到目的端的相应目录下
[oracle@tvy-dbtest-04 liu_pdb]$ scp pdb01.xml oracle@10.1.81.93:/data/u01/
[oracle@tvy-dbtest-04 liu_pdb]$ pwd
/data/u01/app/oracle/oradata/LIUDB/liu_pdb
[oracle@tvy-dbtest-04 liu_pdb]$ scp * oracle@10.1.81.93:/data/u01/app/oracle/oradata/LIUDB/liu_pdb/
oracle@10.1.81.93's password:
sysaux01.dbf 100% 380MB 118.1MB/s 00:03
system01.dbf 100% 280MB 149.8MB/s 00:01
undotbs01.dbf 100% 100MB 96.1MB/s 00:01
users01.dbf 100% 5128KB 101.2MB/s 00:00
然后再在异地81.93上指定create pluggable database 的命令!具体同本地恢复的内容!
SQL> create pluggable database pdb01 as clone using '/data/u01/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb02');
三:本地实现复制某个pdb的方法:从
pdb01
克隆
pdb01_bak
关闭pdb01:
SQL> alter pluggable database pdb01 close immediate;
Pluggable database altered.
启动pdb01到只读模式:
SQL> alter pluggable database pdb01 open read only;
Pluggable databasealtered.
复制pdb01,起名字为pdb01_bak,
SQL> CREATE PLUGGABLE DATABASE pdb01_bak from pdb01 FILE_NAME_CONVERT =('/data/u01/app/oracle/oradata/LIUDB/pdb01','/data/u01/app/oracle/oradata/LIUDB/pdb01_bak');
Pluggable databasecreated.
SQL>alter pluggable database pdb01 close immediate;
Pluggable databasealtered.
SQL>alter pluggable database pdb01 open;
Pluggable databasealtered.
SQL>alter pluggable database pdb01_bak open;
Pluggable databasealtered.
编辑推荐:
- oracle 19c pdb迁移03-03
- [20210315]ORA-04000 the sum of PCTUSED and PCTFREE cannot exceed 100.txt03-03
- read by other session 等待事件分析03-03
- [20210315]理解db file parallel read等待事件3.txt03-03
- 关于SCN需要知道的事03-03
- [20210315]acknowledge over PGA limit.txt03-03
- [20210315]理解db file parallel read等待事件4.txt03-03
- AWR报告基础操作03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- read by other session 等待事件分析
read by other session 等待事件分析
26-03-03 - Oracle sqlldr工具功能测试
Oracle sqlldr工具功能测试
26-03-03 - SQLServer 2012复制订阅数据订阅过程
SQLServer 2012复制订阅数据订阅过程
26-03-03 - [oracle] 索引低效,导致read by other session等待事件
- 【SQL】SQL表连接方法方式介绍(Oracle/Postgresql)
【SQL】SQL表连接方法方式介绍(Oracle/Postgresql)
26-03-03 - Oracle 19c数据库体系结构-2
Oracle 19c数据库体系结构-2
26-03-03 - 数据库无法注册至监听服务解决办法
数据库无法注册至监听服务解决办法
26-03-03 - Oracle数据库启动过程及状态详解
Oracle数据库启动过程及状态详解
26-03-03 - 数据库常用的事务隔离级别都有哪些?都是什么原理?
数据库常用的事务隔离级别都有哪些?都是什么原理?
26-03-03 - 检查联机后的43 号文件信息:alter database datafile 43 online;
