Oracle OS Block Header
生活随笔
收集整理的這篇文章主要介紹了
Oracle OS Block Header
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
oracle文件的第一個塊(block 0)是OS block header,在數(shù)據(jù)庫中查詢不到信息,記錄的是OS信息,以及文件大小的等信息:
| SQL> select file_name,bytes from dba_data_files;FILE_NAME BYTES -------------------------------------------------- ---------- /u01/app/oracle/oradata/PROD/user01.dbf 67108864$ls -lrt total 1390268 -rw-r----- 1 oracle oinstall 67117056 Apr 12 09:31 user01.dbf |
從上面可以看出,OS上的大小比數(shù)據(jù)庫里的大小多了一個BLOCK。
如果OS block header損壞,并不影響數(shù)據(jù)庫打開、使用,但重建控制文件時會報錯,用dbverify/rman也檢測不到壞塊,不過可以使用dbfsize來查看:
正常狀態(tài):
| $dbfsize user01.dbfDatabase file: user01.dbf Database file type: file system Database file size: 8192 8192 byte blocks |
損壞:
| $dbfsize user01.dbf user01.dbf: Header block magic number is bad |
編緝BLOCK 0,模擬損壞,可以正常啟動、使用:
| SQL> startup; ORACLE instance started.Total System Global Area 184549376 bytes Fixed Size 1266488 bytes Variable Size 100666568 bytes Database Buffers 79691776 bytes Redo Buffers 2924544 bytes Database mounted. ORA-01113: file 4 needs media recovery ORA-01110: data file 4: '/u01/app/oracle/oradata/PROD/user01.dbf'SQL> recover datafile 4; Media recovery complete. SQL> alter database open;Database altered.SQL> create table test01 tablespace USERS as select * from dba_objects;Table created. |
用dbv檢查,未發(fā)現(xiàn)壞塊:
| $dbv file=user01.dbfDBVERIFY: Release 10.2.0.4.0 - Production on Mon Apr 16 16:38:33 2012Copyright (c) 1982, 2007, Oracle. All rights reserved.DBVERIFY - Verification starting : FILE = user01.dbfDBVERIFY - Verification completeTotal Pages Examined : 8192 Total Pages Processed (Data) : 357 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 11 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 7824 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Highest block SCN : 336969 (0.336969) |
用dbfsize檢查,報錯:
| $dbfsize user01.dbf user01.dbf: Header block magic number is bad |
如果重建控制文件,則會報錯:
| SQL> startup nomount; ORACLE instance started.Total System Global Area 184549376 bytes Fixed Size 1266488 bytes Variable Size 100666568 bytes Database Buffers 79691776 bytes Redo Buffers 2924544 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG2 MAXLOGFILES 53 MAXLOGMEMBERS 54 MAXDATAFILES 1005 MAXINSTANCES 26 MAXLOGHISTORY 2927 LOGFILE8 GROUP 1 (9 '/u01/app/oracle/oradata/PROD/REDO1_1.log',10 '/u01/app/oracle/oradata/PROD/REDO1_2.log',11 '/u01/app/oracle/oradata/PROD/REDO1_3.log'12 ) SIZE 100M,13 GROUP 2 (14 '/u01/app/oracle/oradata/PROD/REDO2_1.log',15 '/u01/app/oracle/oradata/PROD/REDO2_2.log',16 '/u01/app/oracle/oradata/PROD/REDO2_3.log'17 ) SIZE 100M18 -- STANDBY LOGFILE19 DATAFILE20 '/u01/app/oracle/oradata/PROD/SYSTEM01.dbf',21 '/u01/app/oracle/oradata/PROD/undotbs01.dbf',22 '/u01/app/oracle/oradata/PROD/SYSAUX01.dbf',23 '/u01/app/oracle/oradata/PROD/user01.dbf'24 CHARACTER SET AL32UTF825 ; CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG * ERROR at line 1: ORA-01503: CREATE CONTROLFILE failed ORA-01565: error in identifying file '/u01/app/oracle/oradata/PROD/user01.dbf' ORA-27047: unable to read the header block of file Additional information: 2 |
報ORA-27047錯誤。這里可以在數(shù)據(jù)庫打開狀態(tài)下,resize datafile,這樣就可以重寫OS block header信息:
| SQL> alter database open;Database altered.SQL> alter database datafile '/u01/app/oracle/oradata/PROD/user01.dbf' resize 65M;Database altered.SQL> select file_name,bytes from dba_data_files;FILE_NAME BYTES -------------------------------------------------- ---------- /u01/app/oracle/oradata/PROD/user01.dbf 68157440 |
dbfsize檢查正常,重建控制文件正常:
| $dbfsize user01.dbfDatabase file: user01.dbf Database file type: file system Database file size: 8320 8192 byte blocksSQL> CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG2 MAXLOGFILES 53 MAXLOGMEMBERS 54 MAXDATAFILES 1005 MAXINSTANCES 26 MAXLOGHISTORY 2927 LOGFILE8 GROUP 1 (9 '/u01/app/oracle/oradata/PROD/REDO1_1.log',10 '/u01/app/oracle/oradata/PROD/REDO1_2.log',11 '/u01/app/oracle/oradata/PROD/REDO1_3.log'12 ) SIZE 100M,13 GROUP 2 (14 '/u01/app/oracle/oradata/PROD/REDO2_1.log',15 '/u01/app/oracle/oradata/PROD/REDO2_2.log',16 '/u01/app/oracle/oradata/PROD/REDO2_3.log'17 ) SIZE 100M18 -- STANDBY LOGFILE19 DATAFILE20 '/u01/app/oracle/oradata/PROD/SYSTEM01.dbf',21 '/u01/app/oracle/oradata/PROD/undotbs01.dbf',22 '/u01/app/oracle/oradata/PROD/SYSAUX01.dbf',23 '/u01/app/oracle/oradata/PROD/user01.dbf'24 CHARACTER SET AL32UTF825 ;Control file created.SQL> alter database open;Database altered. |
注:resize 原大小,重建還是報錯,需要resize一個不同的大小。
總結(jié)
以上是生活随笔為你收集整理的Oracle OS Block Header的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 下开源常见监控软件
- 下一篇: DOS下处理含特殊字符[如:]的字符串