warehouse 客栈
===========================================================
rman backup ENCRYPTION(备份加密特性)测试!
===========================================================

参考的doc如下:

http://www.oracle.com/technology/oramag/oracle/05-sep/o55security.html

http://users.telenet.be/oraguy.be/encryption1.htm

 查看全文

warehouse 发表于:2008.08.23 15:46 ::分类: ( 备份恢复 ) ::阅读:(45次) :: 评论 (0)
===========================================================
redhat下部分联机自动备份db!
===========================================================

1 cp /home/oracle/.bash_profile dbbak1.sh

之所以要拷贝这个文件,是因为它是oracle用户的环境变量文件,里面包含了oracle用户所需要的所有环境变量

2. 在dbbak1.sh文件中加入如下语句:

sqlplus sys/password@tns @/home/oracle/dbbak1.sql

3. 编写dbbak1.sql如下:

alter tablespace users begin backup;

copy path...../users.dbf /home/oracle

alter tablespace users end backup;

--这里只是用来测试!

4. chmod +x dbbak1.sh

5. 利用crontab来调用dbbak1.sh

 查看全文
warehouse 发表于:2008.08.02 22:27 ::分类: ( 备份恢复 ) ::阅读:(50次) :: 评论 (0)
===========================================================
redhat下通过rman自动备份db!
===========================================================

仅仅是思路和过程,根据自己的需求调整:

1 cp /home/oracle/.bash_profile dbbak.sh

之所以要拷贝这个文件,是因为它是oracle用户的环境变量文件,里面包含了oracle用户所需要的所有环境变量

2. 在dbbak.sh文件中加入如下语句:

rman target sys/password@tns cmdfile=/home/oracle/dbbak.sql

3. 编写dbbak.sql如下:

backup tablespace 'TEST';这里只是用来测试!

4. chmod +x dbbak.sh

5. 利用crontab来调用dbbak.sh脚本实现自动备份db,假如想每天晚上21:38分自动备份db,那么可以通过crontab -e来编辑root用户的自动定时任务:

[root@xys oracle]# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3386 installed on Sat Aug 2 21:36:35 2008)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
38 21 * * * /home/oracle/dbbak.sh

6. 有关crontab的使用可以参考

http://blog.chinaunix.net/u/31547/showart_438018.html

 查看全文

warehouse 发表于:2008.08.02 21:39 ::分类: ( 备份恢复 ) ::阅读:(47次) :: 评论 (0)
===========================================================
windows部分联机自动备份脚本!
===========================================================

c:dbbak.bat

dbbak.bat内容如下:

sqlplus / as sysdba @ dbbak.sql

把批处理文件dbbak.bat放到任务计划里或者通过at命令调用就可以实现自动备份db

 查看全文
warehouse 发表于:2008.08.02 12:31 ::分类: ( 备份恢复 ) ::阅读:(49次) :: 评论 (0)
===========================================================
当存在read only或者offline表空间时,重建控制文件时要注意!
===========================================================

当存在read only或者offline表空间时,重建控制文件分两种情况:

1、重建controlfile的script中包含read only或者offline所对应的datafile;这种情况比较简单,datafile不需要rename,如果是offline的表空间,那么重建controlfile之后只需要online tbs即可;如果是read only tbs那么重建controlfile之后需要对其对应的daafile进行恢复。

2、重建controlfile的script中不包含read only或者offline所对应的datafile;重建controlfile之后需要rename datafile到正确的位置,之后如果是offline的表空间,那么重建controlfile之后只需要online tbs即可;如果是read only tbs那么重建controlfile之后需要对其对应的daafile进行恢复。

 查看全文
warehouse 发表于:2008.07.03 22:20 ::分类: ( 备份恢复 ) ::阅读:(81次) :: 评论 (0)
===========================================================
对read only表空间进行热备份和使用备份的controlfile进行恢复时的一点总结!
===========================================================

1. 对read only tbs进行热备份时不需要执行begin backup;

2.从9i开始通过备份的controlfile对只读表空间进行恢复时不再需要把read only tbs对应的数据文件设置为offline

 查看全文
warehouse 发表于:2008.06.24 13:13 ::分类: ( 备份恢复 ) ::阅读:(59次) :: 评论 (0)
===========================================================
rman中的catalog命令!
===========================================================

之前并不清楚catalog命令的意思,直到去年考ocp时有到题目提到catalog命令,题意已经记不清楚了,当然答案也是懵的。

网上无意中看到了ninoo的总结,转过来记录一下!

 查看全文
warehouse 发表于:2008.03.23 11:42 ::分类: ( 备份恢复 ) ::阅读:(243次) :: 评论 (0)
===========================================================
参数SKIP_UNUSABLE_INDEXES的一点测试!
===========================================================

之前并不知道SKIP_UNUSABLE_INDEXES是一个参数,在imp/impdp中经常看到!通过以下试验发现即使SKIP_UNUSABLE_INDEXES=y,status=UNUSABLE的index还是伴随着tt表的导出导入一起导出导入,只是SKIP_UNUSABLE_INDEXES=y时,当imp导入表时insert的数据不会同时再去update index key了,但是unique index例外 ,因为它扮演着constraint的作用!

 查看全文
warehouse 发表于:2007.10.13 21:36 ::分类: ( 备份恢复 ) ::阅读:(369次) :: 评论 (0)
===========================================================
使用dbms_tts.transport_set_check来检查要传输的tbs是否是自包含的时需要注意!
===========================================================
在transport_tablespace前可以使用dbms_tts.transport_set_check来检查要传输的tbs是否是自包含的,执行dbms_tts.transport_set_check之后如果tbs不是自包含的,只有在当前session查询TRANSPORT_SET_VIOLATIONS试图才可以查到信息,以前一直从其他session差不到信息还以为是dbms_tts.transport_set_check的毛病,晕! 查看全文
warehouse 发表于:2007.10.13 20:40 ::分类: ( 备份恢复 ) ::阅读:(257次) :: 评论 (0)
===========================================================
win下使用expdp的enclude参数时一个对象和多个对象的几种写法!
===========================================================
win下和linux下写法不同,doc上的写法是linux下的,win下有所不同,而且值得注意的是一个对象和多个对象写法稍稍有些差别! 查看全文
warehouse 发表于:2007.10.13 20:32 ::分类: ( 备份恢复 ) ::阅读:(213次) :: 评论 (0)
===========================================================
block change tracking的一点测试!
===========================================================
block change tracking的一点测试! 查看全文
warehouse 发表于:2007.10.12 11:23 ::分类: ( 备份恢复 ) ::阅读:(208次) :: 评论 (0)
===========================================================
个人简介
===========================================================

个人简介:oracle dba ;10g ocp

实践经验丰富,培训经验丰富!

网名:warehouse 目前担任www.itpub.net oracle新技术区版主

 查看全文
warehouse 发表于:2007.10.08 14:50 ::分类: ( 备份恢复 ) ::阅读:(2057次) :: 评论 (11)
===========================================================
flashback与dmt tbs以及trigger,materialized view log之间的关系!
===========================================================

参加ocp考试的时候其中有一个题就问到了有关flashback和trigger以及materialized view log相关的问题,这里做了一个简单的测试!

 查看全文
