当前位置: 首页 > 图文教程 > 数据库 > Oracle > 对于Oracle的错误印象

Oracle
Oracle常用dump命令,记录一下备查。
Oracle存储过程之数据库中获取数据实例
Oracle存储过程入门学习基本语法
java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input
Oracle 函数大全[字符串函数,数学函数,日期函数]
Oracle 自增(auto increment) 或 标识字段的建立方法
oracle 存储过程加密的方法
Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
Oracle 忘记密码的找回方法
Oracle 数据库导出(exp)导入(imp)说明
oracle 常见等待事件及处理方法
Oracle9i 动态SGA,PGA特性探索
PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法
ORACLE 数据库RMAN备份恢复
用Mimer Validator检查SQL查询
oracle执行cmd的实现方法
ORACLE 正则解决初使化数据格式不一致
Oracle 触发器的使用小结
oracle 时间格式的调整
Oracle 10g的DBA无法登录解决方案

对于Oracle的错误印象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 110 ::
收藏到网摘: n/a

今天测试的时候纠正了一个错误的印象,一直认为如果当前控制文件被误删除,会导致实例关闭。而实际上,Oracle并不会结束当前的实例:


  SQL> show parameter control_files
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  control_files string /u01/oracle/oradata/db01/contr
  ol01.ctl, /u01/oracle/oradata/
  db01/control02.ctl, /u01/oracl
  e/oradata/db01/control03.ctl
  SQL> select * from dual;
  D
  -
  X
  SQL> host
  oracle:/home/oracle> cd /u01/oracle/oradata/db01
  oracle:/u01/oracle/oradata/db01> ls -l *.ctl
  -rw-r----- 1 oracle dba 9748480 May 24 12:55 control01.ctl
  -rw-r----- 1 oracle dba 9748480 May 24 12:55 control02.ctl
  -rw-r----- 1 oracle dba 9748480 May 24 12:55 control03.ctl
  oracle:/u01/oracle/oradata/db01> rm control02.ctl
  oracle:/u01/oracle/oradata/db01> exit
  exit
  SQL> select * from dual;
  D
  -
  X
  SQL> select instance_name, status from v$instance;
  INSTANCE_NAME STATUS
  ---------------- ------------
  db01 OPEN
  SQL> alter system checkpoint;
  System altered.
  SQL> select instance_name, status from v$instance;
  INSTANCE_NAME STATUS
  ---------------- ------------
  db01 OPEN
  SQL> alter system switch logfile;
  System altered.
  SQL> select instance_name, status from v$instance;
  INSTANCE_NAME STATUS
  ---------------- ------------
  db01 OPEN
  SQL> col name format a50
  SQL> select * from v$controlfile;
  STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
  ------- -------------------------------------------------- --- ---------- --------------
  /u01/oracle/oradata/db01/control01.ctl NO 16384 594
  /u01/oracle/oradata/db01/control02.ctl NO 16384 594
  /u01/oracle/oradata/db01/control03.ctl NO 16384 594
  SQL> select * from v$controlfile_record_section;
  select * from v$controlfile_record_section
  *
  ERROR at line 1:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3
  SQL> select * from v$controlfile;
  STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
  ------- -------------------------------------------------- --- ---------- --------------
  /u01/oracle/oradata/db01/control01.ctl NO 16384 594
  /u01/oracle/oradata/db01/control02.ctl NO 16384 594
  /u01/oracle/oradata/db01/control03.ctl NO 16384 594

可以看到,删除了一个控制文件之后,数据库照常运行,甚至在发现一个控制文件丢失之后,数据库实例仍然处于打开状态,检查一下alert文件:


  Thread 1 advanced to log sequence 21 (LGWR switch)
  Current log# 3 seq# 21 mem# 0: /u01/oracle/oradata/db01/redo03.log
  Sun May 24 13:00:58 2009
  Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m002_27935.trc:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3
  Sun May 24 13:24:09 2009
  Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_27986.trc:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3
  Sun May 24 14:01:49 2009
  Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m002_28082.trc:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3
  Sun May 24 14:24:59 2009
  Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_28132.trc:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3
  Sun May 24 14:59:29 2009
  Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_28204.trc:
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
  ORA-27041: unable to open file
  Linux Error: 2: No such file or directory
  Additional information: 3

  虽然Oracle认识到一个控制文件出现了异常,但是Oracle并没有关闭当前实例。测试发现,即使删除了所有当前的控制文件,当前实例依然处于打开的状态,并且只有需要访问控制文件的操作会报错,其他操作仍然可以运行。

  Oracle既然不会自动关闭,那么万一出现了控制文件误删除的情况,一定不要手工关闭当前的实例,只要实例不关闭,就可以轻松的查询数据库中的数据文件、日志文件等信息来重建控制文件,而一旦关闭了实例,由于缺失控制文件,实例将无法启动,这时候要找到所有控制文件中包含的信息就比较困难了。