一、需求分析
服务器A中的数据库实例被删除,幸好dbf文件还在,遂准备由dbf文件恢复数据到服务器B续命,待恢复的数据库实例名为 orcl1
服务器B中的数据库为新安装,已经初始化好 orcl 实例,首先对比两个实例的dbf文件
↑ 服务器A中待恢复的 orcl1 实例dbf文件 ↑
↑ 服务器B中的 orcl 实例dbf文件 ↑
对比可知新增的dbf文件是PORTAL.DBF、SDE.DBF、WZYZT.DBF,猜测各自对应三个同名用户
思路就出来了:
1、新建orcl1实例
2、新增三个表空间文件
3、新增三个同名用户,分别授权
4、恢复数据查看校验
二、创建orcl1实例
1、打开 “开始 - 所有程序 - Oracle - OraDb11g_home1 - 配置和移植工具 - Database Configuration Assistant”
步骤 1:默认
步骤 2:默认
步骤 3:全局数据库名:orcl1,SID:orcl1
步骤 4:默认
步骤 5 填写管理员账户的密码
后面全部默认
确认开始创建orcl1实例
done,使用 PL/SQL 进行连接测试
三、恢复dbf
1、使用 PL/SQL 连接到orcl1实例,创建表空间及用户,对用户授权
create tablespace portal datafile 'C:appAdministratororadataorcl1portal.dbf' size 1024M; create tablespace sde datafile 'C:appAdministratororadataorcl1sde.dbf' size 1024M; create tablespace wzyzt datafile 'C:appAdministratororadataorcl1wzyzt.dbf' size 1024M; create user portal identified by portal default tablespace portal; create user sde identified by sde default tablespace sde; create user wzyzt identified by wzyzt default tablespace wzyzt; grant connect,dba,resource to portal; grant connect,dba,resource to sde; grant connect,dba,resource to wzyzt;
2、使用 sqlplus 以 sysdba 身份登录,对控制文件进行备份;
sqlplus /nolog(此处不能加分号,否则黑屏窗口会一闪而过)
conn /as sysdba 登录
执行 alter database backup controlfile to trace; 备份控件文件到trace文件
找到oracle的安装目录,如:C:appAdministrator,按修改时间降序,找到最近的trace文件(orcl1_ora_xxx.trc)备份好(建议使用Everything)
3、shutdown immediate 停止数据库实例
4、备份C:appAdministratororadata目录下的该实例文件夹(例如:orcl),接着将该实例文件夹删除,必须是全部删除,在oradata文件夹下新建orcl1文件夹把需恢复的dbf拷贝到orcl1目录下。
5、执行 startup nomount,把数据库启动到nomount状态
6、从第2步备份出来trace文件中拷贝CREATE CONTROLFILE部分语句来重建控制文件:
红框 1 改为ARCHIVELOG
红框 2 因为前面是根据恢复的dbf创建了对应表空间,所以这里不用改,但还是需要确认一下
执行修改后的sql
CREATE CONTROLFILE REUSE DATABASE "ORCL1" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 'C:APPADMINISTRATORORADATAORCL1REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'C:APPADMINISTRATORORADATAORCL1REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'C:APPADMINISTRATORORADATAORCL1REDO03.LOG' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE 'C:APPADMINISTRATORORADATAORCL1SYSTEM01.DBF', 'C:APPADMINISTRATORORADATAORCL1SYSAUX01.DBF', 'C:APPADMINISTRATORORADATAORCL1UNDOTBS01.DBF', 'C:APPADMINISTRATORORADATAORCL1USERS01.DBF', 'C:APPADMINISTRATORORADATAORCL1PORTAL.DBF', 'C:APPADMINISTRATORORADATAORCL1SDE.DBF', 'C:APPADMINISTRATORORADATAORCL1WZYZT.DBF' CHARACTER SET ZHS16GBK ;
7、执行 recover database,这两个报错直接无视
8、执行 alter database open;
恢复完成,登录数据库进行验证