2011年3月17日星期四

操作系统崩溃后 Oracle (9i ) 数据库的恢复

场景:
操作系统崩溃,无法正常引导、启动操作系统

处理步骤:

一. 数据备份

1. 使用PE盘(Windows系统)或Linux Live CD(Linux系统)引导系统
如果服务器上有阵列, 注意加载RAID卡驱动,否则认不到硬盘分区

2. 记录如下参数,或备份相关文件,用于重建现场:
  • 内核版本: # uname -a
  • 操作系统版本:# cat /etc/*-release
  • IP地址:# cat etc/sysconfig/network-scripts/ifcfg-eth0 # cat etc/sysconfig/network-scripts/ifcfg-eth0
  • hosts 文件信息: # cat /etc/hosts
  • hostname: #cat /etc/sysconfig/network
  • Oracle用户环境变量信息: # cat /home/oracle/.bash_profile
  • Oracle 版本信息:
1. $ORACLE_HOME/bin/lsnrctl --version
2.cat $ORACLE_BASE/admin/oracle/bdump/alert_`echo $ORACLE_SID`.log | grep Version (看最后一行)

3. 备份如下数据
  • 备份日志相关文件:$ORACLE_BASE/admin/oracle
备份指令: tar -zvcf /home/oracle/backup/admin-oracle.tar.gz $ORACLE_BASE/admin/oracle/
  • 备份监听相关文件:$ORACLE_HOME/network/admin
备份指令:tar -zvcf home/oracle/backup/network-admin.tar.gz $ORACLE_HOME/network/admin/
  • 备份控制文件:ORACLE_HOME/dbs
备份指令:tar -zvcf home/oracle/backup/dbs.tar.gz$ ORACLE_HOME/dbs/
  • 备份数据文件:$ORACLE_BASE/oradata/oracle/
备份指令:tar -zvcf home/oracle/backup/oradata.tar.gz $ORACLE_BASE/oradata/oracle/
  • 备份完整的Oracle安装文件:$ORACLE_BASE (可选)
备份指令:tar -zvcf home/oracle/backup/all.tar.gz $ORACLE_BASE/


注意: 即使备份完成, 原有的已崩溃的服务器也先不要重装或格式化



二. 重建现场
重新选择一台空闲服务器安装与第一步获取相关信息相同版本的操作系统和数据库软件。

注意:
  • 数据量不大的时候推荐使用虚拟机进行安装,便于后面进行数据恢复测试。
  • 注意数据库子版本的差别。
  • 操作系统子版本影响不大,不过最好也一致。
  • 安装数据库的时候选择“只安装数据库软件”,不要建库。

三. 数据恢复

1. 将主机名设置为第一步中记录的主机名

2. 将hosts文件设置为第一步中记录的hosts文件信息

3. 将IP地址设置为第一步中记录的IP地址(为了便于管理,也可省略)

4. 恢复数据:
将第二步中备份的数据拷贝到新安装Oracle的相应目录, 没有则以Oracle用户权限手动创建。

5. 检查监听配置(IP一致时可跳过)


四. 测试
$ sqlplus "/as sysdba"
sql> startup
查看是否出错

如果出现相关错误信息,通过strings命令查看原有数据库spfile文件相关参数在当前环境的有效性。

五. 还原数据

如果知道原有数据库应用相应的账户名和密码,则通过如下指令导出数据库,忘记用户名或密码则通过sys用户修改其密码后执行:
exp ipp_tjj_out/strongippsoft@oracle file=/opt/ora9/ipp_tjj_out-2011.03.17.dmp log=/opt/ora9/ipp_tjj_out-2011.03.17.log


















没有评论: