[20170310]dg环境下在线日志损坏14.txt

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: [20170310]dg环境下在线日志损坏14.txt http://blog.itpub.net/267265/viewspace-2134481/ http://blog.

[20170310]dg环境下在线日志损坏14.txt

http://blog.itpub.net/267265/viewspace-2134481/
http://blog.itpub.net/267265/viewspace-2134665/
http://blog.itpub.net/267265/viewspace-2134816/
http://blog.itpub.net/267265/viewspace-2134979/

--//连续做了几个dg环境下在线日志损坏的修复,这次作为这个系列的最后一篇,当然这篇不涉及dg.
--//而是利用归档文件重新生成日志文件,看看是否可行?

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> create table t as  select rownum id , lpad(chr(96+rownum),10,chr(96+rownum)) name from dual connect by level<=20;
Table created.

SCOTT@book> select rowid,t.* from t where rownum=1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAWD4AAEAAAAIjAAA          1 aaaaaaaaaa

SCOTT@book> @ &r/rowid AAAWD4AAEAAAAIjAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     90360          4        547          0  0x1000223           4,547                alter system dump datafile 4 block 547 ;

SYS@book> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/archivelog/book
Oldest online log sequence     697
Next log sequence to archive   699
Current log sequence           699
--//当前seq=699.

--session 1:
update t set name=upper(name) where id=1;
commit;
alter system archive log current;

--session 2:
update t set name=upper(name) where id=2;
commit;

SYS@book> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/archivelog/book
Oldest online log sequence     698
Next log sequence to archive   700
Current log sequence           700
--//当前seq=700.

--session 3:
SYS@book> shutdown abort;
ORACLE instance shut down.

2.启动到mount:
SYS@book> startup mount
ORACLE instance started.
Total System Global Area  634732544 bytes
Fixed Size                  2255792 bytes
Variable Size             197133392 bytes
Database Buffers          427819008 bytes
Redo Buffers                7524352 bytes
Database mounted.

SYS@book> @ &r/logfile
GROUP# STATUS TYPE       MEMBER                          IS_ GROUP# THREAD# SEQUENCE#       BYTES BLOCKSIZE MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
------ ------ ---------- ------------------------------- --- ------ ------- --------- ----------- --------- ------- --- ---------- ------------- ------------------- ------------ -------------------
     1        ONLINE     /mnt/ramdisk/book/redo01.log    NO       1       1       698    52428800       512       1 YES INACTIVE     13276932875 2017-03-10 15:34:00  13276933416 2017-03-10 15:34:04
     2        ONLINE     /mnt/ramdisk/book/redo02.log    NO       2       1       699    52428800       512       1 YES ACTIVE       13276933416 2017-03-10 15:34:04  13276933792 2017-03-10 15:38:14
     3        ONLINE     /mnt/ramdisk/book/redo03.log    NO       3       1       700    52428800       512       1 NO  CURRENT      13276933792 2017-03-10 15:38:14 2.814750E+14
     4        STANDBY    /mnt/ramdisk/book/redostb01.log NO
     5        STANDBY    /mnt/ramdisk/book/redostb02.log NO
     6        STANDBY    /mnt/ramdisk/book/redostb03.log NO
     7        STANDBY    /mnt/ramdisk/book/redostb04.log NO
7 rows selected.

--//seq#=699 对应/mnt/ramdisk/book/redo02.log status='ACTIVE'.
--//seq#=700 对应/mnt/ramdisk/book/redo03.log status='CURRENT'.

--//如果直接open,oracle执行的实例恢复,需要读取/mnt/ramdisk/book/redo02.log,/mnt/ramdisk/book/redo03.log文件.
--//假如/mnt/ramdisk/book/redo02.log seq#=699损坏,这样修复实际上需要介入.因为归档已经存在

$ ls -l /u01/app/oracle/archivelog/book/1_699_896605872.dbf
-rw-r----- 1 oracle oinstall 421888 2017-03-10 15:38:14 /u01/app/oracle/archivelog/book/1_699_896605872.dbf

--//手工介入可以修复数据库,但是因为在线日志已经损坏,需要open resetlogs,本文通过希望通过
--/u01/app/oracle/archivelog/book/1_699_896605872.dbf转成在线日志文件,避免open resetlogs打开.

3.打开数据库:

$ mv /mnt/ramdisk/book/redo02.log /u01/backup/

--//安全起见,其他日志也做一个备份.
$ cp /mnt/ramdisk/book/redo01.log /u01/backup
$ cp /mnt/ramdisk/book/redo03.log /u01/backup


SYS@book> alter database open ;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/mnt/ramdisk/book/redo02.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

4.现在做偷梁换柱的把戏.

$ cp /u01/app/oracle/archivelog/book/1_699_896605872.dbf /mnt/ramdisk/book/redo02.log

--//先这样尝试看看,当前不是正常redo文件的大小.

