数据库归档模式
A. 如何打开oracle数据库的归档模式
更改前先进行数据备份:
手工导出oracle数据库命令:
---------------------------------------------
exp
system/manager
file=d:\chu.dmp
full=y
1、连接
windows系统:打开cmd窗口
Linux/Unix系统:打开终端
rman
target
/
nocatalog;
sqlplus
/nolog
conn
/
as
sysdba;
2、开启归档
sqlplus>shutdown
immediate;(启动归档前先要停止数据库)
sqlplus>startup
mount;(数据库以mount方式启动)
sqlplus>alter
database
archivelog;(启动数据库归档)
sqlplus>alter
system
set
log_archive_dest_1="/arch"(改变归档日志路径,windows系统使用盘符)
sqlplus>alter
database
open;(打开数据库)
sqlplus>archive
log
list;(查看归档是否已经打开)
关闭归档
alter
database
noarchivelog;
B. 如何将oracle数据库设置为归档模式
则按下方法修改数据库归档模式。
1. 关闭数据库
SQL> shutdown immediate;
2. 启动数据mount状态:
SQL> startup mount;
3. 修改数据库为归档模式:
SQL> alter database archivelog;
4. 打开数据库:
SQL> alter database open;
C. 如何将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_plex_dest 这个参数与A是冲突的,只能设置本地目录,
log_archive_dest可以单独存在,但是log_archive_plex_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_plex_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以后重启数据库才生效。
D. 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)SQL>SHUTDOWN NORMAL/IMMEDIATE;
2)SQL>STARTUP MOUNT;
3)SQL>ALTER DATABASE NOARCHIVELOG;
4)SQL>ALTER DATABASE OPEN;
3.启用自动归档: LOG_ARCHIVE_START=TRUE
归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,直到归档完成为止.
这时只能读而不能写.
运行过程中关闭和重启归档日志进程
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START
4.手动归档: LOG_ARCHIVE_START=FALSE
归档当前日志文件
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
归档序号为052的日志文件
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
归档所有日志文件
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改变归档日志目标
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
5.归档模式和非归档模式的转换
第4步的逆过程.
6.配置多个归档进程
Q:什么时候需要使用多个归档进程?
A:如果归档过程会消耗大量的时间,那么可以启动多个归档进程,这是个动态参数,可以用ALTER SYSTEM动态修改.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
Oracle9i中最多可以指定10个归档进程
与归档进程有关的动态性能视图
v$bgprocess,v$archive_processes
7.配置归档目标,多归档目标,远程归档目标,归档日志格式
归档目标 LOG_ARCHIVE_DEST_n
本地归档目标:
SQL>LOG_ARCHIVE_DEST_1 = LOCATION=D:ORACLEARCHIVEDLOG;
远程归档目标:
SQL>LOG_ARCHIVE_DEST_2 = SERVICE=STANDBY_DB1;
强制的归档目标,如果出错,600秒后重试:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600;
可选的归档目标,如果出错,放弃归档:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL;
归档目标状态:关闭归档目标和打开归档目标
关闭归档目标1
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER
打开归档目标2
SQL>ALTER 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;
E. oracle数据库是否开启归档模式
首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sqlplus / as sysdba进入sql模式)
输入archive log list来查看是否开启,如图说明不是归档模式
F. 哪个数据字典视图可显示数据库归档模式
你好
根据你的描述,
V$DATABASE可以显示数据库处于归档状态。
你的采纳是我前进的动力,还有不懂的地方,请继续“追问”。
G. 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/
H. 如何查看数据库是否处于归档模式
第一种方法
select name,log_mode from v$database;
-----------------------------------------------------------
第二种方法
archive log list
2,oracle启动归档模式?
startup mount
alter database archivelog;
alter database open;
alter system set log_archive_start=true scope=spfile;
修改数据库参数文件c:\oracle\admin\oradb\pfile\init.ora,
取消以下语句的#注释
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
关闭数据库,重新启动
查看C:\Oracle\oradata\oradb\archive目录下,可以看到类似ORADBT001S01201.ARC的文件,说明归档成功
解释init.ora参数文件中关于归档重做日志参数项的含义
归档模式是自动还是手工,true为自动,false为手工
log_archive_start = true
归档日志文件所保存的路径
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
归档日志文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
2、禁止归档
a. 关闭数据库shutdown immediate
b. startup mount
c. alter database noarchivelog
d. alter database open
I. 如何启动或关闭数据库的归档模式
1.管理员身份连接数据库
C:\Users\Administrator>sqlplus
sys/sys@xxxxx
as
sysdba
2.查看当前归档模式,是归档还是非归档
SQL>
archive
log
list;
Database
log
mode
No
Archive
Mode
(此状态为非归档状态)
3.关闭数据库
SQL>
shutdown
immediate;
Database
closed.
Database
dismounted.
ORACLE
instance
shut
down.
4.启动数据库到mount状态
SQL>
startup
mount;
5.启动归档模式
SQL>
alter
database
archivelog;
(此命令为将归档模式启用)
Database
altered.
SQL>
archive
log
list;
Database
log
mode
Archive
Mode
(此状态为归档状态)
6.启动数据库
SQL>
alter
database
open;
Database
altered.
7.关闭归档模式
SQL>
shutdown
immediate;
Database
closed.
Database
dismounted.
ORACLE
instance
shut
down.
SQL>
startup
mount;
ORACLE
instance
started.
SQL>
alter
database
noarchivelog;
(此命令为将归档模式关闭)
Database
altered.
SQL>
archive
log
list;
Database
log
mode
No
Archive
Mode
J. 简述Oracle 11g数据库的归档模式与非归档模式的区别。
归档日志是记录了对某张表修改的时候的日志,
选择归档模式:这样你可以选择任何时间点去还原数据库。
非归档模式,不记归档日志,没有办法进行数据恢复。当然如果数据库的量比较大,变换的频率比较高,这个归档的模式也要合理规划的,否则归档日志的空间量是很可观的!我已经吃过一次亏了。