1、查看当前是否处在归档日志模式
方法一:
SQL> ARCHIVE LOG LIST --查看数据库是否处于归档模式
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Current log sequence 16
方法二:
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
Oldest online log sequence 14
Current log sequence 16
方法二:
SQL> SELECT log_mode FROM v$database; --查看数据库是否处于归档模式
LOG_MODE
------------
NOARCHIVELOG
2、修改数据库为归档模式
非归档到归档模式切换步骤:
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database archivelog [manual])
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database archivelog [manual])
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
SQL> SHUTDOWN IMMEDIATE; --一致性关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT; --启动到mount状态
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 75499284 bytes
Database Buffers 171966464 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> ALTER DATABASE ARCHIVELOG; --切换到自动归档模式
Database altered.
SQL> ALTER DATABASE OPEN; --切换到open状态
Database altered.
SQL> ARCHIVE LOG LIST; --查看数据库的归档状态
Database log mode Archive Mode --已置为归档模式
Automatic archival Enabled --对日志进行自动归档
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Next log sequence to archive 16
Current log sequence 16
(修改为非归档模式:alter database noarchivelog)
3、配置归档位置
本地归档日志路径参数:
log_archive_dest 设置第一个归档位置
log_archive_duplex_dest 第二个归档位置
alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;
alter system set log_archive_duplex_dest = '/u01/app/oracle/archivelog2' scope = spfile;
alter system set log_archive_duplex_dest = '/u01/app/oracle/archivelog2' scope = spfile;
可配置本地和远程归档日志路径参数
LOG_ARCHIVE_DEST_n n<=10
LOG_ARCHIVE_DEST_n n<=10
因为初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST同时使用,
所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,
需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项。
所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST.当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,
需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项。
示例如下:
ALTER SYSTEM SET log_archive_duplex_dest='';
ALTER SYSTEM SET log_archive_dest='';
ALTER SYSTEM SET log_archive_dest='';
ALTER SYSTEM SET log_archive_dest_1='location=d:demoarchive1';
ALTER SYSTEM SET log_archive_dest_2='location=d:demoarchive2';
ALTER SYSTEM SET log_archive_dest_3='location=d:demoarchive3';
ALTER SYSTEM SET log_archive_dest_4='service=standby';
配置远程归档位置时,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)
但上述两种方式未指定路径时,归档日志位于db_recovery_file_dest 缺省为$ORACLE_BASE/flash_recovey_area
但上述两种方式未指定路径时,归档日志位于db_recovery_file_dest 缺省为$ORACLE_BASE/flash_recovey_area
4、当档日志命名
设置LOG_ARCHIVE_FORMAT参数,Unix下的缺省设置为LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
%s: 日志序列号:
%S: 日志序列号(带有前导)
%t: 重做线程编号.
%T: 重做线程编号(带有前导)
%a: 活动ID号
%d: 数据库ID号
%r RESETLOGS的ID值.
alter system set log_archive_format = 'arch_%t_%s_%r.arc';
%a: 活动ID号
%d: 数据库ID号
%r RESETLOGS的ID值.
alter system set log_archive_format = 'arch_%t_%s_%r.arc';
5、归档进程
通过设置LOG_ARCHIVE_MAX_PROCESSES 参数,可以指定数据库规定所需初始化的进程数,缺省的归档进程数为2
一般情况下不需要修改该参数,Oracle会根据归档情况自动启动额外的归档进程。也可以动态的增加或减少归档进程数,
比如有些业务在月底需要进行大量归档,平时则归档较少,对此可以动态修改。
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
在操作系统中查看归档进程:
ho ps -ef | grep ora_arc --查看归档进程是否已启动
oracle 4062 1 0 11:43 ? 00:00:00 ora_arc0_orcl
oracle 4064 1 0 11:43 ? 00:00:00 ora_arc1_orcl
ho ps -ef | grep ora_arc --查看归档进程是否已启动
oracle 4062 1 0 11:43 ? 00:00:00 ora_arc0_orcl
oracle 4064 1 0 11:43 ? 00:00:00 ora_arc1_orcl
6、手功日志归档
手动归档时需要将日志模式切换为alter database archivelog manual
再使用alter system archive log current | all 实现归档
注意:
手动归档模式下不支持stanby数据库
在alter database archivelog模式下也可以实现对日志的归档
再使用alter system archive log current | all 实现归档
注意:
手动归档模式下不支持stanby数据库
在alter database archivelog模式下也可以实现对日志的归档
SQL> ALTER DATABASE ARCHIVELOG MANUAL; --将日志模式切换为手工归档模式
Database altered.
SQL> ALTER DATABASE OPEN; --打开数据库
Database altered.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; --对当前的日志进行归档(建议在mount阶段完成)
System altered.
SQL> ALTER SYSTEM ARCHIVE LOG ALL; --对所有的日志进行归档
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving --没有需要归档的日志
7、归档成功的最小个数(使用参数log_archive_min_succeed_dest = n)
alter system set log_archive_min_succeed_dest = 2; --缺省为1
联机重做日志组能够被覆盖的前提所有强制路径归档位置成功实现归档,归档目的地的成功归档的个数大于或等于上述参数设定的值
当强制个数大于该参数设定的个数,则以强制个数为准。 当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
alter system set log_archive_min_succeed_dest = 2; --缺省为1
联机重做日志组能够被覆盖的前提所有强制路径归档位置成功实现归档,归档目的地的成功归档的个数大于或等于上述参数设定的值
当强制个数大于该参数设定的个数,则以强制个数为准。 当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
8、控制归档的可用性(使用参数log_archive_dest_state_n)
alter system set log_archive_dest_state_1 = enable | defer
enable -->缺省状态,可以在该归档位置进行归档
defer -->禁用该归档位置
9、归档日志相关视图
v$archived_log -->从控制文件中获得归档的相关信息
v$archive_dest -->归档路径及状态
v$log_history -->控制文件中日志的历史信息
v$database -->查看数据库是否处于归档状态
v$archive_processes -->归档相关的后台进程信息
命令:archive log list
10、显示日志历史信息
SELECT * FROM v$loghist;
THREAD#用于标识重做线程号,SEQUNCE#用于标识日志序列号,FIRST_CHANGE#用于标识日志序列号对应的起始SCN值,FIRST_TIME用于标识起始SCN的发生时间.
SWICTH_CHANGE#用于标识日志切换的SCN值.
SWICTH_CHANGE#用于标识日志切换的SCN值.
11、显示归档进程信息.
进行日志切换时,ARCH进程会自动将重做日志内容复制到归档日志中,为了加快归档速度,应该启用多个ARCH进程.通过查询动态性能视图V$ARCHIVE_PROCESSES可以显示所有归档进程的信息!
SELECT * FROM v$archive_processes;
Porcess用于标识ARCH进程的编号,status用于标识ARCH进程的状态(ACTIVE:活动,STOPPED:未启动),log_sequence用于标识正在进行归档的日志序列号,state用于标识ARCH进程的工作状态。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27018451/viewspace-742012/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27018451/viewspace-742012/