假设在windows服务器下oracle数据库使用过程中突然出现了操作系统不可用病毒资源不足/工作人员不知情情形下重装了操作系统导致的oracle不可用但是之前的oracle相关文件都还存在可以通过文件恢复的方式来重新拉起数据库服务。
下面的示例为windows服务器中的oracle库文件恢复到另一台windows服务器 windows》windows sidorcl, 版本Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 ORACLE_BASE C:\app\Administrator ORACLE_HOME C:\app\Administrator\product\11.2.0\dbhome_1
参考 https://blog.csdn.net/kelvin1985/article/details/79552077
1。在新的服务器上安装号数据库各种参数/路径和之前的oracle保持一致不用创建数据库。 2。将之前服务器上的admin、flash_recovery_area、oradata这几个文件夹中数据库相关的所有文件拷贝到新服务器上的相同目录下如admin/orclflash_recovery_area/orcloradata/orcl。将老服务器上ORACLE_HOME/dbs/initorcl.ora也拷贝到新服务器相同目录下如果没有这个文件可以将新服务器中ORACLE_HOME/dbs/init.ora文件复制为initorcl.ora,文件内默认数据库名是orcl其他数据库名称的改为一致。 3。启动实例 set ORACLE_SIDORCL SQLPLUS / AS SYSDBA SQL>STARTUP NOMOUNT 构建控制文件 SQL>CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 C:\app\Administrator\oradata\orcl\redo01.log SIZE 50M BLOCKSIZE 512, GROUP 2 C:\app\Administrator\oradata\orcl\redo02.log SIZE 50M BLOCKSIZE 512, GROUP 3 C:\app\Administrator\oradata\orcl\redo03.log SIZE 50M BLOCKSIZE 512 DATAFILE C:\app\Administrator\oradata\orcl\system01.dbf, C:\app\Administrator\oradata\orcl\sysaux01.dbf, C:\app\Administrator\oradata\orcl\undotbs01.dbf, C:\app\Administrator\oradata\orcl\users01.dbf, C:\app\Administrator\oradata\orcl\MFW333.ORA CHARACTER SET ZHS16GBK ; 修改的地方把NOARCHIVELOG改成ARCHIVELOG并增加自己的DATAFILE配置只增加数据文件(_DATA.DBF)临时表空间不要加_TEMP.DBF往后面增加即可注意最后一个不要留逗号。
此一步可能在执行时会出现一个版本的错误将第2步中initorcl.ora文件内compatible参数改为它提示中的第一个版本compatible 11.2.0.4下图66行。
SQL>recover database; SQL>alter database open; 本次实验过程中这条语句提示了ORA-00283ORA-00264大致意思是不需要进行恢复操作不管它继续下一步。
SQL> alter database open; 这一条看它提示是否要加RESETLOGS 或 NORESETLOGS 选项。
到这里数据库已经打开可以进行相应查询操作了但是上面的构建控制文件过程中没有构建到临时表空间需要手动创建 SQL> CREATE TEMPORARY TABLESPACE temp2 TEMPFILE /oradata/orcl/TEMP2.DBF SIZE 200m AUTOEXTEND ON; SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
重新启动实例看与没有问题 SQL>SHUTDOWN SQL>STARTUP
4.网络配置配置监听和服务名 $ORACLE_HOME/network/admin/tnsname.ora和$ORACLE_HOME/network/admin/listener.ora 文件内容可参照下面中间的路径C:\app\Administrator\product\11.2.0\dbhome_1服务名ORCL主机名WIN-H3TAS0CD3J2改成你自己的 《《《《《《《《《《《《《《《《《《《《listener.ora》》》》》》》》》》》》》》》》》》》》》 # listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools.
SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME CLRExtProc) (ORACLE_HOME C:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM extproc) (ENVS "EXTPROC_DLLSONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) (SID_DESC (GLOBAL_DBNAME ORCL) (SID_NAME ORCL) ) )
LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL IPC)(KEY EXTPROC1521)) ) (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST WIN-H3TAS0CD3J2)(PORT 1521)) ) )
ADR_BASE_LISTENER C:\app\Administrator
《《《《《《《《《《《《《《《《《《tnsname.ora》》》》》》》》》》》》》》》 ORACLR_CONNECTION_DATA (DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL IPC)(KEY EXTPROC1521)) ) (CONNECT_DATA (SID CLRExtProc) (PRESENTATION RO) ) )
ORCL (DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST 127.0.0.1)(PORT 1521)) ) (CONNECT_DATA (SERVICE_NAME orcl) ) ) 重新启动监听连接测试: lsnrctl stop lsnrctl start sqlplus sys/oracle127.0.0.1/orcl as sysdba
到此数据库已经可以正常连接使用了。
5。服务自启动 windows就是图方便自启动当然要跟上。 通过上述方式恢复数据库之后系统开机之后实例不会随服务启动服务会启动但是实例不会启动需要做一些设置 a.将系统服务中的OracleOraDb11g_home1TNSListener和OracleServiceorcl服务设为自动启动 b1.开始->程序->Oracle->Configuration and Migration Tools->Oracle Administration Assistant for Windows NT,数据库->orcl->启动关闭选项->服务启动时启动例程,把该项取消就可以了。
b2.打开注册表regeditHKEY_LOCAL_MACHINE/SOFTWARE/ORACLE设置字符串参数ORACLE_SID值ORCL;HKEY_LOCAL_MACHINE/SOFTWARE/ORACLEKEY_OraDb11g_home1,设置ORA_orcl_AUTOSTART为TRUE,ORA_orcl_AUTOSTART为true。
重启下系统服务和实例都自动起来了完美
######################################################
记一次系统重装后恢复2021.3.3
系统越来越卡了安装了太多软件打算重新装下系统拷完C盘资料后关机重启进PE安装系统。
系统重装前信息win10 x64系统oracle11.2.0.4 64位单机库名orcl安装位置E:\app\Administrator归档。
1.安装好win10专业版系统除C盘外其他盘信息未变动。安装vc2005sp1、vc2008将E:\app备份为E:\app1 安装oracle11.2.0.4 64安装路径同之前一样E:\app创建相同名称数据库orclsqlplus登录正常。
2.在系统服务中关闭所有oracle相关服务也可cmd关闭oracle服务和监听服务。将备份文件夹E:\app1下的dmin/orclflash_recovery_area/orcloradata/orcl这几个目录中文件覆盖到本次安装目录E:\app下相应文件夹启动数据库提示无法定位数据文件MFW333.ORA,原因为此文件原位置在E:\app\Administrator\product\11.2.0\dbhome_1\database\MFW333.ORA,本次复制该文件到了E:\app\Administrator\oradata\orcl\MFW333.ORA。关闭数据库然后启动到nomount状态以下为按照本文档前述方法的后续操作记录。
Microsoft Windows [版本 10.0.19042.804] (c) 2020 Microsoft Corporation. 保留所有权利。
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期三 3月 3 20:07:46 2021
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 E:\app\Administrator\oradata\orcl\redo01.log,E:\app\Administrator\fast_recovery_area\orcl\REDO01_1.LOG SIZE 50M BLOCKSIZE 512, 9 GROUP 2 E:\app\Administrator\oradata\orcl\redo02.log,E:\app\Administrator\fast_recovery_area\orcl\REDO02_1.LOG SIZE 50M BLOCKSIZE 512, 10 GROUP 3 E:\app\Administrator\oradata\orcl\redo03.log,E:\app\Administrator\fast_recovery_area\orcl\REDO03_1.LOG SIZE 50M BLOCKSIZE 512 11 DATAFILE 12 E:\app\Administrator\oradata\orcl\system01.dbf, 13 E:\app\Administrator\oradata\orcl\sysaux01.dbf, 14 E:\app\Administrator\oradata\orcl\undotbs01.dbf, 15 E:\app\Administrator\oradata\orcl\users01.dbf, 16 E:\app\Administrator\oradata\orcl\MFW333.ORA 17 CHARACTER SET ZHS16GBK 18 ; CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG * 第 1 行出现错误: ORA-01503: CREATE CONTROLFILE 失败 ORA-01167: 这两个文件为相同的文件/组号或相同的文件 ORA-01517: 日志成员: E:\app\Administrator\fast_recovery_area\orcl\REDO01_1.LOG ORA-01517: 日志成员: E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
SQL> SQL> SQL> SQL> SQL> SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 (E:\app\Administrator\oradata\orcl\redo01.log,E:\app\Administrator\fast_recovery_area\orcl\REDO01_1.LOG) SIZE 50M BLOCKSIZE 512, 9 GROUP 2 (E:\app\Administrator\oradata\orcl\redo02.log,E:\app\Administrator\fast_recovery_area\orcl\REDO02_1.LOG) SIZE 50M BLOCKSIZE 512, 10 GROUP 3 (E:\app\Administrator\oradata\orcl\redo03.log,E:\app\Administrator\fast_recovery_area\orcl\REDO03_1.LOG) SIZE 50M BLOCKSIZE 512 11 DATAFILE 12 E:\app\Administrator\oradata\orcl\system01.dbf, 13 E:\app\Administrator\oradata\orcl\sysaux01.dbf, 14 E:\app\Administrator\oradata\orcl\undotbs01.dbf, 15 E:\app\Administrator\oradata\orcl\users01.dbf, 16 E:\app\Administrator\oradata\orcl\MFW333.ORA 17 CHARACTER SET ZHS16GBK 18 ; CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG * 第 1 行出现错误: ORA-01503: CREATE CONTROLFILE 失败 ORA-01565: 标识文件 E:\app\Administrator\fast_recovery_area\orcl\REDO02_1.LOG 时出错 ORA-27041: 无法打开文件 OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 (E:\app\Administrator\oradata\orcl\redo01.log,E:\app\Administrator\fast_recovery_area\orcl\REDO01_1.LOG) SIZE 50M BLOCKSIZE 512, 9 GROUP 2 (E:\app\Administrator\oradata\orcl\redo02.log,E:\app\Administrator\fast_recovery_area\orcl\REDO02_1.LOG) SIZE 50M BLOCKSIZE 512, 10 GROUP 3 (E:\app\Administrator\oradata\orcl\redo03.log,E:\app\Administrator\fast_recovery_area\orcl\REDO03_1.LOG) SIZE 50M BLOCKSIZE 512 11 DATAFILE 12 E:\app\Administrator\oradata\orcl\system01.dbf, 13 E:\app\Administrator\oradata\orcl\sysaux01.dbf, 14 E:\app\Administrator\oradata\orcl\undotbs01.dbf, 15 E:\app\Administrator\oradata\orcl\users01.dbf, 16 E:\app\Administrator\oradata\orcl\MFW333.ORA 17 CHARACTER SET ZHS16GBK 18 ;
控制文件已创建。
SQL> SQL> SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01113: 文件 1 需要介质恢复 ORA-01110: 数据文件 1: E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
SQL> recover database; 完成介质恢复。 SQL> SQL> alter database open;
数据库已更改。
SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。
Total System Global Area 5127602176 bytes Fixed Size 2290120 bytes Variable Size 1040191032 bytes Database Buffers 4076863488 bytes Redo Buffers 8257536 bytes 数据库装载完毕。 数据库已经打开。 SQL> select * from v$version;
BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for 64-bit Windows: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production
SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 329 下一个存档日志序列 331 当前日志序列 331 SQL> exit 从 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
C:\Users\Administrator>rman target /
恢复管理器: Release 11.2.0.4.0 - Production on 星期三 3月 3 20:19:25 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID1566391699)
RMAN> list backup 2> ;
使用目标数据库控制文件替代恢复目录 说明与资料档案库中的任何备份都不匹配
RMAN>
通过以上步骤归档信息还存在但是rman备份的信息不在了之前是通过rman做过几次备份的。按照本文档前端所述添加临时表空间提示临时表空间文件已是数据库一部分跳过。监听和服务名部分未操作。重启了数据库服务和操作系统测试暂未出现问题。
本次恢复没有特殊情况如断电或介质损坏数据库服务也是随系统正常关闭整体情况比较理想。通过以上恢复数据库是恢复了用户、表都还在但是没有验证是否有数据丢失问题。
最后想起之前有通过rman进行过全备份且数据库处于归档模式下归档文件和redo文件也是存在的不通过以上方式应该也是可以做恢复的。
############################大条分割线############################
【转自:美国高防服务器 http://www.558idc.com/usa.html转载请说明出处】