warehouse 发表于:2007.09.30 22:59 ::分类: ( 备份恢复 ) ::阅读:(203次) :: 评论 (0)
===========================================================
两种增量备份的区别!
===========================================================
从恢复时大家可以清楚的看到,差异备份和增量备份的区别在于前者不可以覆盖同级备份!当然恢复时被覆盖的级别的备份不再被用到!遗憾的时不能通过list或者那个view查看出来到底做的时哪种增量备份,这是需要我们在备份时最好写log或者写好tag以便区分! 查看全文
warehouse 发表于:2007.09.24 11:44 ::分类: ( 备份恢复 ) ::阅读:(182次) :: 评论 (0)
===========================================================
SYS用户不支持flashback!
===========================================================
SYS用户不支持flashback,dmt 的tbs也不支持flashback! 查看全文
warehouse 发表于:2007.09.24 11:38 ::分类: ( 备份恢复 ) ::阅读:(234次) :: 评论 (2)
===========================================================
purge table table_name的一点测试!
===========================================================

 查看全文

warehouse 发表于:2007.09.22 13:18 ::分类: ( 备份恢复 ) ::阅读:(150次) :: 评论 (0)
===========================================================
flashback table的一些测试!
===========================================================

结论:1、flashback table t to scn #### 此处的scn和不完全恢复时的scn一样是<

2、要求enable row movement,是因为flashback之后row的rowid会发生变化

 查看全文
warehouse 发表于:2007.09.20 19:51 ::分类: ( 备份恢复 ) ::阅读:(338次) :: 评论 (0)
===========================================================
使用备份的控制文件(db物理结构已经变化)来恢复数据库!
===========================================================
使用备份的控制文件(db物理结构已经变化)来恢复数据库! 查看全文
warehouse 发表于:2007.09.16 17:02 ::分类: ( 备份恢复 ) ::阅读:(304次) :: 评论 (1)
===========================================================
buffer cache logical structure!
===========================================================

http://www.itpub.net/822875.html

图不错!


warehouse 发表于:2007.07.27 18:13 ::分类: ( 备份恢复 ) ::阅读:(155次) :: 评论 (1)
===========================================================
个人简介
===========================================================

曾在大连海辉集团(http://www.hisoft.com/cn/)欧美事业部,国内事业部担任dba。长期从事和数据库相关的工作,熟悉多种数据库,尤其擅长数据库管理、设计,优化,备份恢复,长期致力于对oracle数据库的研究。目前从事自由职业,在东软集团(http://www.neusoft.com)培训中心和易迪思(http://www.chinaets.net)培训中心担任讲师,主讲oracle,并且为客户经常提供技术支持服务,实践经验非常丰富。目前培训的客户有:

北京联通

杭州联通

深圳联通

武汉烟草

四川省电力总公司

青海电信

山西电力

大连海辉集团

大连开发区劳动社会保障局

日本财产保险公司(大连)

大连康博软件有限公司

大连东软集团

大连运邦科技有限公司

武汉大学

杭州社保

大连地税

大连YNC

HP(大连)

国家计算机网络故障技术处理协调中心


warehouse 发表于:2007.07.01 00:01 ::分类: ( 备份恢复 ) ::阅读:(490次) :: 评论 (0)
===========================================================
10.2 flashback database 测试!
===========================================================

不知道怎么搞得,格式乱得要命!

 查看全文
warehouse 发表于:2007.03.22 15:22 ::分类: ( 备份恢复 ) ::阅读:(243次) :: 评论 (3)
===========================================================
dbms_backup_restore恢复测试!nocatalog,丢失controlfile的恢复办法!
===========================================================

C:>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 1月 17 18:48:04 2007

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

连接到目标数据库: UTF (DBID=1000919928)

RMAN> backup as compressed backupset full database format 'E:trans_tbsbakutf_
full_%U';

启动 backup 于 17-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=274 devtype=DISK
通道 ORA_DISK_1: 启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF
输入数据文件 fno=00003 name=E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF
输入数据文件 fno=00002 name=E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF
输入数据文件 fno=00004 name=E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF
输入数据文件 fno=00005 name=E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF
输入数据文件 fno=00006 name=E:ORACLEPRODUCT10.2.0ORADATAUTFTEST1.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 17-1月 -07
段句柄=E:TRANS_TBSBAKUTF_FULL_1JI7OIMI_1_1 标记=TAG20070117T184953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:55
通道 ORA_DISK_1: 启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 17-1月 -07
段句柄=E:TRANS_TBSBAKUTF_FULL_1KI7OIOA_1_1 标记=TAG20070117T184953 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-1月 -07

--========================================================
删除controlfile , datafile , redo
--========================================================

C:>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1月 17 23:10:46 2007

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

SQL> connect sys as sysdba
输入口令:
已连接。
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl02.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL> edit
已写入 file afiedt.buf

1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl03.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /

PL/SQL 过程已成功完成。

SQL>
SQL> edit
已写入 file afiedt.buf

1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'E:oracleproduct10.
2.0oradataUTFControl01.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /

PL/SQL 过程已成功完成。

controlfile一旦恢复成功既可以通过dbms_backup_restore来恢复数据文件也可以通过rman来恢复!

SQL> alter database mount;

数据库已更改。

SQL> EDIT
已写入 file afiedt.buf

1* alter database mount
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFSYSTEM01.DBF');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFSYSAUX01.DBF');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFUNDOTBS01.DBF');
10 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFUSERS01.DBF');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>05,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFTEST.DBF');
12 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'E:ORACLEP
RODUCT10.2.0ORADATAUTFTEST1.DBF');
13 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1JI7OIMI_1_1', params=>null);
14 sys.dbms_backup_restore.deviceDeallocate;
15 END;
16 /

PL/SQL 过程已成功完成。

SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成

