当前位置: 首页 > news >正文

六安城市网新闻网站建设优化服务机构

六安城市网新闻,网站建设优化服务机构,生鲜市场型网站开发,网页设计音乐网站Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(Redo Log)保存到归档日志文件(Archive Log)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。 …

Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(Redo Log)保存到归档日志文件(Archive Log)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。
当数据库处于归档模式时,数据库引擎会将已经写满的重做日志文件保存到归档日志文件中,而不是覆盖已有的重做日志。这样可以确保数据库的完整性,并且可以使用归档日志文件进行数据库的恢复操作。
归档日志对于数据库的备份和恢复非常重要。通过定期备份归档日志文件,可以保证数据库在发生故障时能够进行恢复。同时,归档日志还允许将数据库恢复到特定的时间点,以满足特定业务需求。

基础操作

在Oracle数据库中,可以通过以下步骤来设置和查看归档日志空间:

  1. 首先,确认数据库是否处于归档模式。可以通过以下SQL语句查询:
SQL> SELECT log_mode FROM v$database;
LOG_MODEARCHIVELOG

如果log_mode的值为ARCHIVELOG,则数据库处于归档模式;如果值为NOARCHIVELOG,则数据库未启用归档模式。

  1. 如果数据库未启用归档模式,可以通过以下SQL语句将其切换到归档模式:
    修改归档模式的操作只能在 mount 状态下进行,不能处于 open 状态
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 3290345472 bytes
Fixed Size                  2180224 bytes
Variable Size            2382367616 bytes
Database Buffers          889192448 bytes
Redo Buffers               16605184 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> alter database open;
数据库已更改。
  1. 确认数据库已切换到归档模式后,可以设置归档日志空间的大小。可以通过以下SQL语句设置归档日志空间的大小为50MB(根据需求进行调整):
    52428800 = 50 * 1024 * 1024
SQL> alter system set db_recovery_file_dest_size=  52428800;
系统已更改。
  1. 使用以下SQL语句查询当前归档日志空间的使用情况:
select name,space_limit / 1024 / 1024 / 1024 || 'GB' as 空间限制,space_used / 1024 / 1024 / 1024 || 'GB' 已使用from v$recovery_file_dest

这将显示归档日志目标的名称、空间限制和已使用的空间。

问题发生

下面进入对一次因归档日志空间占满,导致系统停止服务的故障在某个阳光明媚的周末发生后的处理过程。

  1. 系统停止响应,数据库登录有以下提示:
ORA-00257:archiver error. Connect internal only,until freed
  1. 很明显,归档日志满了,立即删除归档日志,保留最近3天。
rman
RMAN> connect target 用户名/密码;
连接到目标数据库: ORCL (DBID=1616110362)
RMAN> delete archivelog until time 'sysdate-3';
  1. 问题未解决,查看归档空间占用情况。
select name,space_limit / 1024 / 1024 / 1024 || 'GB' as 空间限制,space_used / 1024 / 1024 / 1024 || 'GB' 已使用from v$recovery_file_dest
  1. 发现占用空间未释放,接着删除所有归档:
RMAN> delete archivelog all;
  1. 系统恢复。过了几个小时,问题再次发生。
  2. 再次删除所有归档日志,系统恢复,开始排查问题原因。

排查过程

  1. 按天统计
select to_char(COMPLETION_TIME, 'yyyymmdd'), count(*)from v$archived_log twhere COMPLETION_TIME > sysdate - 7group by to_char(COMPLETION_TIME, 'yyyymmdd')order by to_char(COMPLETION_TIME, 'yyyymmdd');

这是一个查询语句,用于查询过去7天内完成的归档日志数量,并按照日期进行分组和排序。
发现前6天正常,当天归档日志异常增长。
2. 按小时统计

select to_char(FIRST_TIME, 'yyyymmddhh24'), count(*)from sys.v_$archived_log twhere t.FIRST_TIME > trunc(sysdate)group by to_char(FIRST_TIME, 'yyyymmddhh24')order by to_char(FIRST_TIME, 'yyyymmddhh24')

该SQL用于查询当天开始的归档日志数量,并按照小时进行分组和排序。
3. 按天和小时综合统计

