您的位置:首页 > 数据库 > Oracle

RMAN实战14:用RMAN恢复ORACLE归档日志、控制文件、spfile及logminer的使用

2015-12-23 20:59 966 查看
归档日志
恢复所有备份的归档到默认位置

恢复指定范围内的归档日志

用命令块将归档日志恢复到非默认位置

控制文件的恢复

spfile 文件的恢复

logminer工具的使用

主要介绍了用RMAN将归档日志、控制文件、spfile恢复到默认位置或其他位置

归档日志

RMAN在恢复的过程中如果需要归档文件进行redo一般会在原归档日志找归档,本地找不需要归档的情况下再去备份集、备份片中找一家备份的归档日志,所以在一般情况下不需要恢复归档,单在如下情况下可能要需要恢复归档日志:

恢复是可能需要归档重做日志,提交把归档恢复,提高恢复速度

将归档重做日志恢复到非默认位置

需要用logminer分析日志中的内容,关于LogMiner的简单实用,文中最后会有介绍

恢复所有备份的归档到默认位置

下面的这sql来查询曾经产生过的归档日志:

sys@CYANG> select * from v$log_history ;


用下面这个命令来将所有已经备份的归档(从上面sql查出来的归档)还原到原位置,如果这些归档都存在的话:

RMAN> restore archivelog all;


执行前进行交叉验证一次,作用是验证控制文件中备份信息是否磁盘上备份对的上号:

crosscheck archivelog all;


恢复指定范围内的归档日志

RMAN> restore archivelog from sequence 68 until sequence 78 thread 1;
RMAN> restore archivelog sequence between 68 and 78 thread 1;
# 在磁盘上的归档不会被恢复,如果强制进行覆盖可硬用force 参数:
RMAN> restore archivelog from sequence 1 force;


用命令块将归档日志恢复到非默认位置

run{
set archivelog destination to '/u01/archtemp';
restore archivelog from sequence 8 force;
}


控制文件的恢复

# 从恢复目录中恢复
$ rman target / catalog rcat/foo@rcat
RMAN> startup nomount;
RMAN> list backup of controlfile;
RMAN> startup nomount;
RMAN> restore controlfile;

# 从autobackup中恢复
$ rman target /
RMAN> startup nomount;
RMAN> restore controlfile from autobackup;
# 如果知道备份的控制文件名可以指定恢复
RMAN> startup nomount;
RMAN> restore controlfile from
'/u01/O12C/rman/rman_ctl_c-3423216220-20130113-01.bk';


spfile 文件的恢复

# 从恢复目录恢复
$ rman target / catalog rcat/foo@rcat
RMAN> startup nomount;
RMAN> restore spfile;
# 用自动恢复
RMAN> startup nomount force;
RMAN> restore spfile to '/tmp/spfile.ora'
from '/u01/O12C/rman/rman_ctl_c-3423216220-20130113-00.bk';
# 然后vi修改下,在改名字求OK了
$ cp /tmp/spfile.ora $ORACLE_HOME/dbs/spfileo12c.ora


logminer工具的使用

这个是oracle数据库的一个工具,用于发掘归档日志中的数据:

--初始化
SQL> @?\rdbms\admin\dbmslm.sql;

程序包已创建。

授权成功。

同义词已创建。

SQL>  @?\rdbms\admin\dbmslmd.sql;

程序包已创建。

同义词已创建。

SQL>

--修改时间格式
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
--验证时间格式
select sysdate from dual
--用一个业务用户连接,做一些更改的操作,并提交
select * from test1
delete from test1 where job_id='AD_VP'
update test1 set max_salary=max_salary+1000
--用sysdba连接将在线日志归档
conn /as sysdba
alter system switch logfile;
--查看日志
select t.first_time,
t.name
from v$archived_log t
order by t.first_time
--选择要分析的日志,用sys用户
desc execute dbms_logmnr.add_logfile(logfilename=>'C:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2015_06_22\O1_MF_1_1_BRHVGN9R_.ARC',options=>dbms_logmnr.new);
--开始分析
execute dbms_logmnr.start_logmnr(options=> dbms_logmnr.dict_from_online_catalog);
--查看分析内容
select *
from v$logmnr_contents lc
where lc.seg_owner='USER1' execute dbms_logmnr.end_logmnr;
--结束分析
execute dbms_logmnr.end_logmn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: