oracle 重装系统后恢复,重装系统后的oracle恢复(在rman帮助下)

我们这次做的前提就是在重装操作系统的时候,只保留的原来数据库的数据文件、控制文件、重做日志文件,以及rman的database全备和archivelog的备份——我们假设只保留了以上文件,其他文件,包括spfile和pfile都已经被删除,而且我们的oracle相关表空间都已经改变过,如默认的undo表空间叫TS_UNDO_01。

一、在重装操作系统之前我们先用rman进行全备:备份database ,controlfile,archivelog。

D:Back Updb bakRMAN_BK>rman nocatalog target /

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

连接到目标数据库: ORALOCAL (DBID=3826047702)正在使用目标数据库控制文件替代恢复目录

RMAN>

在这里我们使用nocatalog备份,因为如果用catalog备份,相关的备份信息会保存在数据库中,当数据库重装的时候,新的数据库是没有这些信息的,而老的控制文件由于新的spfile中的部分指示有误还加载不上去,startup mount的时候会出错。因此我们干脆就使用nocatalog备份,将备份的信息保存在controlfile中。

登陆rman后,我们来更改一下一些备份参数(<>内的文字是我添加的)

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:ORACLEORA92DATABASESNCFORALOCAL.ORA'; # default

RMAN>

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;

新的 RMAN 配置参数:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;已成功存储新的 RMAN 配置参数

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP ON;已成功存储新的 RMAN 配置参数

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:Back Updb bakRMAN_BK%F_CTL.RMN';

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:Back Updb bakRMAN_BK%F_CTL.RMN';已成功存储新的 RMAN 配置参数

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

新的 RMAN 配置参数:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;已成功存储新的 RMAN 配置参数

RMAN>

RMAN> show all;

RMAN 配置参数为:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:Back Updb bakRMAN_BK%F_CTL.RMN';CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:ORACLEORA92DATABASESNCFORALOCAL.ORA'; # default

RMAN>

Ok,我们开始用rman进行备份:

RMAN> run {

2> backup database

3> tag 'full_db_20060910'

4> format 'D:Back Updb bakRMAN_BKfull_db_20060910_%u%s%p.RMN'

5> include current controlfile;

6> backup archivelog all

7> tag 'arch_20060910'

8> format 'D:Back Updb bakRMAN_BKarch_20060910_%u%s%p.RMN'

9> delete input;}

启动 backup 于 10-9月 -06

使用通道 ORA_DISK_1

使用通道 ORA_DISK_2

通道 ORA_DISK_1: 正在启动 full 数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00011 name=D:ORACLEORADATAORALOCALPERFSTAT.DBF

输入数据文件 fno=00005 name=D:ORACLEORADATAORALOCALEXAMPLE01.DBF

输入数据文件 fno=00006 name=D:ORACLEORADATAORALOCALINDX01.DBF

输入数据文件 fno=00009 name=D:ORACLEORADATAORALOCALTS_RMAN_01.DBF

输入数据文件 fno=00003 name=D:ORACLEORADATAORALOCALCWMLITE01.DBF

输入数据文件 fno=00004 name=D:ORACLEORADATAORALOCALDRSYS01.DBF

输入数据文件 fno=00008 name=D:ORACLEORADATAORALOCALTOOLS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 10-9月 -06

通道 ORA_DISK_2: 正在启动 full 数据文件备份集

通道 ORA_DISK_2: 正在指定备份集中的数据文件

备份集中包括当前控制文件

输入数据文件 fno=00001 name=D:ORACLEORADATAORALOCALSYSTEM01.DBF

输入数据文件 fno=00010 name=D:ORACLEORADATAORALOCALXDB01.DBF

输入数据文件 fno=00002 name=D:ORACLEORADATAORALOCALTS_UNDO_01.DBF

输入数据文件 fno=00007 name=D:ORACLEORADATAORALOCALODM01.DBF

输入数据文件 fno=00012 name=D:ORACLEORADATAORALOCALTS_DATA_USER01.DBF

通道 ORA_DISK_2: 正在启动段 1 于 10-9月 -06

通道 ORA_DISK_1: 已完成段 1 于 10-9月 -06

段 handle=D:BACK UPDB BAKRMAN_BKFULL_DB_20060910_0THSVDUH291.RMN comment=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:16

通道 ORA_DISK_2: 已完成段 1 于 10-9月 -06

段 handle=D:BACK UPDB BAKRMAN_BKFULL_DB_20060910_0UHSVDUI301.RMN comment=NONE

通道 ORA_DISK_2: 备份集已完成, 经过时间:00:02:20

完成 backup 于 10-9月 -06

启动 backup 于 10-9月 -06

当前日志已存档

使用通道 ORA_DISK_1

使用通道 ORA_DISK_2

通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =218 记录 ID=74 时间戳=600815409

