Snowfun

导航

 

create spfile from pfile
读$ORACLE_HOME/dbs/spfile<sid>.ora文件,创建的pfile是 $ORACLE_HOME/dbs/init<sid>.ora
create pfile from spfile则与上相反。

/home/u01/app/oracle/product/11.2.3/dbhome_1/dbs

 

控制文件是二进制文件(不会超过100m,一般是几m大小),控制文件记录了数据库的结构和行为。在mount时候读
在数据库open时一直使用同,丢失需要恢复。

--内存中的值。control_files是静态参数,想要改变必须重新启动数据库。
select * from v$controlfile;
--参数文件中的值。不需要重启便生效
select value from V$spparameter where name='control_files';

select  CONTROLFILE_SEQUENCE# from v$database;
select TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED from V$CONTROLFILE_RECORD_SECTION; 


 

一、Window oracle更改控制文件路径

1.查看控制文件路径

select name from v$controlfile; 

1.通过sqlplus as sysdba打开数据库,查看控制文件路径

sqlplus SYS/SYS@seinescm as sysdba

2.使用命令创建pflie文件

create pfile='d:\init.ora' from spfile;

3.打开pfile文件修改控制文件路径

 

4.使用命令关闭数据库

shutdown immediate

手动复制控制文件到存储的新目录

 

5.方一

使用show parameter pfile,确定是否使用了spfile;

上图是有提示已经使用了SPFILE了,则直接执行如下命令修改里面的控制文件路径即可

alter system set control_files='D:\MoveOracle\CONTROL01.CTL','D:\MoveOracle\CONTROL02.CTL' scope=spfile;

 

5.方二:

使用pfile从d:\init.ora启动

startup pfile='d:\init.ora';

 

通过指定的pfile文件创建spfile文件

create spfile='D:\Oracle\product\11.2.0\dbhome_1\dbs\spfileseinescm.ora' from pfile='d:\init.ora';

 

验证如下:

6.通过shutdown immediate关闭数据库

7.startup force强制启动数据库

 

二、减少控制文件的个数

减少控制文件,实验的目的,有一个控制文件损坏,我们要将损坏的控制文件剔除。
1.修改参数文件,并验证
2.停止数据库
3.启动数据库
4.验证,查看v$controlfile

需要重启数据库才生效 startup force--重新启动数据库,


三、增加控制文件的个数

 1.修改参数文件

--修改二进制的初始化参数文件中的control_files选项
alter system set control_files='D:\oracle\oradata\nalgene\CONTROL01.CTL','D:\oracle\oradata\nalgene\CONTROL01.CTL' scope=spfile;

2.重新启动数据库,使修改的参数起作用

提示错误:ORA-00214: control file 'D:\ORACLE\ORADATA\nalgene\CONTROL01.CTL' version 9499 inconsistent with file 'D:\ORACLE\ORADATA\nalgene\CONTROL02.CTL' version 9483
因为CONTROL02.CTL刚才脱离了数据库,没有参加修改,CONTROL01.CTL已经变化了,二CONTROL02.CTL没有变化,所以时间戳不正确了。

3.复制控制文件

--使用操作系统的命令将老的控制文件覆盖
SQL> host copy D:\ORACLE\ORADATA\nalgene\CONTROL01.CTL D:\ORACLE\ORADATA\nalgene\CONTROL02.CTL


4.启动数据库

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01507: database not mounted
因为我们处于数据库的nomount状态,想要open不能跨越mount台阶,所以必须先mount数据库。

SQL> alter database mount;
启动到mount状态
Database altered.

SQL> alter database open;
启动到open状态
Database altered.

5.验证,查看v$controlfile

select * from v$controlfile;
select value from v$spparameter where name='control_files'

 

PS:若需要再增加第三个控制文件

1.修改参数文件alter system set.....

2.重启数据库

提示错误:

ORA-00205: error in identifying control file, check alert log for more info
因为不存在CONTROL03.CTL文件,所以数据库报错,没有找到指定的控制文件。

3.复制控制文件

host copy D:\ORACLE\ORADATA\nalgene\CONTROL01.CTL D:\ORACLE\nalgene\ORA10\CONTROL03.CTL
将最新的控制文件拷贝到CONTROL03.CTL文件,使三个控制文件完全相同
4.启动数据库

启动到mount状态alter database mount;
启动到open状态alter database open;
 

posted on 2015-09-13 11:52  Snowfun  阅读(790)  评论(0)    收藏  举报