ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 10g优化备份集大小

10g优化备份集大小

原创 Linux操作系统 作者:yangtingkun 时间:2010-05-28 23:29:02 0 删除 编辑

在10g中,RMAN备份的时候进行了优化,不再备份表释放空间的数据块。

 

 

备份的文档看得是9i的,因此一直认为RMAN备份的时候只备份那些写过数据的BLOCK,至于当前BLOCK是否被释放,RMAN并不关系,因此,随着数据文件中的空间不断被占用,RMAN备份集越是趋向越来越大的。

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

SQL> CREATE TABLESPACE TEST_RMAN
  2  DATAFILE '/data/oradata/testdata/test_rman01.dbf'
  3  SIZE 200M;

表空间已创建。

SQL> CREATE TABLE T_RMAN      
  2  TABLESPACE TEST_RMAN
  3  AS SELECT *
  4  FROM DBA_OBJECTS;

表已创建。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建31520行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建63040行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建126080行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建252160行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建504320行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;
INSERT INTO T_RMAN
*
ERROR
位于第 1 行:
ORA-01653:
表TEST.T_RMAN无法通过1024(在表空间TEST_RMAN中)扩展


SQL> COMMIT;

提交完成。

通过RMAN备份当前的表空间:

[oracle@localhost ~]$ rman target /

恢复管理器: 版本9.2.0.4.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

连接到目标数据库: TESTDATA (DBID=2270762593)

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data/backup/testdata/%U';
4> BACKUP TABLESPACE TEST_RMAN;
5> }

分配的通道: C1
通道 C1: sid=19 devtype=DISK

启动 backup 于 27-5月 -10
通道 C1: 正在启动 full 数据文件备份集
通道 C1: 正在指定备份集中的数据文件
输入数据文件 fno=00029 name=/data/oradata/testdata/test_rman01.dbf
通道 C1: 正在启动段 1 于 27-5月 -10
通道 C1: 已完成段 1 于 27-5月 -10
段 handle=/data/backup/testdata/5clenfku_1_1 comment=NONE
通道 C1: 备份集已完成, 经过时间:00:00:07
完成 backup 于 27-5月 -10

启动 Control File and SPFILE Autobackup 于 27-5月 -10
段 handle=/data/backup/testdata/20100526_c-2270762593-20100527-01 comment=NONE
完成 Control File and SPFILE Autobackup 于 27-5月 -10
释放的通道: C1

RMAN> LIST BACKUP OF TABLESPACE TEST_RMAN;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
1181    Full    192M       DISK        00:00:04     27-5
月 -10
BP
关键字: 1181   状态: AVAILABLE   标记:TAG20100527T094710
段名:/data/backup/testdata/5clenfku_1_1
 
备份集 1181 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  29      Full 1112664434776 27-5
月 -10 /data/oradata/testdata/test_rman01.dbf

下面利用TRUNCATE TABLE,释放表分配的空间:

SQL> TRUNCATE TABLE T_RMAN;

表已截掉。

再次备份将检查大小:

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data/backup/testdata/%U';
4> BACKUP TABLESPACE TEST_RMAN;
5> }

分配的通道: C1
通道 C1: sid=19 devtype=DISK

启动 backup 于 27-5月 -10
通道 C1: 正在启动 full 数据文件备份集
通道 C1: 正在指定备份集中的数据文件
输入数据文件 fno=00029 name=/data/oradata/testdata/test_rman01.dbf
通道 C1: 正在启动段 1 于 27-5月 -10
通道 C1: 已完成段 1 于 27-5月 -10
段 handle=/data/backup/testdata/5elenfo7_1_1 comment=NONE
通道 C1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 27-5月 -10

启动 Control File and SPFILE Autobackup 于 27-5月 -10
段 handle=/data/backup/testdata/20100526_c-2270762593-20100527-02 comment=NONE
完成 Control File and SPFILE Autobackup 于 27-5月 -10
释放的通道: C1

RMAN> LIST BACKUP OF TABLESPACE TEST_RMAN;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
1181    Full    192M       DISK        00:00:04     27-5
月 -10
BP
关键字: 1181   状态: AVAILABLE   标记:TAG20100527T094710
段名:/data/backup/testdata/5clenfku_1_1
 
备份集 1181 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  29      Full 1112664434776 27-5
月 -10 /data/oradata/testdata/test_rman01.dbf

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
1183    Full    192M       DISK        00:00:03     27-5
月 -10
BP
关键字: 1183   状态: AVAILABLE   标记:TAG20100527T094855
段名:/data/backup/testdata/5elenfo7_1_1
 
