主頁 > 資料庫 > [20210224]控制檔案序列號滿的分析.txt

[20210224]控制檔案序列號滿的分析.txt

2021-02-26 07:17:23 資料庫

[20210224]控制檔案序列號滿的分析.txt

--//上午看了鏈接:https://blog.csdn.net/enmotech/article/details/113855641,出現控制檔案序列號滿的情況,我從來沒有遇到.
--//下午沒事,看看是否能在測驗環境演示出來重復故障.
--//注意不能在生產系統做這樣的測驗!!!很久沒有做這類恢復作業,寫的有點亂.

1.環境:
SCOTT@book> @ 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

2.測驗:
--//首先我仔細看了原始鏈接,我發現作者通過設定小的閃回區,不斷切換歸檔,看查看控制檔案順序號.
--//我自己也嘗試了一下,導致歸檔滿了,掛起,我認為跟這個沒關系,實際上只要切換歸檔或者發出檢查點,
--//控制檔案順序號就會增加.我先驗證這種情況.

sqlplus -s -l scott/book << EOF | grep "[0-9]"
set head off
set feedback off
$(seq 5 | xargs -I{} echo -e 'alter system checkpoint;\nselect  CONTROLFILE_SEQUENCE# from v$database;\nhost sleep 1')
quit
EOF

                36500
                36501
                36502
                36503
                36504
--//你可以發現發出檢查點,CONTROLFILE_SEQUENCE#增加1.

sqlplus -s -l scott/book << EOF | grep "[0-9]"
set head off
set feedback off
$(seq 5 | xargs -I{} echo -e 'alter system switch logfile;\nselect  CONTROLFILE_SEQUENCE# from v$database;\nhost sleep 1')
quit
EOF

                36506
                36509
                36513
                36517
                36520
--//執行alter system switch logfile也是一樣.
--//我有一種預感可能對方日志可能切換過于頻繁,可能導致控制檔案序列號增加太快,消耗枯竭.

3.首先定位它在控制檔案的什么位置.

SYS@book> @ spid
         SID      SERIAL# PROCESS                  SERVER    SPID       PID    P_SERIAL# C50
------------ ------------ ------------------------ --------- ------ ------- ------------ --------------------------------------------------
          30          261 57742                    DEDICATED 57743       26          101 alter system kill session '30,261' immediate;

SCOTT@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
                36571