SQL> recover database using backup controlfile;
ORA-00279: 更改 1007563 (在 01/17/2007 18:49:54 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_9

7_%U_.ARC
ORA-00280: 更改 1007563 (用于线程 1) 在序列 #97 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 1007563 (在 01/17/2007 18:49:54 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_9

7_%U_.ARC
ORA-00280: 更改 1007563 (用于线程 1) 在序列 #97 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开归档日志
'E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007_01_17O1_MF_1_

97_%U_.ARC'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlogs;

数据库已更改。

SQL>

--=======================================

恢复spfile and pfile的语法如下

SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreSPFILETO(sfname=>'E:oracleproduct10.2.0d
b_2databaseSPFILEUTF.ORA');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreSPFILETO(Pfname=>'E:oracleproduct10.2.0a
dminUTFpfileINIT2.ORA');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:trans_tbs
bakUTF_FULL_1KI7OIOA_1_1', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 END;
11 /

PL/SQL 过程已成功完成。

SQL>


warehouse 发表于:2007.01.17 23:45 ::分类: ( 备份恢复 ) ::阅读:(551次) :: 评论 (2)
===========================================================
transport tablespace基本用法!
===========================================================

C:>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:07:36 2005

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

SQL> connect sys as sysdba
请输入口令:
已连接。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
test

SQL> create tablespace test datafile 'D:oracleoradatatesttest.dbf' size 1m;

表空间已创建。

SQL> connect xys/manager
已连接。
SQL> create table t(id int);

表已创建。

SQL> insert into t values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select default_tablespace from dba_users where username='XYS';

DEFAULT_TABLESPACE
------------------------------
USERS

SQL> create index t_idx on t(id) tablespace test;

索引已创建。

SQL> exec dbms_tts.transport_set_check('test' , true);
BEGIN dbms_tts.transport_set_check('test' , true); END;

*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须说明标识符 'DBMS_TTS.TRANSPORT_SET_CHECK'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored


SQL> exec sys.dbms_tts.transport_set_check('test' , true);

PL/SQL 过程已成功完成。

SQL> select * from transport_set_violations;
select * from transport_set_violations
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在


SQL> connect sys as sysdba
请输入口令:
已连接。
SQL> select * from transport_set_violations;

未选定行

SQL> alter tablespace test read only;

表空间已更改。

SQL> host exp transport_tablespace=y tablespace=test file=d:test.dmp;
LRM-00101: 未知的参数名 'tablespace'

EXP-00019: 处理参数失败,有关帮助请键入 'EXP HELP=Y'
EXP-00000: 导出终止失败

SQL> host exp transport_tablespace=y tablespaces=test file=d:test.dmp;

Export: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:14:30 2005

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


用户名: / as sysdba

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不会导出表数据(行)
关于导出可传输的表空间元数据...
EXP-00008: 遇到 ORACLE 错误 29341
ORA-29341: 可传送集不是自包含的
ORA-06512: 在"SYS.DBMS_PLUGTS", line 1093
ORA-06512: 在line 1
EXP-00000: 导出终止失败

SQL> drop index xys.t_idx;

索引已丢弃。

SQL> create table xys.tt(id int) tablespace test;
create table xys.tt(id int) tablespace test
*
ERROR 位于第 1 行:
ORA-00955: 名称已由现有对象使用


SQL> create table xys.t_t(id int) tablespace test;
create table xys.t_t(id int) tablespace test
*
ERROR 位于第 1 行:
ORA-01647: 表空间'TEST'是只读,无法在其中分配空间


SQL> alter tablespace test read write;

表空间已更改。

SQL> create table xys.t_t(id int) tablespace test;

表已创建。

SQL> insert into xys.t_t values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from transport_set_violations;

未选定行

SQL> show user
USER 为"SYS"
SQL> alter tablespace test read only;

表空间已更改。

SQL> host exp transport_tablespace=y tablespace=test file=d:test.dmp;
LRM-00101: 未知的参数名 'tablespace'

EXP-00019: 处理参数失败,有关帮助请键入 'EXP HELP=Y'
EXP-00000: 导出终止失败

SQL> host exp transport_tablespace=y tablespaces=test file=d:test.dmp;

Export: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:17:09 2005

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


用户名: / as sysdba

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不会导出表数据(行)
关于导出可传输的表空间元数据...
用于表空间 TEST...
. 正在导出群集定义
. 正在导出表定义
. . 正在导出表 T_T
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
在没有警告的情况下成功终止导出。

SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开

C:>set oracle_sid=testdb

C:>imp transport_tablespace=y datafiles='D:oracleoradatatestdbtest.dbf' ta
blespaces=test file=d:test.dmp

Import: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:21:12 2005

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

用户名: / as sysdba

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

经由常规路径导出由EXPORT:V09.02.00创建的文件
关于导入可传输表空间元数据...
已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
. 正在将SYS的对象导入到 SYS
IMP-00017: 由于 ORACLE 的 29342 错误,以下的语句失败
"BEGIN sys.dbms_plugts.checkUser('XYS'); END;"
IMP-00003: 遇到 ORACLE 错误 29342
ORA-29342: 数据库中不存在用户 XYS
ORA-06512: 在"SYS.DBMS_PLUGTS", line 1535
ORA-06512: 在line 1
IMP-00000: 未成功终止导入

C:>set oracle_sid=testdb

C:>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:21:49 2005

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

SQL> connect sys as sysdba
请输入口令:
已连接。
SQL> create user xys identified by manager default tablespace users;

用户已创建

SQL> grant connect , resource , dba to xys;

授权成功。

SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开

C:>imp transport_tablespace=y datafiles='D:oracleoradatatestdbtest.dbf' ta
blespaces=test file=d:test.dmp

Import: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:23:10 2005

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

用户名: / as sysdba

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

经由常规路径导出由EXPORT:V09.02.00创建的文件
关于导入可传输表空间元数据...
已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
. 正在将SYS的对象导入到 SYS
. 正在将XYS的对象导入到 XYS
. . 正在导入表 "T_T"
成功终止导入,但出现警告。

C:>set oracle_sid=testdb

C:>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 9月 17 20:23:45 2005

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

SQL> connect xys/manager
已连接。
SQL> select * from t_t;

ID
----------
1

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
UNDOTBS1
TEMP
DRSYS
INDX
TOOLS
USERS
XDB
TEST

已选择9行。

SQL> create table t_tt(id int) tablespace test;
create table t_tt(id int) tablespace test
*
ERROR 位于第 1 行:
ORA-01647: 表空间'TEST'是只读,无法在其中分配空间


SQL> alter tablespace test read write;

表空间已更改。

SQL>

最后别忘了改写表空间的状态!


warehouse 发表于:2007.01.16 20:18 ::分类: ( 备份恢复 ) ::阅读:(989次) :: 评论 (2)
===========================================================
利用TRANSPORT_TABLESPACE特性把9i的表空间迁移到10g测试!
===========================================================

一种非常好数据库升级的思路,测试的起源来自于下面的帖子:

http://www.itpub.net/705187.html

在结合下面的例子相信在异构os上也没有问题,遗憾的是手头没有环境,懒的搭建测试了!

http://www.eygle.com/archives/2004/06/10g_transport_tbs.html

把9i 下的表空间迁移到10g上,创建表空间trans_tbs时datafile拉了扩展名了,看起来不是很舒服,对付着看吧!:)
C:>sqlplus system/manager

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 1月 13 21:29:19 2007

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


连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> show parameter db_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string DB9i
SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------

C:ORACLEORA92DB9ISYSTEM01.DBF
C:ORACLEORA92DB9IUNDOTBS01.DBF
C:ORACLEORA92DB9IUSERS01.DBF
--创建一个自包含的表空间
SQL> create tablespace trans_tbs datafile 'C:ORACLEORA92DB9Itrans_tbs' size
5m ;

表空间已创建。

SQL> create user xys identified by manager default tablespace trans_tbs;

用户已创建

SQL> grant connect , resource , dba to xys;

授权成功。

SQL> connect xys/manager
已连接。
--创建测试数据
SQL> create table t as select *from dba_objects;

表已创建。
--将要transport tablespace改为read only是必须的!
SQL> alter tablespace trans_tbs read only;

表空间已更改。

SQL> host exp 'sys/manager as sysdba' file='E:trans_tbstrans_tbs.dmp' transpor
t_tablespace=y tablespaces=TRANS_TBS

Export: Release 9.2.0.1.0 - Production on 星期六 1月 13 21:35:43 2007

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


连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不会导出表数据(行)
关于导出可传输的表空间元数据...
用于表空间 TRANS_TBS...
. 正在导出群集定义
. 正在导出表定义
. . 正在导出表 T
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
在没有警告的情况下成功终止导出。

SQL> EXIT
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开

C:>SET ORACLE_SID=ORCL

C:>sqlplus system/system

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 1月 13 22:45:42 2007

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


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF

SQL> host copy C:oracleora92DB9itrans_tbs E:ORACLEPRODUCT10.2.0ORADATAO
RCLtrans_tbs
已复制 1 个文件。

SQL> host imp 'sys/system as sysdba' transport_tablespace=y tablespaces=TRANS_TB
s file='E:trans_tbstrans_tbs.dmp' datafiles='E:ORACLEPRODUCT10.2.0ORADATA
ORCLtrans_tbs' tts_owners=xys fromuser=xys touser=xys

Import: Release 10.2.0.1.0 - Production on 星期六 1月 13 22:46:48 2007

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V09.02.00 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
IMP-00017: 由于 ORACLE 错误 29343, 以下语句失败:
"BEGIN sys.dbms_plugts.checkUser('XYS'); END;"
IMP-00003: 遇到 ORACLE 错误 29343
ORA-29343: 数据库中不存在用户 XYS (从用户 XYS 映射)
ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1895
ORA-06512: 在 line 1
IMP-00000: 未成功终止导入
--创建用户是必须的,否则会出现上面的错误!
SQL> create user xys identified by manager default tablespace users;

用户已创建。

SQL> grant dba , connect, resource to xys;

授权成功。

SQL> host imp 'sys/system as sysdba' transport_tablespace=y tablespaces=TRANS_TB
s file='E:trans_tbstrans_tbs.dmp' datafiles='E:ORACLEPRODUCT10.2.0ORADATA
ORCLtrans_tbs' tts_owners=xys fromuser=xys touser=xys

Import: Release 10.2.0.1.0 - Production on 星期六 1月 13 22:46:07 2007

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V09.02.00 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 XYS 的对象导入到 XYS
. . 正在导入表 "T"
成功终止导入, 没有出现警告。

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
E:ORACLEPRODUCT10.2.0ORADATAORCLTRANS_TBS

SQL> CONNECT XYS/MANAGER
已连接。
SQL> SELECT count (*) FROM T;

COUNT(*)
----------
6166


warehouse 发表于:2007.01.13 23:07 ::分类: ( 备份恢复 ) ::阅读:(597次) :: 评论 (0)
===========================================================
10.2R2 rman transport tablespace特性测试!
===========================================================

10.2 rman transport tablespace最大的特点在于表空间不需要设置为read only了

这篇文章也值得参考:

http://luhartma.blogspot.com/2006/04/transportable-tablespaces-from-backup.html

RMAN> run {
2> TRANSPORT TABLESPACE 'TEST'
3> AUXILIARY DESTINATION 'E:oracletrans_tbs'
4> DUMP FILE 'test.dmp'
5> EXPORT LOG 'test.log'
6> IMPORT SCRIPT 'test_im.sql'
7> TABLESPACE DESTINATION 'E:oracletrans_tbs'
8> ;
9> }

RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

使用 SID='zabp' 创建自动实例

供自动实例使用的初始化参数:
db_name=UTF
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_UTF_zabp
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=E:oracletrans_tbs
control_files=E:oracletrans_tbs/cntrl_tspitr_UTF_zabp.f


启动自动实例 UTF

Oracle 实例已启动

系统全局区域总计 201326592 字节

Fixed Size 1248092 字节
Variable Size 146801828 字节
Database Buffers 50331648 字节
Redo Buffers 2945024 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until scn 768976;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在执行内存脚本

正在执行命令: SET until clause

启动 restore 于 12-1月 -07
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在复原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份段 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREA
UTFAUTOBACKUP2007_01_12O1_MF_S_611692252_2TGRTY7B_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFAUTOBACKUP2007_01_12
O1_MF_S_611692252_2TGRTY7B_.BKP 标记 = TAG20070112T183052
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01
输出文件名=E:ORACLETRANS_TBSCNTRL_TSPITR_UTF_ZABP.F
完成 restore 于 12-1月 -07

sql 语句: alter database mount clone database

sql 语句: alter system archive log current

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
释放的通道: ORA_AUX_DISK_1

内存脚本的内容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until scn 768976;
# set an omf destination filename for restore
set newname for clone datafile 1 to new;
# set an omf destination filename for restore
set newname for clone datafile 2 to new;
# set an omf destination filename for restore
set newname for clone datafile 3 to new;
# set an omf destination tempfile
set newname for clone tempfile 1 to new;
# set an omf destination tempfile
set newname for clone tempfile 2 to new;
# set a destination filename for restore
set newname for datafile 5 to
"E:oracletrans_tbsTEST.DBF";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile 1, 2, 3, 5;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile 1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile 2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile 3 online";
#online the datafiles restored or flipped
sql clone "alter database datafile 5 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace "TEST", "SYSTEM", "UNDOTBS1", "SYSAUX" delete
archivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
# datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在执行内存脚本

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 E:ORACLETRANS_TBSTSPITR_UDATAFILEO1_MF_TE
MP_%U_.TMP
临时文件 2 在控制文件中已重命名为 E:ORACLETRANS_TBSTSPITR_UDATAFILEO1_MF_TM
P_%U_.TMP

启动 restore 于 12-1月 -07
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:ORACLETRANS_TBSTSPITR_UDATAFILEO1_MF_SYSTEM_%U_.DB
F
正将数据文件00002恢复到E:ORACLETRANS_TBSTSPITR_UDATAFILEO1_MF_UNDOTBS1_%U_.
DBF
正将数据文件00003恢复到E:ORACLETRANS_TBSTSPITR_UDATAFILEO1_MF_SYSAUX_%U_.DB
F
正将数据文件00005恢复到E:ORACLETRANS_TBSTEST.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 E:TRANS_TBSBAKDB_FULL_19I7BBL4_1_1
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = E:TRANS_TBSBAKDB_FULL_19I7BBL4_1_1 标记 = TAG20070112T182955
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:01:05
完成 restore 于 12-1月 -07

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=31 stamp=611702374 文件名=E:ORACLETRANS_TBSTSPITR_UDA
TAFILEO1_MF_SYSTEM_2TH2O4RF_.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=32 stamp=611702374 文件名=E:ORACLETRANS_TBSTSPITR_UDA
TAFILEO1_MF_UNDOTBS1_2TH2O4SD_.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=33 stamp=611702374 文件名=E:ORACLETRANS_TBSTSPITR_UDA
TAFILEO1_MF_SYSAUX_2TH2O4RW_.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=34 stamp=611702374 文件名=E:ORACLETRANS_TBSTEST.DBF

sql 语句: alter database datafile 1 online

sql 语句: alter database datafile 2 online

sql 语句: alter database datafile 3 online

sql 语句: alter database datafile 5 online

启动 recover 于 12-1月 -07
使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 78 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAU
TFARCHIVELOG2007_01_12O1_MF_1_78_2TGV177T_.ARC 存在于磁盘上
存档日志线程 1 序列 79 已作为文件 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAU
TFARCHIVELOG2007_01_12O1_MF_1_79_2TGWLSG5_.ARC 存在于磁盘上
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007
_01_12O1_MF_1_78_2TGV177T_.ARC 线程 =1 序列 =78
存档日志文件名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFARCHIVELOG2007
_01_12O1_MF_1_79_2TGWLSG5_.ARC 线程 =1 序列 =79
介质恢复完成, 用时: 00:00:06
完成 recover 于 12-1月 -07

数据库已打开

内存脚本的内容:
{
#mark read only the tablespace that will be exported
sql clone "alter tablespace TEST read only";
# create directory for datapump export
sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
E:oracletrans_tbs''";
# export the tablespaces in the recovery set
host 'expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV
0=oraclezabp)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^
'ORACLE_SID=zabp^'))(CONNECT_DATA=(SID=zabp))) as sysdba" transport_tablespaces
=
TEST dumpfile=
test.dmp directory=
STREAMS_DIROBJ_DPDIR logfile=
test.log';
}
正在执行内存脚本

