如何将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以后重启数据库才生效。

pfile/spfile中设置。

Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。在pfile/spfile中设置如下参数:log_archive_start=true重启数据库此参数生效。

数据库是按照数据结构来组织、存储和管理数据的仓库。

查看oracle数据库是否为归档模式

SQL>select name,log_mode from

V$database

NAME LOG_MODE

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

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

TEST NOARCHIVELOG

SQL>archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence

80157

Current log sequence 80163

编辑本段配置数据库的归档模式

1.改变非归档模式到归档模式:

1)SQL>conn / as sysdba (以DBA身份连接数据库)

2)SQL>shutdown immediate(立即关闭数据库)

3)SQL>startup mount

(启动实例并加载数据库,但不打开)

4)SQL>alter database archivelog(更改数据库为归档模式)

5)SQL>alter database open(打开数据库)

6)SQL>alter system archive

log start(启用自动归档)

7)SQL>exit (退出)

做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!

2.改变归档模式到非归档模式:

1)SQL>SHUTDOWN NORMAL/IMMEDIATE

2)SQL>STARTUP MOUNT

3)SQL>ALTER DATABASE NOARCHIVELOG

4)SQL>ALTER DATABASE OPEN

3.归档相关命令

archive log stop

archive log start

archive log list

show parameters

show parameters log_archive_start

show

parameters log_archive_max_process#归档进程数

alter system set

log_archive_max_process=5#将归档进程数改为5

select * from v$bgprocess#检察后台进程


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

原文地址: https://outofmemory.cn/sjk/6475165.html

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

发表评论

登录后才能评论

评论列表(0条)

保存