$ strace  -f -p 57743 -e pread
Process 57743 attached - interrupt to quit
pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\327?\0\0\0\0\0\0\0\4 \vn!\267O"..., 16384, 16384) = 16384
pread(256, "\25\302\0\0\17\0\0\0j\275\0\0\377\377\1\4 C\0\0\0\6\0\0\0\0\0\0\0\0\0\4"..., 16384, 245760) = 16384
pread(256, "\25\302\0\0\21\0\0\0j\275\0\0\377\377\1\4\225Z\0\0\0\0\0\0\0\0\0\0\256\36q5"..., 16384, 278528) = 16384
pread(256, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\327?\0\0\0\0\0\0\0\4 \vn!\267O"..., 16384, 16384) = 16384
pread(256, "\25\302\0\0\17\0\0\0j\275\0\0\377\377\1\4 C\0\0\0\6\0\0\0\0\0\0\0\0\0\4"..., 16384, 245760) = 16384
pread(256, "\25\302\0\0\21\0\0\0j\275\0\0\377\377\1\4\225Z\0\0\0\0\0\0\0\0\0\0\256\36q5"..., 16384, 278528) = 16384
pread(256, "\25\302\0\0\32\1\0\0b\275\0\0\377\377\1\4\3270\0\0\27\2\2\0\345\7\0\0\0\0\0\0"..., 16384, 4620288) = 16384

--//應該讀的位置在控制檔案偏移16384,245760,278528,4620288.
$ echo 16384,245760,278528,4620288 | tr ',' '\n' | xargs -IQ bash -c "echo Q/16384| bc "| paste -sd','
1,15,17,282

--//關閉資料庫,重新啟動資料庫到mount狀態.這樣啟動后應該不變.
SYS@book> startup mount
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
Database mounted.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
                36580

--//36580 = 0x8ee4,顛倒過來就是0xe48e.
$ echo 1,15,17,282 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x e48e top'  | rlbbed
BBED: Release 2.0.0.0.0 - Limited Production on Wed Feb 24 15:59:39 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************

BBED> set count 64
        COUNT           64

BBED> set width 160
        WIDTH           160

BBED>   DBA             0x19400001 (423624705 101,1)

BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                                    Offsets:   40 to  103                                               Dba:0x19400001
------------------------------------------------------------------------------------------------------------------------------------------------
 e48e0000 8c020000 00400000 00000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 5e89c659 ae1e7135

 <64 bytes per line>

BBED>   DBA             0x1940000f (423624719 101,15)
BBED> BBED-00212: search string not found
BBED>   DBA             0x19400011 (423624721 101,17)
BBED> BBED-00212: search string not found
BBED>   DBA             0x1940011a (423624986 101,282)
BBED> BBED-00212: search string not found
--//注我已經定義101對應控制檔案,并且實際上指定101,自動設定blocksize=16384,不需要設定.

$ ls -l /mnt/ramdisk/book/control01.ctl
-rw-r----- 1 oracle oinstall 10698752 2021-02-24 16:03:22 /mnt/ramdisk/book/control01.ctl
--//10698752/16384 = 653,從0開始到652,控制檔案的0塊也是OS頭,你可以使用xxd -c 16 /mnt/ramdisk/book/control01.ctl查看.
$ xxd -c 16 /mnt/ramdisk/book/control01.ctl | head -6
0000000: 00c2 0000 0000 c0ff 0000 0000 0000 0000  .?...?........
0000010: eaf8 0000 0040 0000 8c02 0000 7d7c 7b7a  犋...@......}||z
                                       ~~~~~~~~~=>奇幻數,資料檔案以及日志檔案都有類似標識.
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................

$ seq 652 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x e48e top'  | rlbbed | grep -C2 "\-\-\--"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                                    Offsets:   40 to  103                                               Dba:0x19400001
------------------------------------------------------------------------------------------------------------------------------------------------
 e48e0000 8c020000 00400000 00000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 5e89c659 ae1e7135
--//很明顯位置在控制檔案塊1,偏移40的位置,應該占32位,4個位元組.最大0xffffffff = 4294967295.

4.先做一些功課,看看資料檔案以及日志是否存在這個資訊.
--//我看一些檔案頭資料,在資料檔案頭kcvfh.kcvfhhdr.kccfhcsq也是記錄控制檔案的seq.
$ seq 6 | xargs -IQ echo "p dba Q,1  kcvfh.kcvfhhdr.kccfhcsq" | rlbbed| grep kccfhcsq
BBED> ub4 kccfhcsq                                @40       0x00008edc
BBED> ub4 kccfhcsq                                @40       0x00008edc
BBED> ub4 kccfhcsq                                @40       0x00008edc
BBED> ub4 kccfhcsq                                @40       0x00008edc
BBED> ub4 kccfhcsq                                @40       0x00008edc
BBED> ub4 kccfhcsq                                @40       0x00008edc
--//也是在檔案頭偏移40的位置,但是數值0x8edc = 36572.感覺是我關閉資料庫記錄的值寫入的,比前面+1(對比前面).

--//看看日志檔案的情況:
$ seq 501 503 | xargs -IQ echo "dump /v dba Q,1 offset 36 count 8" | rlbbed | grep 00900100
 d68e0000 00900100                                                       l ........
 dc8e0000 00900100                                                       l ........
 d28e0000 00900100                                                       l ........
--//注我已經定義501,502,503對應日志檔案redo01.log,redo02.log,redo03.log.
--//我估計在切換日志時寫入當時的控制檔案seq.

