关于在spfile文件上修改control_files参数的问题

关于在spfile文件上修改control_files参数的问题[@more@]

我在为控制文件修改路径的时候遇见一个这样的问题。

本来三个控制文件的位置是:

E:ORACLEORADATAORA10CONTROL01.CTL,

E:ORACLEORADATAORA10CONTROL02.CTL,

E:ORACLEORADATAORA10CONTROL03.CTL'

我现在将控制文件的路径修改为:

E:CONTROL01.CTL,

E:ORACLEORADATAORA10CONTROL02.CTL,

E:ORACLEORADATAORA10CONTROL03.CTL'

我开始做的时候是这样的

SQL> alter system set control_files='E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL' scope=spfile;

系统已更改。

修改spfile文件中的control_files参数,然后重启数据块。问题出现了。

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 159383552 bytes

Fixed Size 1247876 bytes

Variable Size 79693180 bytes

Database Buffers 75497472 bytes

Redo Buffers 2945024 bytes

ORA-00205: ?????????, ??????, ???????

alert文件的错误是:

ALTER DATABASE MOUNT

Wed May 09 08:07:44 2007

ORA-00202: control file: 'E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL'

ORA-27041: unable to open file

OSD-04002: 无法打开文件

O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。

无法找到控制文件,这时候,我的控制文件已经在自己的目录上。spfile不行,我就使用pfile文件。

SQL> create pfile from spfile;

文件已创建。

看看pfile文件中的control_files的内容:

*.control_files=’E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL’

正确的,启动数据库:

SQL> shutdown immediate

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount pfile=e:oracleora10databaseinitora10.ora

ORACLE 例程已经启动。

Total System Global Area 159383552 bytes

Fixed Size 1247876 bytes

Variable Size 79693180 bytes

Database Buffers 75497472 bytes

Redo Buffers 2945024 bytes

ORA-00205: ?????????, ??????, ???????

还是有问题。

查看一下Oracle的文档,文档上说:

To Multiplex or Move Additional Copies of the Current Control Files

1) Shut down the database.

2) Copy an existing control file to a different location, using operating system commands.

3) Edit the CONTROL_FILES parameter in the database's initialization parameter file to add the new control file's name, or to change the existing control filename.

4) Restart the database.

文档上说是修改修改参数文件中的CONTROL_FILES参数,我就是这样做的啊?问题出在哪里啊?很是郁闷。后来看到文档上有这样的格式。

CONTROL_FILES = (/u01/oracle/prod/control01.ctl,

/u02/oracle/prod/control02.ctl,

/u03/oracle/prod/control03.ctl)

我抱着试试看的态度,将pfile文件上的control_files修改为:

*.control_files=(E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL)

重新启动一下:更郁闷的事情发生了,数据库居然起来了。

SQL> startup mount pfile=e:oracleora10databaseinitora10.ora

ORACLE 例程已经启动。

Total System Global Area 159383552 bytes

Fixed Size 1247876 bytes

Variable Size 79693180 bytes

Database Buffers 75497472 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

SQL>

SQL> show parameter control

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time integer 7

control_files string E:CONTROL01.CTL, E:ORACLEOR

ADATAORA10CONTROL02.CTL, E:

ORACLEORADATAORA10CONTROL03

.CTL

SQL>

那么从pfile生成spfile看看:

SQL> create spfile from pfile;

文件已创建。

SQL> shutdown immediate

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 159383552 bytes

Fixed Size 1247876 bytes

Variable Size 79693180 bytes

Database Buffers 75497472 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

SQL>

郁闷,居然没有问题。

总结一下:

为了更改控制文件的目录,使用alter system修改参数control_filesspfile中。然后将spfile生成pfile文件,关闭数据库,这时候无论使用spfile还是pfile都无法启动数据库,错误是指定的控制文件的路径不正确。这时候pfile文件的写法是:

*.control_files=’E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL’

修改这个参数的写法:

*.control_files=(E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL)

这样就没有问题了。

问题出来了,我这个参数使用的是oracle的命令修改的spfile文件,而且使用的是oracle命令生成的pfile文件。为什么oracle自己生成的东西会有问题那?还需要手工修改他的格式?

在深入一下:

我将正常运行的数据库的参数文件spfile生成为pfile。这时候pfile文件中的control_files参数的格式还是为:

*.control_files='E:ORACLEORADATAORA10CONTROL01.CTL','E:ORACLEORADATAORA10CONTROL02.CTL','E:ORACLEORADATAORA10CONTROL03.CTL'

但是这时候,使用这个文件还是能够正常启动:

SQL> shutdown immediate

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount pfile=e:oracleora10databaseinitora10.ora

ORACLE 例程已经启动。

Total System Global Area 159383552 bytes

Fixed Size 1247876 bytes

Variable Size 79693180 bytes

Database Buffers 75497472 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

SQL>

大家说说这是为什么,难道我有什么做错的地方吗?

我的数据库版本是:

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

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

转载于:http://blog.itpub.net/222350/viewspace-914125/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值