说明: 原来系统有三个控制文件,CONTROL01.CTL CONTROL02.CTL CONTROL03.CTL 现在打算增加一个 CONTROL04.CTL
路径都在 E:\oracle\product\10.2.0\oradata\orcl 下步骤如下:当前是spfile启动的
1。alter database backup controlfile to 'E:\oracle\product\10.2.0\oradata\orcl\CONTROL04.CTL';
2。 alter system set control_files=' E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL' scope=spfile;
3. shutdown immediate;
4. startup;
5
报错如下
第 1 行出现错误:
ORA-00205: ?????????, ??????, ???????   查看告警日志(另 : 这个为啥是乱码呢??,在哪进行设置)-----------------------------------------------------------
ORA-00202: control file: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。
---------------------------------------------------------
这几个文件都是存在的啊。另外  我按照上面的同样步骤 ,只是
第2步的时候 
2。 alter system set control_files=' E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL' scope=spfile;
只取一个控制文件的话,这样可以启动。  这是什么原因。 

解决方案 »

  1.   

    不是这么做吧,alter system ...修改spfile后,关闭数据库,直接在系统里拷贝control01.ctl成为control04.ctl,在启动就可以了,再检查一下参数和视图看看对不对
      

  2.   

    ORA-00205: error in identifying control file, check alert log for more info 
    Cause: The system could not find a control file of the specified name and size.
     
    Action: Check that ALL control files are online and that they are the same files that the system created at cold start time.代码信息可以从 ora-xxx.ora-code.com 查询。 错误代码换成对应的就可以了。 楼主关于控制文件的概念没有弄清楚。 所有的控制文件内容都是一样的, 多个控制文件就是做冗余的。 在写控制文件的时候,会同时写,从而保持文件内容的一致。 控制文件里包含数据的一些记录。 如SCN等。 楼主先恢复出一个控制文件,然后把这个控制文件添加到数据库里, 这个是有问题的。 因为这个控制文件和其他三个不一致。  这个就是你出错的原因。 添加控制文件的方法很简单。 就是1楼说的, 直接shutdown ,在copy一份。 
    Oracle 控制文件
    http://blog.csdn.net/tianlesoftware/archive/2009/12/13/4974440.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977(满)
    DBA3 群:62697850   DBA 超级群:63306533;     
    聊天 群:40132017
    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
      

  3.   


    找到错误了  alter system set control_files= 这里面有多少个控制文件位置,就要 ‘’ 连起来。
    而不是 放在一个单引号里面。  还有个问题,为何我cmd下运行的出错信息都是乱码呢?  全部是问号。
    在哪设置,或者运行什么语句?
      

  4.   

    如果设置正确,启动报的错误是两个控制文件版scn号不一致。而不是报找不到文件。
    后面shutdown  然后把高版本的拷贝给低版本了。
      

  5.   

    注册表中原来NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK,改成NLS_LANG=AMERICAN_AMERICA.ZHS16GBK后,错误提示显示为英文。这个问题好像无法重现,我在自己机子上这么做之后,再改回NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK却可以显示中文了。不太清楚是什么原因。
    改之后好像要关掉cmd窗口重新打开一下