SYS@book> @ log
Show redo log layout from V$LOG and V$LOGFILE...
         GROUP#         THREAD#       SEQUENCE#           BYTES       BLOCKSIZE         MEMBERS ARC STATUS             FIRST_CHANGE# FIRST_TIME             NEXT_CHANGE# NEXT_TIME
--------------- --------------- --------------- --------------- --------------- --------------- --- ---------------- --------------- ------------------- --------------- -------------------
              1               1             716        52428800             512               1 YES INACTIVE             13276955579 2021-02-24 15:48:54     13276955587 2021-02-24 15:48:57
              2               1             717        52428800             512               1 NO  CURRENT              13276955587 2021-02-24 15:48:57 281474976710655
              3               1             715        52428800             512               1 YES INACTIVE             13276955571 2021-02-24 15:48:51     13276955579 2021-02-24 15:48:54
--//可以確定日志檔案也有對應資訊.位于塊1的偏移36位元組處.當前日志是第2組.

5.嘗試修改控制檔案順序號:
--//注意修改前備份控制檔案.關閉資料庫
$ cp  /mnt/ramdisk/book/control0* /home/oracle/tmp/

BBED> set dba 101,1
        DBA             0x19400001 (423624705 101,1)

BBED> dump /v dba 101,1 offset 40 count 8
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   47                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 e68e0000 8c020000                                                       l ........
 <32 bytes per line>
--//關閉資料庫后增加+2.

$ seq 652 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x e68e top'  | rlbbed | grep -C2 "\-\-\--"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                                    Offsets:   40 to  103                                               Dba:0x19400001
------------------------------------------------------------------------------------------------------------------------------------------------
 e68e0000 8c020000 00400000 00000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 5e89c659 ae1e7135

$ seq 652 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x e48e top'  | rlbbed | grep -C2 "\-\-\--"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 15                                                   Offsets:    8 to   71                                               Dba:0x1940000f
------------------------------------------------------------------------------------------------------------------------------------------------
 e48e0000 ffff0104 2ce80000 00040000 00000000 00000004 06440008 000400e3 00000000 00000002 00000000 00000000 008ddae0 15000000 00000000 00000000
--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 17                                                   Offsets:    8 to   71                                               Dba:0x19400011
------------------------------------------------------------------------------------------------------------------------------------------------
 e48e0000 ffff0104 10de0000 00000000 00000000 ae1e7135 424f4f4b 00000000 00000000 08024000 01404010 00000000 00000000 06200e00 00000000 b01e7135
--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 281                                                  Offsets:    8 to   71                                               Dba:0x19400119
------------------------------------------------------------------------------------------------------------------------------------------------
 e48e0000 ffff0104 9adc0000 0dff0200 e1070000 00000000 00000000 02000000 02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
--//視乎在別的位置備份原來的控制檔案seq資訊.僅僅是猜測.因為前面查詢沒找到.
--//我嘗試再次mount查詢該位置.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
                36587

--//36587 = 0x8eeb
$ seq 652 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x eb8e top'  | rlbbed | grep -C2 "\-\-\--"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                                    Offsets:   40 to  103                                               Dba:0x19400001
------------------------------------------------------------------------------------------------------------------------------------------------
 eb8e0000 8c020000 00400000 00000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 12d1c659 ae1e7135

