oracle启用归档日志
一、开启归档
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 244
Current log sequence 246
当前数据库未开启归档
2、设置归档目录
oracle默认使用闪回恢复区DB_RECOVERY_FILE_DEST作为归档路径
SQL> show parameter DB_RECOVERY_FILE_DEST NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 3882M
闪回恢复区在安装过程中有限制其大小,如果闪回恢复区满了,归档日志会无法写入而导致数据库hang住,解决办法可以增加闪回区大小或者修改归档路径
3、修改归档路径
修改log_archive_dest_1参数可修改归档日志路径(pfile/spfile中参数db_recovery_file_dest指定的目录将无效)
实际上从Oracle 10g开始,可以生成多份一样的日志,保存多个位置,以防不测。多个位置通过设置不同的log_archive_dest_n 参数实现,archive log list输出中的Archive destination路径只显示最新修改的路径。
SQL> show parameter log_archive_dest_1 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_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
log_archive_dest_19 string
修改归档路径为/u01/app/oracle/archive_log
SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/archive_log' scope=spfile; System altered.
重启生效
4、修改归档日志格式
SQL> alter system set log_archive_format='ARC%S_%R.%T_%D.dbf' scope=spfile; System altered.
重启生效
5、开启归档
需要在mount状态下开启数据库归档,重启至mount
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started. Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 989857904 bytes
Database Buffers 603979776 bytes
Redo Buffers 7360512 bytes
Database mounted.
开启数据库归档
SQL> alter database archivelog; Database altered.
查看归档情况
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archive_log
Oldest online log sequence 244
Next log sequence to archive 246
Current log sequence 246
ALTER DATABASE FORCE LOGGING;
开启强制归档
打开数据库
SQL> alter database open; Database altered.
6、确认数据库为归档模式
SQL> select log_mode from v$database; LOG_MODE
------------
ARCHIVELOG SQL> select archiver from v$instance; ARCHIVE
-------
STARTED
7、强制日志切换
先查看当前归档日志视图和归档日志路径:
SQL> select name from v$archived_log; no rows selected
[oracle@zml-rhel6 archive_log]$ ll
total 0
没有归档日志,下面执行强制日志切换
SQL> alter system switch logfile; System altered.
再次查看视图
SQL> select name from v$archived_log; NAME
--------------------------------------------------------------------------------
/u01/app/oracle/archive_log/ARC0000000246_0963417259.0001_6833bc69.dbf
有归档日志产生,验证成功
关闭数据库归档
在mount状态下关闭:
alter database noarchivelog
二、归档日志清理
1、手动物理删除归档日志
该方式利用linux的命令find查找N天以前的日志,直接删除
[oracle@localhost archive_log]$ find . -type f -mtime +2.4 -print |xargs ls -rlt
-rw-r----- 1 oracle oinstall 16092672 6月 4 20:45 ./ARC0000000606_0977259429.0001_fb0ffee2.dbf
-rw-r----- 1 oracle oinstall 38390272 6月 4 22:00 ./ARC0000000607_0977259429.0001_fb0ffee2.dbf
-rw-r----- 1 oracle oinstall 32950272 6月 4 22:02 ./ARC0000000608_0977259429.0001_fb0ffee2.dbf
该例子中查询到2.4天前日志列表。手工物理删除这些日志文件:
[oracle@localhost archive_log]$ find . -type f -mtime +2.4 -print |xargs rm -f
虽然手工删除的了归档日志文件,但是控制文件中依然会有这些日志的记录,下面需要在控制文件中清理这些归档日志。利用rman:
查看过期日志:
RMAN> list expired archivelog all; specification does not match any archived log in the repository
返回信息显示没有过期日志,这是因为需要先检查归档日志有效性,再进行删除:
RMAN> crosscheck archivelog all;
....
....
....
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000002400_0977259429.0001_fb0ffee2.dbf RECID=1795 STAMP=978255518
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000002401_0977259429.0001_fb0ffee2.dbf RECID=1796 STAMP=978255659
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000002402_0977259429.0001_fb0ffee2.dbf RECID=1797 STAMP=978256043
Crosschecked 1797 objects
再次查看过期归档日志,rm删除的三个文件便被标记为了过期日志:
RMAN> list expired archivelog all; List of Archived Log Copies for database with db_unique_name ORCLWHS
===================================================================== Key Thrd Seq S Low Time
------- ---- ------- - ---------
1 1 606 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000606_0977259429.0001_fb0ffee2.dbf 2 1 607 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000607_0977259429.0001_fb0ffee2.dbf 3 1 608 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000608_0977259429.0001_fb0ffee2.dbf
删除过期归档日志:
RMAN> delete expired archivelog all; released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=446 device type=DISK
List of Archived Log Copies for database with db_unique_name ORCLWHS
===================================================================== Key Thrd Seq S Low Time
------- ---- ------- - ---------
1 1 606 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000606_0977259429.0001_fb0ffee2.dbf 2 1 607 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000607_0977259429.0001_fb0ffee2.dbf 3 1 608 X 04-JUN-18
Name: /home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000608_0977259429.0001_fb0ffee2.dbf Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000606_0977259429.0001_fb0ffee2.dbf RECID=1 STAMP=977949943
deleted archived log
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000607_0977259429.0001_fb0ffee2.dbf RECID=2 STAMP=977954446
deleted archived log
archived log file name=/home/oracle/app/oracle/archive/orclwhs/archive_log/ARC0000000608_0977259429.0001_fb0ffee2.dbf RECID=3 STAMP=977954551
Deleted 3 EXPIRED objects
再次查询过期归档:
RMAN> list expired archivelog all; specification does not match any archived log in the repository
2、RMAN归档日志清理
删除归档日志正确的流程:
RMAN> crosscheck archivelog all; //验证的DB的归档日志
RMAN> delete expired archivelog all; //删除所有过期归档日志
RMAN>DELETE ARCHIVELOG ALL; //删除所有归档日志
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //保留7天的归档日志
定时shell脚本
#!/bin/bash
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export export ORACLE_SID=orclwhs ${ORACLE_HOME}/bin/rman nocatalog log=/home/oracle/bin/cleararchivelog/del_arch$(date +%Y-%m-%d).log <<EOF
connect target /
#crosscheck archivelog all;
#delete noprompt expired archivelog all;
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';
exit;
EOF
可参考:https://blog.csdn.net/javaee_ssh/article/details/36906413
oracle启用归档日志的更多相关文章
- oracle 启用归档日志
Oracle可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 归档模式可以提高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修改归档日志路径与格式
一.查询数据库是否开启归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled ...
- 如何检查oracle的归档日志及空间占用率,清除归档日志
如何解决“归档日志已满问题” 问题描述: 所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现or ...
- oracle删除归档日志
查看归档模式: SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive ...
- Oracle的归档日志
归档模式的特点和要求 在归档模式下,当LGWR后台进程的写操作从一个重做日志组切换到另一个重做日志组后,归档写后台进程(ARCH/ARCRn)就会将原来的重做日志的信息复制到归档日志文件中. 可以把归 ...
- oracle 开启归档日志模式
摘自:https://www.jianshu.com/p/f8c0e9309ce2 在默认情况下,oracle数据库是在非归日志档模式中创建的,在非归档日志模式中,进行日志切换时会直接重写redo l ...
随机推荐
- 解决python安装错误问题
遇到的问题描述: An error occurred during the installation of assemblyA Microsoft.VC90. CRT, version=9-0.307 ...
- bzoj1497 最小割
题意: 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前 ...
- Mybatis分页插件PageHelper
application.properties配置 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.suppor ...
- B+树及数据库索引的应用
B树 每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null. B+树 只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针. 后来,在B+树上增加了顺 ...
- 利用jieba,word2vec,LR进行搜狐新闻文本分类
一.简介 1)jieba 中文叫做结巴,是一款中文分词工具,https://github.com/fxsjy/jieba 2)word2vec 单词向量化工具,https://radimrehurek ...
- Elastic Stack之ElasticSearch分布式集群二进制方式部署
Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...
- JavaFX 简介
JavaFX 介绍一提到Java的图形界面库,我们通常听到的都是Swing,或者更老一点的AWT,包括很多书上面介绍的也都是这两种.很多学校.培训班教学的也是这两种技术.但是其实这两种技术都已经过时很 ...
- rpmbuild打包php
安装php依赖库 mkdir -pv ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} php有一个依赖库,在yum源于epel源中都没有需要自己打包libico ...
- js学习总结:DOM节点二(dom基本操作)
一.DOM继承树 DOM——Document Object Model DOM定义了表示修改文档所需要的方法.DOM对象即为宿主对象,由浏览器厂商定义,用来操作html和xml的一类厂商定义,也有人称 ...
- Nginx 学习笔记(九)申请Let's Encrypt通配符HTTPS证书
Let's Encrypt 宣布 ACME v2 正式支持通配符证书,并将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书.消息一出,马上就有热心用户分享出了 Let's En ...