oracle数据库归档设置(oracle数据库切换归档)

程序开发 157
今天给各位分享oracle数据库归档设置的知识,其中也会对oracle数据库切换归档进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!oracle数据库归档的必要性以及如何进行归档 对于重要的生产业务建议开启归档模式,通过对在线日志的归档,可以在数据丢失时进行数据恢复、部分操作也只有在归档模式下才能实施、分析日志内容等。对于非归档数据库开启归档功能操作如下:

今天给各位分享oracle数据库归档设置的知识,其中也会对oracle数据库切换归档进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

oracle数据库归档的必要性以及如何进行归档

对于重要的生产业务建议开启归档模式,通过对在线日志的归档,可以在数据丢失时进行数据恢复、部分操作也只有在归档模式下才能实施、分析日志内容等。

对于非归档数据库开启归档功能操作如下:

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 (退出)

oracle如何将表的历史数据归档

归档日志(ArchiveLog)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.

日志操作模式:ARCHIVELOGNOARCHIVELOG

1,改变日志操作模式:

检查当前日志操作模式

SELECTlog_modefromv$database;

关闭数据库,然后装载数据库

SHUTDOWNIMMEDIATE

STARTUPMOUNT

改变日志操作模式,然后打开数据库

ALTERDATABASEARCHIVELOG;

ALTERDATABASEOPEN;

2,执行手工归档

从oracledatabase10g开始,当将日志操作模式转变未ARCHIVELOG模式时,oracle会自动启动ARCH进程.如果要使用手工归档.那么在改变日志操作模式时必须使用命令ALTERDATABASEARCHIVELOGMANUAL.

需要注意,使用手工归档方式,数据库管理员必须手工执行归档命令.如果没有执行手工归档命令,日志组的原有内容将不能被覆盖.ALTERDATABASEARCHIVELOGMANUAL命令是为了与先前的版本兼容而保留的,.将来的oracle版本会淘汰该命令,使用手工归档方式是,数据库管理员可以执行以下命令归档重做日志:

SLTERSYSTEMARCHIVELOGALL;

3,配置归档进程

初始化参数LOG_ARCHIVE_MAX_PROCESSES用于指定例程初始启动的最大归档进程个数,当将数据库转变为ARCHIVELOG模式时,默认情况下oracle会自动启动两个归档进程.通过改变初始化参数LOG_ARCHIVE_MAX_PROCESS的值,可以动态地增加或降低归档进程的个数:

ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=3;

配置归档位置和文件格式

当数据库处于ARCHIVELOG模式时,如果进行日志切换,后台进程将自动生成归档日志,归档日志的默认位置为%oracle_home%rdbms,在oracledatabase10g中,归档日志的默认文件格式为ARC%S_%R.%T.为了改变归档日志的位置和名称格式,必须改变相应的初始化参数,

1,初始化参数LOG_ARCHIVE_FORMAT用于指定归档日志的文件名格式,设置该初始化参数时,可以指定以下匹配符:

%s:日志序列号:

%S:日志序列号(带有前导0)

%t:重做线程编号.

%T:重做线程编号(带有前导0)

%a:活动ID号

%d:数据库ID号

%rRESETLOGS的ID值.

从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,配置了归档文件格式后,必须重启数据库.

2,使用LOG_ARCHIVE_DEST配置归档位置

如果不使用备用数据库,只需要将归档日志存放到本地目录.配置本地归档位置可以使用初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一个参数用于设置第一个归档位置,第二个参数用于指定第二个归档位置.

ALTERSYSTEMSETlog_archive_dest=’d:demoarchive1’;

ALTERSYSTEMSETlog_archive_duplex_dest=’d:demoarchive2’;

3,使用LOG_ARCHIVE_DEST_n配置多个归档位置.

初始化参数LOG_ARCHIVE_DEST_n用于指定多个归档位置,该参数最多可以指定10个归档位置.通过使用初始化参数LOG_ARCHIVE_DEST_n,不仅可以配置本地归档位置,还可以配置远程归档位置.

如果既要在主节点上生成归档日志,又要将归档日志传递到备用节点,那么必须使用参数LOG_ARCHIVE_DEST_n.该参数与LOG_ARCHIVE_DEST具有如下区别;

初始化参数LOG_ARCHIVE_DEST_n可以配置本地归档位置和远程归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地归档位置.