$ seq 652 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\nfind /x ea8e top'  | rlbbed | grep -C2 "\-\-\--"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 15                                                   Offsets:    8 to   71                                               Dba:0x1940000f
------------------------------------------------------------------------------------------------------------------------------------------------
 ea8e0000 ffff0104 2ca00000 00040000 00000000 00000004 06440008 000c00a3 04000000 00000002 00000000 04000000 008ddae0 15000000 00000000 00000000

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 17                                                   Offsets:    8 to   71                                               Dba:0x19400011
------------------------------------------------------------------------------------------------------------------------------------------------
 ea8e0000 ffff0104 10de0000 00000000 00000000 ae1e7135 424f4f4b 00000000 00000000 08024000 01404010 00000000 00000000 06200e00 00000000 b01e7135

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 319                                                  Offsets:    8 to   71                                               Dba:0x1940013f
------------------------------------------------------------------------------------------------------------------------------------------------
 ea8e0000 ffff0104 e60b0000 626f6f6b 000060ff ffffffff 03b66b2a ff7f0000 38aeef7e 00000000 48000000 00000000 48000000 fd7f0000 10000000 00000000
--//應該可以肯定我的分析大致正確.開始修改看看.注意最好在關閉資料庫下進行.

BBED> dump /v   dba 101,1 Offset 40 count 16
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   55                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 ed8e0000 8c020000 00400000 00000100                                     l .........@......
<32 bytes per line>

--//修改命令如下:
modify /x ff8e dba 101,1 offset 40
sum apply dba 101,1
modify /x ff8e dba 102,1 offset 40
sum apply dba 102,1
--//注意另外的控制檔案也要修改:

BBED> modify /x ff8e dba 101,1 offset 40
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                                    Offsets:   40 to   55                                               Dba:0x19400001
------------------------------------------------------------------------------------------------------------------------------------------------
 ff8e0000 8c020000 00400000 00000100
<64 bytes per line>

BBED> sum apply dba 101,1
Check value for File 101, Block 1:
current = 0x8883, required = 0x8883

BBED> modify /x ff8e dba 102,1 offset 40
 File: /mnt/ramdisk/book/control02.ctl (102)
 Block: 1                                                    Offsets:   40 to   55                                               Dba:0x19800001
------------------------------------------------------------------------------------------------------------------------------------------------
 ff8e0000 8c020000 00400000 00000100

 <64 bytes per line>

BBED> sum apply dba 102,1
Check value for File 102, Block 1:
current = 0x8883, required = 0x8883
--//0x8eff = 36607,驗證看看:

SYS@book> startup mount
ORACLE instance started.

Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
Database mounted.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
                36612
--//36612 = 0x8f04,即使在mount狀態也增加一點點.

BBED> dump /v   dba 101,1 Offset 40 count 16
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   55                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 048f0000 8c020000 00400000 00000100                                     l .........@......

 <32 bytes per line>
--//說明修改位置正確.

6.繼續增大步幅:
--//注意修改前最好關閉資料庫進行.
BBED> modify /x 8affffff dba 101,1 offset 40
BBED-00209: invalid number (8affffff)

--//有一個小技巧就是如果修改4個位元組的話,第一個字符要小于0x8,,不然報錯.
--//修改命令如下:
modify /x 7fffffff dba 101,1 offset 40
sum apply dba 101,1
modify /x 7fffffff dba 102,1 offset 40
sum apply dba 102,1

--//相當于控制檔案seq = 0xffffff7f  = 4294967167.
--//0xff-0x7f = 128

SYS@book> startup mount
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
Database mounted.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
           4294967172

--//4294967172= 0xffffff84,^_^現在已經逼近消耗枯竭狀態了.看看是否可以打開,該是見證奇跡的時刻...

SYS@book> alter database open ;
Database altered.

SYS@book> alter system checkpoint ;
System altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
           4294967181

SYS@book> alter system checkpoint ;
System altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
           4294967182

--//每次checkpoint僅僅增加1. 0xffffffff = 4294967295
SYS@book> alter system switch logfile;
System altered.

--//執行多次,加快增加....省略....

SYS@book> alter system switch logfile;
System altered.

..

SYS@book> alter system checkpoint ;
System altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
           4294967295
--//4294967295= 0xffffffff,在往前呢?

SYS@book> alter system checkpoint ;
System altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
--//掛起..