sql 语句: alter tablespace TEST read only

sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''E:oracletrans_
tbs''


Export: Release 10.2.0.1.0 - Production on 星期五, 12 1月, 2007 21:20:03

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01": userid="/********@(DESCRIPTION=(ADDRE
SS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=oraclezabp)(ARGS='(DESCRIPTION=(LOCAL=YE
S)(ADDRESS=(PROTOCOL=beq)))')(ENVS='ORACLE_SID=zabp'))(CONNECT_DATA=(SID=zabp)))
AS SYSDBA" transport_tablespaces= TEST dumpfile=test.dmp directory=STREAMS_DIRO
BJ_DPDIR logfile=test.log
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
E:ORACLETRANS_TBSTEST.DMP
作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 21:20:36 成功完成

主机命令完成
/*
The following command may be used to import the tablespaces.
Substitute values for <logon> and <directory>.
impdp <logon> directory=<directory> dumpfile= 'test.dmp' transport_datafiles=
E:oracletrans_tbsTEST.DBF
*/
--------------------------------------------------------------
-- Start of sample PL/SQL script for importing the tablespaces
--------------------------------------------------------------
-- creating directory objects
CREATE DIRECTORY STREAMS$DIROBJ$1 AS 'E:oracletrans_tbs';
CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS 'E:oracletrans_tbs';
/* PL/SQL Script to import the exported tablespaces */
DECLARE
-- the datafiles
tbs_files dbms_streams_tablespace_adm.file_set;
cvt_files dbms_streams_tablespace_adm.file_set;
-- the dumpfile to import
dump_file dbms_streams_tablespace_adm.file;
dp_job_name VARCHAR2(30) := NULL;
-- names of tablespaces that were imported
ts_names dbms_streams_tablespace_adm.tablespace_set;
BEGIN
-- dump file name and location
dump_file.file_name := 'test.dmp';
dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR';
-- forming list of datafiles for import
tbs_files( 1).file_name := 'TEST.DBF';
tbs_files( 1).directory_object := 'STREAMS$DIROBJ$1';
-- import tablespaces
dbms_streams_tablespace_adm.attach_tablespaces(
datapump_job_name => dp_job_name,
dump_file => dump_file,
tablespace_files => tbs_files,
converted_files => cvt_files,
tablespace_names => ts_names);
-- output names of imported tablespaces
IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN
FOR i IN ts_names.first .. ts_names.last LOOP
dbms_output.put_line('imported tablespace '|| ts_names(i));
END LOOP;
END IF;
END;
/
-- dropping directory objects
DROP DIRECTORY STREAMS$DIROBJ$1;
DROP DIRECTORY STREAMS$DIROBJ$DPDIR;
--------------------------------------------------------------
-- End of sample PL/SQL script
--------------------------------------------------------------

