如何将oracle数据库 设置为归档模式

如何将oracle数据库 设置为归档模式,第1张

查看归档状态为非归档

sys@JSL>select log_mode from v$database

LOG_MODE

------------

NOARCHIVELOG

archive状态Disabled

sys@JSL>archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 2

Current log sequence 4

sys@JSL>select * from v$archive_processes

PROCESS STATUS LOG_SEQUENCE STAT

---------- ---------- ------------ ----

0 STOPPED 0 IDLE

1 STOPPED 0 IDLE

2 STOPPED 0 IDLE

3 STOPPED 0 IDLE

...

...

29 STOPPED 0 IDLE

修改为归档模式

首先要关闭数据库,启动到mount状态。

sys@JSL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

sys@JSL>startup mount

ORACLE instance started.

Total System Global Area 184549376 bytes

Fixed Size 1218412 bytes

Variable Size 62916756 bytes

Database Buffers 117440512 bytes

Redo Buffers2973696 bytes

Database mounted.

修改为归档模式

sys@JSL>alter database archivelog

Database altered.

oracle 9i还要设置log_archive_start 这是个静态参数

alter system set log_archive_start=true scope=spfile

oracle 10g则不用设置了。

验证修改结果

sys@JSL>select log_mode from v$database

LOG_MODE

------------

ARCHIVELOG

打开数据库

sys@JSL>alter database open

Database altered.

设置归档格式

log_archive_format,是设置归档命名规则的静态参数,设置后重启数据库才生效。

对log_archive_dest和log_archive_dest_n指定的归档有效。

常用参数如下

%s log sequence number

%S log sequence number, zero filled

%t thread number

%T thread number, zero filled

%a activation ID

%d database ID

%r resetlogs ID

resetlogs,防止恢复的时候会报错,归档默认文件扩展名是dbf,习惯设置成arc

例如:_%t_%s_%r.arc

sys@JSL>select name from v$database

NAME

------------------------------

JSL

sys@JSL>alter system set log_archive_format='jsl_%t_%s_%r.arc' scope=spfile

System altered.

重启数据库才生效。

sys@JSL>archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 2

Next log sequence to archive 4

Current log sequence 4

sys@JSL>alter system switch logfile

System altered.

archive变成Enabled,我们没有设置归档目的地,

默认USE_DB_RECOVERY_FILE_DEST使用DB_RECOVERY_FILE_DEST目录,也就是我们常说的闪回目录。

sys@JSL>archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 3

Next log sequence to archive 5

Current log sequence 5

查看当前日志组

sys@JSL>select * from v$log

GROUP# THREAD# SEQUENCE#BYTES MEMBERS ARC STATUSFIRST_CHANGE# FIRST_TIME

------ ------- --------- -------- -------- --- --------- ------------- -----------------

1 1 5 524288001 NO CURRENT 1565953 20101206 17:57:21

2 1 4 524288001 YES ACTIVE 1559083 20101206 15:07:00

3 1 3 524288001 YES INACTIVE1534317 20101206 10:44:06

切换日志

alter system archive log current--先归档再切换

alter system switch logfile--先切换至于能不能归档再说

sys@JSL>alter system switch logfile

System altered.

查看已经归档的信息

sys@JSL>select RECID,NAME,DEST_ID,SEQUENCE#,RESETLOGS_CHANGE#,ARCHIVED,STATUS ,BACKUP_COUNT from v$archived_log

RECID NAME DEST_ID SEQUENCE# RESETLOGS_CHANGE# ARC S BACKUP_COUNT

----- ------------------------------ ---------- ---------- ----------------- --- - ------------

1 /u01/app/oracle/flash_recovery 10 1 1484108 YES A0

_area/HYJT/archivelog/2010_12_

05/o1_mf_1_1_6hq6z3db_.arc

2 /u01/app/oracle/flash_recovery 10 4 1484108 YES A0

_area/JSL/archivelog/2010_12_0

6/o1_mf_1_4_6hsdw1mv_.arc

3 /u01/app/oracle/flash_recovery 10 5 1484108 YES A0

_area/JSL/archivelog/2010_12_0

6/o1_mf_1_5_6hsdx63y_.arc

查看归档进程,开启了三个归档进程

sys@JSL>select * from v$archive_processes

PROCESS STATUS LOG_SEQUENCE STAT

---------- ---------- ------------ ----

0 ACTIVE0 IDLE

1 ACTIVE0 IDLE

2 ACTIVE0 IDLE

3 STOPPED 0 IDLE

...

...

29 STOPPED 0 IDLE

如果归档进程报错,8i可以使用下面命令尝试解决

archive log stop

archive log start

10版本的archive log stop/start及alter system archive log stop/start命令已经不用了,只要在归档模式下就是自动归档模式

设置归档目录

默认的归档目录(Archive destination)是: USE_DB_RECOVERY_FILE_DEST,

如果取消DB_RECOVERY_FILE_DEST参数的设置,就会找standby_archive_dest参数,

默认是'?/dbs/arch'但是没有真实目录存在,所以虽然能开启归档但是不能实现归档。

设置方式:

A: log_archive_dest_n (1-10) 这个参数与B是冲突的,可以设置本地和远程作为归档目标地址。

下面有十个状态参数log_archive_dest_state_n (1-10)与之对应,enable才可用。