SYS@book> alter database open ;
alter database open
*
ERROR at line 1:
ORA-00327: log 2 of thread 1, physical size 823 less than needed 102400
ORA-00312: online log 2 thread 1: '/mnt/ramdisk/book/redo02.log'

--//^_^,大小不一样.

5.第一步修复os块.
--// 再次提醒使用dd注意方向.注意不要忘记加conv=notrunc.避免文件被截断.
$ dd if=/mnt/ramdisk/book/redo01.log of=/mnt/ramdisk/book/redo02.log count=1 bs=512 conv=notrunc
1+0 records in
1+0 records out
512 bytes (512 B) copied, 2.9835e-05 seconds, 17.2 MB/s

SYS@book> alter database open ;
alter database open
*
ERROR at line 1:
ORA-00327: log 2 of thread 1, physical size 823 less than needed 102400
ORA-00312: online log 2 thread 1: '/mnt/ramdisk/book/redo02.log'

--//依旧不行.
$ ls -l /mnt/ramdisk/book/redo0*
-rw-r----- 1 oracle oinstall 52429312 2017-03-10 15:34:04 /mnt/ramdisk/book/redo01.log
-rw-r----- 1 oracle oinstall   421888 2017-03-10 16:00:41 /mnt/ramdisk/book/redo02.log
-rw-r----- 1 oracle oinstall 52429312 2017-03-10 15:39:14 /mnt/ramdisk/book/redo03.log

--//421888/512=824
--//这样跳过前面824块,再次提醒注意dd的参数.小心conv=notrunc ,skip,seek等参数.确认再执行^_^.

$ dd if=/mnt/ramdisk/book/redo01.log skip=824 bs=512 of=/mnt/ramdisk/book/redo02.log seek=824 conv=notrunc
101577+0 records in
101577+0 records out
52007424 bytes (52 MB) copied, 0.222428 seconds, 234 MB/s

SYS@book> alter system dump logfile '/mnt/ramdisk/book/redo02.log' validate;
System altered.
--ok没有问题.

SYS@book> alter database open ;
Database altered.

--//ok,使用open打开了数据库.

--//附上alert:
Fri Mar 10 16:05:13 2017
alter database open
Beginning crash recovery of 1 threads
parallel recovery started with 23 processes
Started redo scan
Completed redo scan
read 164 KB redo, 1 data blocks need recovery
Started redo application at
Thread 1: logseq 699, block 605
Recovery of Online Redo Log: Thread 1 Group 2 Seq 699 Reading mem 0
  Mem# 0: /mnt/ramdisk/book/redo02.log
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recovery of Online Redo Log: Thread 1 Group 3 Seq 700 Reading mem 0
  Mem# 0: /mnt/ramdisk/book/redo03.log
Completed redo application of 0.00MB
Completed crash recovery at
Thread 1: logseq 700, block 112, scn 13276953855
1 data blocks read, 1 data blocks written, 164 redo k-bytes read
Fri Mar 10 16:05:13 2017
LGWR: STARTING ARCH PROCESSES
Fri Mar 10 16:05:13 2017
ARC0 started with pid=45, OS id=27183
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: Becoming the 'no FAL' ARCH
ARC0: Becoming the 'no SRL' ARCH
ARC0: Becoming the heartbeat ARCH
Thread 1 advanced to log sequence 701 (thread open)
Thread 1 opened at log sequence 701
  Current log# 1 seq# 701 mem# 0: /mnt/ramdisk/book/redo01.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Fri Mar 10 16:05:14 2017
SMON: enabling cache recovery
Archived Log entry 1245 added for thread 1 sequence 700 ID 0x4fb7d86e dest 1:
[26824] Successfully onlined Undo Tablespace 2.
Undo initialization finished serial:0 start:763654090 end:763654150 diff:60 (0 seconds)
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
Fri Mar 10 16:05:14 2017
Incremental checkpoint up to RBA [0x2bd.3.0], current log tail at RBA [0x2bd.3f.0]
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
WARNING: AQ_TM_PROCESSES is set to 0. System operation                     might be adversely affected.
Completed: alter database open
Fri Mar 10 16:05:15 2017
Starting background process CJQ0
Fri Mar 10 16:05:15 2017
CJQ0 started with pid=47, OS id=27197

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
10月前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如&quot;password&quot;、&quot;confidential&quot;、&quot;secret&quot;),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
218 0
|
10月前
|
Java 开发工具 Windows
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
|
10月前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
5月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
228 3
|
7月前
|
JavaScript Serverless Linux
函数计算产品使用问题之遇到Node.js环境下的请求日志没有正常输出时,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
9月前
|
运维 安全 Java
SpringBoot运维篇(打包,多环境,日志)
SpringBoot运维篇(打包,多环境,日志)
|
10月前
|
运维 Java Devops
云效产品使用报错问题之自定义环境构建没有日志,也没有报错,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
云效产品使用报错问题之自定义环境构建没有日志,也没有报错,如何解决
|
14天前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
27 5
图解MySQL【日志】——Redo Log
|
4月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1124 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
3月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。