删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除

删除自动实例
自动实例已删除
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: tranport tablespace 命令 (在 01/12/2007 21:20:44 上) 失败
ORA-27056: 无法删除文件
OSD-04024: ???????????
O/S-Error: (OS 32) ???????????????????????????

遗憾的是这里出现了错误,原因不祥,感觉不够完美!

RMAN>

RMAN> exit


恢复管理器完成。

C:>e:

E:>cd oracle

E:oracle>cd trans_tbs

E:oracletrans_tbs>dir
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31

E:oracletrans_tbs 的目录

2007-01-12 21:23 <DIR> .
2007-01-12 21:23 <DIR> ..
2007-01-12 21:20 7,127,040 CNTRL_TSPITR_UTF_ZABP.F
2007-01-12 21:23 355 test.alg
2007-01-12 21:20 5,251,072 TEST.DBF
2007-01-12 21:20 73,728 TEST.DMP
2007-01-12 21:20 1,111 test.log
2007-01-12 21:20 2,101 test_im.sql
2007-01-12 21:18 <DIR> TSPITR_U
6 个文件 12,455,407 字节
3 个目录 22,051,143,680 可用字节

E:oracletrans_tbs>
--============================================
在另一个实例上执行生成的脚本E:oracletrans_tbstest_im.sql验证表空间test是否可以成功,
验证结果是成功,我们看到表空间test对应的数据文件E:ORACLETRANS_TBSTEST.DBF已经是数据库test
的一部分了,而且表空间test中的表t,tt也已经过来了!
C:>set oracle_sid=test

C:>sqlplus xys/manager

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 1月 12 21:10:58 2007

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


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;

FILE_NAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF

SQL> @E:oracletrans_tbstest_im.sql

目录已创建。


目录已创建。


PL/SQL 过程已成功完成。


目录已删除。


目录已删除。

SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;

FILE_NAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF
E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF
E:ORACLETRANS_TBSTEST.DBF

SQL> SELECT TABLE_NAME FROM USER_TABLES;

TABLE_NAME
------------------------------------------------------------
SYS_IMPORT_TRANSPORTABLE_01
SYS_IMPORT_TRANSPORTABLE_02
T
TT

SQL> select * from t;

ID
----------
1

SQL> select * from tt;

未选定行

SQL>

--==========================================

值得注意的是在target instance执行导出脚本时要以transport tablespace中的用户相连接,如果该用户不存在或者不以该用户连接都会出现错误:

SQL> drop user xys;

用户已删除。

SQL> @ E:oracletrans_tbstest_im

目录已创建。


目录已创建。

DECLARE
*
第 1 行出现错误:
ORA-06512: 在 "SYS.DBMS_STREAMS_TABLESPACE_ADM", line 2006
ORA-06512: 在 line 18

目录已删除。


目录已删除。

SQL> create user xys identified by manager
2 ;

用户已创建。

SQL> grant dba , connect, resource to xys;

授权成功。

SQL> show user
USER 为 "SYSTEM"
SQL> connect xys/manager
已连接。
SQL> @ E:oracletrans_tbstest_im

目录已创建。


目录已创建。


PL/SQL 过程已成功完成。


目录已删除。


目录已删除。

SQL>


warehouse 发表于:2007.01.12 21:45 ::分类: ( 备份恢复 ) ::阅读:(1120次) :: 评论 (33)
===========================================================
10gR2rman backup as copy移动数据文件,非常方便!
===========================================================

RMAN> CONNECT TARGET /

连接到目标数据库: UTF (DBID=1000919928)

RMAN> backup as copy tablespace 'TEST' format 'E:trans_tbsbaktt_copy_%U';

