--alter system set log_archive_start=true scope=spfile;--启用主动归档
--alter system reset log_archive_start scope=spfile sid='*';--重置 10g这个参数废弃,设置以后报错32004
--alter system set log_archive_dest='E:\oracle\product\10.2.0\oradata\arch' scope=spfile;--设置归档路径
10g如果只设置一个归档目录,可以用上面的方式,注意没有location
如果多个归档目录,不能设置这个dest。
alter system set log_archive_dest_1='location=E:\oracle\product\10.2.0\oradata\arch\arch1' scope=spfile;--设置归档目录
--alter system set log_archive_dest_2='location=E:\oracle\product\10.2.0\oradata\arch2' scope=spfile; --如果归档到两个位置,则可以通过上边方法实现
alter system set log_archive_format='arch_%d_%t_%r_%s.log' scope=spfile;
如果设置不正确,启动报错,原来的spfile可能要删掉,然后:
create spfile from pfile='E:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.6142013112438';
这样在database下生成一个spfile,然后正常启动,重新设置归档参数
设置成功后,关闭数据库,用mount启动,alter database archivelog;归档成功。
archive log list;查看归档状态。
alter system switch logfile;立即将重做日志归档
然后在E:\oracle\product\10.2.0\oradata\arch这个目录下面会生成一个归档文件。文件名类似ARCH1ARCH_5061743D_1_820783296_14.LOG
====================================================================================
RMAN
cmd输入命令rman,前提是ORACLE BIN环境变量已设置。
RMAN> connect target 连接到本地
已连接到目标数据库: ORCL (DBID=1348564029, 未打开)
RMAN> backup database format 'E:\oracle\backup\_%U'; 备份数据库到指定目录
然后在目录下会生成一些无后缀文件。如_03OEVO5S_1_1
备份归档日志:
备份归档日志报错找不到文件,原因是有些日志文件被删除过 参考:http://blog.csdn.net/changyanmanman/article/details/7598856
执行change archivelog all crosscheck;
再重新执行backup database archivelog all delete input format 'e:\oracle\backup\_%U';自动删除原归档日志
模拟数据文件丢失。
杀ORACLE进程,删除ht.dbf数据库文件开启服务,实例启动正常,监听服务无法启动,监听启动后停留在处理中的状态。
连接rman
rman>restore database; 恢复数据库
然后监听可以启动。但是打开数据库报错。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
利用重做日志恢复。
指定日志目录。必须是current日志。
SQL> recover database using backup controlfile;
ORA-00279: 更改 692188 (在 07/17/2013 15:33:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ARCH\ARCH1ARCH_5061743D_1_820783296_16.LOG
ORA-00280: 更改 692188 (用于线程 1) 在序列 #16 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
控制台输入
E:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG
ORA-00310: 归档日志包含序列 14; 要求序列 16
ORA-00334: 归档日志: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
SQL> recover database using backup controlfile;
ORA-00279: 更改 692188 (在 07/17/2013 15:33:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\PRODUCT\10.2.0\ORADATA\ARCH\ARCH1ARCH_5061743D_1_820783296_16.LOG
ORA-00280: 更改 692188 (用于线程 1) 在序列 #16 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
控制台输入
E:\oracle\product\10.2.0\oradata\orcl\REDO03.LOG
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL>
正常了。
这里重做日志文件可以查v$log当前日志,用这个当前日志去做恢复