ITPub博客

首页 > 数据库 > Oracle > 将数据库修改为归档模式

将数据库修改为归档模式

原创 Oracle 作者:与刃争锋 时间:2013-12-26 09:40:08 0 删除 编辑
数据库如果不是处于归档日志运行模式,基本上也就离完犊子不远了.

查看归档状态(目前为非归档)
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-25

  • 博文量
    89
  • 访问量
    132413