启动 backup 于 11-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=272 devtype=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00005 name=E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF
输出文件名 = E:TRANS_TBSBAKTT_COPY_DATA_D-UTF_I-1000919928_TS-TEST_FNO-5_0T
9ACF 标记 = TAG20070111T235558 recid = 21 时间戳 = 611625360
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 11-1月 -07

启动 Control File and SPFILE Autobackup 于 11-1月 -07
段 handle=E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAUTFAUTOBACKUP2007_01_
O1_MF_S_611625360_2TDQJLH4_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 11-1月 -07

RMAN> switch tablespace 'TEST' TO COPY;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: switch to copy 命令 (在 01/11/2007 23:57:21 上) 失败
RMAN-06572: 数据库已打开且数据文件 5 没有处于脱机状态

RMAN> SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';

sql 语句: ALTER DATABASE DATAFILE 5 OFFLINE

RMAN> switch tablespace 'TEST' TO COPY;

数据文件 5 已切换成数据文件副本 "E:TRANS_TBSBAKTT_COPY_DATA_D-UTF_I-100091992
8_TS-TEST_FNO-5_0TI79ACF"

RMAN> SQL 'ALTER DATABASE DATAFILE 5 onLINE';

sql 语句: ALTER DATABASE DATAFILE 5 onLINE
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: sql 命令 (default 通道上, 在 01/11/2007 23:59:27 上) 失败
RMAN-11003: 在分析/执行 SQL 语句期间失败: ALTER DATABASE DATAFILE 5 onLINE
ORA-01113: 文件 5 需要介质恢复
ORA-01110: 数据文件 5: 'E:TRANS_TBSBAKTT_COPY_DATA_D-UTF_I-1000919928_TS-TEST
_FNO-5_0TI79ACF'

RMAN> recover datafile 5;

启动 recover 于 11-1月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:04

完成 recover 于 11-1月 -07

RMAN> SQL 'ALTER DATABASE DATAFILE 5 onLINE';

sql 语句: ALTER DATABASE DATAFILE 5 onLINE

RMAN> backup as copy datafile 5 format 'E:trans_tbsbakTEST.DBF';

启动 backup 于 12-1月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00005 name=E:TRANS_TBSBAKTT_COPY_DATA_D-UTF_I-1000919928_TS-
TEST_FNO-5_0TI79ACF
输出文件名 = E:TRANS_TBSBAKTEST.DBF 标记 = TAG20070112T000117 recid = 23 时间
戳 = 611625678
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 12-1月 -07

RMAN> SWITCH DATAFILE 5 TO COPY;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: switch to copy 命令 (在 01/12/2007 00:02:08 上) 失败
RMAN-06572: 数据库已打开且数据文件 5 没有处于脱机状态

RMAN> SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';

sql 语句: ALTER DATABASE DATAFILE 5 OFFLINE

RMAN> SWITCH DATAFILE 5 TO COPY;

数据文件 5 已切换成数据文件副本 "E:TRANS_TBSBAKTEST.DBF"

RMAN> SQL 'ALTER DATABASE DATAFILE 5 ONLINE';

sql 语句: ALTER DATABASE DATAFILE 5 ONLINE
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: sql 命令 (default 通道上, 在 01/12/2007 00:03:07 上) 失败
RMAN-11003: 在分析/执行 SQL 语句期间失败: ALTER DATABASE DATAFILE 5 ONLINE
ORA-01113: 文件 5 需要介质恢复
ORA-01110: 数据文件 5: 'E:TRANS_TBSBAKTEST.DBF'

RMAN> RECOVER DATAFILE 5;

启动 recover 于 12-1月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:02

完成 recover 于 12-1月 -07

RMAN> SQL 'ALTER DATABASE DATAFILE 5 ONLINE';

sql 语句: ALTER DATABASE DATAFILE 5 ONLINE

RMAN> backup as copy tablespace 'TEST' FORMAT 'E:trans_tbsbaktest_tbs_copy_%U
';

启动 backup 于 12-1月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00005 name=E:TRANS_TBSBAKTEST.DBF
输出文件名 = E:TRANS_TBSBAKTEST_TBS_COPY_DATA_D-UTF_I-1000919928_TS-TEST_FNO-
5_10I79BAT 标记 = TAG20070112T001212 recid = 25 时间戳 = 611626333
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 12-1月 -07

RMAN> SQL 'ALTER TABLESPACE TEST OFFLINE';

sql 语句: ALTER TABLESPACE TEST OFFLINE

RMAN> switch tablespace 'TEST' TO COPY;

数据文件 5 已切换成数据文件副本 "E:TRANS_TBSBAKTEST_TBS_COPY_DATA_D-UTF_I-100
0919928_TS-TEST_FNO-5_10I79BAT"

RMAN> SQL 'ALTER TABLESPACE TEST ONLINE';

sql 语句: ALTER TABLESPACE TEST ONLINE

结论:通过rman备份的方式移动数据文件应该说可以缩短传统拷贝datafile的时间,其他的我觉得没有什么,原理都一样!


warehouse 发表于:2007.01.12 00:20 ::分类: ( 备份恢复 ) ::阅读:(463次) :: 评论 (0)
===========================================================
利用TRANSPORT_TABLESPACE特性在同一db下不同用户之间迁移数据!
===========================================================

参考文档:

http://www.itpub.net/showthread.php?s=&threadid=700445&perpage=10&pagenumber=2

SQL> select username , default_tablespace from dba_users where username='XYS';

USERNAME DEFAULT_TABLESPACE
------------------------------ --------------------
XYS USERS

SQL> select file_name , tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
-------------------------------------------------- --------------------
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF SYSTEM
E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF UNDOTBS1
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF SYSAUX
E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF TEST
E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF USERS

SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE TEST;

用户已创建。

SQL> GRANT DBA , CONNECT , RESOURCE TO TEST;

授权成功。

SQL> CONNECT XYS/MANAGER
已连接。
SQL> SELECT TABLE_NAME FROM USER_TABLES;

未选定行

SQL> CREATE TABLE T(ID INT) TABLESPACE USERS;

表已创建。

SQL> CREATE TABLE TT TABLESPACE USERS AS SELECT * FROM DBA_OBJECTS;

表已创建。

SQL> ALTER DATABASE DATAFILE 5 AUTOEXTEND ON;

数据库已更改。

SQL> ALTER TABLESPACE USERS READ ONLY;

表空间已更改。
SQL> HOST EXP 'SYS/SYSTEM AS SYSDBA' TRANSPORT_TABLESPACE=Y TABLESPACES=USERS FI
LE=C:TEST.DMP

Export: Release 10.2.0.1.0 - Production on 星期二 1月 9 21:12:34 2007

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 UTF8 NCHAR 字符集
服务器使用 UTF8 字符集 (可能的字符集转换)
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
对于表空间 USERS...
. 正在导出簇定义
. 正在导出表定义
. . 正在导出表 T
. . 正在导出表 TT
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
成功终止导出, 没有出现警告。

