ORA-01200错误的分析

WBOY
풀어 주다: 2016-06-07 17:31:36
원래의
1161명이 탐색했습니다.

一 触发ora-01200错误的原因 [Oracle@oracle ~]$ oerr ora 0120001200, 00000, actual file size of %s is smaller than correc

一 触发ora-01200错误的原因
 
[Oracle@oracle ~]$ oerr ora 01200
01200, 00000, "actual file size of %s is smaller than correct size of %s blocks"
// *Cause: The size of the file as returned by the operating system is smaller
//        than the size of the file as indicated in the file header and the
//        control file. Somehow the file has been truncated. Maybe it is the
//        result of a half completed copy.
// *Action: Restore a good copy of the data file and do recovery as needed.

数据文件实际块数小于数据文件头部记录的数据文件块数

二 用bbed构造一个ora-01200错误
 
1 数据文件/oracle/test/jiujian1.dbf实际占用块数如下:
 
SQL> select file_name,blocks from dba_data_files where file_id=11;
 
FILE_NAME                          BLOCKS
----------------------------------------          ---------
/oracle/test/jiujian1.dbf                1048
 
2 用bbed修改数据文件头部记录的数据文件占用块数
BBED> info
 File# Name                                                        Size(blks)
 ----- ----                                                        ----------
    1 /oracle/CRM2/system1.dbf                                        61440
    2 /oracle/CRM2/zxb.dbf                                              1280
    3 /oracle/CRM2/CRM/sysaux01.dbf                                    37120
    4 /oracle/CRM2/CRM/users01.dbf                                      640
    5 /oracle/CRM2/zxa.dbf                                            12800
    6 /oracle/CRM2/CRM/undotbs2.dbf                                    25600
    7 /oracle/CRM2/zxc.dbf                                              1280
    8 /oracle/CRM2/CRM/zxbig1.dbf                                    262144
    11 /oracle/test/jiujian1.dbf                                          128
 
BBED> set dba 11,1
        DBA            0x02c00001 (46137345 11,1)
 
BBED> p  offset 44     
kcvfh.kcvfhhdr.kccfhfsz
-----------------------
ub4 kccfhfsz                                @44      0x00000418 (十进制1048)
 
BBED> set offset 44
        OFFSET          44
 
BBED> dump /v count 30
 File: /oracle/test/jiujian1.dbf (11)
 Block: 1      Offsets:  44 to  73 Dba:0x02c00001
-------------------------------------------------------
 18040000 00200000 0b000300 00000000 l ..... ..........
 00000000 00000000 00000000 0000    l ..............
 
 
 
BBED> modify /x 1904
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /oracle/test/jiujian1.dbf (11)
 Block: 1                Offsets:  44 to  73          Dba:0x02c00001
------------------------------------------------------------------------
 19040000 00200000 0b000300 00000000 00000000 00000000 00000000 0000
 
 
 
BBED> p offset 44
kcvfh.kcvfhhdr.kccfhfsz
-----------------------
ub4 kccfhfsz                                @44      0x00000419(10进制为1049)
 
BBED> sum apply
Check value for File 11, Block 1:
current = 0x34f4, required = 0x34f4
 
3 启动数据库便可触发ora-01200错误
SQL> startup
ORACLE instance started.
 
Total System Global Area 322961408 bytes
Fixed Size                  2020480 bytes
Variable Size              92277632 bytes
Database Buffers          222298112 bytes
Redo Buffers                6365184 bytes
Database mounted.
ORA-01122: database file 11 failed verification check
ORA-01110: data file 11: '/oracle/test/jiujian1.dbf'
ORA-01200: actual file size of 1048 is smaller than correct size of 1049 blocks
 
三ora-01200错误的解决
 
方式1 通过bbed 改数据文件头部偏移量44处的值为数据文件实际占用块数
 
方式2 通过dd命令填充数据文件实际大小为correct size of 1049 blocks中的值
dd if=/dev/zero of=/oracle/test/jiujian1.dbf bs=8192 count=1 seek=1049

相关阅读:

SPFILE 错误导致数据库无法启动(ORA-01565) 

ORA-01172、ORA-01151错误处理 

ORA-00600 [2662]错误解决

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