2013年(350)
分类: Oracle
2013-04-27 09:43:18
众所周知在之前的版本中,RMAN中创建增量备份并不能显明缩短备份时间,这主要就是因为RMAN没有简便的方式判断哪些块是被修改过的,因此仍然是只能读取所有数据文件中的所有数据块,分别检查数据块中SCN并与父增量备份集中块的SCN做比较,如果发现较新则表示修改过。如果启用了块修改跟踪的特性,RMAN就可以通过块修改跟踪文件确定哪些块被修改过,从而避免扫描所有的数据文件中所有块。
启用块修改跟踪特性,0级的增量备份肯定还得扫描所有数据文件,不过其后依赖这一0级备份集创建的增量备份就可以通过块修改跟踪文件来获取修改过的块了。
默认情况下是禁用块修改跟踪的(如果使用了OMF特性,ORACLE会自动创建块修改跟踪文件),因为这可能会带来一些额外的开销。不过该性特性对于增量备份毕竟相当有用,因此要看你的取舍,如果你的数据库极少有修改操作,同时你希望增量备份尽可能快,并且创建的增量备份集尽可能小,那启用块修改跟踪还是有意义的,并且这也不会太影响到数据库的性能。
块修改跟踪文件是基于整个数据库的,如果使用了OMF,该文件创建于DB_CREATE_FILE_DEST参数指定的目录下,当然你也可以手动修改该文件到其它路径,不过如果是环境,块修改跟踪文件必须创建在共享存储上,确保所有节点都能访问到它。块修改跟踪文件中最多只能保存基于相同0级的,最近8天的增量备份所需信息,因此如果超出,则块修改跟踪文件就起不到作用了。
注意,备份恢复并不会备份或者恢复块修改跟踪文件。
启用块修改跟踪可通过下列语句:
SQL> alter database enable block change tracking using file 'rman_inc.trk';
Database altered.禁用块修改跟踪可通过下列语句:
SQL> alter database disable block change tracking;
Database altered.查询是否启用块修改跟踪可以通过下列语句:
SQL> select status from v$block_change_tracking;
STATUS
----------
DISABLED上述操作在数据库mount或open状态都可以进行,不过如果你要修改块修改跟踪文件的路径,则只能在数据库启动到mount状态时修改。
修改块修改跟踪文件可以通过alter database rename file命令,但是只能在mount状态下操作。
查看当前块修改跟踪文件路径:
SQL> select filename from v$block_change_tracking;
FILENAME
--------------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRKShutdown 数据库并启动到mount状态:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1295608 bytes
Variable Size 88083208 bytes
Database Buffers 71303168 bytes
Redo Buffers 7090176 bytes
Database mounted.手工复制块修改文件到新路径下,然后执行alter database命令:
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRK'
2 to 'E:\oracle\oradata\jssweb\rman_inc.trk';
Database altered.
SQL> alter database open;
Database altered.查看当前块修改跟踪文件路径:
SQL> select filename from v$block_change_tracking;
FILENAME
-----------------------------------------------------
E:\ORACLE\ORADATA\JSSWEB\RMAN_INC.TRK如果你的数 据库无法shutdown , 其实也无所谓,先disable,然后执行enable时指定一个新路径也可以的:),只不过,原来文件中记录的块修改的跟踪信息也就没有了。