我先通过alter system set contron_file来将控制文件移到新建的目录下,接着关闭数据库,复制控制文件到指定目录下,然后开启数据库,使用select name from v$controlfile 时发现控制文件的路径还是没编程指定的路径,这是怎么回事

解决方案 »

  1.   

    oracle默认是以spfile启动的。倘若按你的描述,那么请在pfile中改动控制文件,然后以pfile启动:
    startup pfile=‘存放的路径';
    登上去后再把pfile改成spfile:
    create spfile from pfile;
    这样就可以了哦。
      

  2.   

    LS,你好
    我的使用spfile启动的,我奇怪的是为什么用alter system set方法不能对spfile中的参数进行修改呢
      

  3.   

    我想修改control_file参数,改变控制文件的路径
      

  4.   

    可以修改,我给个例子,你对照下看看自己哪里做的不对
    sys@ORA11GR2> select name from v$controlfile;NAME
    ----------------------------------------------------------------------------------------------------
    E:\APP\TONY\ORADATA\ORA11GR2\CONTROL01.CTL
    E:\APP\TONY\FLASH_RECOVERY_AREA\ORA11GR2\CONTROL02.CTLsys@ORA11GR2> show parameter control_files;NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    control_files                        string                 E:\APP\TONY\ORADATA\ORA11GR2\C
                                                                ONTROL01.CTL, E:\APP\TONY\FLAS
                                                                H_RECOVERY_AREA\ORA11GR2\CONTR
                                                                OL02.CTLsys@ORA11GR2> alter system set control_files='E:\APP\TONY\ORADATA\ORA11GR2\CTRL\CONTROL01.CTL','E:\APP\TONY\FLASH_RECOVERY_AREA\ORA11GR2\CONTROL02.CTL' scope=
    file;系统已更改。sys@ORA11GR2> shutdown
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    --拷贝E:\APP\TONY\ORADATA\ORA11GR2\CONTROL01.CTL到E:\APP\TONY\ORADATA\ORA11GR2\CTRL\下面
    sys@ORA11GR2> startup
    ORACLE 例程已经启动。Total System Global Area  313860096 bytes
    Fixed Size                  1374304 bytes
    Variable Size             222300064 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                6299648 bytes
    数据库装载完毕。
    数据库已经打开。
    sys@ORA11GR2> select name from v$controlfile;NAME
    ----------------------------------------------------------------------------------------------------
    E:\APP\TONY\ORADATA\ORA11GR2\CTRL\CONTROL01.CTL
    E:\APP\TONY\FLASH_RECOVERY_AREA\ORA11GR2\CONTROL02.CTLsys@ORA11GR2> show parameter control_files;NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    control_files                        string                 E:\APP\TONY\ORADATA\ORA11GR2\C
                                                                TRL\CONTROL01.CTL, E:\APP\TONY
                                                                \FLASH_RECOVERY_AREA\ORA11GR2\
                                                                CONTROL02.CTL
    sys@ORA11GR2>
      

  5.   

    scope=
    file;
    那里没拷贝好,
    应该是scope=spfile
      

  6.   

    回复5楼的,我试过了你的方法,依旧是不能改变control_file的值,但是如果在scope=spfile后再加一句sid=‘orcl’,然后重启就可以了,不晓得为什么要加上这一句呢,求解释