通道 ORA_DISK_1: 正在启动段 1 于 10-9月 -06

通道 ORA_DISK_2: 正在启动存档日志备份集

通道 ORA_DISK_2: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =219 记录 ID=75 时间戳=600815711

通道 ORA_DISK_2: 正在启动段 1 于 10-9月 -06

通道 ORA_DISK_1: 已完成段 1 于 10-9月 -06

段 handle=D:BACK UPDB BAKRMAN_BKARCH_20060910_0VHSVE2V311.RMN comment=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

通道 ORA_DISK_1: 正在删除存档日志

存档日志文件名 =D:ORACLEORA92RDBMSARC00218.001 记录 ID=74 时间戳 =600815409

通道 ORA_DISK_2: 已完成段 1 于 10-9月 -06

段 handle=D:BACK UPDB BAKRMAN_BKARCH_20060910_10HSVE2V321.RMN comment=NONE

通道 ORA_DISK_2: 备份集已完成, 经过时间:00:00:02

通道 ORA_DISK_2: 正在删除存档日志

存档日志文件名 =D:ORACLEORA92RDBMSARC00219.001 记录 ID=75 时间戳 =600815711

完成 backup 于 10-9月 -06

启动 Control File and SPFILE Autobackup 于 10-9月 -06

段 handle=D:BACK UPDB BAKRMAN_BKC-3826047702-20060910-04_CTL.RMN comment=NONE

完成 Control File and SPFILE Autobackup 于 10-9月 -06

RMAN>

二、重装操作系统后,我们删除oracle下除oradata(含数据文件,控制文件,redolog)外的所有文件,重装oracle。

三、重装oracle。

四、将原来是oradata(含数据文件,控制文件,redolog)覆盖oradata。

五、这时启动oracle,我们发现只能启动到nomount状态。原因是根据目前的spfile,找不到对应的表空间,找不到undo表空间——当前的spfile认为的undo表空间是UNDOTS01,我们的是TS_UNDO_01。因此,我们删除这个没用的spfile。

六、找到$ORACLE_HOMEadminSIDpfileinit.ora,打开后,进行修改,将undo_tablespace=UNDOTS01改成:undo_tablespace=TS_UNDO_01。然后startup pfile=$ORACLE_HOMEadminSIDpfileinit.ora

七、运行rman

C:Documents and SettingsAdministrator>rman nocatalog target /

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

连接到目标数据库: ORALOCAL (DBID=3826047702)

正在使用目标数据库控制文件替代恢复目录

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:Back Updb bakRMAN_BK%F_CTL.RMN';

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:ORACLEORA92DATABASESNCFORALOCAL.ORA'; # default

RMAN> restore spfile from autobackup;

启动 restore 于 10-9月 -06

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=12 devtype=DISK

分配的通道: ORA_DISK_2

通道 ORA_DISK_2: sid=13 devtype=DISK

通道 ORA_DISK_1: 寻找以下日期的自动备份: 20060910

通道 ORA_DISK_2: 寻找以下日期的自动备份: 20060910

通道 ORA_DISK_2: 跳过, 自动备份已经找到

通道 ORA_DISK_1: 已找到的自动备份: D:Back Updb bakRMAN_BKc-3826047702-20060910-04_CTL.RMN

通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成

完成 restore 于 10-9月 -06

RMAN> shutdown immediate

数据库已关闭

数据库已卸载

Oracle 例程已关闭

RMAN> exit

恢复管理器完成。

八、Ok,至此我们的复原工作完成99%,但是在启动的时候还是会报ora-01991的错误,我们需要重建一下密码文件:

1、删除原来的$ORACLE_HOMEora92databasePWDsid.ora密码文件

2、命令行输入orapwd file=password=entries=

3、重启数据库:

C:Documents and SettingsAdministrator>sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 9月 10 22:30:22 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

已连接到空闲例程。

SQL>

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size 453492 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> alter database mount;

数据库已更改。

SQL> alter database open ;