初始化参数LOG_ARCHIVE_DEST_n可以配置多达10个归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置两个归档位置.

初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用.

因为初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用,所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项.

示例如下:

ALTERSYSTEMSETlog_archive_duplex_dest=’’;

ALTERSYSTEMSETlog_archive_dest=’’;

ALTERSYSTEMSETlog_archive_dest_1=’location=d:demoarchive1’;

ALTERSYSTEMSETlog_archive_dest_2=’location=d:demoarchive2’;

ALTERSYSTEMSETlog_archive_dest_3=’location=d:demoarchive3’;

ALTERSYSTEMSETlog_archive_dest_4=’service=standby’;

配置远程归档位置时,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)

4,使用LOG_ARCHIVE_DEST_n选项

使用初始化参数LOG_ARCHIVE_DEST_n配置归档位置时,可以在归档位置上指定OPTIONAL或MANDATORY选项.指定MANDATORY选项时,可以设置REOPEN属性.

OPTIONAL:该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.

MANDATORY:强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖.

REOPEN:该属性用于指定重新归档的时间间隔,默认值为300秒,必须跟在MANDATORY后.

例:

Altersystemsetlog_archive_dest_1=’location=d:demoarchive1mandatory’;

Altersystemsetlog_archive_dest_2=’location=d:demoarchive2mandatoryreopen=500’;

Altersystemsetlog_archive_dest_3=’location=d:demoarchive3optional’;

5,控制本地归档成功的最小个数.

使用初始化参数LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地归档的最小成功个数

Altersystemsetlog_archive_min_succeed_dest=2;

6,使用初始化参数LOG_ARCHIVE_DEST_STATE_n控制归档位置的可用性.设置该参数为ENABLE(默认值),表示会激活相应的归档位置;设置该参数为DEFER,表示禁用相应归档位置.当归档日志所在磁盘损坏或填满时,DBA需要暂时禁用该归档位置.

Altersystemsetlog_archive_dest_state_3=defer;(禁用)

Altersystemsetlog_archive_dest_state_3=enable;(启用)

显示归档日志信息

1,使用ARCHIVELOGLIST命令可以显示日志操作模式,归档位置,自动归档机器要归档的日志序列号等信息.

2显示日志操作模式

SELECTname,log_modeFROMv$database;

3,显示归档日志信息.

Colnameformata40

Selectname,swquence#,first_change#FROMv$archived_log;

Name用于表示归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.

4执行介质恢复时,需要使用归档日志文件,此四必须准确定位归档日志的存放位置.通过查询动态性能视图v$archive_dest可以取得归档日志所在目录.

SELECTdestinationFROMv$archivedest;

5,显示日志历史信息

SELECT*FROMv$loghist;

THREAD#用于标识重做线程号,SEQUNCE#用于标识日志序列号,FIRST_CHANGE#用于标识日志序列号对应的起始SCN值,FIRST_TIME用于标识起始SCN的发生时间.SWICTH_CHANGE#用于标识日志切换的SCN值.

6.显示归档进程信息.

进行日志切换时,ARCH进程会自动将重做日志内容复制到归档日志中,为了加快归档速度,应该启用多个ARCH进程.通过查询动态性能视图V$ARCHIVE_PROCESSES可以显示所有归档进程的信息!

SELECT*FROMv$archive_processes;

Porcess用于标识ARCH进程的编号,status用于标识ARCH进程的状态(ACTIVE:活动,STOPPED:未启动),log_sequence用于标识正在进行归档的日志序列号,state用于标识ARCH进程的工作状态

oracle归档模式的配置数据库的归档模式

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)SQLSHUTDOWN NORMAL/IMMEDIATE;

2)SQLSTARTUP MOUNT;

3)SQLALTER DATABASE NOARCHIVELOG;

4)SQLALTER DATABASE OPEN;

3.启用自动归档: LOG_ARCHIVE_START=TRUE

归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,直到归档完成为止.

这时只能读而不能写.

运行过程中关闭和重启归档日志进程

SQLARCHIVE LOG STOP

SQLARCHIVE LOG START

4.手动归档: LOG_ARCHIVE_START=FALSE

归档当前日志文件

SQLALTER SYSTEM ARCHIVE LOG CURRENT;

归档序号为052的日志文件

SQLALTER SYSTEM ARCHIVE LOG SEQUENCE 052;

