Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2886812
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2012-08-18 08:27:49

在数据库启动的时候,oracle将会验证OS文件大小与文件头记录的大小进行比较。
如果OS文件大小不是数据库参数DB_BLOCK_SIZE的整数倍,将会报ORA-27046。
 

点击(此处)折叠或打开

  1. ORA-27046: file size is not a multiple of logical block size
如果OS文件大小是数据库参数DB_BLOCK_SIZE的整数倍,但是OS显示的文件大小比文件头记录的小,那么数据库启动将会报ORA-01200错误。

点击(此处)折叠或打开

  1. ORA-01200: actual file size of 7399 is smaller than correct size of 12800.
如果OS文件大小是数据库参数DB_BLOCK_SIZE的整数倍,而且OS显示的文件大小和文件头记录一样大,那么数据库将会正常启动。
如果OS文件大小是数据库参数DB_BLOCK_SIZE的整数倍,但是OS显示的文件大小比文件头记录的大,那么数据能正常启动吗?
我测试了一下,确实能正常启动。
 

点击(此处)折叠或打开

  1. SQL> select file#,blocks,name from v$datafile_header;

  2.      FILE# BLOCKS NAME
  3. ---------- ---------- --------------------------------------------------

  4.          1 88320 /u01/app/oracle/oradata/huateng/system01.dbf
  5.          2 62720 /u01/app/oracle/oradata/huateng/sysaux01.dbf
  6.          3 10880 /u01/app/oracle/oradata/huateng/undotbs01.dbf
  7.          4 640 /u01/app/oracle/oradata/huateng/users01.dbf
  8.          5 12800 /u01/app/oracle/oradata/huateng/example01.dbf
  9.          6 5120 /u01/app/oracle/oradata/huateng/htyansp01.dbf
  10.          7 2000 /u01/app/oracle/oradata/huateng/file01.dbf


  11. SQL> select file_id,file_name,blocks from dba_data_files;

  12.    FILE_ID FILE_NAME BLOCKS
  13. ---------- -------------------------------------------------- ----------

  14.          4 /u01/app/oracle/oradata/huateng/users01.dbf 640
  15.          3 /u01/app/oracle/oradata/huateng/undotbs01.dbf 10880
  16.          2 /u01/app/oracle/oradata/huateng/sysaux01.dbf 62720
  17.          1 /u01/app/oracle/oradata/huateng/system01.dbf 88320
  18.          5 /u01/app/oracle/oradata/huateng/example01.dbf 12800
  19.          6 /u01/app/oracle/oradata/huateng/htyansp01.dbf 5120
  20.          7 /u01/app/oracle/oradata/huateng/file01.dbf 2000

  21. 7 rows selected.
如下是文件头信息:

点击(此处)折叠或打开

  1. [oracle@db2server ~]$ bbed filename=/u01/app/oracle/oradata/huateng/htyansp01.dbf password=blockedit

  2. BBED: Release 2.0.0.0.0 - Limited Production on Thu Aug 16 15:17:38 2012

  3. Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

  4. ************* !!! For Oracle Internal Use only !!! ***************

  5. BBED> p offset 44
  6. kcvfh.kcvfhhdr.kccfhfsz
  7. -----------------------

  8. ub4 kccfhfsz @44 0x00001400

文件头记录的文件大小为5120个BLOCKS
 

点击(此处)折叠或打开

  1. SQL> ! ls -ltr /u01/app/oracle/oradata/huateng/htyansp01.dbf
  2. -rw-r--r-- 1 oracle oinstall 60620800 08-16 14:45 /u01/app/oracle/oradata/huateng/htyansp01.dbf


  3. SQL> show parameter db_block_size

  4. NAME TYPE VALUE
  5. ------------------------------------ ----------- ------------------------------

  6. db_block_size integer 8192

  7. SQL> select 60620800/8192 -1 from dual;

  8. 60620800/8192
  9. -------------

  10.          7399

OS显示文件的大小为7399个BLOCKS,比文件头记录的多了2000多个。

数据库也能正常启动,也能建表。
 

点击(此处)折叠或打开

  1. SQL> startup force
  2. ORACLE instance started.

  3. Total System Global Area 380817408 bytes
  4. Fixed Size 1336680 bytes
  5. Variable Size 268438168 bytes
  6. Database Buffers 104857600 bytes
  7. Redo Buffers 6184960 bytes
  8. Database mounted.
  9. Database opened.
  10. SQL> create table itpub(id int) tablespace htyansp;

  11. Table created.


阅读(1009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~