首页 / 日志 / Oracle 关于归档日志文件的一点理解
Oracle 关于归档日志文件的一点理解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle 关于归档日志文件的一点理解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3211字,纯文字阅读大概需要5分钟。
内容图文
今天数据群有人反应网站不能正常打开,经检查Oracle数据库远程连不上,提示信息:ORA-00257: archiver error. Connect internal only, until freed。可能是archivelog满了。以前学习SQL只关注CRUD,对日志了解甚少,此次宕机虽然对生成没有造成恶劣影响,但也是因为业务不熟悉所致,特花一天时间学习并记录Oracle日志归档功能。.
- Oracle日志操作模式分为两种:ARCHIVELOG、NOARCHIVELOG
连接Oracle终端
- windows系统:sqlplus
- Linux系统:先登录ssh,切换到oracle用户,再启动sqlplus登录oracle
查看当前日志操作模式
- 通用方法:SELECT log_mode from v$database;
- sys用户:
开启日志归档
- 启用归档日志前要先停止数据库
shutdown immediate;
- 数据库以mount方式启动
startup mount;
- 改变日志模式
-
- 启用数据库归档
alter database archivelog;
-
- 关闭归档
alter database noarchivelog;
- 打开数据库
alter database open;
- 查看归档 日志信息
archive log list;
- 查看默认闪回归档存储路径
show parameter db_recovery_file_dest;
Oracle11g版本,ORACLE默认的日志归档路径为闪回恢复区($ORACLE_BASE/fast_recovery_area)。对于这个路径,Oracle有一个限制,就是默认只有4G的空间,而且不只是归档日志的默认路径,也是备份文件和闪回日志的默认地址,这样的话归档日志锁使用的空间就达不到4G。
测试入库100w数据,产生归档文件
- 查看闪回空间已经占用情况
select * from V$FLASH_RECOVERY_AREA_USAGE;
- 查看归档日志文件数量
select * from v$recovery_file_dest;
当出现ORA-00257: archiver error. Connect internal only, until freed错误连不上数据的时候,如果数据库归档目标为USE_DB_RECOVERY_FILE_DEST且DB_RECOVERY_FILE_DEST目录为默认闪回空间目录时
- 方法一可采取增大闪回空间大小方式:
alter system set db_recovery_file_dest_size=8G scope=both;
- 方法二修改归档日志的路径
alter system set db_recovery_file_dest=‘location=C:\app\Administrator\oracle_log‘ scope=both;
- 方法 三 修改归档日志的路径,将归档日志放到其他不受限制的路径下来解决这个问题,可通过下面的SQL来修改归档日志的存放路径
alter system set log_archive_dest_1=’location=C:\app\Administrator\oracle_log’;
查看archiv log所在位置
show parameter log_archive_dest;
archive log list;
通过切换日志,查看归档路径下是否有归档日志产生来验证归档路径设置是否正确,切换日志命令如下
alter system switch logfile;
方法二和方法三都是修改归档文件存储路径,具体区别是什么呢,要想理解具体区别就要先理解归档日志路径三个参数
- 1、DB_RECOVERY_FILE_DEST:闪回恢复区路径
show parameter db_recovery_file_dest;
- 2、LOG_ARCHIVE_DEST:LOG_ARCHIVE_DEST:指定归档文件存放的路径,该路径只能是本地磁盘,默认为’’。
show parameter LOG_ARCHIVE_DEST;
- 3、LOG_ARCHIVE_DEST_n:指定归档文件存放的路径,Oracle最多支持把日志文件归档到31个地方,n从1到31。归档地址可以为本地磁盘,或者网络设备。
三个参数区别如下
-
- 1、 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;
- 2、 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。
- 3、 LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。
- 4、 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。比如设置LOG_ARCHIVE_DEST_1=’location=C:\archive1’,而OS中并没有archive1这个目录,那么Oracle会在C盘归档。
删除归档文件
- 首先删除归档文件在物理主机磁盘中的文件
- 物理文件删除后ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,接下来要做的就是从controlfile中清除掉多余归档日志文件记录
利用RMAN进行删除操作,操作步骤如下:
window客户端系统为例
- 打开Rman连接数据库
- 查看归档日志的状态
list archivelog all;
- 执行archivelog校验命令
crosscheck archivelog all;
- 删除校验失败的记录
delete expired archivelog all;
- 选择yes
- 查看归档日志
List archivelog all;
- 查看归档日志文件
select substr(t.NAME,1) NAME,ROUND(sum(t.BLOCKS*t.BLOCK_SIZE)/1024/1024) TOTAL_MB from v$archived_log t where t.DELETED=‘NO‘groupby substr(t.NAME,1);
完全正确,至此归档文件完全删除~!
原文:http://www.cnblogs.com/aaron911/p/7820272.html
内容总结
以上是互联网集市为您收集整理的Oracle 关于归档日志文件的一点理解全部内容,希望文章能够帮你解决Oracle 关于归档日志文件的一点理解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。