2007-5-21 17:11
karenzz
TSM环境使用RMAN恢复Oracle的测试(二)
4. 数据库恢复案例
4.1. 归档模式下丢失或损坏一个数据文件(系统表空间不含在内)
4.1.1. RMAN备份恢复案例
RMAN也可以进行联机备份,而且备份与恢复方法将比OS备份更简单可靠。
1、连接数据库,创建测试表并插入记录
SQL> connect sys/oracle@orcl as sysdba;
Connected.
SQL> create table test(a int) tablespace users;
Table created
SQL> insert into test values(1);
1 row inserted
SQL> commit;
Commit complete
2、备份数据库表空间users
SQL> alter system switch logfile;
System altered.
SQL>r
1* alter system switch logfile;
System altered.
C:\>rman target sys/oracle@orcl catalog rman/rman@catalog
RMAN> run{
2> allocate channel c1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=c:/tivoli/tsm/client/oracle/bin/tdpo.opt)';
3> backup tag 'tsuser' format 'd:\backup\tsuser_%u_%s_%p'
4> tablespace users;
5> release channel c1;
6> }
3、继续在测试表中插入记录
SQL> insert into test values(2);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
A
---------------------------------------
1
2
4、关闭数据库,模拟丢失数据文件
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down
C:\>del D:\ORACLE\product\10.2.0\ORADATA\orcl\USER01.DBF
5、启动数据库,检查错误
SQL> startup
ORACLE instance started.
Total System Global Area 102020364 bytes
Fixed Size 70924 bytes
Variable Size 85487616 bytes
Database Buffers 16384000 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: ' D:\ORACLE\product\10.2.0\ORADATA\orcl\USER01.DBF '
6、先打开数据库
SQL> alter database datafile 3 offline drop;
Database altered.
SQL> alter database open;
Database altered.
7、恢复该表空间
恢复脚本可以是恢复单个数据文件
run{
allocate channel c1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=c:/tivoli/tsm/client/oracle/bin/tdpo.opt)';
restore datafile 3;
recover datafile 3;
sql 'alter database datafile 3 online';
release channel c1;
}
也可以是,恢复表空间
run{
allocate channel c1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=c:/tivoli/tsm/client/oracle/bin/tdpo.opt)';
restore tablespace users;
recover tablespace users;
sql 'alter database datafile 3 online';
release channel c1;
}
8、检查数据是否完整
SQL> alter database open;
Database altered.
SQL> select * from test;
A
---------------------------------------
1
2
说明:
1、RMAN也可以实现单个表空间或数据文件的恢复,恢复过程可以在mount下或open方式下,如果在open方式下恢复,可以减少down机时间
2、如果损坏的是一个数据文件,建议offline并在open方式下恢复
3、这里可以看到,RMAN进行数据文件与表空间恢复的时候,代码都比较简单,建议采用RMAN的备份与恢复
[color=blue]相关文章TSM环境使用RMAN恢复Oracle的测试(一)在[url]http://www.itpub.net/776677.html[/url] [/color]
2007-5-21 17:12
karenzz
4.2. 丢失多个数据文件,数据库的完全恢复
4.2.1. RMAN备份恢复案例
RMAN备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复
1、连接数据库,创建测试表并插入记录
SQL> connect sys/oracle@orcl as sysdba;
Connected.
SQL> create table test(a int);
Table created
SQL> insert into test values(1);
1 row inserted
SQL> commit;
Commit complete
2、备份数据库
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
C:\>rman target sys/oracle@orcl catalog rman/rman@catalog
Rman> run
{ execute script bkup_fulldb_orcl;}
3、继续在测试表中插入记录
SQL> insert into test values(2);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
A
---------------------------------------
1
2
4、关闭数据库,模拟丢失数据文件
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down
C:\>del D:\ORACLE\product\10.2.0\ORADATA\orcl\SYSTEM01.DBF
C:\>del D:\ORACLE\product\10.2.0\ORADATA\orcl\INDX01.DBF
C:\>del D:\ORACLE\product\10.2.0\ORADATA\orcl\TOOLS01.DBF
C:\>del D:\ORACLE\product\10.2.0\ORADATA\orcl\RBS01.DBF
5、启动数据库,检查错误
SQL> STARTUP
ORACLE instance started.
Total System Global Area 102020364 bytes
Fixed Size 70924 bytes
Variable Size 85487616 bytes
Database Buffers 16384000 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: 'D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF'
查询v$recover_file
SQL> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME
---------- ------- ------------------ ---------- -----------
1 ONLINE FILE NOT FOUND 0
2 ONLINE FILE NOT FOUND 0
5 ONLINE FILE NOT FOUND 0
6 ONLINE FILE NOT FOUND 0
可以知道有四个数据文件需要恢复
6、利用RMAN进行恢复
C:\>rman target sys/oracle@orcl catalog rman/rman@catalog
RMAN> run{
2> allocate channel c1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=c:/tivoli/tsm/client/oracle/bin/tdpo.opt)';
3> restore database;
4> recover database;
5> sql 'alter database open';
6> release channel c1;
7> }
7、打开数据库,检查数据库的数据(完全恢复)
SQL> alter database open;
Database altered.
SQL> select * from test;
A
---------------------------------------
1
2
说明:
1、只要有备份与归档存在,RMAN也可以实现数据库的完全恢复(不丢失数据)
2、同OS备份数据库恢复,适合于丢失大量数据文件,或包含系统数据文件在内的数据库的恢复
3、目标数据库在mount下进行,如果恢复成功,再打开数据库。
4、RMAN的备份与恢复命令相对比较简单并可靠,建议有条件的话,都采用RMAN进行数据库的备份。
[color=blue]相关文章TSM环境使用RMAN恢复Oracle的测试(一)在[url]http://www.itpub.net/776677.html[/url] [/color]
2007-6-12 16:57
muchhorse
很好的笔记,,谢谢楼主
btw,为什么不发在一个帖子里面,方面看呢?
2007-6-13 09:38
karenzz
多谢muchhorse的提议,原来想法是在一个贴子里太长,怕大家看着长觉得烦~~
下次改进:)
2007-8-30 22:19
anycall2010
allocate channel c1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=c:/tivoli/tsm/client/oracle/bin/tdpo.opt)';
请问搂住,是否能把RMAN 备份的东西,直接存放在磁盘中,而不是存放在带库中?如果能存放在磁盘上,这个脚本又该怎样指定路径呢?急需楼住解释,谢谢!!
2007-8-31 15:32
karenzz
anycall你好!
我的解释供你参考。
Oracle RMAN如果是用TSM备份,脚本还是上面那个,想直接存放在磁盘,即把PolicyDomain中目的地写Disk StoragePool就可以了。
如果不是用TSM备份,allocate channel c1 type disk。。。详细的我们可以继续讨论:)
2007-9-1 02:33
anycall2010
我的测试环境是这样的,一台机器上安装TSMSERVER,并在服务器端的硬盘上建立相应的存储池;另一台机器上安装TSM 备份归档客户端和TDP FOR ORACLE;我使用的版本是5.4的.我想实现的目的是把oracle的数据通过客户端备份到服务器端的存储池里,按搂住的意思脚本是不是应该这样写?
RMAN> run {
2> allocate channel d1 type disk;
3> backup database
4> format 'disk storagepool';
5> release channel d1;
6> }
方便加我的QQ 477765261 或者是MSN zhongtaozhongtao@hotmail.com
2007-9-1 09:13
karenzz
[QUOTE][i]最初由 anycall2010 发布[/i]
[B]我的测试环境是这样的,一台机器上安装TSMSERVER,并在服务器端的硬盘上建立相应的存储池;另一台机器上安装TSM 备份归档客户端和TDP FOR ORACLE;我使用的版本是5.4的.我想实现的目的是把oracle的数据通过客户端备份到服务器端的存储池里,按搂住的意思脚本是不是应该这样写?
RMAN> run {
2> allocate channel d1 type disk;
3> backup database
4> format 'disk storagepool';
5> release channel d1;
6> }
[/B][/QUOTE]
不是的,我认为脚本是
rman> run{
allocate channel d2 type 'sbt_tape' parms
'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
backup
full
format 'db_%d_%t_%p'
( include current controlfile);
release channel d2;
}
装TDP FOR ORACLE的那台机器节点的policydomain需要写。Destination指向disk pool
2007-9-1 22:10
anycall2010
今天 我使用这个脚本 :
rman> run{
allocate channel d2 type 'sbt_tape' parms
'ENV=(TDPO_OPTFILE=c:\Program Files\tivoli\tsm\agentoba\tdpo.opt)';
backup database
format 'db_%d_%t_%p' ;
release channel d2;
}
出现的错误是:
分配的通道: d2
通道 d2: sid=148 devtype=SBT_TAPE
通道d2: Data Protection for Oracle: version 5.4.1.0
启动 backup 于 01-9月 -07
通道 d2: 启动全部数据文件备份集
通道 d2: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件 fno=00003 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
输入数据文件 fno=00006 name=E:\RMAN.DBF
输入数据文件 fno=00002 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件 fno=00004 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 d2: 正在启动段 1 于 01-9月 -07
释放的通道: d2
RMAN-03009: backup 命令 (d2 通道上, 在 09/01/2007 21:51:32 上) 失败
ORA-19506: 无法创建顺序文件, 名称 = "db_ORCL_632181091_1", 参数 = ""
ORA-27028: skgfqcre: sbtbackup 返回错误
ORA-19511: 从介质管理器层接收到错误, 错误文本为:
ANS1025E (RC137) Session rejected: Authentication failure
我的tdpo.opt是这样配置的:
*********************************************************************
* IBM Tivoli Storage Manager for Databases
* Data Protection for Oracle
*
* Sample tdpo.opt for the Data Protection for Oracle on Win32
*********************************************************************
*====================================================================
* TSM API configuration
*====================================================================
*DSMI_ORC_CONFIG c:\Program Files\tivoli\tsm\agentoba\dsm.opt
*DSMI_LOG c:\Program Files\tivoli\tsm\agentoba
*====================================================================
* TSM Server - filespace name
*
* TDPO_FS default: adsmorc
*
*====================================================================
*TDPO_FS adsmorc
*=====================================================================
* NLS Configuration
*
* TDPO_DATE_FMT default: 1
* TDPO_NUM_FMT default: 1
* TDPO_TIME_FMT default: 1
* TDPO_LANGUAGE default: enu
*
*=====================================================================
* TDPO_DATE_FMT 3
* TDPO_TIME_FMT 3
* TDPO_NUM_FMT 3
* TDPO_LANGUAGE chs
*====================================================================
* Management Class binding for Rman Duplex Copy
*====================================================================
*TDPO_MGMT_CLASS_2 mgmtclass2
*TDPO_MGMT_CLASS_3 mgmtclass3
*TDPO_MGMT_CLASS_4 mgmtclass4
我dsm.opt文件是这样配置的:
********************************************************************
* Tivoli Storage Manager
*
* Sample dsm.opt for the Microsoft Windows Backup-Archive Client
*********************************************************************
*====================================================================
* TCP/IP
*====================================================================
*commmethod tsm
tcpport 1500
TCPServeraddress 192.168.192.130
*====================================================================
* shared memory
*====================================================================
*commmethod sharedmem
shmport 1510
*====================================================================
* named pipes
*====================================================================
*commmethod namedpipe
namedpipename \\.\pipe\adsmpipe
************************************************************************
* COMPression
*
* +------------------+----------------------------------------------+
* | COMPression | ON|OFf |
* +------------------+----------------------------------------------+
* System default: OFf
*
* Option file example:
*
* COMPression ON
* COMPression OFf
************************************************************************
************************************************************************
* DOMain
*
* +------------------+----------------------------------------------+
* | DOMain | ALL-LOCAL|domain |
* +------------------+----------------------------------------------+
* System default: ALL-LOCAL
*
* Options file examples:
*
* DOMain ALL-LOCAL Q:
* DOMain ALL-LOCAL SYSTEMOBJECT
************************************************************************
************************************************************************
* EXclude and INclude
*
* +------------------+----------------------------------------------+
* | EXclude | pattern |
* +------------------+----------------------------------------------+
* | INclude | pattern |
* +------------------+----------------------------------------------+
*
请问高手,我觉得没什么问题了,怎么还报错呢?
2007-9-1 22:18
anycall2010
[QUOTE][i]最初由 karenzz 发布[/i]
[B]
装TDP FOR ORACLE的那台机器节点的policydomain需要写。Destination指向disk pool [/B][/QUOTE]
你只那个文件需要配置?我今天参考了一下,tivoli的相关文档,可是没有说要指定disk pool,(我是在win 2003)上测试的
2007-9-3 13:59
karenzz
一、你的tdpo.opt文件根本就没有配置啊,前面全是*号。
二、你还没有弄懂policydomain是什么吧,这个不是文件,是TSM Server策略域在TSM DB中,可以用命令行或者ISC界面定义策略。diskpool是在策略里面定义的。
define domain。。。
2007-9-3 17:29
anycall2010
谢谢 ,那天匆忙 ,没有把文档读透,还是回家好好读读文档,谢谢
2007-9-4 14:35
karenzz
呵呵,不客气,可以边读边讨论:)
2008-2-18 19:55
shadekill
有没有可能把tsm中的数据恢复到另一个主机上的oracle中,因为我们要定期测试tsm中的数据是否可用正确,谢谢。
2008-2-27 16:23
karenzz
[quote]原帖由 [i]shadekill[/i] 于 2008-2-18 19:55 发表 [url=http://www.itpub.net/redirect.php?goto=findpost&pid=9632307&ptid=776684][img]http://www.itpub.net/images/common/back.gif[/img][/url]
有没有可能把tsm中的数据恢复到另一个主机上的oracle中,因为我们要定期测试tsm中的数据是否可用正确,谢谢。 [/quote]
可以的,请问Oracle是什么方式运行什么版本?
2008-6-13 17:47
netocisco
太感谢楼主了~
2008-6-16 11:19
karenzz
netocisco,太客气了!
如有错误,欢迎指正!
页:
[1]

Powered by ITPUB论坛