数据库已更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统后oracle数据库的恢复 文件夹中文件说明: ora.reg oracle主要注册项的恢复参考文件 oraodbc.reg odbc驱动项的恢复参考文件 oraole1~4.reg ole 驱动项的恢复参考文件 恢复中重要操作说明: 1、恢复前提,数据库系统文件(初始化配置文件、数据文件、重作日志文件、控制文件)没有遭到破坏。 2、注册表的恢复 3、监听程序重新恢复,注意监听配置、tns配置中机器名的核对 4、oracle实例服务的恢复 5、注册表中本地默认实例的恢复 6、计算机管理-用户组中ORA_DBA角色的恢复 操作步骤: 1、系统环境变量的恢复 在系统环境变量path项之前增加oracle系统可执行程序及动态链接库资源如"D:\oracle\ora90\bin;" 2、注册表的恢复 a、oracle数据库系统变量的恢复,ora.reg中饱含了oracle的主要系统参数,其中home项包含了不同的版本信息,导入注册表后可以根据情况修改、增加或者删除对应的home信息。 b、oracle odbc驱动参数的恢复需要导入oraodbc.reg,此处以oracle90为例,针对不同的oracle版本需要修改相应的参数。导入后,除了检查版本及修改上述参数外还需要手工在注册表(regedit.exe)hkey_local_machine->software->odbc->odbcinst.ini->odbc drivers一项中参考其它字符串,增加一个oracle驱动程序名称(如Oracle in OraHome90)。恢复后可以通过系统odbc管理工具进行配置、测试。最后,如果不需要使用ODBC连接数据库,就不需要进行此处的恢复。 c、oracle oledb驱动参数的恢复需要导入oraole1~4.reg,实际只需要导入1~2两个文件即可,其它两个属于注册表的副件。同样需要针对不同版本修改相应的参数。恢复后,可以通过配置一个 oledb测试,最快捷的方法为,新建一个文本文件,然后将后缀改为".udl"然后就可以继续操作了。最后,同ODBC一样,如果确定不需要使用ole驱动访问数据库,也可以不进行这部分的恢复操作。 ******此处的操作需要对windows操作系统注册表非常熟悉,对于linux平台,恢复操作类似,只不过需要对环境变量的操作熟悉。 3、监听程序的恢复 a、配置参数的恢复oracle_home\network\admin\listener.ora,检查本地机器名是否有变化,以确定监听参数中监听地址项是否需要修伽。 b、本地访问服务名tnsnames.ora的配置,同样需要检查机器名或ip地址是否有变化。此步骤可以省略 c、监听服务的恢复,运行 lsnrctl,执行start,会自动向系统服务中增加并启动监听服务。可以通过启动时的提示确定服务是否启动成功。确认服务启动成功后,在系统服务管理台里将服务启动属性从“手动”改为“自动”。 ******此处操作需要对lsnrctl工具熟悉。 4、本地默认实例的恢复 在注册表hkey_local_machine->software->oracle->home0->oracle_sid项,确认内容和你要恢复的实例名一致。进行这个操作,主要方便在本地sqlplus或其它客户端登录时不用指定数据库本地网络服务名。 5、系统ORA_DBA组的恢复 在"计算机管理"控制台中->系统工具->本地用户和组->组中,增加名称为"ORA_DBA",描述为"Members can connect to the Oracle database as a DBA without a password"的组,并将系统管理员用户如"Administrator"添加到组中。执行这样的操作,是为了能够在本机上不输入数据库用户名/密码,直接以dba角色登录数据库进行管理。 6、实例的恢复 a、确认数据库的初始化配置文件、数据文件、重作日志文件、控制文件等没有被损坏或缺失。 b、使用oradim工具重建实例服务。如oradim -new -sid test -startmode m -pfile d:\oracle\admin\test\pfile\init.ora oradim是oracle实例管理工具,具体参数说明,可以在命令行中直接输入oradim查看帮助提示。使用它能够创建、修改、删除,启动、停止本机上的oracle实例服务,有兴趣的,可以使用它实现一个单数据库多实例的案例。 c、使用sqlplus以dba身份登录确认数据库是否正常启动。 ******此处操作需要对oradim工具、oracle实例的概念熟悉。 7、恢复完成。可以打开其它应用程序了。
重装系统恢复 Oracle 数据库的 DBF 文件需要执行以下步骤: 1. 确保你有一个完整的备份,包括控制文件、参数文件、归档日志和所有的 DBF 文件。如果你没有备份,那么你将无法恢复数据。 2. 在新系统上安装并配置 Oracle 数据库软件,确保数据库版本与之前的数据库版本相同。 3. 在新系统上创建一个新的数据库实例,可以使用 Oracle Database Configuration Assistant(DBCA)工具来完成此步骤。 4. 将备份文件复制到新系统上的相应位置。确保控制文件、参数文件、归档日志和所有的 DBF 文件都位于正确的位置。 5. 启动新的数据库实例,并将其设置为归档模式。 6. 使用 RMAN(Recovery Manager)工具来恢复数据库。首先,连接到新的数据库实例,然后执行以下命令: ``` RMAN> set dbid <数据库实例的DBID> RMAN> startup nomount RMAN> restore controlfile from '<控制文件备份的路径>' RMAN> alter database mount RMAN> restore database RMAN> recover database RMAN> alter database open resetlogs ``` 7. 执行完以上步骤后,数据库应该已经成功恢复。你可以验证数据库是否正常工作,并执行必要的后续操作,如重新创建监听器、重新配置连接等。 注意:在执行上述步骤之前,请确保你对 Oracle 数据库的恢复操作有足够的了解,并且谨慎操作。如果你对此不太熟悉,建议寻求专业人士的帮助

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值