暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ADG环境下远程克隆pdb后,物理备库无法打开怎么办?

IT那活儿 2024-12-19
149

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


问题现象

在目前oracle 19C的ADG多租户环境下,远程克隆pdb时,物理备库还不能够精确的重复主库的操作。从而导致远程克隆的pdb的数据文件无法被复制到物理备库和启用恢复。
此时你会在物理备库的alert日志中看到类似下面的信息:
<PDB>(28):Tablespace-SYSTEM during PDB create skipped since source is in r/w mode or this is a refresh clone

<PDB>(28):File #<FILENUMBER> added to control file as 'UNNAMED00221'. Originally created as:

<PDB>(28):'<FILENAME>'
<PDB>(28):because the pluggable database was created with nostandby

<PDB>(28):or the tablespace belonging to the pluggable database is
<PDB>(28):offline.

1.1 此时检查备库pdb状态,是Mounted
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
         6 PDB4 MOUNTED NO

1.2 检查PDB的恢复状态
SQL> select name, recovery_status from v$pdbs;
NAME RECOVERY
------------------------------ --------
PDB$SEED ENABLED
PDB1 ENABLED
PDB2 ENABLED
PDB3 ENABLED
PDB4 DISABLED

1.3 尝试open pdb

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


问题处理

2.1 确认主库的归档日志删除策略
如果您有一个严格的归档日志删除策略,比如 APPIED ON ALL STANDBY,那么现在重新配置它,等处理完问题再恢复策略。
RMAN> show archivelog deletion policy;
RMAN configuration parameters for database with db_unique_name <primary_db_unique_name> are:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
RMAN> configure archivelog deletion policy to none;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
new RMAN configuration parameters are successfully stored

2.2 确认主库的pdb状态是open wirte状态
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
         5 PDB3 READ WRITE NO
         6 PDB4 READ WRITE NO

2.3 从主库拷贝数据文件到物理备库
MAN> run{
allocate channel disk1 device type disk;
allocate channel disk2 device type disk;
allocate channel disk3 device type disk;
allocate channel disk4 device type disk;
allocate channel disk5 device type disk;
set newname for pluggable database PDB4 to new2> 3> ;
restore pluggable database PDB4 from service orcl;
}4> 5> 6> 7> 8> 9>

released channel: ORA_DISK_1
allocated channel: disk1
channel disk1: SID=277 instance=orcldg1 device type=DISK

allocated channel: disk2
channel disk2: SID=61 instance=orcldg1 device type=DISK

allocated channel: disk3
channel disk3: SID=293 instance=orcldg1 device type=DISK

allocated channel: disk4
channel disk4: SID=62 instance=orcldg1 device type=DISK

allocated channel: disk5
channel disk5: SID=292 instance=orcldg1 device type=DISK

executing command: SET NEWNAME

Starting restore at 2024/07/17 14:18:41

channel disk1: starting datafile backup set restore
channel disk1: using network backup set from service orcl
channel disk1: specifying datafile(s) to restore from backup set
channel disk1: restoring datafile 00056 to +DATA
channel disk2: starting datafile backup set restore
channel disk2: using network backup set from service orcl
channel disk2: specifying datafile(s) to restore from backup set
channel disk2: restoring datafile 00057 to +DATA
channel disk3: starting datafile backup set restore
channel disk3: using network backup set from service orcl
channel disk3: specifying datafile(s) to restore from backup set
channel disk3: restoring datafile 00058 to +DATA
channel disk4: starting datafile backup set restore
channel disk4: using network backup set from service orcl
channel disk4: specifying datafile(s) to restore from backup set
channel disk4: restoring datafile 00059 to +DATA
channel disk5: starting datafile backup set restore
channel disk5: using network backup set from service orcl
channel disk5: specifying datafile(s) to restore from backup set
channel disk5: restoring datafile 00060 to +DATA
channel disk3: restore complete, elapsed time: 00:00:03
channel disk4: restore complete, elapsed time: 00:00:03
channel disk5: restore complete, elapsed time: 00:00:02
channel disk2: restore complete, elapsed time: 00:00:04
channel disk1: restore complete, elapsed time: 00:00:10
Finished restore at 2024/07/17 14:18:52
released channel: disk1
released channel: disk2
released channel: disk3
released channel: disk4
released channel: disk5

2.4 取消物理备库的apply状态
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2.5 更新controlfile的信息
RMAN> switch pluggable database PDB4 to copy;

datafile 56 switched to datafile copy "+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/system.327.1174573123"
datafile 57 switched to datafile copy "+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/sysaux.328.1174573123"
datafile 58 switched to datafile copy "+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undotbs1.329.1174573125"
datafile 59 switched to datafile copy "+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undo_2.330.1174573125"
datafile 60 switched to datafile copy "+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/users.331.1174573127"

2.6 查询数据文件状态,得到ONLINE的语句
alter session set container=pdb4;
set pagsize 1000
select 'alter database datafile '||''''||name||''''||' online;' from v$datafile;
'ALTERDATABASEDATAFILE'||''''||NAME||''''||'ONLINE;'
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/system.327.1174573123' online;
alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/sysaux.328.1174573123' online;
alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undotbs1.329.1174573125' online;
alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undo_2.330.1174573125' online;
alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/users.331.1174573127' online;

2.7 启动物理备库到mount状态
SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL>
 startup mount

ORACLE instance started.


Total System Global Area 4831838208 bytes

Fixed Size                  3720600 bytes

Variable Size            1308625512 bytes

Database Buffers         3506438144 bytes

Redo Buffers               13053952 bytes

Database mounted.

2.8 PDB启用恢复状态
SQL> alter session set container=PDB4;
SQL> alter pluggable database enable recovery;

2.9 恢复PDB的数据文件为online状态
SQL> alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/system.327.1174573123' online;
SQL>alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/sysaux.328.1174573123' online;
SQL>alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undotbs1.329.1174573125' online;
SQL>alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/undo_2.330.1174573125' online;
SQL>alter database datafile '+DATA/ORCLDG/1D694DD805AB3F59E063140010AC6615/DATAFILE/users.331.1174573127' online;

2.10 启用物理备库的apply状态,并启动数据库
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter database open;
alter pluggable database pdb3 open instances=all;


END


本文作者:聂文峰(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论