SQL> DRPO TABLESPACE INCLUDING CONTENTS;
SP2-0734: 未知的命令开头 "DRPO TABLE..." - 忽略了剩余的行。
SQL> DRPO TABLESPACE USERS INCLUDING CONTENTS;
SP2-0734: 未知的命令开头 "DRPO TABLE..." - 忽略了剩余的行。
SQL> drop TABLESPACE USERS INCLUDING CONTENTS;
drop TABLESPACE USERS INCLUDING CONTENTS
*
第 1 行出现错误:
ORA-12919: 不能删除默认永久表空间


SQL> alter database default tablespace test;

数据库已更改。

SQL> drop TABLESPACE USERS INCLUDING CONTENTS;

表空间已删除。

SQL> host imp 'sys/system as sysdba' transport_tablespace=y file=c:test.dmp fr
omuser=xys touser=test datafiles='E:oracleproduct10.2.0oradataUTFusers01.d
bf'

Import: Release 10.2.0.1.0 - Production on 星期二 1月 9 21:21:59 2007

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 UTF8 NCHAR 字符集中的导入
导入服务器使用 UTF8 字符集 (可能的字符集转换)
. 正在将 XYS 的对象导入到 TEST
. . 正在导入表 "T"
. . 正在导入表 "TT"
成功终止导入, 没有出现警告。

SQL> show user
USER 为 "SYS"
SQL> connect test/test
已连接。
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------------------------------------
TT
T

SQL> col tablespace_name format a20
SQL> select file_name , tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
-------------------------------------------------- --------------------
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSTEM01.DBF SYSTEM
E:ORACLEPRODUCT10.2.0ORADATAUTFUNDOTBS01.DBF UNDOTBS1
E:ORACLEPRODUCT10.2.0ORADATAUTFSYSAUX01.DBF SYSAUX
E:ORACLEPRODUCT10.2.0ORADATAUTFTEST.DBF TEST
E:ORACLEPRODUCT10.2.0ORADATAUTFUSERS01.DBF USERS

SQL>

结论:我们看到用户xys下的表t,tt通过传输表空间的方式已经导入到了test下!感觉很不错!


warehouse 发表于:2007.01.09 21:34 ::分类: ( 备份恢复 ) ::阅读:(662次) :: 评论 (0)
===========================================================
block change tracking和rman通常增量备份方式的比较
===========================================================

此贴来之网友wa0362,感觉很不错!

下面都是用level 0和level 1做得比较

在10g之前的版本,使用rman做增量备份,rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段
Each data block in a datafile contains a system change number (SCN), which is the
SCN at which the most recent change was made to the block. During an incremental
backup, RMAN reads the SCN of each data block in the input file and compares it to
the checkpoint SCN of the parent incremental backup. If the SCN in the input data
block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies
the block.
也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN跟level 0备份时的SCN做比较,来确定什么是需要备份的。
所以扫描整个数据文件是不可避免的 !

Block change tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
RMAN's change tracking feature for incremental backups improves incremental
backup performance by recording changed blocks in each datafile in a change tracking
file. If change tracking is enabled, RMAN uses the change tracking file to identify
changed blocks for incremental backup, thus avoiding the need to scan every block in
the datafile.
估计又是使用的位图!没找到依据呢,看书不太仔细。

让我们来对它们的速度做一下测试,
不使用block change tracking,看看备份需要的时间


首先关闭block change tracking

SQL> select status from v$block_change_tracking;

STATUS
----------
DISABLED

然后让我们来做个0级增量备份,和一个1级备份,注意它们使用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_15.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_16.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05


RMAN> backup incremental level 1 format='d:orabackup%d_%s_1level.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_17_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_18_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:06
完成 backup 于 17-7月 –05

level 0备份后其实我根本就没有对数据库做什么更改,level 1备份居然也使用了35秒

--==================================

然后让我们把block change tracking启用后测试一下level 1需要的时间。

SQL>alter database enable block change tracking using
2 file 'D:oracleproduct10.1.0flash_recovery_areaORCLFLASHBACK BLOCK_CHANGE_TRACE.LOG';
我使用的是安装的时候默认的数据库,这个记录文件大概为十几M.除了用位图,别的方式应该没办法这么多快好省的记录数据块的变化了

SQL> alter database enable block change tracking;

数据库已更改


先删除原来的备份
RMAN> delete backupset 14;
RMAN> delete backupset 12;


让我们做备份测试一下,注意看它们完成所用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s_test_level0.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_19_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_20_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

再做level 1
RMAN> backup incremental level 1 format='d:orabackup%d_%s_test_level1.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_21_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_22_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

显然level 1备份用了7秒就完成了,比起没有启用block change tracking快了几倍


warehouse 发表于:2007.01.05 23:53 ::分类: ( 备份恢复 ) ::阅读:(289次) :: 评论 (0)
===========================================================
block change tracking和rman通常增量备份方式的比较
===========================================================

此贴来之网友wa0362,感觉很不错!

下面都是用level 0和level 1做得比较

在10g之前的版本,使用rman做增量备份,rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段
Each data block in a datafile contains a system change number (SCN), which is the
SCN at which the most recent change was made to the block. During an incremental
backup, RMAN reads the SCN of each data block in the input file and compares it to
the checkpoint SCN of the parent incremental backup. If the SCN in the input data
block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies
the block.
也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN跟level 0备份时的SCN做比较,来确定什么是需要备份的。
所以扫描整个数据文件是不可避免的 !

Block change tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
RMAN's change tracking feature for incremental backups improves incremental
backup performance by recording changed blocks in each datafile in a change tracking
file. If change tracking is enabled, RMAN uses the change tracking file to identify
changed blocks for incremental backup, thus avoiding the need to scan every block in
the datafile.
估计又是使用的位图!没找到依据呢,看书不太仔细。

让我们来对它们的速度做一下测试,
不使用block change tracking,看看备份需要的时间


首先关闭block change tracking

SQL> select status from v$block_change_tracking;

STATUS
----------
DISABLED

然后让我们来做个0级增量备份,和一个1级备份,注意它们使用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_15.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_16.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05


RMAN> backup incremental level 1 format='d:orabackup%d_%s_1level.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_17_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_18_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:06
完成 backup 于 17-7月 –05

level 0备份后其实我根本就没有对数据库做什么更改,level 1备份居然也使用了35秒

--==================================

然后让我们把block change tracking启用后测试一下level 1需要的时间。

SQL>alter database enable block change tracking using
2 file 'D:oracleproduct10.1.0flash_recovery_areaORCLFLASHBACK BLOCK_CHANGE_TRACE.LOG';
我使用的是安装的时候默认的数据库,这个记录文件大概为十几M.除了用位图,别的方式应该没办法这么多快好省的记录数据块的变化了

SQL> alter database enable block change tracking;

数据库已更改


先删除原来的备份
RMAN> delete backupset 14;
RMAN> delete backupset 12;


让我们做备份测试一下,注意看它们完成所用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s_test_level0.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_19_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_20_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

再做level 1
RMAN> backup incremental level 1 format='d:orabackup%d_%s_test_level1.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_21_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_22_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

显然level 1备份用了7秒就完成了,比起没有启用block change tracking快了几倍


warehouse 发表于:2007.01.05 23:53 ::分类: ( 备份恢复 ) ::阅读:(269次) :: 评论 (0)
===========================================================
通过rman恢复到同一服务器上不同目录的大致过程!
===========================================================

