大容量oracle备份,Oracle 10g优化备份集大小

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

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

SQL> SELECT * FROM V$VERSION;

BANNER

----------------------------------------------------------------

Oracle9iEnterpriseEdition Release9.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  SIZE200M;

表空间已创建。

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 Database10gEnterpriseEdition Release10.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  SIZE200M;

表空间已创建。

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 /

恢复管理器: Release10.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备份时利用这个信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值