18C dataguard主库添加pdb,数据文件名没有自动转换unname

环境:

主库:2 节点RAC

从库:单节点

db:18c

1.主库上新增了一个pdb

SQL> show pdbs

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

SQL> create pluggable database pdb3 from pdb1;

2.从库发现文件名没有转换

SQL> set linesize 5000;
SQL> column CON_ID format 99;
SQL> column guid format a32;
SQL> column name format a8;
SQL> column file_id format 99;
SQL> column file_name format a128;
SQL> select a.CON_ID, null as guid, 'CDB' as name, file_id, file_name
  2    from cdb_data_files a
  3   where a.CON_ID = 1
  4  union all
  5  select a.CON_ID, a.guid, a.name, b.FILE#, b.NAME
  6    from v$pdbs a, v$datafile b
  7   where a.CON_ID = b.CON_ID
  8  order by name;

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     1                                  CDB            7 /u01/app/oracle/oradata/ora18c/users01.dbf
     1                                  CDB            4 /u01/app/oracle/oradata/ora18c/undotbs1_01.dbf
     1                                  CDB            3 /u01/app/oracle/oradata/ora18c/sysaux01.dbf
     1                                  CDB            1 /u01/app/oracle/oradata/ora18c/system01.dbf
     1                                  CDB            9 /u01/app/oracle/oradata/ora18c/undotbs2_01.dbf
     1                                  CDB           22 /u01/app/oracle/oradata/ora18c/tps_cdb_hxl.398.1073357031
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       5 /u01/app/oracle/oradata/ora18c/pdbseed/system01.dbf
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       6 /u01/app/oracle/oradata/ora18c/pdbseed/sysaux01.dbf
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       8 /u01/app/oracle/oradata/ora18c/pdbseed/undotbs01.dbf
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          13 /u01/app/oracle/oradata/ora18c/pdb1/undo_2.dbf
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          12 /u01/app/oracle/oradata/ora18c/pdb1/undotbs1.dbf

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          11 /u01/app/oracle/oradata/ora18c/pdb1/sysaux01.dbf
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          10 /u01/app/oracle/oradata/ora18c/pdb1/system01.dbf
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          14 /u01/app/oracle/oradata/ora18c/pdb1/users01.dbf
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          21 /u01/app/oracle/oradata/ora18c/pdb1/tps_hxl.331.1072888977
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          20 /u01/app/oracle/oradata/ora18c/pdb1/tps_hxl.dbf
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          15 /u01/app/oracle/oradata/ora18c/pdb2/system01.dbf
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          16 /u01/app/oracle/oradata/ora18c/pdb2/sysaux01.dbf
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          19 /u01/app/oracle/oradata/ora18c/pdb2/users01.dbf
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          18 /u01/app/oracle/oradata/ora18c/pdb2/undo_2.dbf
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          17 /u01/app/oracle/oradata/ora18c/pdb2/undotbs1.dbf
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          26 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00026

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          25 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00025
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          24 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00024
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          29 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00029
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          28 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00028
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          27 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00027
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          23 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00023

28 rows selected.

3.主库上查看文件id与文件名的关系

SQL> set linesize 5000;
SQL> column CON_ID format 99;
SQL> column guid format a32;
SQL> column name format a8;
SQL> column file_id format 99;
SQL> column file_name format a128;
SQL> select a.CON_ID, null as guid, 'CDB' as name, file_id, file_name
  2    from cdb_data_files a
  3   where a.CON_ID = 1
  4  union all
  5  select a.CON_ID, a.guid, a.name, b.FILE#, b.NAME
  6    from v$pdbs a, v$datafile b
  7   where a.CON_ID = b.CON_ID
  8  order by name;

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     1                                  CDB            1 +DATA/SLNNGK/DATAFILE/system.260.1072316819
     1                                  CDB           22 +DATA/SLNNGK/DATAFILE/tps_cdb_hxl.398.1073357031
     1                                  CDB            9 +DATA/SLNNGK/DATAFILE/undotbs2.279.1072317491
     1                                  CDB            7 +DATA/SLNNGK/DATAFILE/users.257.1072316921
     1                                  CDB            4 +DATA/SLNNGK/DATAFILE/undotbs1.258.1072316919
     1                                  CDB            3 +DATA/SLNNGK/DATAFILE/sysaux.259.1072316885
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       5 +DATA/SLNNGK/64A52F53A7693286E053CDA9E80AED76/DATAFILE/system.276.1072317193
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       6 +DATA/SLNNGK/64A52F53A7693286E053CDA9E80AED76/DATAFILE/sysaux.275.1072317193
     2 C21CA002E8FB24FDE0536F38A8C0D830 PDB$SEED       8 +DATA/SLNNGK/64A52F53A7693286E053CDA9E80AED76/DATAFILE/undotbs1.277.1072317193
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          10 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/system.289.1072317933
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          21 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/tps_hxl.331.1072888977

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          20 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/tps_hxl.317.1072505347
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          11 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/sysaux.290.1072317933
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          12 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/undotbs1.288.1072317933
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          13 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/undo_2.292.1072317981
     3 C21CCC2F26B343B4E0536F38A8C01387 PDB1          14 +DATA/SLNNGK/C21CCC2F26B343B4E0536F38A8C01387/DATAFILE/users.293.1072317987
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          15 +DATA/SLNNGK/C21CD091742C46B3E0536F38A8C09100/DATAFILE/system.295.1072318011
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          19 +DATA/SLNNGK/C21CD091742C46B3E0536F38A8C09100/DATAFILE/users.299.1072318065
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          18 +DATA/SLNNGK/C21CD091742C46B3E0536F38A8C09100/DATAFILE/undo_2.298.1072318061
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          17 +DATA/SLNNGK/C21CD091742C46B3E0536F38A8C09100/DATAFILE/undotbs1.294.1072318011
     4 C21CD091742C46B3E0536F38A8C09100 PDB2          16 +DATA/SLNNGK/C21CD091742C46B3E0536F38A8C09100/DATAFILE/sysaux.296.1072318011
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          28 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/tps_hxl.401.1073359953