RMAN> list backup;


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

BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
239 Full 191M DISK 00:00:32 03-6月 -04
BP 关键字: 240 状态: AVAILABLE 标记:TAG20040603T002518
段名:C:ORACLEORA92DATABASE2FNBOBE_1_1
包含的 SPFILE: 修改时间: 02-6月 -04
备份集 239 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 50848 03-6月 -04 C:ORACLEORADATALMTSYSTEM01.DBF
2 Full 50848 03-6月 -04 C:ORACLEORADATALMTUNDOTBS01.DBF

RMAN> list backup of spfile summary;


备份列表
===============
关键字 TY LV S 设备类型 完成时间 段数 副本数 标记
------- -- -- - ----------- ---------- ------- ------- ---
239 B F A DISK 03-6月 -04 1 1 TAG20040603T002518

启动到nomount

RMAN> restore controlfile to 'c:oracleoradatatestCONTROL01.CTL';

启动 restore 于 03-6月 -04

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=C:ORACLEORADATATESTCONTROL01.CTL
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE2FNBOBE_1_1 tag=TAG20040603T002518 params=NU
LL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 03-6月 -04

RMAN> restore controlfile to 'c:oracleoradatatestCONTROL02.CTL';

启动 restore 于 03-6月 -04

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=C:ORACLEORADATATESTCONTROL02.CTL
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE2FNBOBE_1_1 tag=TAG20040603T002518 params=NU
LL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 03-6月 -04

RMAN> restore controlfile to 'c:oracleoradatatestCONTROL03.CTL';

启动 restore 于 03-6月 -04

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=C:ORACLEORADATATESTCONTROL03.CTL
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE2FNBOBE_1_1 tag=TAG20040603T002518 params=NU
LL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 03-6月 -04

修改spfile中的控制文件的新位置
启动到mount

RMAN> exit


恢复管理器完成。

C:>rman catalog rman/rman@dmt target sys/system@lmt

恢复管理器: 版本9.2.0.1.0 - Production

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

连接到目标数据库: LMT (DBID=2004730922)
连接到恢复目录数据库

RMAN> run {
2> set newname for datafile 'c:oracleoradatalmtsystem01.dbf' to 'c:oracleo
radatatestsystem01.dbf';
3> set newname for datafile 'c:oracleoradatalmtundotbs01.dbf' to 'c:oracle
oradatatestundotbs01.dbf';
4> restore database;
5> switch datafile all;
6> recover database;
7> }

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 03-6月 -04

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:ORACLEORADATATESTSYSTEM01.DBF
正将数据文件00002恢复到C:ORACLEORADATATESTUNDOTBS01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE2FNBOBE_1_1 tag=TAG20040603T002518 params=NU
LL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 03-6月 -04

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=527847190 文件名=C:ORACLEORADATATESTSYSTEM01.
DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=527847190 文件名=C:ORACLEORADATATESTUNDOTBS01
.DBF

启动 recover 于 03-6月 -04
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 234 已作为文件 C:ORACLEORADATALMTREDO03.LOG 存在于磁盘上

存档日志文件名 =C:ORACLEORADATALMTREDO03.LOG 线程 =1 序列 =234
完成介质的恢复
完成 recover 于 03-6月 -04

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 06/03/2004 08:13:37
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

RMAN> alter database open resetlogs;

数据库已打开
在恢复目录中注册的数据库的新实体化
正在启动全部恢复目录的 resync
完成全部 resync

RMAN>


warehouse 发表于:2007.01.05 23:46 ::分类: ( 备份恢复 ) ::阅读:(341次) :: 评论 (0)
===========================================================
通过rman在同一台机器上搭建standby大致过程!
===========================================================

c:set oracle_sid=stby

C:>rman target sys/system@orcl nocatalog

恢复管理器: 版本9.2.0.1.0 - Production

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

连接到目标数据库: ORCL (DBID=1126185633)
正在使用目标数据库控制文件替代恢复目录

RMAN> connect auxiliary /

已连接到备用数据库: orcl (未安装)

RMAN> duplicate target database for standby dorecover nofilenamecheck;

启动 Duplicate Db 于 07-9月 -06
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=9 devtype=DISK

正在打印存储的脚本: Memory Script
{
restore clone standby controlfile to clone_cf;
replicate clone controlfile from clone_cf;
sql clone 'alter database mount standby database';
}
正在执行脚本: Memory Script

启动 restore 于 07-9月 -06

使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在恢复控制文件
输出文件名=C:ORACLEORADATASTBYCONTROL01.CTL
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE1HSNE4R_1_1 tag=TAG20060907T202706 params=NU
LL
通道 ORA_AUX_DISK_1: 恢复完成
完成 restore 于 07-9月 -06

正在复制控制文件
输出文件名=C:ORACLEORADATASTBYCONTROL01.CTL
输出文件名=C:ORACLEORADATASTBYCONTROL02.CTL

sql 语句: alter database mount standby database

正在打印存储的脚本: Memory Script
{
set until scn 500906;
set newname for datafile 1 to
"C:ORACLEORADATASTBYSYSTEM01.DBF";
set newname for datafile 2 to
"C:ORACLEORADATASTBYUNDOTBS01.DBF";
set newname for datafile 3 to
"C:ORACLEORADATASTBYUSERS01.DBF";
restore
check readonly
clone database
;
}
正在执行脚本: Memory Script

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 07-9月 -06

使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:ORACLEORADATASTBYSYSTEM01.DBF
正将数据文件00002恢复到C:ORACLEORADATASTBYUNDOTBS01.DBF
正将数据文件00003恢复到C:ORACLEORADATASTBYUSERS01.DBF
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段 handle=C:ORACLEORA92DATABASE1HSNE4R_1_1 tag=TAG20060907T202706 params=NU
LL
通道 ORA_AUX_DISK_1: 恢复完成
完成 restore 于 07-9月 -06

正在打印存储的脚本: Memory Script
{
switch clone datafile all;
}
正在执行脚本: Memory Script

数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=4 stamp=600555010 文件名=C:ORACLEORADATASTBYUNDOTBS01
.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=600555010 文件名=C:ORACLEORADATASTBYUSERS01.D
BF

正在打印存储的脚本: Memory Script
{
set until scn 500906;
recover
standby
clone database
delete archivelog
;
}
正在执行脚本: Memory Script

正在执行命令: SET until clause

启动 recover 于 07-9月 -06
使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 459 已作为文件 C:ORACLEORADATAORCLARCHLOGARC00459.001
存在于磁盘上
存档日志线程 1 序列 460 已作为文件 C:ORACLEORADATAORCLARCHLOGARC00460.001
存在于磁盘上
存档日志文件名 =C:ORACLEORADATAORCLARCHLOGARC00459.001 线程 =1 序列 =459
存档日志文件名 =C:ORACLEORADATAORCLARCHLOGARC00460.001 线程 =1 序列 =460
完成介质的恢复
完成 recover 于 07-9月 -06
完成 Duplicate Db 于 07-9月 -06

RMAN>

 查看全文
warehouse 发表于:2007.01.05 23:44 ::分类: ( 备份恢复 ) ::阅读:(264次) :: 评论 (0)
===========================================================
通过rman duplicate database!
=============================