重装系统后Oracle数据库恢复的方法
在开发机器上经常会遇到重装系统的问题,重装之前如果ORACLE没有及时备份的话重装之后就纠结了,数据还原很头疼。各种娘中只能找到一些ORACLE安装与重装系统前目录相同的解决办法,目录不同就没招了。我用的是oracle11G。老版的应该相似。经过我的尝试,找到了几个关键点,现在分享出来。
方法(一)
- 关闭数据库
win + R 输入 sql plus \nolog
SQL> conn / as sysdba
已连接
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
-
- 手动关闭oracle所有服务
复制旧的Oracle整个目录 D:\app\ 到 D:\app_old\ (重装系统或重装数据库之前操作)
新安装的Oracle整个目录备份 D:\app\ 到 D:\app_new\ (安全起见)
- 手动关闭oracle所有服务
-
覆盖
将D:\app_old\administrator目录下的admin、cfgtoollogs、diag、flash_recover_area、oradata 覆盖到D:\app\administrator下。
-
控制文件CONTROL01.CTL
oracle数据库的控件文件有两个,一个是在oradata\orcl中,名称为CONTROL01.CTL
另外一个是在flash_recovery_area\orcl,名称为CONTROL01.CTL
控制文件也可能是CONTROL02.CTL 或CONTROL03.CTL
2、oradata目录的datafile,tempfile,logfile
原数据库中的文件路径如果和重装后的路径不一致(重装之后分区没变,但是盘符D盘变成了E盘,有其他东西又不方便改,就只能用D了,所以需要改一下数据文件的路径),将这些路径全部修改之后就可以了,具体步骤如下:
- 启动各项oracle服务
- 用sqlplus /nolog命令进入oracle命令符
- 用connect sys/change_on_install as sysdba;命令获得系统管理权限并登录。
- 用select instance_name from v$instance;确认当前的数据库实例是否正确,如果不是oradb需要使用 set oracle_sid来修改默认的oracle实例。
- 将D:\app\administrator\oradata\orcl\CONTROL02.CTL控制文件复制到D:\app\administrator\flash_recovery_area\orcl中,替换目录中原有的控制文件,注意:名称不一样的话改一下名字。
- 使用startup nomount用无装载模式启动数据库。
- 设置数据库为装载模式:alter database mount;
- 查看数据文件清单:select name from v$datafile;
会看到如下结果:
E:\APP\Administrator\ORADATA\ORADB\SYSTEM01.DBF
E:\APP\Administrator\ORADATA\ORADB\SYSAUX01.DBF
E:\APP\Administrator\ORADATA\ORADB\UNDOTBS01.DBF
E:\APP\Administrator\ORADATA\ORADB\USERS01.DBF
E:\APP\Administrator\ORADATA\ORADB\SDMS_DATA01.DBF
- 修改数据文件路径,依次执行如下命令:
SQL> alter database rename file 'E:\app\Administrator\oradata\orcl\SYSTEM01.DBF' to 'D:\app\Administrator\oradata\orclSYSTEM01.DBF' ;
- 查看临时文件清单:select name from v$tempfile;
SQL> alter database rename file 'E:\app\Administrator\oradata\orcl\TEMP01.DBF' to 'D:\app\Administrator\oradata\orcl\TEMP01.DBF' ;
- 查看日志文件清单:select * from v l o g f i l e ; s e l e c t ∗ f r o m v logfile; select * from v logfile;select∗fromvlogfile;
SQL> alter database rename file 'E:\app\Administrator\oradata\orcl\REDO03.LOG' to'D:\app\Administrator\oradata\orcl\REDO03.LOG';
- 启动数据库:alter database open;
SQL> alter database open;
好了,现在可以用客户端连接这个数据库了。
关于控制文件错误导致的问题
控制文件的错误,请检查警报日志中获得更多信息
通过:/app/administrator/diag/rdbms/ora11g/ora11g/alert/log.xml文件中找出实例启动日志
参考资料:
https://www.cnblogs.com/cnsend/p/13783104.html
https://www.cnblogs.com/sparkbj/articles/6146247.html