oracle启找不到控制文件

来源:互联网 发布:des加密算法 c语言 编辑:程序博客网 时间:2024/05/17 06:05

今天没事看了下oracle的闪回特性,结果手贱把flash_recovery_area 中的文件rm -rf *(ps:在正式的库上,千万要慎重rm   * 这类的操作,看过很多案例,因为这个操场出事故)

后果就是关闭数据库的时候报错

shutdown immediate 报找不到控制文件

于是乎做了如下处理:

1,shutdown abort   强制关掉数据库

2,startup nomount    把数据库打开到只读取参数文件的状态

3,create pfile=''/u01/app/oracle/admin/DRAGON/pfile/spfileDRAGON.txt‘  from spfile

4,alter system set  control_file='''/u01/app/oracle/oradata/DRAGON/control01.ctl'  scope=spfile

5,重启数据库


说明:

由于我这里是误删了闪回区的所有文件,对于闪回去存的是什么文件以后再讨论,里面存了控制文件,并且写在spfile参数里了

所以数据库启动时,读取参数文件,读取控制文件的位置,启动控制文件时,因为文件删掉了,所以启动失败了。只要把参数文件改下就行了


oracle 参数文件

oracle的参数文件有两种,一种是pfile的方式,一种是spfile的方式。

1,pifle的方式,pifle文件时静态的文件,存放在本地磁盘上,可以用记事本打开,修改参数后,需要重启数据库,参数才能生效

2,spfile的方式 spfile文件时存放在服务端的,没有存在本地磁盘上,不能用记事本打开,是二进制文件,修改参数可以当时生效,不需要重启数据库

3,oracle启动方式是优先于pfile

延迟   

参数改变的方式 :

1. scope=spfile: 对参数的修改记录在服务器初始化参数文件中,修改后的参数在下次启动DB时生效。适用于动态和静态初始化参数。
2. scope=memory: 对参数的修改记录在內存中,对于动态初始化参数的修改立即生效。在重启DB后会丟失,会复原为修改前的参数值。
3. scope=both:   对参数的修改会同时记录在服务器参数文件和內存中,对于动态参数立即生效,对静态参数不能用这个选项。
   如果使用了服务器参数文件,则在执行alter system语句时,scope=both是default的选项。

   如果沒有使用服务器参数文件,而在执行alter system语句时指定scope=spfile|both都会出错。

oracle的启动关闭几种方式

1,启动方式
startup :使oracle 经历3个阶段,并且打开到用户使用
startup restrict:   oracle 经历3个阶段,并且已限定模式打开数据,只有特定的权限的用户的用户才才能使用和访问数据库
startup nomout : 在成功打开数据库实例之后,停止进程(打开oracle 启动的参数文件) 分配内存,使用rman 必须startup  nomount成功
startup mount:  在成功打开数据库实例,并加载数据库后,停止进程(打开oracle 控制文件),如果需要恢复system tablesapce 非常有用
startup read only :使用数据库已read only的方式打开数据库,不支持dml,可以查询数据库,如果只在执行恢复操作,并且希望
确保在使用resetlogs命令来提交数据库实例之前的将数据库恢复到当前 的时间点,这个命令非常有用。



2,关闭数据库命令:

shutdown (shutdown mormal) 等待所有的用户会话,断开后,关闭数据库(如果一个sesssion 要使用很长时间,那就要等很久,这个不科学)不需要实例恢复
shutdown immediate    清楚当前所有的回话,回滚所有未提交事务(读undo段(单块读)),不需要恢复实例
shutdown abort   实例崩溃(相当数据宕机,断电),需要实例恢复
0 0