数据库如果不是处于归档日志运行模式,基本上也就离完犊子不远了.
查看归档状态(目前为非归档)
sql>select log_mode from v$database;
LOG_MODE
-------------------
NOARCHIVELOG
sql>archive log list
-------------------------------------------------
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
-------------------------------------------------
sql>select * from v$archive_processes;
-------------------------------------------------
PROCESS STATUS LOG_SEQUENCE STAT
-------------------------------------------------
0 STOPPED 0 IDLE
1 STOPPED 0 IDLE
……
-------------------------------------------------
修改为归档模式.首先要关闭数据库,启动到mount状态.
sql>shutdown immediate
sql>startup mount
修改为归档模式
sql>alter database archivelog;
--(oracle 9i还要设置log_archive_start 这是个静态参数,oracle10g则不用设置了.sql>alter system set log_archive_start=true scope=spfile;)
验证修改结果
sql>select log_modefrom v$database;
LOG_MODE
---------------------
ARCHIVELOG
打开数据库
sql>alter database open;
设置归档格式
log_archive_format是设置归档命名规则的静态参数,设置后重启数据库才生效.对log_archive_dest和log_archive_dest_n指定的归档有效.
常用参数如下
%s:包含日志序列号作为文件名的一部分.
%t:包含线程号作为文件名的一部分.
%r:包含重置日志ID可确保归档日志文件名是唯一的,甚至在使用某些高级恢复技术重置了日志序列号之后也是如此.
%d:包含数据库ID作为文件名的一部分.
resetlogs防止恢复的时候会报错,归档默认文件扩展名是dbf,习惯设置成arc.
!格式必须包含%s,%t和%r.
%d是可选的,但多个数据库共享一个归档日志目录,则必须包含这个通配符.
例如:_%t_%s_%r.arc
sql>select name from v$database;
NAME
--------
BOB
sql>alter system set log_archive_format='bob_%t_%s_%r.arc' scope=spfile;
重启数据库才生效.
sql>archive log list
--------------------------------------------------------
Databaselog mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
--------------------------------------------------------
sql>altersystem switch logfile;
archive变成Enabled,我们没有设置归档目的地,默认USE_DB_RECOVERY_FILE_DEST使用DB_RECOVERY_FILE_DEST目录,也就是我们常说的闪回目录.
切换日志
sql>alter system archive log current;
sql>alter system switch logfile;
查看归档进程,开启了2个归档进程
sql>select * from v$archive_processes;
--------------------------------------------------------------
PROCESS STATUS LOG_SEQUENCE STAT
--------------------------------------------------------------
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 STOPPED 0 IDLE
...
10版本的archivelog stop/start及alter system archive log stop/start命令已经不用了,只要在归档模式下就是自动归档模式.
设置归档目录
默认的归档目录(Archive destination)是:USE_DB_RECOVERY_FILE_DEST,如果取消DB_RECOVERY_FILE_DEST参数的设置,就会找standby_archive_dest参数,默认是'?/dbs/arch'但是没有真实目录存在,所以虽然能开启归档但是不能实现归档.
先将此参数log_archive_dest设为空,然后再指定新的归档路径.
sql>alter system set log_archive_dest=''scope=spfile;
比如要配置两个归档路径:
sql>alter system set log_archive_dest_1='location=D:\oracle\archivelog1 reopen=500';
sql>alter system set log_archive_dest_2='location=D:\oracle\archivelog2 reopen=500';
(一旦设置多个归档目录,用archive log list;显示出的信息归档路径就是log_archive_dest_n中n的最大值.)
设置归档日志文件名称
sql>alter system set log_archive_format='bob_%t_%s_%r.arc' scope=spfile;
重启数据库实例后,所有设置生效
再看下新生成的归档日志
sql>select * from v$archived_log;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25025926/viewspace-1064463/
,如需转载,请注明出处,否则将追究法律责任。