一 : Oracle数据库不完全恢复
1、不能只对数据库的一部分执行不完全恢复操作,因为这会使数据库的一部分具有与这个数据库其余部分不同的系统更改号(SCN)或时间点。
2、在run代码块中使用set命令与until time、until SCN或until sequence参数创建一个恢复目标。
run
{
set until time "to_date('07/01/06 15:00:00','mm/dd/yy hh24:mi:ss')";
restore database;
recover database;
alter database open resetlogs;
}
上面是一种方法,也可以选择在restore和recover命令中直接使用until time、until SCN或until sequence参数,这样就避免使用run代码块(这是一种更值得推荐的做法),见下一段代码。
3、基于时间点的恢复
startup mount;
restore database UNTIL TIME "to_date('07/01/06 15:00:00','mm/dd/yy hh24:mi:ss')";
recover database UNTIL TIME "to_date('07/01/06 15:00:00','mm/dd/yy hh24:mi:ss')";
alter database open resetlogs;
4、基于SCN的恢复
下面代码将数据库还原到SCN 10000,但是不包含这个SCN。
startup mount;
restore database UNTIL SCN 10000;
recover database UNTIL SCN 10000;
alter database open resetlogs;
5、基于日志序列的恢复
下面代码将数据库还原到日志序列为100,但是不包含这个日志序列。
startup mount;
restore database UNTIL SEQUENCE 100 thread 1;
recover database UNTIL SEQUENCE 100 thread 1;
alter database open resetlogs;
6、使用还原点恢复
restore database until restore point TANGO_ONE;
recover database until restore point TABGO_ONE;
alter database open resetlogs;
下面是使用run代码块和set命令创建目标还原点
run
{
set restore point TANGO_ONE;
restore database TANGO_ONE;
recover database TANGO_ONE;
}
alter database open resetlogs;
推荐阅读:
RMAN 配置归档日志删除策略
Oracle基础教程之通过RMAN复制数据库
RMAN备份策略制定参考内容
RMAN备份学习笔记
Oracle数据库备份加密 RMAN加密
更多Oracle相关信息见Oracle专题页面
二 : Oracle 8i数据库恢复一例
系统环境是Microsoft Windows 98,中文Oracle 8i 单机版,应用是医保系统药店端,每日交易额五千元左右。用户反映计算机启动时提示计算机没有正常关闭正在检测D盘,检查到11%时停留时间很长,然后提示D盘错误,阻止了scandisk修复,建议在DOS下重新执行scandisk。然后系统返回到DOS界面。我使用Windows 98启动菜单中的“命令行模式”启动后执行scandisk程序,故障依旧。据用户讲前几日因停电计算机数次非法关机,另外计算机曾在D盘检测到20余个坏道。
我查看wnybalrt.log,得知最后一次Oracle启动正常,然后备份d:\oracle\oradata\wnyb下所有文件和d:\oracle\admin\webdata\bdump\pwdwnyb.ora到新硬盘E:\oldora下。使用新硬盘启动计算机,安装操作系统,安装Oracle 8i,设置数据库SID=WNYB。具体恢复步逐如下:
1、SVRMGR>shutdown immediate。
2、将新系统Oracle 8i数据冷备份到d:\oracle\temp目录下。
3、将已备份旧系统Oracle 8i数据(e:\oldora\*.*)拷贝到d:\oracle\oradata\wnyb目录下;然后用原来的pwdwnyb.ora文件覆盖掉新系统的pwdwnyb.ora文件。
4、SVRMGR>startup
系统提示已装入数据库、已打开数据库。至此,完成数据库的恢复工作。
事后总结,幸亏硬盘坏道没有在Oracle数据所处位置,否则数据难以恢复。所以,我们要时时关注硬盘健康,定期作好数据备份。
【相关文章】
三 : DB2与Oracle数据库之间远程复制
一、背景
图1:sql复制的结构
websphere ii 全球信息集成复制,通过不同数据库之间的复制,有效的利用了数据资源,为提高效率提供了良好的平台。
db2 与非 db2 数据库之间的复制需要用到 websphere ii。本文力争通过复制实例让读者对不同数据库之间的复制有一个整体的概念。
二、动机
商业上出于很多原因使用复制,可以归纳为:
分散:把数据分散到各个位置;
整合:把其他位置的数据联合起来;
交换:与其他位置进行双向的数据交换;
灵活应用:对上面提到的方式进行一些改变或者结合。
联合 (federated) 数据库系统的诞生,利用了现有的数据资源,把不同商业数据库软件的数据整合到一起,很大程度的提高了数据利用率。联合数据库可以用一个sql语句对分布在不同地点的多种数据源发出请求。联合数据库系统可以把本地表和远程数据源联接起来,就像数据都在本地一样,并且可以通过对数据源进行分布请求来提高数据源处理能力,还可以通过在联合服务器处理部分分布请求来补充数据源的 sql 限制。
联合数据库具有两个与其他应用服务器不同的特点:
联合服务器可以被配置为接收全部或接收部分针对数据源的请求。联合服务器把这些请求分散到数据源。
与其他应用服务器一样,一个联合服务器用 drda 通信协议(例如 sna 和 tcp/ip)与 db2 家族实例通信。然而,与其他应用服务器不同的是,与非 db2 家族实例通信时用其他协议。
图2描述了联合数据库系统的设置流程:
图2:联合数据库系统的设置流程
websphere ii 包括两种包装器(wrapper),一种为关系型包装器,负责db2 udb, informix, oracle, microsoft sql server, sybase, odbc, ole db 等数据的复制。另一种为非关系型包装器,负责 flatfile, excel, xml 等非关系型数据的复制。
包装器定义了一个负责本地数据库与远程数据库通信的库。包装器执行很多任务,比如:它可以连接到数据源,包装器应用了数据源的标准连接api。它还可以给数据源提交请求。联合数据库系统可以操作远程联合系统的表。远程表在本地联合数据库中虚拟存在,客户应用程序可以操作这些虚拟表,但是它们真正存在于远端数据库中。每个远程虚拟数据库,把联合数据库当作数据库客户端,他们只对数据库客户端的请求有回应。因此联合数据库需要下载各种远程数据库的客户端。
一个联合系统的构造,需要一个作为联合服务器的 db2 实例,一个作为联合数据库的数据库,一个或多个数据源,和可以存取数据库和数据源的客户(用户和应用)。如果要完成远程不同数据库之间的复制,还需要应用db2的数据复制功能。
ibm db2 复制(在一些平台上被称为数据传播)是一个从一个位置到另一个位置复制 db2 和/或其他数据库厂商数据的强大的,灵活的工具。ibm的复制支持数据转换,数据连接和过滤数据。可以在不同的平台之间搬运数据,也可以把数据分散到不同的地点或从分散的地方把数据聚合到一个地方。可以在不同的系统之间交换数据。
ibm复制由四个主要部分组成:管理 (administrator),capture,apply,警报监视器 (alert monitor)。
管理的部分主要通过复制中心的图形界面来实现。通过复制中心可以定义复制源,定义从数据源到目标数据的地图。它也用来管理和监控本地和远程的 capture 和 apply 进程。从图3中可以看出复制中心图形界面对其他几个部分的支持关系。
图3:复制中心的应用
在源数据服务器上运行的 capture 程序可以获取 db2 源数据表中的变化。db2 的源数据服务器可以为 db2 在 z/os, os/390 上的版本 6,7和8,也可以是 iseries 在 os/400 v5r2,或 db2 在 windows, unix 系统中的版本 8。当定义数据源的时候会自动生成相应的触发器 (triggers),可以用来捕获数据源的变化。要复制的数据可以在 capture 进程中通过选择列来进行过滤。被捕获的更改信息首先存放到本地的源数据所在的数据库的表中并且当更改应用到目标数据中之后会自动删除。
当对源表进行改动时,db2 把相关的记录写入日志。这些日志服务于数据库发现和复制。capture 程序通过数据库自动连接并获取日志记录。每个源表都有相应的 cd (change data) 表来获取数据的变化。当定义一个复制数据源时,复制中心自动生成 cd 表。
对于 apply 部分,捕获的改变通过 apply 程序应用到目标表中。apply 程序可以在任何服务器上运行并且必须对所用到的源服务器和目标服务器都有连通性。数据可以通过列,行进行过滤,可以进行合并(例如通过视图),也可以在 apply 过程中通过 sql 表达式进行传送。db2 与其他相关的数据间进行复制的时候,必须通过联合数据库系统来进行昵称的创建。在本地机器上需要安装关系型包装器和非关系型包装器。对于本例中db2<->oracle之间的复制,需要安装关系型包装器。见图4。
图4:进行远程复制关系图
报警监视器用来进行对capture和apply部分的错误监控。
四 : 史上最简单的方法复制或迁移Oracle数据库
在DBA的日常工作中,经常需要重装或在新机器上安装Oracle,但每次安装所浪费的时间、精力以及失败的挫折都在考验着DBA的承受能力,本文着重介绍了一个简单的复制和迁移Oracle数据库的方法,详细内容请参考下文。
复制迁移的步骤如下:
◆1、首先,复制原Oracle数据库的安装目录到新机器或系统中的安装目录,注意目录要一致,盘符也要一致。
◆2、假如Oracle的安装目录不在Program Files系统文件夹下,我们需要把原系统中的Program Files文件夹下的Oracle目录也复制到新系统的Program Files文件夹中去。
◆3、导出原系统中的Oracle注册表信息,主要注册信息如下:
A. HKEY_LOCAL_MACHINESOFTWAREORACLE
B.HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
下有关Oracle的所有键,通常包括以下9个:
OracleMTSRecoveryService
OracleOraHome92Agent
OracleOraHome92ClientCache
OracleOraHome92HTTPServer
OracleOraHome92PagingServer
OracleOraHome92SNMPPeerEncapsulator
OracleOraHome92SNMPPeerMasterAgent
OracleOraHome92TNSListener
OracleServiceORA8
◆4、注意:有多少个数据库,注册表服务键下的OracleServiceXXX就会有多个。其中最主要的有监听服务和数据库服务,即OracleOraHome92TNSListenerXXX和OracleServiceXXX。
◆5、将导出的所有注册表的信息在新的系统中导入(注册)。
◆6、设置系统环境变量,打开"我的电脑"的"属性"界面,在"高级"而点击"环境变量"进入设置,找到[Path]系统变量项目,点"编辑",在变量值的输入框的最后,加入";ORACLE的安装目录"。
◆7、最后我们需要进入 C:Documents and SettingsAll UsersStart MenuPrograms下把 Oracle - OraHome92 和 Oracle Installation Products 两个菜单文件夹也复制到新系统中,此时,就和新安装的一样了。重启系统后,成功完成。
本文标题:oracle数据库恢复-Oracle数据库不完全恢复61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1