SQL> show user
USER 为 "SYS"
SQL> show parameter controlNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      D:\ORACLE\PRODUCT\10.2.0\ORADA
                                                 TA\ORACLE1\CONTROL01.CTL, D:\O
                                                 RACLE\PRODUCT\10.2.0\ORADATA\O
                                                 RACLE1\CONTROL02.CTL, D:\ORACL
                                                 E\PRODUCT\10.2.0\ORADATA\ORACL
                                                 E1\CONTROL03.CTL
SQL> desc v$parameter
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ---------------------------- NUM                                                NUMBER
 NAME                                               VARCHAR2(80)
 TYPE                                               NUMBER
 VALUE                                              VARCHAR2(512)
 DISPLAY_VALUE                                      VARCHAR2(512)
 ISDEFAULT                                          VARCHAR2(9)
 ISSES_MODIFIABLE                                   VARCHAR2(5)
 ISSYS_MODIFIABLE                                   VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(10)
 ISADJUSTED                                         VARCHAR2(5)
 ISDEPRECATED                                       VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(255)
 UPDATE_COMMENT                                     VARCHAR2(255)
 HASH                                               NUMBERSQL> select name,ismodified from v$parameter where name like '%control%';NAME
--------------------------------------------------------------------------------ISMODIFIED
----------
control_files
FALSEcontrol_file_record_keep_time
FALSE
SQL> alter system set control_files='d:\oracle\CONTROL01.CTL,d:\oracle\CONTROL02
.CTL,d:\oracle\CONTROL03.CTL' scope=spfile;系统已更改。SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL01.CTL D:\ORACLE\
CONTROL01.CTL
已复制         1 个文件。SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL02.CTL D:\ORACLE\
CONTROL02.CTL
已复制         1 个文件。SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL03.CTL D:\ORACLE\
CONTROL03.CTL
已复制         1 个文件。SQL> host del D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL01.CTLSQL> host del D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL02.CTLSQL> host del D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL03.CTLSQL> startup
ORACLE 例程已经启动。Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             100664000 bytes
Database Buffers          180355072 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????
SQL> show parameter control_filesNAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files                        string
D:\ORACLE\CONTROL01.CTL,D:\ORA
CLE\CONTROL02.CTL,D:\ORACLE\CO
NTROL03.CTL
SQL>我觉得我的操作没有问题,并且修改参数已经成功了。我使用的是oracle 10g版本,数据库启动的时候应该从spfile启动,应该没有问题的,但是问题毕竟存在,请教高手给俺指点一下,谢谢