--//alert.log報如下錯誤.
Wed Feb 24 17:14:01 2021
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_arc1_29847.trc:
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_arc1_29847.trc  (incident=3792203):
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Incident details in: /u01/app/oracle/diag/rdbms/book/book/incident/incdir_3792203/book_arc1_29847_i3792203.trc
Wed Feb 24 17:14:02 2021
Sweep [inc][3792203]: completed
Sweep [inc][3792195]: completed
Sweep [inc2][3792203]: completed
Sweep [inc2][3792195]: completed
Dumping diagnostic data in directory=[cdmp_20210224171402], requested by (instance=1, osid=29847 (ARC1)), summary=[incident=3792203].

BBED> dump /v   dba 101,1 Offset 40 count 16
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   55                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 00000000 8c020000 00400000 00000100                                     l .........@......
 <32 bytes per line>
--//全部為0.補充說明我做了多次,如果seq跳躍很快,資料庫直接crash,我上面的測驗到4294967295時換成了alter system checkpoint ;.

$ echo 15,17,281,319 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\ndump /v offset 8 count 8'  | rlbbed | grep -C2 "\-\-"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 15                                Offsets:    8 to   15                            Dba:0x1940000f
-----------------------------------------------------------------------------------------------------------
 ffffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 17                                Offsets:    8 to   15                            Dba:0x19400011
-----------------------------------------------------------------------------------------------------------
 ffffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 281                               Offsets:    8 to   15                            Dba:0x19400119
-----------------------------------------------------------------------------------------------------------
 85ffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 319                               Offsets:    8 to   15                            Dba:0x1940013f
-----------------------------------------------------------------------------------------------------------
 83ffffff ffff0104                                                       l ........
--//驗證我的推測.這里也記錄seq資訊.

$ seq 501 503 | xargs -IQ echo "dump /v dba Q,1 offset 36 count 8" | rlbbed | grep 00900100
f8ffffff 00900100                                                       l ........
fcffffff 00900100                                                       l ........
fcffffff 00900100                                                       l ........

--//現在資料庫依舊可以登錄,但是一些查詢會hang住,比如查詢v$database視圖.

SYS@book> shutdown immediate;
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'

SYS@book> alter system checkpoint ;
alter system checkpoint
      *
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 30040
Session ID: 114 Serial number: 3

