修改control_file的存放路径

control_file是oracle数据库中很重要的一部分,它存放了启动oracle数据库的必要信息,如:数据库名称、数据库创建信息、表空间信息、数据文件信息、日志文件信息、备份信息、检查点信息等......无论是启动数据库或者数据库在运行的时候这个文件都启着重要的作用,如果数据库找不到这个文件的位置,数据库将会报错,无法正常运行。
这里做一个简单的测试:
数据库环境如下:
图片 
OS:
Redhat Enterprise Linux 6.3 x86_64


首先启动数据库
SQL> startup
ORACLE instance started.


Total System Global Area  557842432 bytes
Fixed Size                  2085456 bytes
Variable Size             155192752 bytes
Database Buffers          394264576 bytes
Redo Buffers                6299648 bytes
Database mounted.
Database opened.


查看当前控制文件所在位置
SQL> show parameter control_files;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /oracle/app/oradata/orcl/contr
                                                         ol01.ctl, /oracle/app/oradata/
                                                         orcl/control02.ctl, /oracle/ap
                                                         p/flash_recovery_area/ORCL/con
                                                         trol03.ctl 
可以发现我们现在有三个控制文件,分别是control01.ctl、control02.ctl、control03.ctl,其中01和02控制文件放在了同一个目录下,03放在快速恢复区,现在我来给02控制文件改个名字使数据库找不到它,看看数据库报什么错。


先来到02所在的目录下
[oracle@ww ~]$ cd /oracle/app/oradata/orcl/
[oracle@ww orcl]$ pwd
/oracle/app/oradata/orcl
[oracle@ww orcl]$ ls -l control0*
-rw-r----- 1 oracle dba 7061504 Jan  5 21:05 control01.ctl
-rw-r----- 1 oracle dba 7061504 Jan  5 21:05 control02.ctl
修改control02.ctl名字
[oracle@ww orcl]$ mv control02.ctl control02.ctl.bak
[oracle@ww orcl]$ ls -l control0*
-rw-r----- 1 oracle dba 7061504 Jan  5 21:05 control01.ctl
-rw-r----- 1 oracle dba 7061504 Jan  5 21:05 control02.ctl.bak
修改成功~!


然后看看数据库这边的情况
连接到sysdba,随便查一个视图
SQL> conn / as sysdba
Connected.
SQL> select name from v$datafile;
select name from v$datafile
                 *
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/app/oradata/orcl/control02.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3


报错了~!


它说无法打开'/oracle/app/oradata/orcl/control02.ctl'这个文件
没有找到这个文件或目录


说明control02.ctl这个文件已经不存在,刚才以改control02.ctl名字的方式来模拟控制文件丢失成功,当前数据库已无法正常使用。


现在马上把名字改回去然后重新连接数据库就好了
[oracle@ww orcl]$ mv control02.ctl.bak control02.ctl
[oracle@ww orcl]$ ls -l control0*
-rw-r----- 1 oracle dba 7061504 Jan  5 21:15 control01.ctl
-rw-r----- 1 oracle dba 7061504 Jan  5 21:15 control02.ctl


重新连接数据库
 SQL> conn / as sysdba
Connected.
SQL> select name from v$datafile;


NAME
--------------------------------------------------------------------------------
/oracle/app/oradata/orcl/system01.dbf
/oracle/app/oradata/orcl/undotbs01.dbf
/oracle/app/oradata/orcl/sysaux01.dbf
/oracle/app/oradata/orcl/users01.dbf
/oracle/app/oradata/orcl/whj.dbf


控制文件是一个二进制文件,由oracle自行维护,一个Oracle数据库至少有一个控制文件,鉴于控制文件的重要性,在默认情况下,Oracle会有三份一模一样的控制文件进行冗余,三份文件的一致性由Oracle自行维护。建议控制文件至少有两份,分别放在不同磁盘下,以提高可用性。


下面我来模拟修改一下控制文件的路径:


先查看一下控制文件位置
SQL> show parameter control_files;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /oracle/app/oradata/orcl/contr
                                                         ol01.ctl, /oracle/app/oradata/
                                                         orcl/control02.ctl, /oracle/ap
                                                         p/flash_recovery_area/ORCL/con
                                                         trol03.ctl
发现control01.ctl和control02.ctl还在同一个位置,我把control02.ctl换个位置,放到/home/oracle下
[oracle@ww orcl]$ mv control02.ctl /home/oracle/control02.ctl
[oracle@ww orcl]$ cd /home/oracle
[oracle@ww ~]$ ls -l control02.ctl 
-rw-r----- 1 oracle dba 7061504 Jan  5 22:03 control02.ctl


查看刚才那个目录control02.ctl已经不存在
[oracle@ww orcl]$ ls -l control*
-rw-r----- 1 oracle dba 7061504 Jan  5 22:05 control01.ctl
[oracle@ww orcl]$ pwd
/oracle/app/oradata/orcl


然后关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


现在启动数据库肯定会报错
SQL> startup
ORACLE instance started.


Total System Global Area  557842432 bytes
Fixed Size                  2085456 bytes
Variable Size             155192752 bytes
Database Buffers          394264576 bytes
Redo Buffers                6299648 bytes
ORA-00205: error in identifying control file, check alert log for more info   
检查到控制文件错误,让我们去检查报警日志文件信息
 
报警日志文件目录如下:
[oracle@ww bdump]$ pwd
/oracle/app/admin/orcl/bdump


跟踪一下报警日志文件
[oracle@ww bdump]$ tail -f alert_orcl.log 


