oracle异机恢复数据库名称不一致可以吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle异机恢复数据库名称不一致可以吗相关的知识,希望对你有一定的参考价值。

参考技术A 在Oracle异机恢复过程中,如果数据库名称不一致,可能会影响恢复的成功性。因为,在进行恢复时需要使用数据文件、控制文件和日志文件等信息,这些文件中保存了数据库的名称信息,如果数据库名称不一致则可能导致无法找到正确的文件。

但是,在某些情况下,即使数据库名称不一致,也可以通过一些特殊的手段进行恢复。例如,在恢复过程中可以将数据文件重命名为新数据库的名称,以及修改控制文件中的数据库名称信息,使其与新名称保持一致。这样可以实现将旧的数据库恢复到新的数据库名称中。

需要注意的是,在进行数据库恢复时,更改数据库名称可能会带来风险,因此建议在紧急情况下才考虑采用这种方法,同时也需要对相关操作非常熟悉、谨慎处理。

综上所述,一般情况下,Oracle异机恢复时建议保持数据库名称一致,以避免造成不必要的麻烦和风险。

大道浮屠诀---NBU7.7.3_oracle11G单机-单机(异机恢复WINDOWS2008平台)

现有环境说明:

一台WINDOWS2008R2:安装有NBU7.7.3,作为服务端

一台WINDOWS2008R2:安装有oracle11.2.0.3,作为数据库服务器

现假设数据库意外崩溃,需要进行恢复

 

前提环境搭建:

1、一台WINDOWS2008R2:安装有于原版本一致的数据库软件(不必安装实例),并安装nbu客户端,要求版本低于服务端

2、测试NBU服务端与新客户端的连通性


安装数据库软件:

1、添加本机hosts解析

2、解压并合并安装包

 

 

 3、双击setup执行安装程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 源库目录查看方法,服务里查看OracleService+SID的服务,查看属性即可获知

 

 

 

 

 

 

 

 

 

 

 

 

 

 

安装完毕!


NBU客户端安装

添加hosts解析(服务端和客户端互添解析)
双击Browser执行安装程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 安装完成!


 

 

测试连通性:可通过测试备份客户端文件来测试连通性

在连通性正常的情况下,在客户端搜索备份集

执行搜索命令之前在服务端添加创建如下文件(允许异机恢复,不然搜索时回报错EXIT STATUS 135: client is not validated to perform the requested operation)

 

 

 在客户端NBU家目录下执行命令bplist.exe -C oracle11g -t 4 -R \\  【其中oracle11g根据实际情况,填写源数据库系统解析名】

 

 

 可以看出来,这里有两份备份

接下来利用命令创建数据库服务C:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\BIN这个目录下执行

oradim -NEW -SID xxx 【xxx根据源库数据库SID来】

 

 

 

前期准备到此全部结束

接下来开始恢复(步骤中的个别实例名、路径等根据实际情况修改)

1、恢复spfile

方法一、根据其他数据库的pfile进行修改

方法二、拷贝源库SPFILE

方法三、rman恢复

这里使用方法一:

orcl.__db_cache_size=687865856
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base=\'C:\\app\\Administrator\' #ORACLE_BASE set from environment
orcl.__pga_aggregate_target=704643072
orcl.__sga_target=1023410176
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=268435456
orcl.__streams_pool_size=16777216
*.audit_file_dest=\'C:\\app\\Administrator\\admin\\orcl\\adump\'
*.audit_trail=\'db\'
*.compatible=\'11.2.0.0.0\'
*.control_files=\'C:\\app\\Administrator\\oradata\\orcl\\control01.ctl\',\'C:\\app\\Administrator\\fast_recovery_area\\orcl\\control02.ctl\'
*.db_block_size=8192
*.db_domain=\'\'
*.db_name=\'orcl\'
*.db_recovery_file_dest=\'C:\\app\\Administrator\\fast_recovery_area\'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest=\'C:\\app\\Administrator\'
*.dispatchers=\'(PROTOCOL=TCP) (SERVICE=orclXDB)\'
*.log_archive_dest_1=\'location=C:\\app\\Administrator\\arch\'
*.log_archive_format=\'arc_%S_%T_%R.log\'
*.memory_target=1717567488
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=\'EXCLUSIVE\'
*.undo_tablespace=\'UNDOTBS1\'

内存大小根据实际修改,库名、路径根据实际修改

把此pifle考到新客户端中并启动

set ORACLE_SID=orcl

rman target /

RMAN>startup nomount pfile=\'C:\\app\\Administrator\\pfile.ora\';

 

 

 2、恢复控制文件

run{
allocate channel c1 type sbt_tape;
SEND \'NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g\';  #这里的CLIENT为源机解析名
restore controlfile from \'cntrl_p_t\';
release channel c1;
}

 

 

 

 

 

 

启动到mount状态

 

 

3、恢复数据文件

这里有两种情况

一是数据文件路径不一致

二是数据文件路径一致

这里暂时先讨论一致的情况的恢复,(单机环境下恢复,路径基本与源库一致)

run{
allocate channel c1 type \'sbt_tape\';
allocate channel c2 type \'sbt_tape\';
SEND \'NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g\';
restore database;
release channel c1;
release channel c2;
}

 

 

4、recover数据库

reocver的方式有多种、这里按照追加到控制文件最新归档为止

run
{
allocate channel ch00 type \'sbt_tape\';
allocate channel ch01 type \'sbt_tape\';
SEND \'NB_ORA_SERV=test,NB_ORA_CLIENT=oracle11g\';
recover database;
release channel ch00;
release channel ch01;
}

 

 

 直接写recover database他会 在恢复完所有归档的时候继续去请求下一个SCN,这时候你可以选择取消下个一个SCN的恢复

SQL> recover database using backup controlfile until cancel;

 

 

 

5、打开数据库

由于是恢复出来的数据库,要用以下命令打开

SQL> alter database open resetlogs;

 

 

 

 

 

 

6、临时表空间重建[这里针对的是源库与新库temp路径不一致的情况,一般一致情况下,启库时会根据记录的TEMP路径创建temp文件]

备份的时候不备份临时表空间所以恢复也就不恢复

查看新库的临时表空间,执行以下语句

SQL> select f.file#,t.ts#,f.name "File",t.name "Tablespace" from v$tempfile f,V$tablespace t where f.ts# = t.ts#; 

 

 

 

 我这里看到是在这个位置【注:这里查到的位置是之前源库临时表空间的位置】

接下来重建临时表空间

一、 create temporary  tablespace TEMP2 TEMPFILE \'C:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEMP02.DBF\' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;

 

 

二、alter database default temporary tablespace TEMP2;

 

 

三、drop tablespace TEMP including contents and datafiles;

 

 

再次查看

 

 

 

 

至此,WINDOWS_FOR_NBU_ORACLE_单机-单机恢复完毕!

以上是关于oracle异机恢复数据库名称不一致可以吗的主要内容,如果未能解决你的问题,请参考以下文章

oracle异机恢复测试

Oracle异机恢复处理

RMAN异机恢复全过程

在异机实现 Oracle 不完全恢复

oracle丢失归档恢复历史全备(不一致恢复)

大道浮屠诀---NBU7.7.3_oracle11G单机-单机(异机恢复WINDOWS2008平台)