--//alert.log記錄如下:
Wed Feb 24 17:27:02 2021
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_ckpt_29816.trc:
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_ckpt_29816.trc  (incident=3792131):
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_ckpt_29816.trc:
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
CKPT (ospid: 29816): terminating the instance due to error 227
Wed Feb 24 17:27:03 2021
System state dump requested by (instance=1, osid=29816 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/book/book/trace/book_diag_29800_20210224172703.trc
Dumping diagnostic data in directory=[cdmp_20210224172703], requested by (instance=1, osid=29816 (CKPT)), summary=[abnormal instance termination].
Instance terminated by CKPT, pid = 29816

7.嘗試恢復:

SYS@book> startup mount
ORACLE instance started.

Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
select  CONTROLFILE_SEQUENCE# from v$database
                                   *
ERROR at line 1:
ORA-01507: database not mounted

--//alert.log
ALTER DATABASE   MOUNT
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_30094.trc:
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Wed Feb 24 17:29:02 2021
Sweep [inc][3792131]: completed
Errors in file /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_30094.trc  (incident=3793788):
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-// 我沒有遇到原鏈接的提示,這個提示有點昏.
ORA-00202: control file: '/mnt/ramdisk/book/control01.ctl'
Incident details in: /u01/app/oracle/diag/rdbms/book/book/incident/incdir_3793788/book_ora_30094_i3793788.trc
Dumping diagnostic data in directory=[cdmp_20210224172902], requested by (instance=1, osid=30094), summary=[incident=3793788].
ORA-227 signalled during: ALTER DATABASE   MOUNT...

$ dbv file=/mnt/ramdisk/book/control01.ctl  BLOCKSIZE=16384
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Feb 24 17:29:52 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /mnt/ramdisk/book/control01.ctl
DBVERIFY - Verification complete

Total Pages Examined         : 652
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 147
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 505
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 4294967295 (65535.4294967295)
--//ok,但是注意后面那行.Highest block SCN : 4294967295 (65535.4294967295)
--//感覺這個可以稱為控制檔案的scn號. 4294967295 = 0xffffffff ,65535 = 0xffff

$ seq 6 | xargs -IQ echo "p dba Q,1  kcvfh.kcvfhhdr.kccfhcsq" | rlbbed| grep kccfhcsq
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
--//資料檔案的kccfhcsq全部是0xffffffff.

BBED> dump /v dba 101,1 offset 40 count 4
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   43                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 00000000                                                                l ....
 <32 bytes per line>

--//執行如下:
modify /x 7fffffff dba 101,1 offset 40
modify /x 7fffffff dba 102,1 offset 40
modify /x ff dba 101,1 offset 40
modify /x ff dba 102,1 offset 40
sum apply dba 101,1
sum apply dba 102,1
--//重啟不行.

modify /x 7fffffff dba 101,1 offset 40
modify /x 7fffffff dba 102,1 offset 40
sum apply dba 101,1
sum apply dba 102,1

SYS@book> startup mount
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
ORA-00600: internal error code, arguments: [2131], [9], [8], [], [], [], [], [], [], [], [], []
--//不行.

7.如何恢復呢?
--//鏈接介紹一種方式就是重建控制檔案,使用resetlogs重建.
--//原始鏈接的測驗使用resetlogs重建的控制檔案,我做了OK,不再貼出,方法比較簡單.
--//我想給自己增加一點點難度,就是使用noresetlogs打開,因為這樣重建的控制檔案要讀取redo,資料檔案重新
--//回填一些資訊,實際上resetlogs也類似,但是noresetlogs回填的控制檔案seq很大,一樣打不開資料庫.
--//也就是必須提到我前面要修改的資料檔案以及redo檔案的幾個偏移位置.太長了,另外寫一篇blog.

8.補充說明:
--//前面我提到的rlbbed我建立的bash shell函式,你可以使用別名代替,效果一樣的.
$ export RLWRAP=$(which rlwrap)
$ type rlbbed
rlbbed is a function
rlbbed ()
{
    cd /home/oracle/bbed;
    $RLWRAP -s 9999 -c -r -i -f /usr/local/share/rlwrap/bbed $ORACLE_HOME/bin/bbed parfile=bbed.par cmdfile=cmd.par
}

--//關于bbed配置看相關檔案.
$ cat cmd.par
set count 64
set width 160

$ cat bbed.par
blocksize=8192
listfile=$HOME/bbed/filelist.txt
mode=edit
PASSWORD=blockedit
SPOOL=Y

--//filelist.txt檔案通過select file#||' '||name c100 from v$dbfile order by file#;生成.我增加了控制檔案以及redo檔案.
--//還有臨時檔案.
$ cat filelist.txt  | grep -v "#"
4 /mnt/ramdisk/book/users01.dbf
1 /mnt/ramdisk/book/system01.dbf
2 /mnt/ramdisk/book/sysaux01.dbf
3 /mnt/ramdisk/book/undotbs01.dbf
5 /mnt/ramdisk/book/example01.dbf
6 /mnt/ramdisk/book/tea01.dbf

101 /mnt/ramdisk/book/control01.ctl
102 /mnt/ramdisk/book/control02.ctl

201 /mnt/ramdisk/book/temp01.dbf

501 /mnt/ramdisk/book/redo01.log
502 /mnt/ramdisk/book/redo02.log
503 /mnt/ramdisk/book/redo03.log
504 /mnt/ramdisk/book/redostb01.log

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/263707.html

標籤:其他

上一篇:🍖索引原理與慢查詢優化

下一篇:Mysql總結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more