由于数据库意外死机,造成数据库无法使用,且数据没有备份,只能依赖于原有文件的留下来的文件目录,记下修复的过程,希望能帮到其他人。
数据库无法启动原因未知,开启实例lbora会造成服务器直接死机。
本次修复的数据库版本为oracle 10g 10.2.0,按步骤应当同样可以用于oracle 11g的修复。
一.重装数据库
由于一开机就死机,所以在同事的帮助下进入服务器安全模式,然后正常开启服务器。
第一步卸载数据库
直接使用oracle自带的卸载会造成数据库无法删除干净的情况,数据库自带的卸载截图如下。
所以选择另一种删除方式。
彻底删除的步骤如下:
1.关闭oracle所有的服务。可以在windows的服务管理器中关闭;
2.打开注册表:regedit 打开路径: <找注册表 :开始->运行->regedit>
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
删除该路径下的所有以oracle开始的服务名称,这个键是标识Oracle在windows下注册的各种服务。
3.打开注册表,找到路径:
HKEY_LOCAL_MACHINESOFTWAREORACLE
删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息。
4.删除注册的oracle事件日志,打开注册表
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication
删除注册表的以oracle开头的所有项目。
5.删除环境变量path中关于oracle的内容。
鼠标右键右单击“我的电脑-->属性-->高级-->环境变量-->PATH 变量。
删除Oracle在该值中的内容。我这里除了path在perl5lib中也有数据库的路径需要删除
6.重新启动操作系统。
以上1~5个步骤操作完毕后,重新启动操作系统。
7.重启操作系统后各种Oracle相关的进程都不会加载了。这时更改Oracle文件名,用来代替删除操作。(Oracle_Home指Oracle程序的安装目录),这里我将原来的文件命名为oracle1
8.删除C:Program Files下oracle目录。
(该目录视Oracle安装所在路径而定)
9.删除开始菜单下oracle项,如:
C:Documents and SettingsAll Users「开始」菜单程序Oracle - Ora10g
不同的安装这个目录稍有不同。
如果不删除开始菜单下的Oracle相关菜单目录,没关系,这个不影响再次安装Oracle.当再次安装Oracle时,该菜单会被替换。
至此,Windows平台下Oracle就彻底卸载了。
此处参考了文章:
CSDN-专业IT技术社区-登录blog.csdn.net第二步安装数据库
打开oracle安装文件,双击setup.exe一步步安装即可。
第三步恢复数据
一.建立与之前数据库服务名相同的数据库
在开始目录的oracle目录下从中找到Database Configuration Assistant
点击进入
注意是需要恢复的数据库名称,其他步骤点击默认,创建数据库。这里我需要恢复LBORA数据库就建立新的LBORA数据库。
二.替换源文件的数据文件
1.关闭服务器中的Oracle服务
2.替换源文件
从之前备份的oracle1中取出
(1)文件夹:
admin;
oradata(datafile, controlfile,redo【注:数据文件, 控制文件,redo】);
flash_recovery_area三个文件夹。
(2)db_1下的内容
database(PWD开头的文件);
dbs(sp开头的文件);
NETWORK/ADMIN(listener.ora、tnsnames.ora)。
替换oracle文件夹中的相同文件
3.开启服务进行恢复
(1)打开sqlplus,并将服务设置为需要回复的实例名称
C:Documents and SettingsAdministrator>cd D:oracleproduct10.2.0db_1
C:Documents and SettingsAdministrator>D:
D:oracleproduct10.2.0db_1>set oracle_sid=lbora
D:oracleproduct10.2.0db_1>oradim -startup -sid lbora
D:oracleproduct10.2.0db_1>sqlplus /nolog
(2)连接数据库
SQL> conn 用户名/密码 as sysdba 参考SQL> conn sys/lbora as sysdba
(3)创建控制文件
创建一个跟踪文件:alter database backup controlfile to trace as 'D:/ccc.TXT';
取出ccc.TXT中下图所示语句,新建一个txt文件,写入txt文件中,并重命名为lbora.sql控制文件,注意datafile下面的路径是源文件oracle中oradata/lbora下的数据文件,除了TEMP开头的文件,CONTROL开头的文件以及REDO开头的文件,需要将其他文件的路径填入datafile下。
将lbora.sql文件放入D:oracleproduct10.2.0db_1文件夹下。
接下来执行重建过程
备注:需要在startup nomount下进行重建
SQL>shutdown immediate;
已经卸载数据库。
ORACLE 例程已经关闭
SQL> startup nomount;
ORACLE 例程已经启动。
SQL> @lbora.sql
控制文件已创建。
SQL>shutdown immediate;
SQL>startup;
SQL>alter database open;
如果出现错误ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
运行SQL>alter database open resetlogs;
第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:ORACLEPRODUCT10.2.0ORADATALBORASYSTEM01.DBF'
解决方法:
SQL> recover database using backup controlfile;
ORA-00279: 更改 19444901492 (在 03/20/2020 13:59:27 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREALBORAARCHIVELOG2020_03_26O1_MF_1_66140_%U_.ARC
ORA-00280: 更改 19444901492 (用于线程 1) 在序列 #66140 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:oracleproduct10.2.0oradataLBORAREDO01.LOG
已应用的日志。
完成介质恢复。
其中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}下
需要输入LBORA数据库日志所在路径
D:oracleproduct10.2.0oradataLBORAREDO01.LOG
(如果失败,则更换日志文件REDO02.LOG或者REDO03.LOG)
最后执行SQL>alter database open resetlogs;打开数据库,数据库修复完成。
由于重建控制文件时没有添加临时表空间文件,所以需要添加,命令如下
SQL> alter tablespace TEMP add tempfile 'D:oracleproduct10.2.0oradataLBORA
TEMP11.DBF' size 1024M reuse;
至此,已经完成了全部的修复工作,数据库能够正常使用了。
问题解析:
一.打开的是空闲例程:
出现SQL>conn sys/lbora as sysdba
已连接到空闲例程。的问题
是因为oracle安装目录下的admin中缺少文件 ,在相关实例下必须包含图片中所包含的文件,才能正常连接。
二.只恢复了部分数据库问题
是由于重建控制文件的过程中datafile缺少了文件,需要在替换datafile下所有和系统有关的文件后才能进行操作,否则一直会提示创建错误。替换完成后再执行sql文件。
参考网址:https://www.cnblogs.com/arxive/p/9437152.html