重装操作系统后 Oracle 11g 数据库数据还原
场景描述:
由于SSD系统盘损坏,更换硬盘后重装了操作系统,Oracle数据库之前安装在D盘(另一个硬盘),更换硬盘多添加一个盘符重装系统后盘符从D变成E,也就是之前的D:/app/... 变成了现在的 E:/app/...,重新安装Oracle 11g(11.2.0.4)数据库到D:/app 目录下后,然后停止所有Oracle开头的服务准备数据恢复。
数据文件恢复:
①表空间数据恢复:
1.先备份 %Oracle_HOME%/oradata 下的同名文件夹,我的是orcl 根据实际实例名(SID)确定。
2.将E盘 %Oracle_HOME%/oradata 下的orcl 拷贝到 D盘的同路径下。
本例: E:\app\admin\oradata\orcl --> D:\app\admin\oradata\orcl
②数据库启动配置恢复:
1.先备份 D:\app\admin\product\11.2.0\dbhome_1\database 为 database_bak
2.拷贝 E:\app\admin\product\11.2.0\dbhome_1\ 目录下的 database 文件夹 到 D:\app\admin\product\11.2.0\dbhome_1\ 目录
3.检查 database 文件夹里(非常重要)
initorcl.ora 和 spfileorcl.ora 两个文件里
*.local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=localhost)))'
是否匹配 如果host 是计算机名或不匹配当前新系统将导致服务启动后提示连接到空闲的实例,startup命令时会报:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=UFO)(PORT=1521))'
③数据库监听NETWORK恢复
1.备份 D:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN 文件夹
2.将 E:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN 拷贝 到 D:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN
3.检查 listener.ora 和 tnsnames.ora 配置是否正确
④控制文件恢复
1.在D:\app\admin\product\11.2.0\dbhome_1\database 下查看 control_files 配置指向
2.然后备份 D:\app\admin\fast_recovery_area\orcl 下的 control*.ctl 文件 本例为 control02.ctl
3.将E盘同目录下的 ctl文件拷贝到当前目录即可。
测试:
1.重启 OracleOraDb11g_home1TNSListener、OracleServiceORCL 服务。
2.命令行登录重装系统前存在的用户并测试表是否存在。
3.使用plsql测试下表数据是否正常。
一切OK,恢复成功!