例:

log_archive_dest_state_1=DEFER

log_archive_dest_state_2=ENABLE

此参数和log_archive_dest_n参数配对使用,缺省值为ENABLE,如果想停止使用一个归档目录,只需将其对应的log_archive_dest_state_n参数值设置为DEFER。

log_archive_dest_n 其中n为1-5的整数,必需从低到高设置,下面举例说明:

log_archive_dest_1="LOCATION=/jia/arc MANDATORY REOPEN"

log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"

log_archive_dest_3="LOCATION=/jia/arc2 OPTIONAL"

location指的是本地目录。

service是tnsname里指定的名称,可以实现连接到远程。

MANDATORY 关键字说明联机日志文件必须要成功归档以后才能被覆盖。

OPTIONAL 缺省为可选(OPTIONAL),即使归档没有成功也可以覆盖。

在设置时应该至少有一个本地(LOCATION)强制(MANDATORY)归档目录。

REOPEN 关键字说明如果归档不成功时系统要重新尝试归档,缺省每300秒尝试一次直到成功。

reopen可以通过=n来指定尝试的时间间隔,如 log_archive_dest_2中的时间间隔为600秒,

而log_archive_dest_1中的时间间隔为300 秒。

alter system set log_archive_dest_1='location=/xxx/xxx/x/ mandatory reopen=500'

B: log_archive_dest和log_archive_duplex_dest 这个参数与A是冲突的,只能设置本地目录,

log_archive_dest可以单独存在,但是log_archive_duplex_dest必须依附于log_archive_dest

log_archive_dest这是一个静态参数,设置的时候要带scope=spfile

sys@JSL>alter system set log_archive_dest=''

alter system set log_archive_dest=''

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST

带上scope=spfile参数就不会有上面的报错信息了

sys@JSL>alter system set log_archive_dest='/jia/arc' scope=spfile

System altered.

如果使用这种方式,则log_archive_dest是强制(MANDATORY)归档目录,而log_archive_duplex_dest为可选(OPTIONAL)目录。

C: db_recovery_file_dest 这个参数还有个辅助参数db_recovery_file_dest_size控制大小。

那么着三种方式是否可以同时设置,以及那个方式设置的生效呢?

我们用下图示加以说明:

A(n) B(y) C(y) ->oracle同时归档日志到log_archive_dest和db_recovery_file_dest指定的目录,C采用omf管理管理方式

A(n) B(y) C(n) ->1份归档B

A(y) B(y) C(n) ->error A与B是冲突的

A(y) B(n) C(y) ->1份归档A,如果设置了A,C就失效了。

在10g跟开归档跟flashback_on状态无关,但是反过来开数据库闪回功能必须先开归档。设置log_archive_dest以后重启数据库才生效。

你好,

1)单机模式下:

如果开启归档,请保证

log_archive_start=true --开启自动归档,否则只能手工归档,如果是关闭了归档,则设置该参数为false。10g之后废除该参数,不需要设置。

log_archive_dest = ---归档日志存放路径

alter system set log_archive_dest_1="location=f:\disk5\offlinelog\mandatory" scope=spfile ---为了增加归档日志的冗余来保证其安全,可以通过修改参数文件中的log_archive_dest_n参数,其中n为1~10

log_archive_format ="CX%TS%S.ARC" ---归档日志文件名格式

alter system set log_archive_max_processes = 3 ---启动多个归档后台进程以避免由于ARCn进程跟不上LGWR而造成的数据库系统效率的下降。

注意:如果是OPS/RAC环境,需要先把parallel_server = true注释掉,然后执行如下步骤,最后用这个参数重新启动

1、开启归档:

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database archivelog

d. alter database opne

2、关闭归档:

a. 关闭数据库shutdown immediate

b. startup mount

c. alter database noarchivelog

d. alter database open

归档信息可以通过如下语句查看

SQL>archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination E:oracleora92databasearchive

Oldest online log sequence 131

Next log sequence to archive 133

Current log sequence 133

2)RAC模式下:

1.关闭所有的instance

2.在节点1上设置以下参数,如果使用spfile就先生成pfile再修改

CLUSTER_DATABASE=FALSE.

log_archive_dest=<归档路径>

log_archive_start=true

log_archive_format=<归档文件格式>

3. 以exclusive模式启动数据库

SQL>startup mount exclusive pfile=‘xxxxxx’.

4. 启动归档模式

SQL>Alter database archivelog

5.打开数据库

SQL>alter database open

6.关闭数据库并修改初始化参数

SQL>shutdown immediate

CLUSTER_DATABASE=TRUE

7.启动所有的instance,记得先生成spfile

8.核对归档,模式是否启动

SQL>archive log list

======================

以下步骤在node1机器上 *** 作,node2保持down。在所有的 *** 作完成后再打开node2的数据库。。。

SQLPLUS>connect SYS/PASSWORD

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE### 10gR2之后不用修改该参数

SQLPLUS>shutdown immediate

SQLPLUS>startup mount exclusive

SQLPLUS>alter database noarchivelog

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE

SQLPLUS>shutdown immediate

SQLPLUS>STARTUP

非归档改为归档

SQLPLUS>connect SYS/PASSWORD

SQLPLUS>ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE

SQLPLUS>shutdown immediate

SQLPLUS


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10085569.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存