SELECT    TO_CHAR(FIRST_TIME,'YYYY-MM-DD') DAY,TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'00',1,0)),'999') "00",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'01',1,0)),'999') "01",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'02',1,0)),'999') "02",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'03',1,0)),'999') "03",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'04',1,0)),'999') "04",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'05',1,0)),'999') "05",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'06',1,0)),'999') "06",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'07',1,0)),'999') "07",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'08',1,0)),'999') "08",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'09',1,0)),'999') "09",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'10',1,0)),'999') "10",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'11',1,0)),'999') "11",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'12',1,0)),'999') "12",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'13',1,0)),'999') "13",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'14',1,0)),'999') "14",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'15',1,0)),'999') "15",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'16',1,0)),'999') "16",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'17',1,0)),'999') "17",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'18',1,0)),'999') "18",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'19',1,0)),'999') "19",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'20',1,0)),'999') "20",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'21',1,0)),'999') "21",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'22',1,0)),'999') "22",TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'23',1,0)),'999') "23"
FROM V$LOG_HISTORY
GROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM-DD') 
ORDER BY 1 DESC;

此SQL语句,用于统计每天每个小时的日志数量,并按照日期倒序排序
3. 根据按小时统计分析,发现归档日志集中在当天2个时间段,其他时间段基本正常。怀疑是在相关时间自动执行的后台任务造成,经深入排查予以否认。
4. AWR报告生成

sqlplus /nolog
conn / as sysdba
@?/rdbms/admin/awrrpt.sql

报告生成失败,原因是没有快照(Snap)
5. 分析没有快照(Snap)原因,网上说一般是SYSAUX表空间不足造成的,查询表空间占用情况,果然满了
6. 清理表空间

select distinct 'truncate table ' || segment_name || ';',s.bytes / 1024 / 1024 MBfrom dba_segments swhere s.segment_name like 'WRH$%'and segment_type in ('TABLE PARTITION', 'TABLE')and s.bytes / 1024 / 1024 > 100order by s.bytes / 1024 / 1024 desc;

此SQL可生成清理以 ‘WRH$’ 开头的、大于100MB的表的SQL。生成后执行,完成表空间清理。

  1. 问题解决,真是阴差阳错。

猜测的原因:
因SYSAUX表空间满,造成连锁反应,表现为归档日志异常增长。

一般情况分析

归档日志增长一般是DML操作大量数据造成的,而由SYSAUX表空间满的原因所造成的则比较少见,故记之。

排查归档日志暴增的方法,一般包括以下三个手段:

  1. SQL语句
  2. AWR
  3. 挖掘归档日志

本文到此结束,感谢您的观看!!!

http://www.yayakq.cn/news/918936/

相关文章:

  • 下载中心网站开发平面设计师上的网站
  • 南京网站制作百家号织梦如何做二级网站
  • 济南市商务局官方网站舟山建设信息港门户网站
  • 有没有网站学做总结百度推广优化怎么做
  • 山东专业网站建设公司哪家好wordpress默认主题
  • 青岛网站seo推广做家电家具回收用哪个网站好
  • vs2013做的网站做电子商务网站需要什么手续
  • 仿站多少钱wordpress网站设密码错误
  • dedecms网站后台很卡贵州省网站备案
  • 完美代码网站做百度推广的网站吗
  • 网站平台需要做无形资产吗 怎么做男女做啊免费视频网站
  • 网站的搭建需要多少钱wordpress怎么添加字体
  • 泉州网站建设方案详细瑞安做网站多少钱
  • 新塘 网站建设一个软件开发的流程
  • 网站上做值机的apph5创建网站
  • 地方生活门户网站视频怎么上传到wordpress
  • 网站建设的需要是什么深圳市住房和建设局官网在线申请
  • 网站备案名称能重复吗获客
  • 情头定制网站wordpress_子网站重命名
  • 自己做高仿衣服网站车培训网站建设
  • 网站建设期的网站案例专业网站建设网页
  • 免费网站建设策划怎么弄一个公司网站
  • 做淘宝必备的网站网站建设高等教育出版社
  • 电子商务网站建设教案c 网站开发需要的技术
  • 郑州品牌网站建设安卓的应用开发
  • 网站自定义链接怎么做公众号登录失败是什么原因
  • 金华网站建设团队唐山个人网站建设
  • 大型网站如何开发网站建设结课论文
  • 网站建设的电话销售建一个展示的网站要多少钱
  • 商城网站制作报价室内设计学校前十