More abort Oracle 12c RMAN ACTIVE DUPLICATE
最近一个200TB的oracle需要创建standby dataguard, 大量的bigfile 表空间,这么大的数据库适合不落的duplicate方式,在搭建过程出现了bug,修复单个报错的文件遇到了问题,思路如何提速时发现了这个特性,意识到好久没有看oracle新特性了。像USING BACKUPSET这个特性很棒。
创建oracle standby DG的方式
1, RMAN backup/restore 基于备份集文件
2, RMAN ACTIVE DUPLICATE
3, RMAN Restore from Service
4, RMAN ACTIVE DUPLICATE 特性USING BACKUPSET
5, Base storeage copy
6, Cold backup, OS copy
6. etc…
单个文件出问题修复的方式
1, RMAN backup/restore datafile基于备份集文件
2, Copy database file directly across network using RMAN
$ rman target sys/[password]@<primary_tns> auxiliary sys/<password>@<standby_tns> RMAN> run { allocate channel di type disk : allocate channel d2 type disk ; backup as copy reuse datafile 4 auxiliary format '<standby full path and file name>'; ... }
3, begin backup, copy datafile, end backup
4, ASM copy asm files between remote ASM instances
ASCMD>cp -ifr <source file name> <user_name>@<host_name>.<Port Number>.<SID>:<targer path>/<target file name>
5, etc.
故障ORA-00600: internal error code, arguments: [krboFindBlock-badbno], [62], [64], [125], [], [], [], [], [], [], [], []
在duplicate过程中在目标库出现了上面的ora-600错误,仅1个文件.
############# kfiofib = 0x4a52a0f0d8 #################
Diskgroup Name = DATA
File number = 314.1023016315
File type = 2
Flags = 0x8
Blksize = 8192
File size = 4294967294 blocks
Blk one offset = 1
Redundancy = 18
Physical blocksz = 512
Open name = +DATA/ANBOB/960AB3D86A40640DE0530100290A3BEA/DATAFILE/bXXXXXree.ora
Fully-qualified nm = +DATA/ANBOB/960AB3D86A40640DE0530100290A3BEA/DATAFILE/bXXXXXree.ora
Mapid = 8036
Slave ID = -1
Extent counts/sizes= 8388608 1X, 0 4X, 2147483648 16X
Stripe width=8 size=4194304 blks=512 setblks=4096
AU blocks=512 Extent blocks= 512, 2048, 8192
Blocks before each break = 4294967295, 0
############################################
anbob=# select power(2,32)
anbob-# ;
power
------------
4294967296
(1 row)
Note:
oracle bigfile tablespace 对于8k block size 上限为UB4个块(4294967296), 应该是因为oracle bug在find block,block number超过ub4.
可能的解决方法
1, 在源库resize datafile 缩小一些(比如100M)
2, 重传单个数据文件
重传单个数据文件加速
bigfile tablespace单个数据文件32T, 这个文件就有32T, 使用rman传输文件默认只能使用单通道无法使用并行,建议使用SECTION SIZE切片使用多通道加速。
注意,11g.2 duplicate from active database使用datafile image copies不支持section size和compression. 从12c开始duplicate from active database SECTION SIZE是可以使用的,配合多auxiliary channels 实现并行。
说了这么多该回归特性USING BACKUPSET, 如果上面不是重传单个文件,而是重建datagard, 有没有加速的方法,发现12c提供了新特性USING BACKUPSET
RMAN ACTIVE DUPLICATE USING BACKUPSET
如复制一个pdb, 语法如下
RMAN> run{ allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate auxiliary channel aux1 type disk; allocate auxiliary channel aux2 type disk; allocate auxiliary channel aux3 type disk; allocate auxiliary channel aux4 type disk; DUPLICATE TARGET DATABASE TO '<auxiliary_db_name>' PLUGGABLE DATABASE pdb1 FROM ACTIVE DATABASE USING BACKUPSET SECTION SIZE=5g db_file_name_convert='/<target_path>/','<auxiliary_path>'; }
在oracle 12c前 active duplicate使用primary数据库进程通过网络发送image copies, 时间和数据库大小成正比,对于大数据库非常耗时间。
在12c后数据库复制增强,开始使用backup set而不是image copies, 这样RAMN可以跳过未使用的块、已提交的UNDO块等等,发送的数据库大小相对较小,此外使用多通道SECTION OPTIONS可以使用duplication加速,此外auxiliary channels使用目标站点实例通过网络 拉去(PULL or restore), 这与原来从源站点推送( POSH )正好相反。
首先与源数据库建立连接。辅助实例然后从源数据库中检索所需的数据库文件作为备份集。 从辅助实例实例执行恢复操作。 因此,源数据库上使用的资源较少。目标实例和辅助实例都需要 TNS 连接。基于 DUPLICATE 子句,RMAN 动态确定使用哪个进程(“推”或“拉”)。
— over —
对不起,这篇文章暂时关闭评论。