备份集 1183 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  29      Full 1112664435199 27-5
月 -10 /data/oradata/testdata/test_rman01.dbf

在10.2中,Oracle优化了RMAN备份集,已经释放的空间不再进行备份:

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

SQL> CREATE TABLESPACE TEST_RMAN
  2  DATAFILE '/data/oradata/testzj/test_rman01.dbf'
  3  SIZE 200M;

表空间已创建。

SQL> CREATE TABLE T_RMAN      
  2  TABLESPACE TEST_RMAN
  3  AS SELECT *
  4  FROM DBA_OBJECTS;

表已创建。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建50335行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建100670行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建201340行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建402680行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;

已创建805360行。

SQL> INSERT INTO T_RMAN
  2  SELECT *  
  3  FROM T_RMAN;
INSERT INTO T_RMAN
*
第 1 行出现错误:
ORA-01653:
表 TEST.T_RMAN 无法通过 1024 (在表空间 TEST_RMAN 中) 扩展


SQL> COMMIT;

提交完成。

利用RMAN进行备份:

[oracle@yanttest backup]$ rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期四 5月 27 10:54:56 2010

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

连接到目标数据库: TESTZJ (DBID=3397373484)

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data/backup/testzj/%U';
4> BACKUP TABLESPACE TEST_RMAN;
5> }

使用目标数据库控制文件替代恢复目录
分配的通道: C1
通道 C1: sid=139 devtype=DISK

启动 backup 于 27-5月 -10
通道 C1: 启动全部数据文件备份集
通道 C1: 正在指定备份集中的数据文件
输入数据文件 fno=00022 name=/data/oradata/testzj/test_rman01.dbf
通道 C1: 正在启动段 1 于 27-5月 -10
通道 C1: 已完成段 1 于 27-5月 -10
段句柄=/data/backup/testzj/09lenjke_1_1 标记=TAG20100527T105510 注释=NONE
通道 C1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 27-5月 -10
释放的通道: C1

RMAN> LIST BACKUP OF TABLESPACE TEST_RMAN;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
8       Full    192.09M    DISK        00:00:03     27-5
月 -10
        BP
关键字: 8   状态: AVAILABLE  已压缩: NO  标记: TAG20100527T105510
段名:/data/backup/testzj/09lenjke_1_1
 
备份集 8 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  22      Full 8660160996 27-5
月 -10 /data/oradata/testzj/test_rman01.dbf

将表进行TRUNCATE释放空间:

SQL> TRUNCATE TABLE T_RMAN;

表被截断。

下面再次备份并检查空间:

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data/backup/testzj/%U';
4> BACKUP TABLESPACE TEST_RMAN;
5> }

分配的通道: C1
通道 C1: sid=139 devtype=DISK

启动 backup 于 27-5月 -10
通道 C1: 启动全部数据文件备份集
通道 C1: 正在指定备份集中的数据文件
输入数据文件 fno=00022 name=/data/oradata/testzj/test_rman01.dbf
通道 C1: 正在启动段 1 于 27-5月 -10
通道 C1: 已完成段 1 于 27-5月 -10
段句柄=/data/backup/testzj/0alenjlb_1_1 标记=TAG20100527T105539 注释=NONE
通道 C1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 27-5月 -10
释放的通道: C1

RMAN> LIST BACKUP OF TABLESPACE TEST_RMAN;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
8       Full    192.09M    DISK        00:00:03     27-5
月 -10
        BP
关键字: 8   状态: AVAILABLE  已压缩: NO  标记: TAG20100527T105510
段名:/data/backup/testzj/09lenjke_1_1
 
备份集 8 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  22      Full 8660160996 27-5
月 -10 /data/oradata/testzj/test_rman01.dbf

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间 
------- ---- -- ---------- ----------- ------------ ----------
9       Full    608.00K    DISK        00:00:00     27-5
月 -10
        BP
关键字: 9   状态: AVAILABLE  已压缩: NO  标记: TAG20100527T105539
段名:/data/backup/testzj/0alenjlb_1_1
 
备份集 9 中的数据文件列表
 
文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  22      Full 8660161333 27-5
月 -10 /data/oradata/testzj/test_rman01.dbf

可以看到,随着表占用的空间的释放备份集的大小也随之减小。

其实对于本地表空间而言,通过数据文件头部的BITMAP信息完全可以获取数据文件中使用的BLOCK和空闲的BLOCK,只不过从10g开始,Oracle才开始在RMAN备份时利用这个信息。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-663967/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077191