当前位置:   article > 正文

[20161002]建立控制文件与ORA-01163错误

ora-01163
[20161002]建立控制文件与ORA-01163错误.txt

--家里的机器做各种测试折腾.有时候我会从冷备份恢复,有时候也会选择重新建立控制文件.
--晚上重新建立新的控制文件遇到问题,做一个记录:

1.环境:
SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SYS@test> alter database backup controlfile to trace;
Database altered.

2.开始重新建立新的控制文件.

--//从跟踪文件取出控制文件。

CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'D:\APP\ORACLE\ORADATA\TEST\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'D:\APP\ORACLE\ORADATA\TEST\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'D:\APP\ORACLE\ORADATA\TEST\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSTEM01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\SYSAUX01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSAUX01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\UNDOTBS01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\USERS01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSTEM01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSAUX01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\SAMPLE_SCHEMA_USERS01.DBF',
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\EXAMPLE01.DBF',
CHARACTER SET ZHS16GBK
;

--不小心在最后加入逗号。
shutdown immediate
startup nomount

SYS@test> @ cr.sql
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS  ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01163: SIZE clause indicates 12800 (blocks), but should match header 45840
ORA-01110: data file 10: 'D:\APP\ORACLE\ORADATA\TEST\TEST01P\EXAMPLE01.DBF'

C:\>oerr ora 01163
01163, 00000, "SIZE clause indicates %s (blocks), but should match header %s"
// *Cause: The size specified in bytes in the SIZE clause of the CREATE
//         CONTROLFILE statement does not equate to the number of blocks
//         recorded in the header.
// *Action: Specify the correct filename and size ( in bytes ).

C:\>dir D:\APP\ORACLE\ORADATA\TEST\TEST01P\EXAMPLE01.DBF
 驱动器 D 中的卷没有标签。
 卷的序列号是 0006-A37E

 D:\APP\ORACLE\ORADATA\TEST\TEST01P 的目录

2016/10/02  20:50       375,529,472 EXAMPLE01.DBF
               1 个文件    375,529,472 字节
               0 个目录 97,065,320,448 可用字节

--(375529472-8192)/8192=45840,EXAMPLE01.DBF占用45840.

--//这个提示很具有迷惑性,我google才发现,我最后多了1个逗号。实际上肯定有人问拷贝与粘贴,这么会犯这么低级的错误。
--//实际上在从跟踪文件取出控制文件时,我发现少了这个文件EXAMPLE01.DBF,而这个文件我当时做了offline操作。这样做
--//alter database backup controlfile to trace,缺少这么文件。online后,偷懒手工加入到建立控制文件脚本,不小心把逗号加入。

--//同时提醒,采用这种方式建立控制文件时要注意检查一些数据文件是否offline。同时表空间做read only也是一样。

--//另外补充1点,不要忘记建立临时文件噢!!
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ORACLE\ORADATA\TEST\TEMP01.DBF'
     SIZE 100663296  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ORACLE\ORADATA\TEST\PDBSEED\PDBSEED_TEMP01.DBF'
     SIZE 404750336  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = TEST01P;
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\ORACLE\ORADATA\TEST\TEST01P\TEST01P_TEMP01.DBF'
     SIZE 406847488  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = CDB$ROOT;
-- End of tempfile additions.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2125834/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-2125834/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/176016
推荐阅读
相关标签
  

闽ICP备14008679号