CON_ID GUID                             NAME     FILE_ID FILE_NAME
------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          27 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/users.400.1073359953
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          26 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/undo_2.403.1073359953
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          25 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/undotbs1.402.1073359953
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          24 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/sysaux.406.1073359953
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          29 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/tps_hxl.404.1073359953
     5 C30F698489920BA1E0536F38A8C0B746 PDB3          23 +DATA/SLNNGK/C30F698489920BA1E0536F38A8C0B746/DATAFILE/system.405.1073359953

28 rows selected.

4.从库上创建新的pdb目录

[root@18c_single ~]# su - oracle

[oracle@18c_single ~]$ mkdir -p /u01/app/oracle/oradata/ora18c/pdb3

5.文件转换

SQL> connect / as sysdba
alter system set standby_file_management=manual;
alter session set container=pdb3;
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00026' as '/u01/app/oracle/oradata/ora18c/pdb3/undo_2.403.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00025' as '/u01/app/oracle/oradata/ora18c/pdb3/undotbs1.402.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00024' as '/u01/app/oracle/oradata/ora18c/pdb3/sysaux.406.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00029' as '/u01/app/oracle/oradata/ora18c/pdb3/tps_hxl.404.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00028' as '/u01/app/oracle/oradata/ora18c/pdb3/tps_hxl.401.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00027' as '/u01/app/oracle/oradata/ora18c/pdb3/users.400.dbf';
alter database create datafile '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00023' as '/u01/app/oracle/oradata/ora18c/pdb3/system.405.dbf';
alter session set container=cdb$root;
alter system set standby_file_management=auto;

若是已经停掉应用日志的,需要重新应用
alter database recover managed standby database using current logfile disconnect from session;

6.尝试打开pdb3

SQL> alter pluggable database pdb3 open;
alter pluggable database pdb3 open
*
ERROR at line 1:
ORA-01147: SYSTEM tablespace file 23 is offline

alter database datafile 23 online;

7.需要恢复

SQL> alter session set container=cdb$root;
SQL>alter system set standby_file_management=auto;
SQL>alter database recover managed standby database cancel;

SQL> alter session set container=pdb3;
SQL>alter pluggable database disable recovery;

##tnsslnngk1 是连接到主库的tns
RMAN> run{
2> restore pluggable database pdb3 from service tnsslnngk1 ;
3> }

Starting restore at 24-MAY-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=82 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00023 to /u01/app/oracle/oradata/ora18c/pdb3/system.405.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00024 to /u01/app/oracle/oradata/ora18c/pdb3/sysaux.406.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00025 to /u01/app/oracle/oradata/ora18c/pdb3/undotbs1.402.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00026 to /u01/app/oracle/oradata/ora18c/pdb3/undo_2.403.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00027 to /u01/app/oracle/oradata/ora18c/pdb3/users.400.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00028 to /u01/app/oracle/oradata/ora18c/pdb3/tps_hxl.401.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service tnsslnngk1
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00029 to /u01/app/oracle/oradata/ora18c/pdb3/tps_hxl.404.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 24-MAY-21


SQL> alter session set container=cdb$root;
SQL> shutdown immediate;

SQL> startup mount;
SQL> alter session set container=pdb3;
SQL> alter pluggable database enable recovery;


SQL> alter session set container=cdb$root;
SQL> alter database recover managed standby database disconnect from session;

8.打开pdb

alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database disconnect from session;

select open_mode from v$database;
SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB2 MOUNTED
5 PDB3 MOUNTED
SQL> alter pluggable database all open;

Pluggable database altered.

SQL> show pdbs;

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

经过分析发现,dataguard 环境下,只要 source pdb 是 READ ONLY,那么在primary 上执行创建pdb时,在 standby 上就能顺利创建.
重点关注下文档 ID 1916648.1

原文地址:https://www.cnblogs.com/hxlasky/p/14804790.html