RMAN v$block_change_tracking

在用RMAN作增量备份时,如果想提高性能的话,可以考虑启用block change tracking.因为,默认情况下,RMAN在备份(包括增量备份)时,会读取所有数据块到内存,然后检查数据块头SCN信息,发现改变了,则认为需要备份,否则不备。那么,如果启启用block change tracking的话,则RMAN可以只需要读取tracking file,发现数据文件头有改变,则被,否则不备。这样,就避免了扫描数据文件中的每一个块了。那么该怎样启用这一特性呢?

首先,数据库至少要MOUNT(因为这一动作要写入控制文件),当然,OPEN状态更是没的说了。

其次,执行命令:SQL> alter database enable block change tracking;(如果启用OMF特性,即参数DB_CREATE_FILE_DEST生效),否则,执行:SQL> alter database enable block change tracking using file ‘/u01/app/tracking/track.dbf ‘reuse;(其中,using file 关键字,表示将来生成的tracing file的路径及文件名,值得注意的是,RAC环境下,该路径一定要指向共享存储上。reuse表示重用,即会覆盖之前的tracking file,如果有的话)

然后,可以通过下面的命令查询block change tracking是否生效,即查询v$block_change_tracking:

SQL> select * from v$block_change_tracking;

最后,如果想要禁用该特性的话,也很简单:

SQL> alter database disable block change tracking;

Database altered.

当然了,禁用该特性的同时,之前生成的tracking file 也一并被删除了!

补充:如果想要对我们的tracking file 进行重命名、重定位操作的话,跟操作普通数据文件一样:

  • 干净关闭数据库,SQL>shutdown immediate/transactional/normal;
  • 生成目标文件,即使用操作系统的文件拷贝命令,cp /u01/app/tracking/track.dbf /u02/app/tracking/new_track.dbf
  • 启动数据库到MOUNT状态,然后执行 SQL>alter database rename file ‘/u01/app/tracking/track.dbf ‘ to ‘/u02/app/tracking/new_track.dbf’;
  • 打开数据库,SQL>alter database open;
SQL> alter database enable block change tracking using file ‘/u01/app/tracking/track.dbf’;
Database altered.

How to use script and scriptreplay

我们知道:在Windows环境下可以通过一些录制屏幕的软件,把屏幕捕捉下来,如camtasia studio。当然,UNIX/Linux系统下也有相关工具可以达到这个目的,那就是scriptscriptreplay:

首先,说说script工具,默认情况下,大多数Linux系统都会自带该工具,具体用法不详细记录了。想说说的就是,比较“好玩儿”的用法:

[oracle@Oracle10g ~]$ script -t 2>oracle.time -a oracle.txt

Script started, file is oracle.txt

[oracle@Oracle10g ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 – Production on Mon Apr 19 22:04:51 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba;

Connected.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production

With the Partitioning, OLAP and Data Mining options

[oracle@Oracle10g ~]$ exit

Script done, file is oracle.txt

其次,再来说说scriptreplay的用法。解释一下刚才的script命令,相当于在我们的当前路径下生成了两个文件oracle.time(记录我们的命令执行的时间-t参数表示记录命令执行时间),oracle.txt记录我们所有的执行命令,包括显示在终端上的结果。当然,这两个文件的名称和路径,我们可以任意指定。那么,我们接下来就可以利用scriptreplay命令来“播放”我们刚才的执行“录像”了,只需要在命令行上执行下述命令了:

[oracle@Oracle10g ~]$ scriptreplay oracle.time oracle.txt

就可以看到,我们刚才执行的所有命令流程了。

当然了,scriptreplay命令在默认情况下是不会安装的,所以我们需要做些“工作”,其实,该命令就是一个perl脚本文件。具体,下载安装过程:

①下载:http://www.filestube.com/2e12d7b3079daa5903ea/go.html

②安装:[oracle@Oracle10g ~]$ tar  jxvf  util-linux-2.12r.tar.bz2

会在当前路径下生成名为util-linux-2.12r的路径

③配置:以root用户执行:

[root@Oracle10g oracle]# cp  /u01/app/oracle/util-linux-2.12r/misc-utils/scriptreplay.pl        /usr/bin/scriptreplay

最后,就可以以普通用户执行scriptreplay命令了,当然我们还可以以root用户到/usr/bin路径下去把scriptrreplay命令改为我们自己喜爱的命令名称了!不过,我们在播放“录像”的时候,要注意那两个“时间文件”和“命令文件”的顺序,不要颠倒了。


[oracle@Oracle10g ~]$ script
Script started, file is typescript
[oracle@Oracle10g ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 – Production on Mon Apr 19 21:58:48 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn / as sysdba;
Connected.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
[oracle@Oracle10g ~]$ exit
Script done, file is typescript
[oracle@Oracle10g ~]$ cat typescript
Script started on Mon 19 Apr 2010 09:58:45 PM CST
[oracle@Oracle10g ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 – Production on Mon Apr 19 21:58:48 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn / as sysdba;
Connected.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
[oracle@Oracle10g ~]$ exit
Script done on Mon 19 Apr 2010 09:58:52 PM CST
[oracle@Oracle10g ~]$