这篇文章主要介绍“Oracle修改控制文件路径的方法”,在日常操作中,相信很多人在Oracle修改控制文件路径的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle修改控制文件路径的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
控制文件----二进制文件,在数据库启动和数据库运行中有着巨大的作用
参数文件----pfile 可文本编辑
spfile 二进制文件,不可文本编辑
下面介绍两种修改控制文件两种方法
################ 1 #####################
如果在startup里指定了pfile=''的话,Oracle将从你指定的文件作为启动参数文件,如果是没有指定pfile的话,Oracle会先去默认目录($ORACLE_HOME/)下找spfileSID.ora,如果没有找到,则找spfile.ora,如果还是没有,找initSID.ora,这个就是以前的静态参数文件了,如果没有则找init.ora;如果没有找到的话,这时候,启动就会有,找不到参数文件的错误,同时会动态注册实例名到监听服务里。
把对应的controlfile移动到目标路径下,由于control01.ctl的路径没有发生变动所以mv:提示不影响操作
[oracle@sink dbs]$ mv /u01/app/oracle/oradata/sink/control01.ctl /u01/app/oracle/oradata/sink/control01.ctl
mv: `/u01/app/oracle/oradata/sink/control01.ctl' and `/u01/app/oracle/oradata/sink/control01.ctl' are the same file
[oracle@sink dbs]$ mv /u01/app/oracle/fast_recovery_area/sink/control02.ctl /u01/app/oracle/oradata/sink/control02.ctl
一定要先关闭数据库之后才移动控制文件,不然会后面会出一系列错误
13:35:03 SYS @ sink >shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
13:36:03 SYS @ sink >
到$ORACLE_HOME/dbs路径下vim编辑控制文件路径 然后 :wq 保存退出(w 保存 q 退出 q! 强制退出)
[oracle@sink dbs]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@sink dbs]$ vim initsink.ora
*.audit_file_dest='/u01/app/oracle/admin/sink/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/sink/control01.ctl','/u01/app/oracle/oradata/sink/control02.ctl'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
刚我们修改了pfile但是spfile还没有改动,所以先指定使用pfile启动数据库
13:41:29 SYS @ sink >startup pfile=$ORACLE_HOME/dbs/initsink.ora
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 553651280 bytes
Database Buffers 276824064 bytes
Redo Buffers 2371584 bytes
Database mounted.
Database opened.
13:42:13 SYS @ sink >
查看此时的controlifle的路径信息,好了,没错,那么这么pifle是成功的
13:42:13 SYS @ sink >col name for a55
13:43:50 SYS @ sink >select name from v$controlfile;
NAME
-------------------------------------------------------
/u01/app/oracle/oradata/sink/control01.ctl
/u01/app/oracle/oradata/sink/control02.ctl
2 rows selected.
Elapsed: 00:00:00.00
13:44:01 SYS @ sink >
用pfile生成spifle,因为pfile成功了,但是spifle还没有被修改,还没有生效,默认以spfile启动,所以此操作合理
13:44:01 SYS @ sink >create spfile from pfile;
File created.
Elapsed: 00:00:00.02
13:46:59 SYS @ sink >
PS : 如果数据库以spfile启动,然后你在执行 create spfile from pfile 则会报错 ORA-32002: cannot create SPFILE already being used by the instance |
数据库正常关闭,然后,startup 不指定任何参数而数据库又存在spfile,所以oracle 默认 以 spfile启动
13:46:59 SYS @ sink >shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
13:52:08 SYS @ sink >startup
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 553651280 bytes
Database Buffers 276824064 bytes
Redo Buffers 2371584 bytes
Database mounted.
Database opened.
13:52:22 SYS @ sink >
启动后,查询控制文件路径,发现成功转移,故修改控制文件路径成功
13:52:22 SYS @ sink >select name from v$controlfile;
NAME
-------------------------------------------------------
/u01/app/oracle/oradata/sink/control01.ctl
/u01/app/oracle/oradata/sink/control02.ctl
2 rows selected.
Elapsed: 00:00:00.00
13:53:51 SYS @ sink >
到此,关于“Oracle修改控制文件路径的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!