归档所有日志文件

SQLALTER SYSTEM ARCHIVE LOG ALL;

改变归档日志目标

SQLALTER SYSTEM ARCHIVE LOG CURRENT TO 'PATH';

5.归档模式和非归档模式的转换

第4步的逆过程.

6.配置多个归档进程

Q:什么时候需要使用多个归档进程?

A:如果归档过程会消耗大量的时间,那么可以启动多个归档进程,这是个动态参数,可以用ALTER SYSTEM动态修改.

SQLALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;

Oracle9i中最多可以指定10个归档进程

与归档进程有关的动态性能视图

v$bgprocess,v$archive_processes

7.配置归档目标,多归档目标,远程归档目标,归档日志格式

归档目标 LOG_ARCHIVE_DEST_n

本地归档目标:

SQLLOG_ARCHIVE_DEST_1 = LOCATION=D:ORACLEARCHIVEDLOG;

远程归档目标:

SQLLOG_ARCHIVE_DEST_2 = SERVICE=STANDBY_DB1;

强制的归档目标,如果出错,600秒后重试:

SQLALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600;

可选的归档目标,如果出错,放弃归档:

SQLALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL;

归档目标状态:关闭归档目标和打开归档目标

关闭归档目标1

SQLALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER

打开归档目标2

SQLALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE

归档日志格式

LOG_ARCHIVE_FORMAT

8.获取归档日志信息

V$ARCHIVED_LOG

V$ARCHIVE_DEST

V$LOG_HISTORY

V$DATABASE

V$ARCHIVE_PROCESSES

ARCHIVE LOG LIST;

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

则按下方法修改数据库归档模式。

1. 关闭数据库

SQL shutdown immediate;

2. 启动数据mount状态:

SQL startup mount;

3. 修改数据库为归档模式:

SQL alter database archivelog;

4. 打开数据库:

SQL alter database open;

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

查看归档状态为非归档

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 destination USE_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 Buffers 2973696 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 destination USE_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 destination USE_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 STATUS FIRST_CHANGE# FIRST_TIME

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

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

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

3 1 3 52428800 1 YES INACTIVE 1534317 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 A 0

_area/HYJT/archivelog/2010_12_

05/o1_mf_1_1_6hq6z3db_.arc

2 /u01/app/oracle/flash_recovery 10 4 1484108 YES A 0

_area/JSL/archivelog/2010_12_0

6/o1_mf_1_4_6hsdw1mv_.arc

3 /u01/app/oracle/flash_recovery 10 5 1484108 YES A 0

_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 ACTIVE 0 IDLE

1 ACTIVE 0 IDLE

2 ACTIVE 0 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以后重启数据库才生效。

Oracle数据库如何开启自动归档

Oracle

Enterprise

Manager

Console——某一个数据库——例程——配置——恢复——“归档日志模式”(自动归档);

例程——配置——一般信息——所有初始化参数——log_archive_start=true

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

SQL

archive

log

list

Oracle数据库可以运行在两种模式下:归档模式(archivelog)和非归档模式(noarchivelog)。

检查归档模式命令

SQL

archive

log

list

设置归档模式

SQL

shutdown

immediate;

SQL

startup

mount

SQL

alter

database

archivelog;

SQL

alter

database

open;

SQL

archive

log

list;

如果需要停止归档模式,使用:alter

database

noarchivelog

命令。Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。在pfile/spfile中设置如下参数

log_archive_start

=

true

重启数据库此参数生效,此时数据库处于自动归档模式。也可以在数据库启动过程中,手工执行

archive

logstart使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式

。10g使用db_recovery_file_dest来作为归档日志的存放地。

SQL

show

parameter

db_recovery(

该语句在oracle11g下无效)NAME

TYPEVALUEdb_recovery_file_dest

string

/home/oracle/ora10g/flash_reco

very_area/

oracle数据库归档设置的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle数据库切换归档、oracle数据库归档设置的信息别忘了在本站进行查找喔。

oracle数据库归档设置 oracle数据库归档模式oracle数据库关闭归档oracle数据库开启归档oracle数据库归档日志oracle数据库归档日志路径oracle数据库归档日志清除oracle数据库归档模式是否开启oracle数据库归档是什么意思oracle归档日志满了数据库访问不了
扫码二维码