解决方案 »

  1.   

    你先看看是啥错,一步步启动startup nomount
    alter session set nls_language=american
    alter database mount
    alter database open;
      

  2.   

    oerr ora 205
    00205, 00000, "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.
      

  3.   

    Starting up ORACLE RDBMS Version: 10.2.0.1.0.
    System parameters with non-default values:
      processes                = 150
      __shared_pool_size       = 88080384
      __large_pool_size        = 4194304
      __java_pool_size         = 4194304
      __streams_pool_size      = 0
      spfile                   = D:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\SPFILEORACLE1.ORA
      sga_target               = 289406976
      control_files            = D:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02.CTL,D:\ORACLE\CONTROL03.CTL
      db_block_size            = 8192
      __db_cache_size          = 184549376
      compatible               = 10.2.0.1.0
      db_file_multiblock_read_count= 16
      db_recovery_file_dest    = D:\oracle\product\10.2.0/flash_recovery_area
      db_recovery_file_dest_size= 2147483648
      undo_management          = AUTO
      undo_tablespace          = UNDOTBS1
      remote_login_passwordfile= EXCLUSIVE
      db_domain                = asiainfo.com
      dispatchers              = (PROTOCOL=TCP) (SERVICE=oracle1XDB)
      job_queue_processes      = 10
      audit_file_dest          = D:\ORACLE\PRODUCT\10.2.0\ADMIN\ORACLE1\ADUMP
      background_dump_dest     = D:\ORACLE\PRODUCT\10.2.0\ADMIN\ORACLE1\BDUMP
      user_dump_dest           = D:\ORACLE\PRODUCT\10.2.0\ADMIN\ORACLE1\UDUMP
      core_dump_dest           = D:\ORACLE\PRODUCT\10.2.0\ADMIN\ORACLE1\CDUMP
      db_name                  = oracle1
      open_cursors             = 300
      pga_aggregate_target     = 95420416
    PMON started with pid=2, OS id=36328
    PSP0 started with pid=3, OS id=36332
    MMAN started with pid=4, OS id=36336
    DBW0 started with pid=5, OS id=36340
    LGWR started with pid=6, OS id=36344
    CKPT started with pid=7, OS id=36352
    SMON started with pid=8, OS id=36356
    RECO started with pid=9, OS id=36348
    CJQ0 started with pid=10, OS id=36320
    MMON started with pid=11, OS id=36364
    Tue Aug 25 11:01:39 2009
    starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
    MMNL started with pid=12, OS id=36368
    Tue Aug 25 11:01:39 2009
    starting up 1 shared server(s) ...
    Tue Aug 25 11:01:50 2009
    alter database mount
    Tue Aug 25 11:01:50 2009
    ORA-00202: control file: 'D:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02.CTL,D:\ORACLE\CONTROL03.CTL'
    ORA-27041: unable to open file
    OSD-04002: 无法打开文件
    O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。在数据库载入的时候报错了,例程启动的时候并没有报错
      

  4.   

    再次尝试的过程为:SQL> show user
    USER 为 "SYS"
    SQL> show parameter control_files;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_files                        string      D:\ORACLE\PRODUCT\10.2.0\ORADA
                                                     TA\ORACLE1\CONTROL01.CTL, D:\O
                                                     RACLE\PRODUCT\10.2.0\ORADATA\O
                                                     RACLE1\CONTROL02.CTL, D:\ORACL
                                                     E\PRODUCT\10.2.0\ORADATA\ORACL
                                                     E1\CONTROL03.CTL
    SQL> select name,issys_modifiable from v$parameter where name like '%control_fil
    es%';NAME
    --------------------------------------------------------------------------------ISSYS_MOD
    ---------
    control_files
    FALSE
    SQL> alter system set control_files='d:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02
    .CTL,D:\ORACLE\CONTROL03.CTL';
    alter system set control_files='d:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02.CTL,
    D:\ORACLE\CONTROL03.CTL'
                     *
    第 1 行出现错误:
    ORA-02095: 无法修改指定的初始化参数
    SQL> alter system set control_files='d:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02
    .CTL,D:\ORACLE\CONTROL03.CTL' scope=spfile;系统已更改。SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> host move D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL01.CTL D:\ORACLE\
    CONTROL01.CTLSQL> host move D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL02.CTL D:\ORACLE\
    CONTROL02.CTLSQL> host move D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\CONTROL03.CTL D:\ORACLE\
    CONTROL03.CTLSQL> host dir d:\oracle
     驱动器 D 中的卷没有标签。
     卷的序列号是 B045-2DA4 d:\oracle 的目录2009-08-25  11:00    <DIR>          .
    2009-08-25  11:00    <DIR>          ..
    2009-08-25  10:59         7,061,504 CONTROL01.CTL
    2009-08-25  10:59         7,061,504 CONTROL02.CTL
    2009-08-25  10:59         7,061,504 CONTROL03.CTL
    2009-08-17  09:38    <DIR>          product
                   3 个文件     21,184,512 字节
                   3 个目录 23,797,260,288 可用字节SQL> host dir  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1\
     驱动器 D 中的卷没有标签。
     卷的序列号是 B045-2DA4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE1 的目录2009-08-25  11:00    <DIR>          .
    2009-08-25  11:00    <DIR>          ..
    2009-08-25  10:59        52,429,312 REDO01.LOG
    2009-08-25  10:59        52,429,312 REDO02.LOG
    2009-08-25  10:59        52,429,312 REDO03.LOG
    2009-08-25  10:59       304,095,232 SYSAUX01.DBF
    2009-08-25  10:59       503,324,672 SYSTEM01.DBF
    2009-08-24  03:22        20,979,712 TEMP01.DBF
    2009-08-25  10:59        26,222,592 UNDOTBS01.DBF
    2009-08-25  10:59       104,865,792 USERS01.DBF
                   8 个文件  1,116,775,936 字节
                   2 个目录 23,797,239,808 可用字节SQL>
    SQL> startup nomount
    ORACLE 例程已经启动。Total System Global Area  289406976 bytes
    Fixed Size                  1248576 bytes
    Variable Size              96469696 bytes
    Database Buffers          184549376 bytes
    Redo Buffers                7139328 bytes
    SQL> alter database mount
      2  /
    alter database mount
    *
    第 1 行出现错误:
    ORA-00205: ?????????, ??????, ???????
    SQL> alter session set nls_language=american ;Session altered.SQL> alter database mount;
    alter database mount
    *
    ERROR at line 1:
    ORA-00205: error in identifying control file, check alert log for more info
    SQL>
      

  5.   

    才发现你命令应该是错了,alter system set control_files='d:\oracle\CONTROL01.CTL',
                                   'd:\oracle\CONTROL02.ctl',
                                   'd:\oracle\CONTROL03.CTL' scope=spfile
      

  6.   

    ORA-00202: control file: 'D:\ORACLE\CONTROL01.CTL,D:\ORACLE\CONTROL02.CTL,D:\ORACLE\CONTROL03.CTL' 
    这个地方把整个字符串当成 是一个controlfile 的路径和名字