作者:雨竹清风
此方法适用于二进制的初始化参数文件来移动控制文件。如果不确定是pfile还是spfile。首先要以SYS或SYSTEM用户登陆数据库,然后用如下的命令:show parameter pfile。
1.首先利用数据字典v$controlfile来获取现有控制文件的名字。
SQL> desc v$controlfile
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
STATUS VARCHAR2(7)
NAME VARCHAR2(513)
IS_RECOVERY_DEST_FILE VARCHAR2(3)
BLOCK_SIZE NUMBER
FILE_SIZE_BLKS NUMBER
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
2.修改SPFILE,使用alter system set control_files命令来改变控制文件的位置。
SQL> alter system set control_files='C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL','c:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','c:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL' scope=spfile;
系统已更改。
3.关闭数据库,准备移动控制文件。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4.移动控制文件。当然首先保证所要移动的文件目录存在,不然会出现以下错误。
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
5.启动数据库
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 83887460 bytes
Database Buffers 79691776 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
6.查询是否已经成功移动到所要移动的目录下
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL