华丹快速开发平台的客户中,使用oracle作为系统库及业务库占相当大的比例。这里我们分享一个oracle数据库快速还原的经验。

在oracle数据库日常运维中,偶尔由于特殊原因(如误操作)导致oracle数据库无法启动。虽然有备份,但一般备份间隔都是按日备的,一天的业务数据也相当可观,丢失往往情况比较严重,所以尽力恢复数据库,保持最新的数据。

很多情况下通过DBA知识都可以修复,但是没有确定把握前,最好勿动,否则可能会让问题更加严重造成数据无法修复。这时可以先尝试一下将服务器上的oracle数据文件备份下来(此时已无法用expdp导出数据),在本地电脑上重新安装一套oracle,尝试将数据还原,如果成功并检查数据无误,那后面就好说,可以尝试修复服务器上的oracle,无法修复也可以重装,然后还原数据。

方法如下:

1、先将服务器安装路径如D:\app\Administrator中的所有文件备份出来,保存到本地电脑如D:\数据备份\oracle\Administrator文件夹下。

2、在本地电脑上安装相同版本oracle,安装目录要与服务器的安装目录相同,如D:\app\Administrator

3、创建数据库时,确保ORACLE_SID与原数据库相同,此处ORACLE_SID=orcl,安装好数据库后,创建好表空间信息,也与原数据库相同,如果原来的有临时表空间,也要创建(和原来的一样)

4、创建成功后,会在D:\app\Administrator\oradata下出现与ORACLE_SID同名的文件夹orcl,即D:\app\Administrator\oradata\orcl

5、在控制面板->管理工具->服务中,停止所有oracle服务。

6、从备份目录中拷贝oracle数据库文件:

(1)把D:\数据备份\oracle\Administrator\oradata\目录下的oracle文件夹完整拷贝到D:\app\Administrator\oradata\目录下。

(2)将D:\数据备份\oracle\Administrator\product\11.2.0\dbhome_1\database目录下文件拷贝到D:\app\Administrator\product\11.2.0\dbhome_1\database

(3)将D:\数据备份\oracle\Administrator\product\11.2.0\dbhome_1\network\admin目录下文件拷贝到D:\app\Administrator\product\11.2.0\dbhome_1\network\admin下。

7、修改tnsnames.ora文件。

打开D:\app\Administrator\product\11.2.0\dbhome_1\network\admin目录下的tnsnames.org文件,修改如下

# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

(CONNECT_DATA =

(SID = CLRExtProc)

(PRESENTATION = RO)

)

)

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = T520)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

对应修改ORCL中的数据

(1)HOST为新数据库所在地址,可以填写IP、主机名、localhost。

(2)PORT为新数据库端口号。

(3)SERVICE_NAME为前面SID设置的值。

8、复制控制文件

把D:\数据备份\oracle\Administrator\flash_recovery_area\orcl下的CONTROL02.CTL(这个文件和用户有关)文件copy到新安装的对应目录下(可把新的进行重命名,以备用。)。

9、重新启动停止的oracle服务。