-
- 归档日志
- 恢复所有备份的归档到默认位置
- 恢复指定范围内的归档日志
- 用命令块将归档日志恢复到非默认位置
- 控制文件的恢复
- spfile 文件的恢复
- logminer工具的使用
- 归档日志
主要介绍了用RMAN将归档日志、控制文件、spfile恢复到默认位置或其他位置
归档日志
RMAN在恢复的过程中如果需要归档文件进行redo一般会在原归档日志找归档,本地找不需要归档的情况下再去备份集、备份片中找一家备份的归档日志,所以在一般情况下不需要恢复归档,单在如下情况下可能要需要恢复归档日志:
- 恢复是可能需要归档重做日志,提交把归档恢复,提高恢复速度
- 将归档重做日志恢复到非默认位置
- 需要用logminer分析日志中的内容,关于LogMiner的简单实用,文中最后会有介绍
恢复所有备份的归档到默认位置
下面的这sql来查询曾经产生过的归档日志:
用下面这个命令来将所有已经备份的归档(从上面sql查出来的归档)还原到原位置,如果这些归档都存在的话:
RMAN> restore archivelog all;
执行前进行交叉验证一次,作用是验证控制文件中备份信息是否磁盘上备份对的上号:
crosscheck archivelog all;
恢复指定范围内的归档日志
RMAN> restore archivelog from sequence until sequence thread ;
RMAN> restore archivelog sequence between and thread ;
# 在磁盘上的归档不会被恢复,如果强制进行覆盖可硬用force 参数:
RMAN> restore archivelog from sequence force;
用命令块将归档日志恢复到非默认位置
run{
set archivelog destination to '/u01/archtemp';
restore archivelog from sequence force;
}
控制文件的恢复
# 从恢复目录中恢复
$ rman target / catalog rcat/[email protected]
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/[email protected]
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+
--用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\_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