- 浏览: 275698 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
donglc:
看不懂,lz你懂不?
DSOFramer.ocx 控件使用 -
xiaoduo2048:
版本太旧了,只能做为一个参考,好多介绍现在的版本里还要好好找找 ...
jasperReport iReport中文教程 -
longzaitian:
谢了,网上关于birt的资料比较少!
Birt入门教程使用说明 -
YYang5968:
request.getSession().getServlet ...
getServletContext().getRealPath() 和request.getRealPath -
OnePiece_2012:
灰常好
mysql 工具--HB-SQLyogEnt
五、还原与恢复
5.1常规还原与恢复
RMAN 的整个恢复过程可以分为还原(restore)与恢复(recover),他们在含义上是有
很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复,所以,
正确的理解这两个概念,有助于正确的恢复数据库。
对于RMAN 的备份,还原操作只能是在用RMAN 或RMAN 包来做了,对于恢复操作
则是很灵活的了,除了RMAN,也可以在SQLPLUS 中完成。还原与恢复一个数据库,可
以用如下两个简单的命令完成
RMAN>restore database;
RMAN>recover database;
恢复一个表空间,或者恢复一个数据文件,相对比较恢复数据库可能花费更少的时间。
RMAN> SQL "ALTER TABLESPACE tools OFFLINE IMMEDIATE";
RMAN> RESTORE TABLESPACE tools;
RMAN> RECOVER TABLESPACE tools;
RMAN> SQL "ALTER TABLESPACE tools ONLINE";
对于数据库与数据文件,可以从指定的tag恢复
RMAN>RESTORE DATAFILE 1 FROM TAG=’tag name’
对于时间点恢复等不完全恢复,可能只有完全的还原数据库了。
RMAN> RUN {
2> ALLOCATE CHANNEL c1 TYPE DISK;
3> ALLOCATE CHANNEL c2 TYPE DISK;
4> SET UNTIL TIME = '2002-12-09:11:44:00';
5> RESTORE DATABASE;
6> RECOVER DATABASE;
7> ALTER DATABASE OPEN RESETLOGS; }
不完全恢复在RMAN 中还可以用基于日志的恢复
RMAN> RUN {
2> SET UNTIL SEQUENCE 120 THREAD 1;
3> ALTER DATABASE MOUNT;
4> RESTORE DATABASE;
5> RECOVER DATABASE; # recovers through log 119
6> ALTER DATABASE OPEN RESESTLOGS;
7> }
如果有可能,也可以恢复数据文件到一个新的位置
SET NEWNAME FOR datafile
'/u01/oradata/tools01.dbf' TO '/tmp/tools01.dbf';
RESTORE datafile '/u01/oradata/tools01.dbf';
SWITCH DATAFILE ALL;
除了恢复数据库与数据文件,我们也可以恢复控制文件,需要启动到nomount 下,用如下
的命令即可
14
Restore controlfile from ‘file name’
Restore controlfile from autobackup
Restore controlfile from tag=‘……’
在正常情况下,不用恢复归档日志,恢复进程会自动寻找所需要的归档日志,当然我们也可
以指定恢复到哪里。
SET ARCHIVELOG DESTINATION TO '/u02/tmp_restore';
RESTORE ARCHIVELOG ALL;
如果使用的服务器参数文件(spfile),RMAN 可以备份该参数文件,如果发生文件损坏,可
以用RMAN 恢复spfile 参数文件,在没有参数文件的情况下,用Rman 的临时参数文件启
动数据库到Nomount 下,执行如下命令即可
Restore controlfile from autobackup
Restore controlfile from ‘file name’
5.2特殊情况下的恢复
在假定丢失了恢复目录与控制文件,只剩下备份集与备份片,这个时候,可能只能从文
件中恢复了。以下是调用dbms_backup_restore包,从文件中恢复的例子。
declare
devtype varchar2(100);
done boolean;
recid number;
stamp number;
fullname varchar2(80);
begin
devtype :=
dbms_backup_restore.deviceallocate('sbt_tape',params=>'ENV=
(NSR_SERVER=backup_server)');
dbms_backup_restore.restoresetdata file;
dbms_backup_restore.restorecontrolfileto(
'first_control_file');
dbms_backup_restore.restorebackuppiece('backup_piece', done);
dbms_backup_restore.copycontrolfile ('first_control_file',
'second_control_file', recid, stamp,fullname);
-- repeat the above copycontrolfile for each control file
end; /
5.3还原检查与恢复测试
与备份检查一样,还原操作也可以检查是否能正常restore或者是否该备份集是否有效。如:
RMAN> RESTORE DATABASE VALIDATE;
RMAN> VALIDATE BACKUPSET 218;
Recover 还可以进行测试,检测恢复的错误,错误信息记载在alert文件中,通过测试,我们
可以知道该恢复操作是否能正常完成。
15
SQL>RECOVER TABLESPACE sales TEST;
SQL>RECOVER DATABASE UNTIL CANCEL TEST
5.4块级别的恢复
块恢复Block Media Recovery (BMR),块是恢复的最小单元,通过块可以减少恢复时间,
而且数据文件可以在线。恢复块的时候,必须指定具体的块号,如:
BLOCKRECOVER datafile 6 BLOCK 3;
要恢复的坏块信息可以从报警与跟踪文件,表与索引的分析,DBV 工具或第三方媒体
管理工具以及具体的查询语句中获得。产生块损坏的原因一般是间断或随机的IO 错误或者
是内存的块错误。
块的错误信息保存在V$DATABASE_BLOCK_CORRUPTION,用如下命令恢复该视图中列
出的坏块
RMAN> BLOCKRECOVER CORRUPTION LIST
2> RESTORE UNTIL TIME 'sysdate – 10';
备份的坏块信息保存在
V$BACKUP_CORRUPTION
V$COPY_CORRUPTION
可以用如下的命令来恢复坏块。
BLOCKRECOVER datafile 2 BLOCK 12, 13 datafile 7 BLOCK 5, 98, 99 datafile 9 BLOCK
19;
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 FROM TAG
"weekly_backup";
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME
'SYSDATE-2';
5.5数据库复制
可以用RMAN 来进行数据库的复制与克隆,RMAN提供一个专门的命令来完成这个操作。
如
CONNECT TARGET
CONNECT AUXILIARY SYS/aux_pwd@newdb
DUPLICATE TARGET DATABASE TO ndbnewh
LOGFILE
'?/dbs/log_1.f' SIZE 100M,
'?/dbs/log_2.f' SIZE 100M
SKIP READONLY
NOFILENAMECHECK;
在以上的命令执行之前,注意如下几点
1、备份主库上的所有数据文件,控制文件以及备份时与备份后产生的归档日志,并把该备
份拷贝到需要复制的机器同样的目录下(如果不是同样的目录,在linux/unix 环境下可以考
虑建立一个链接来完成)。
2、拷贝主数据库的初始化参数文件到复制的机器上,并做相应的修改,如修改数据库名称
与实例名称
16
3、在要复制的机器上创建新的密码文件,并启动复制的数据库到nomount下。
4、配置主数据库到复制数据库的网络连接或者复制数据库到主数据库的连接。
5、在主数据库或者复制的数据库上运行RMAN,分别连接主数据库与复制数据库实例。
6、运行复制命令,命令将还原所有数据文件,重新创建控制文件,并利用新的参数文件启
动恢复数据库到一致状态,最后用resetlog方式打开数据库,创建指定的redolog。
复制命令也可以从磁带上的备份进行复制,并改变数据库名称,也可以改变数据库文件的新
的路径以及恢复到以前的时间点,跳过不需要复制的表空间等,如一个比较复杂的复制命令:
RUN
{
ALLOCATE AUXILIARY CHANNEL newdb1 DEVICE TYPE sbt;
DUPLICATE TARGET DATABASE TO newdb
DB_FILE_NAME_CONVERT=('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')
UNTIL TIME 'SYSDATE-1' # specifies incomplete recovery
SKIP TABLESPACE cmwlite, drsys, example # skip desired tablespaces
PFILE = ?/dbs/initNEWDB.ora
lOGFILE
GROUP 1 ('?/oradata/newdb/redo01_1.f',
'?/oradata/newdb/redo01_2.f') SIZE 200K,
GROUP 2 ('?/oradata/newdb/redo02_1.f',
'?/oradata/newdb/redo02_2.f') SIZE 200K
GROUP 3 ('?/oradata/newdb/redo03_1.f',
'?/oradata/newdb/redo03_2.f') SIZE 200K REUSE;
}
5.6利用RMAN创建备用数据库
利用RMAN 创建备用数据库可以用两种办法,一种是常规的Restore 命令,利用从主
数据库拷贝过去的备用控制文件,把备用数据库启动到备用mount 下,这个时候的备用数
据库是没有数据文件的。然后在备用端,启动RMAN命令,连接该数据库(与主数据库DBID
一样),把从主数据库拷贝过来的RMAN 备份还原出来。最后就与其它方法一样了,进入备
用的管理恢复模式。
另外一个办法就是复制命令了,如
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK;
以下详细的介绍了这一个过程。
1、创建备用参数文件与密码文件,启动备用数据库到nomount下
2、备份主数据库与备用控制文件以及所有归档
RMAN> Backup Database;
RMAN> Backup current controlfile for standby;
RMAN> sql "Alter System Archive Log Current";
RMAN> Backup filesperset 10 ArchiveLog all delete input;
3、拷贝所有的备份到备用数据库相同路径下
4、配置主数据库到备用数据库的连接
5、启动RMAN
rman target / auxiliary sys/change_on_install@STANDBY
17
6,开始创建备用数据库
RMAN> duplicate target database for standby dorecover nofilenamecheck;
整个过程包括了备用控制文件的创建,启动到Mount 下,参数文件中指定的路径转换与数
据文件的还原,归档日志的还原等。
7、最后恢复日志并启动到管理恢复模式下。
SQL> recover standby database;
SQL> alter database recover managed standby database disconnect;
六、RMAN的管理
6.1Report命令
Report 命令可以检测那些文件需要备份,那些备份能被删除以及那些文件能不能获得的信
息,如
报告数据库的所有能备份数据文件对象
Report schema
或者
RMAN> REPORT SCHEMA AT TIME 'SYSDATE-14';
RMAN> REPORT SCHEMA AT SCN 1000;
RMAN> REPORT SCHEMA AT SEQUENCE 100 THREAD 1;
报告需要备份的数据文件
Report need backup [ redundancy | days | incremental n];
报告过期了的数据文件或者不可用的备份与拷贝
Report obsolete [orphan]
报告不能获得或者不能到达的数据文件信息
Report unrecoverable [database]
6.2 List命令
List命令一般用来查看备份与拷贝信息,如
查看备份信息
List backup
查看备份汇总信息
List backup summary
查看文件拷贝的信息
List copy
查看具体的备份信息
List backup of datafile ‘file name’
list incarnation of database;
18
6.3 Crosscheck命令
检查磁盘或磁带上的备份或拷贝是否正确,并更新备份或者拷贝的状态
如果不正确,将标记为expired(过期)
Crosscheck backup;
Crosscheck archivelog all;
Delete [noprompt] expired backup命令删除过期备份
也可以用List来查看相应的报告
LIST EXPIRED BACKUP;
LIST EXPIRED BACKUP SUMMARY;
6.4 Delete 命令
Delete命令可以用来删除指定的备份或者用来删除废弃或者是过期的备份集
如删除指定的备份集与备份片
RMAN> DELETE BACKUPPIECE 101;
RMAN> DELETE CONTROLFILECOPY '/tmp/control01.ctl';
RMAN> DELETE BACKUP OF TABLESPACE users DEVICE TYPE sbt;
删除过期或者废弃了的备份
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE NOPROMPT OBSOLETE;
RMAN> DELETE OBSOLETE REDUNDANCY = 3;
RMAN> DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;
删除指定的备份归档
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;
七、恢复目录
Oracle版本9因为控制文件的自动备份,可以很大程度成不需要使用恢复目录,但是使用恢
复目录的也有如下好处
·有些命令只被恢复目录支持(对于9i 来说,也就是专门操作恢复目录的语句而已)
·能保留更多的历史备份信息
·一个恢复目录能管理与备份多个目标数据库
·如果在9i以前,丢失控制文件而没有恢复目录将是难以恢复的
·如果没有恢复目录,而且发生了结构上的改变,时间点的恢复需要小心操作
·能存储备份与恢复的脚本
可以看到,主要是可以保留更多的备份信息与方便的管理多个目标数据库,这个在众多目标
数据库的情况下,是可以考虑的。
19
7.1创建恢复目录
注意,恢复目录不要与目标数据库在同一台机器上,而且大小要求比较小。
SQL> create user RMAN identified by RMAN
2 temporary tablespace TEMP
3 default tablespace RCVCAT
4 quota unlimited on RCVCAT;
SQL> grant recovery_catalog_owner to RMAN;
RMAN> create catalog
RMAN> register database;
恢复目录可以采用如下命令升级与删除
RMAN> UPGRADE CATALOG;
RMAN> DROP CATALOG;
7.2恢复目录管理
恢复目录支持如下的命令
{CREATE|UPGRADE|DROP} CATALOG
{CREATE|DELETE|REPLACE|PRINT} SCRIPT
LIST INCARNATION
REGISTER DATABASE
REPORT SCHEMA AT TIME
RESET DATABASE
RESYNC CATALOG
1、Resync命令
Resync可以同步数据库与恢复目录之间的信息,在实际情况下,rman一般可以自动同步。
在如下情况下需要同步
·数据库物理结构的改变
·数据文件增加或者是改变大小
·表空间删除
·回滚段的创建与删除
·每产生10个归档日志
2、Reset 命令
目标数据库resetlogs 之后,需要重新设置恢复目录。Reset命令就用来重新设置恢复目录。
7.3恢复目录视图
恢复目录本身有一组视图,用于存放目标数据库与备份信息,如
恢复目录的相关视图
RC_DATABASE
RC_DATAFILE
RC_STORED_SCRIPT
20
RC_STORED_SCRIPT_LINE
RC_TABLESPACE
可以通过如下命令来查看相关信息
select * from rc_database;
7.4存储脚本
存储脚本
RMAN> creata script level0backp{
backup
incremental level 0
format '/u01/db01/backup/%U'
filesperset 5
database plus archivelog delete input;
sql 'alter database archive log current';
}
执行脚本
RMAN> run {execute script Level0backup;}
更新脚本
RMAN> replace script level0backup{
……
}
删除脚本
RMAN> delete script Level0backup;
查看脚本
RMAN> print script level0backup;
小节
RMAN的体系结构与运行方法
RMAN的常见备份方法
RMAN的还原与恢复方法
RMAN的管理方法与常见命令
恢复目录与恢复目录的使用
附录
废弃的命令与取代的新命令
版本 老的命令 当前语法
9.2 REPLICATE RESTORE CONTROLFILE
21
FROM ...
9.2 SET AUTOLOCATE Now enabled by default.
901 ALLOCATE CHANNEL FOR
DELETE
Not available
901 ALLOCATE
CHANNEL ...TYPE
CONFIGURE CHANNEL ...
DEVICE TYPE
9.0.1 ALLOCATE
CHANNEL ...KBYTES
CONFIGURE
CHANNEL ...MAXPIECESIZE
901 ALLOCATE
CHANNEL ...READRATE
CONFIGURE CHANNEL ... RATE
9.0.1 ... ARCHIVELOG ...LOGSEQ … ARCHIVELOG ... SEQUENCE
9.0.1 BACKUP ... SETSIZE BACKUP ... MAXSETSIZE
9.0.1 CHANGE ... CROSSCHECK CROSSCHECK
9.0.1 CHANGE ... DELETE DELETE
9.0.1 REPORT ... AT LOGSEQ REPORT ... AT SEQUENCE
9.0.1 SET AUXNAME CONFIGURE AUXNAME
一个实用脚本,包括备份RAC数据库与归档日志的shell脚本
[oracle@db worksh]$ more rmanback.sh
#!/bin/sh
#set env
export ORACLE_HOME=/opt/oracle/product/9.2
export ORACLE_SID=db2in1
export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"
export PATH=$PATH:$ORACLE_HOME/bin:/sbin:/usr/sbin
echo "-----------------------------start-----------------------------";date
#backup start
$ORACLE_HOME/bin/rman <<EOF
connect target
delete noprompt obsolete;
backup database include current controlfile format '/rmanback/db2/%U_%s.bak'
filesperset = 2;
run{
ALLOCATE CHANNEL node_c1 DEVICE TYPE DISK CONNECT 'sys/pass@db1in1';
ALLOCATE CHANNEL node_c2 DEVICE TYPE DISK CONNECT 'sys/pass@db2in2';
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
backup archivelog all delete input format '/ rmanback/db2/%U_%s.bak' filesperset
= 5;
}
list backup;
exit;
EOF
echo "------------------------------end------------------------------";
发表评论
-
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
2011-12-29 12:13 926由于业务逻辑的多样性, ... -
sqlserver 数据库链 链接oracle
2011-12-29 12:10 904--建立连接服务器 EXEC sp_addlinkedse ... -
oracle 中随机取数据的方法
2010-03-05 11:59 8420oracle 中随机取数据的方法: 1.快速随机取数据(推荐 ... -
Oracle随机函数
2010-03-04 11:16 9021.基础认识 关于这些函数及DBMS_RANDOM包的文件都 ... -
oracle timestamp 类型转换
2010-03-01 16:39 4298我们都知道date和timestamp都是对日期和时间的表示, ... -
RMAN参考使用手册
2009-09-03 09:46 834RMAN的概念与体系结构Oracle 9i RMAN的配置运用 ... -
什么是分布式数据库系统
2009-03-10 16:23 1350什么是分布式数据库系 ... -
ORA-01810: 格式代码出现两次
2009-03-04 10:09 2198今天在做sql查询时发现了这样的问题,在网上搜索找到了答案,是 ... -
oracle SYS SYSTEM密码找回
2008-12-08 14:41 3120sqlplus /nolog; c ... -
转移表和索引所在的表空间
2008-12-08 14:37 2616如果你将创建表和索引创建在USERS表空间下了,(注:在USE ... -
Oracle如何附加数据库
2008-12-08 14:29 2795Oracle如何附加数据库 解压密码:yisean -
oracle 游标
2008-11-28 17:58 754create or replace function f_ ... -
Oracle 实现 right 函数
2008-11-28 17:14 5251create or replace function f_ ...
相关推荐
Oracle 11gR2 RMAN 官方参考手册
《RMAN参考手册》是关于Oracle数据库备份与恢复的重要指南,特别关注了RMAN(Recovery Manager)这一工具的使用。RMAN是Oracle提供的一种物理备份解决方案,它能够备份包括数据文件、控制文件、参数文件以及归档日志...
《RMAN参考手册》是Oracle数据库管理员的重要工具书,它详细介绍了恢复管理器(RMAN)的使用方法和各种操作。RMAN是Oracle数据库提供的一个内置工具,专门用于数据库备份、恢复以及性能优化。以下是对RMAN核心知识点...
Oracle 9i RMAN(恢复管理器)是Oracle数据库系统中的一个重要组件,主要负责数据库的备份、恢复和维护任务。...通过阅读《Oracle 9i RMAN参考使用手册》,DBA可以深入了解并充分利用RMAN的各项特性。
### Oracle 9i RMAN 参考使用手册关键知识点解析 #### 一、RMAN的概念与体系结构 RMAN(Recovery Manager)是Oracle数据库管理系统中的一个强大工具,专门用于数据库的备份、恢复和灾难恢复操作。从Oracle 8版本...
Oracle 9i RMAN(恢复管理器)是Oracle...总的来说,Oracle 9i RMAN参考使用手册涵盖了RMAN的各个方面,对于数据库管理员来说是一份非常实用的参考资料,通过深入学习和实践,可以提升对数据库保护和恢复的掌控能力。
配置RMAN时,可以使用“CONFIGURE CONTROLFILE AUTOBACKUP ON”命令来开启自动备份功能,并且还可以指定自动备份的格式。例如,“CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';”就是指定...
### Oracle 9i RMAN 参考使用手册关键知识点解析 #### 一、RMAN的概念与体系结构 RMAN(Recovery Manager)是Oracle数据库管理系统中的一个强大工具,专门用于数据库的备份、恢复和灾难恢复操作。从Oracle 8版本...
Oracle的RMAN(Recovery Manager)是Oracle数据库系统中用于数据备份和恢复的强大工具。它提供了全面的数据库保护策略,包括完全、...《RMAN使用手册》文档应详细介绍了这些内容,是学习和掌握RMAN操作的重要参考资料。
《RMAN参考手册》是Oracle数据库管理员必备的工具书,主要涵盖了RMAN(Recovery Manager)的各种命令和实际操作案例。RMAN是Oracle数据库提供的一个强大的备份和恢复工具,能够帮助用户有效地管理数据库的备份、恢复...
Oracle 10g Release 2 (10G2) 的 Recovery Manager (RMAN) 是一个强大的工具,专门用于Oracle数据库的备份、恢复和维护。在深入理解RMAN之前,我们...Oracle 10g2 RMAN手册无疑是学习和实施这些操作的重要参考资料。
在Oracle 10g中,RMAN还可以与其他工具结合使用,比如Flashback技术,实现更复杂的恢复操作,如闪回数据库到某个时间点。同时,RMAN也支持自动化备份和调度,通过`RMAN脚本`或者Oracle的Enterprise Manager等管理...
本手册详细阐述了 RMAN 的语法和用法,是数据库管理员进行数据保护和故障恢复的重要参考资料。以下是 RMAN 的核心知识点: 一、RMAN 基础 RMAN 是 Oracle 数据库内置的命令行工具,它提供了全面的数据保护解决方案...
Oracle Recovery Manager(RMAN)是Oracle...在Oracle 9i中,RMAN的使用已经相当成熟,为数据库管理员提供了强大的管理工具。然而,要注意的是,上述信息仅适用于Oracle 9i,后续版本可能引入了更多改进和新特性。
Oracle数据库RMAN手册提供了一个快速参考指南,包含了RMAN的基本使用方法和语法,对于深入理解RMAN的功能非常有帮助。 #### 二、RMAN环境概览 RMAN环境主要包括以下几个方面: - **目标数据库**:即需要备份或恢复...
通过Oracle 9i RMAN参考使用手册,用户可以深入学习如何配置和使用这些功能,以及解决可能出现的问题。手册通常会包含详细的命令解释、示例和最佳实践,帮助数据库管理员充分利用RMAN的强大功能,确保数据库的安全和...
《Oracle_Database_10g完全参考手册_en》是一份详尽的数据库管理技术资源,主要针对Oracle 10g版本。这份手册包含了对Oracle数据库系统深入的理解和操作指南,对于学习和掌握Oracle数据库的管理和开发人员来说是极其...
Oracle资料参考手册是一份极其宝贵的资源,尤其对于初学者来说,它是掌握Oracle数据库系统不可或缺的工具。这份手册包含了丰富的信息,旨在帮助用户深入理解和有效利用Oracle数据库的各种功能。 手册的核心内容可能...
Oracle参考手册是数据库管理员进行日常管理和维护的重要参考资料。在Oracle数据库系统中,多个角色共同协作以确保数据库的正常运行,包括数据库管理员、安全员、网络管理员、程序开发人员和数据库用户。作为数据库...