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 ...
随机推荐
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
SQL 横转竖 .竖专横 (转载) 普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 ...
- Python操作redis系列以 哈希(Hash)命令详解(四)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...
- XMPP 基础 (转载)
技术博客 http://www.cnblogs.com/ChenYilong/ 新浪微博 http://weibo.com/luohanchenyilong Fullscreen XMPP 基础 ...
- atitit。gui 界面皮肤以及换肤总结 java .net c++
atitit.gui 界面皮肤以及换肤总结 java .net c++ 1. Swing 的皮肤 1 1.1. windows风格 1 1.2. Mac风格 ( liquid 框架) 1 2. 如何给 ...
- 使用 C# 开发智能手机软件:推箱子(十八)
这是"使用 C# 开发智能手机软件:推箱子" 系列文章的第十八篇.在这篇文章中.介绍 Window/SelectLevelDlg.cs 源程序文件. 这个源程序文件包括 Selec ...
- CSectsInfomation.cpp文件
#include "SectsInfomation.h" #include "WidgetMgr.h" #include "XButton.h&quo ...
- 04、Quick Start for Windows
创建一个新工程 1.在 VS 上,选择 File > New > Project.. 2.在新工程窗口,选择 Visual C# > Windows Store > Blan ...
- lo4j 日志级别
日志记录器(Logger)的行为是分等级的.如下表所示: 分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.TRACE.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级从 ...
- 省市联动js代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- RDD缓存学习
首先实现rdd缓存 准备了500M的数据 10份,每份 100万条,存在hdfs 中通过sc.textFile方法读取 val rdd1 = sc.textFile("hdfs://mini ...