再次启动数据库报警日志显示以下错误
ORA-00202: control file: '/oracle/app/oradata/orcl/control02.ctl'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Sun Jan  5 22:18:41 2014
ORA-205 signalled during: ALTER DATABASE   MOUNT... 
  
 无法获取文件 '/oracle/app/oradata/orcl/control02.ctl'
没有这个文件或目录


下面是解决方法:


[oracle@ww dbs]$ pwd
/oracle/app/product/10.2.0/db_1/dbs
[oracle@ww dbs]$ ll
total 6948
-rw-r----- 1 oracle dba     112 Dec  5 02:04 alert_orcl.log
-rw-rw---- 1 oracle dba    1552 Jan  5 22:18 hc_orcl.dat
-rw-r----- 1 oracle dba    8385 Sep 11  1998 init.ora
-rw-r--r-- 1 oracle dba   12920 May  3  2001 initdw.ora
-rw-r----- 1 oracle dba    2441 Jan  5 20:19 initorcl.ora
-rw-r----- 1 oracle dba      24 Nov 26 07:33 lkORCL
-rw-r----- 1 oracle dba    1536 Dec  5 02:37 orapworcl
-rw-r----- 1 oracle dba 7061504 Dec  6 07:31 snapcf_orcl.f
-rw-r----- 1 oracle dba    2560 Jan  5 20:57 spfileorcl.ora
 /oracle/app/product/10.2.0/db_1/dbs目录下,有个spfile实例名.ora文件


将数据库启动到nomount状态
SQL> startup nomount;
ORACLE instance started.


Total System Global Area  557842432 bytes
Fixed Size                  2085456 bytes
Variable Size             155192752 bytes
Database Buffers          394264576 bytes
Redo Buffers                6299648 bytes


以刚才的spfile生成一个pfile文件
SQL> create pfile='$ORACLE_HOME/dbs/pfileorcl.ora' from spfile='$ORACLE_HOME/dbs/spfileorcl.ora';  


File created.


修改pfile  
vi pfileorcl.ora
*.control_files='/oracle/app/oradata/orcl/control01.ctl','/oracle/app/oradata/orcl/control02.ctl','/oracle/app/flash_recovery_area/ORCL/control03.ctl'这项指定控制文件路径的参数,把第二个control02.ctl的路径改成/home/oracle/control02.ctl即可。


*.control_files='/oracle/app/oradata/orcl/control01.ctl','/home/oracle/control02.ctl','/oracle/app/flash_recovery_area/ORCL/control03.ctl'
保存退出~!


然后指定pfile文件路径启动数据库
SQL> startup pfile='$ORACLE_HOME/dbs/pfileorcl.ora'
ORACLE instance started.


Total System Global Area  557842432 bytes
Fixed Size                  2085456 bytes
Variable Size             155192752 bytes
Database Buffers          394264576 bytes
Redo Buffers                6299648 bytes
Database mounted.
Database opened.


OK数据库启动完毕~!


最后再将这个pfile生成一个spfile文件将以前的spfile覆盖
SQL> create spfile='$ORACLE_HOME/dbs/spfileorcl.ora' from pfile='$ORACLE_HOME/dbs/pfileorcl.ora';


File created.
 
 重启数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.


Total System Global Area  557842432 bytes
Fixed Size                  2085456 bytes
Variable Size             155192752 bytes
Database Buffers          394264576 bytes
Redo Buffers                6299648 bytes
Database mounted.
Database opened.
重启正常


再查看控制文件位置
SQL> show parameter control_files;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /oracle/app/oradata/orcl/contr
                                                         ol01.ctl, /home/oracle/control
                                                         02.ctl, /oracle/app/flash_reco
                                                         very_area/ORCL/control03.ctl 
control02.ctl文件位置已经更换到/home/oracle下


测试成功~! 

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

转载于:http://blog.itpub.net/28834607/viewspace-1295266/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中的信息,"Unable to access jarfile cracker.jar"错误是由于无法访问到cracker.jar文件导致的。解决这个问题的步骤如下: 1. 首先,确保你已经成功配置了Java JDK,并且在cmd中输入"java -version"可以正确显示Java的版本信息。 2. 确保存放破解文件jar包的文件夹路径中没有中文或特殊字符。如果有的话,将文件夹路径修改为不包含中文或特殊字符的路径。 3. 打开cmd,输入"java -jar 文件目录",其中"文件目录"是指cracker.jar文件的完整路径,尝试打开jar文件。 如果上述步骤都没有解决问题,可以参考引用\[2\]中的解决方案: 1. 打开MyEclipse,点击"Tools"下的"ReplaceJarFile",然后选择MyEclipse的安装目录下的Common\plugins文件夹(或者根据MyEclipse的版本选择正确的插件目录)。 2. 再点击"Tools"下的"SaveProperities"保存修改。 3. 检查MyEclipse是否成功打开。如果仍然失败,有两种解决方案: - 第一种解决方案是选择"Activite",然后选择"Web activation",检查"systemid"是否与之前获得的"systemid"相同,如果不同,将MyEclipse中的"systemid"复制到破解软件中的相应位置,然后按照之前的步骤重新执行。 - 第二种解决方案是选择"Activite",然后选择"I already have an activation codeyo",将之前解析得到的"ACTIVATION_KEY"复制粘贴到左侧,然后继续执行相应步骤。 希望以上步骤能够帮助你解决"Unable to access jarfile cracker.jar"的问题。 #### 引用[.reference_title] - *1* *2* [Myeclipse破解失败&&error: unable to access jarfile cracker.jar解决方法](https://blog.csdn.net/weixin_45623750/article/details/110393217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值