Oracle的归档日志
归档模式的特点和要求
在归档模式下,当LGWR后台进程的写操作从一个重做日志组切换到另一个重做日志组后,归档写后台进程(ARCH/ARCRn)就会将原来的重做日志的信息复制到归档日志文件中。
可以把归档日志文件看做是重做日志文件的克隆。
对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或重新使用。
归档日志文件的用途:
1.当数据库崩溃后,数据库所有提交的数据都能得到恢复。
2. 在归档模式下,数据库可以进行联机备份
3. 当某一个非系统表空间脱机时,数据库其它部分可以正常工作。
4. 可以进行如下不完全恢复:
--恢复到一个特定的时间点
--恢复到一个特定的SCN号
--恢复到某一个特定的归档文件结尾
开启归档
步骤如下:
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database noarchivelog )
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
演示:
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 87
Current log sequence 89
2.关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
3.启动数据库到mount状态
SQL> startup mount;
ORACLE instance started. Total System Global Area 3624390656 bytes
Fixed Size 2218632 bytes
Variable Size 2583692664 bytes
Database Buffers 1023410176 bytes
Redo Buffers 15069184 bytes
Database mounted.
4.启动归档
SQL> alter database archivelog; Database altered.
5.开启数据库
SQL> alter database open; Database altered.
6.再次查看归档模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 87
Next log sequence to archive 89
Current log sequence 89
这是需要对数据库做一个全备份,因为之前的非归档模式下的备份在归档模式下已经不能个使用了。
关闭归档
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database noarchivelog )
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
归档模式下的几个重要参数
归档进程的调整 :
LOG_ARCHIVE_MAX_PROCESSES
这个主要是因为如果数据库的DML操作频繁,ARCn的读写跟不上LGWR,一般情况是是不需要修改这个参数的,Oracle会根据归档情况自动启动额外的归档进程。
也可以动态的修改该参数
SQL> show parameter log_archive_max_process NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 4 SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3; 系统已更改。
归档到本机或者远程主机
LOG_ARCHIVE_DEST_n
oracle11g可以同时将31个相同归档日志文件写到不同的位置
--查看归档文件位置
SQL> show parameter LOG_ARCHIVE_DEST_ NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string ........................................................ log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
也可以用 select *from v$archive_dest;查看
--设置归档文件位置
SQL> alter system set log_archive_dest_1="LOCATION=/u01/ARCHLOG/ mandatory"; 系统已更改。 SQL> alter system set log_archive_dest_2="LOCATION=/u02/ARCHLOG/"; 系统已更改。 SQL> alter system set log_archive_dest_3="LOCATION=/u03/ARCHLOG/ optional"; 系统已更改。
对于远程归档位置,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)
alter system set log_archive_dest_2 = 'SERVICE=standby1';
--再次查看归档的位置
SQL> show parameter LOG_ARCHIVE_DEST_ NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string LOCATION=/u01/ARCHLOG/ mandatory
.......
log_archive_dest_2 string LOCATION=/u02/ARCHLOG/
log_archive_dest_20 string
........
log_archive_dest_29 string
log_archive_dest_3 string LOCATION=/u03/ARCHLOG/ optiona
LOCATION
LOG_ARCHIVE_DEST_n的两个常用选项,缺省为OPTIONAL
MANADATORY | OPTIONAL:
MANADATORY(强制性的)表示归档必须成功复制到目的路径之后,联机重做日志才能被复用,OPTIONAL正好相反
REOPEN:
指定归档失败后指定间隔多少时间重试归案,缺省的为300秒
示例:
log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3 manadatory reopen = 600'
log_archive_dest_2 = 'SERVICE=standby1 manadatory reopen'
--查看是否在制定路径下产生了归档
切换重做日志:
SQL> alter system switch logfile;
[oracle@oracledb u03]$ ls ARCHLOG/
1_768_917304775.dbf
[oracle@oracledb u03]$ ls ../u02/ARCHLOG/
1_768_917304775.dbf
归档成功的最小个数
log_archive_min_succeed_dest
alter system set log_archive_min_succeed_dest = 2; --缺省为1
联机重做日志组能够被覆盖的前提
所有强制路径归档位置成功实现归档
归档目的地的成功归档的个数大于或等于上述参数设定的值
当强制个数大于该参数设定的个数,则以强制个数为准
当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
SQL> show parameter log_archive_min_succeed_dest NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_min_succeed_dest integer 1
SQL> alter system set log_archive_min_succeed_dest = 2;
控制归档的可用性
log_archive_dest_state_n
这个参数引入的目的主要是为系统的维护提供方便,DEFER(推迟)状态是一个临时的维护状态,一旦维护结束就要及时转回ENABLE状态(如硬盘已经修好),所丢失的归档文件必须手工恢复。
alter system set log_archive_dest_state_1 = enable | defer
enable -->缺省状态,可以在该归档位置进行归档
defer -->禁用该归档位置
归档日志命名格式
设置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';
归档位置状态
Valid/Invalid --磁盘位置及服务名等是否有效
Enabled/Disabled --磁盘位置的可用状态及数据库能否使用该归档位置
Active/Inactive --访问归档目的地是否有异常
归档日志相关视图
v$archived_log -->从控制文件中获得归档的相关信息
v$archive_dest -->归档路径及状态
v$log_history -->控制文件中日志的历史信息
v$database -->查看数据库是否处于归档状态
v$archive_processes -->归档相关的后台进程信息
SQL> col DEST_NAME for a40
SQL> col DESTINATION for a50
SQL> select dest_name,destination from v$archive_dest where status='VALID'; DEST_NAME DESTINATION
---------------------------------------- --------------------------------------------------
LOG_ARCHIVE_DEST_1 /u01/ARCHLOG/
LOG_ARCHIVE_DEST_2 /u02/ARCHLOG/
LOG_ARCHIVE_DEST_3 /u03/ARCHLOG/ SQL> select * from v$archive_processes where status='ACTIVE'; PROCESS STATUS LOG_SEQUENCE STAT
---------- ---------- ------------ ----
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 ACTIVE 0 IDLE
Oracle的归档日志的更多相关文章
- Linux Oracle删除归档日志
今天遇到Oracle报这样的错:ORA-00257 查看了下,原来是Oracle的归档日志满了,解决方案两个 一:增加归档日志大小 二:删除无用的归档日志(我们选择这个方案) 什么也不说了Linux下 ...
- Windows平台使用RMAN命令自动删除Oracle过期归档日志的方法
自动删除Oracle过期归档日志的思路如下: 1.编写自动执行的bat脚本文件: 2.Windows设置定期执行计划 OracleArchLogClear.bat D:/Oracle/product/ ...
- Oracle 10g 归档日志满了的解决办法
如果Oracle的归档日志满了,应用连接数据库就会出错,这时需要手工删除过期的归档日志,方法如下: 1.指定数据库实例 $ export ORACLE_SID=db1 2.进入rman $ rman ...
- oracle 启用归档日志
Oracle可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和 ...
- oracle修改归档日志路径与格式
一.查询数据库是否开启归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled ...
- oracle启用归档日志
一.开启归档 1.查看归档信息 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabl ...
- 如何检查oracle的归档日志及空间占用率,清除归档日志
如何解决“归档日志已满问题” 问题描述: 所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现or ...
- oracle删除归档日志
查看归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive ...
- oracle 开启归档日志模式
摘自:https://www.jianshu.com/p/f8c0e9309ce2 在默认情况下,oracle数据库是在非归日志档模式中创建的,在非归档日志模式中,进行日志切换时会直接重写redo l ...
随机推荐
- laravel-v5.1数据库连接文件是.env文件
- 关于“Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案
问题说明,我在web.xml文件中进行了如下配置 <servlet> <servlet-name>dispatcherServlet</servlet-name> ...
- hibernate开发流程
开发流程,注意:每个hibernate版本在集成的时候是不太一样的.本次使用的是hibernate-distribution-3.6.10.Final-dist 一.开发流程 1)在数据库中创建表,代 ...
- sso单点登录研究
iframe跨域通信的通用解决方案http://www.alloyteam.com/2012/08/lightweight-solution-for-an-iframe-cross-domain-co ...
- spring概念简介、bean扫描与注册实现方式
写在前面:本文作为整理,包含很多个人理解,有跳跃成份,初学者如果看晕了,可以先看其它同类文章,或者……多看几遍. 一.概念部分: 1.spring概念:网上有很多 2.spring核心:IOC(DI) ...
- mysql实现topN top1
有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,像在hive中是有窗口函数的,可以通过它们来实现,但是MySQL没有这些函数,可通过下面的方法来实现 1.准 ...
- jQuery+html5实现的3D动态切换焦点轮播幻灯片
今天爱编程给网友们分享一款基于jQuery+html5实现的3D动态切换焦点轮播幻灯片,支持左右箭头和圆点按钮播放控制,支持多种不同的3D动态切换特效,自适应全屏显示,兼容360.FireFox.Ch ...
- 浅谈weblogic与tomcat的区别
weblogic是用于开发.集成.部署和管理大型分布式web应用.网络应用和数据库应用的java应用服务器,将java的动态功能和java enterprise标准的安全性引入大型网络应用的开发集成部 ...
- wifi设置
1 编辑/etc/init.d/wifi #!/bin/sh case "$1" in start) echo /sbin/mdev > /proc/sys/kern ...
- 重启php
注意这是重启php,不是重启apache service php-fpm restart