oracle数据库自动备份系统

oracle数据库自动备份系统,第1张

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。下面我为大家分享一下oracle数据库自动备份系统的 方法 ,有需要的可以参考一下!

oracle数据库自动备份系统

实现过程:

1 建立文件 backupbat (自定义文件名bat)

@echo off

REM ###########################################################

REM # Windows Server 2003下Oracle数据库自动备份批处理脚本

REM ###########################################################

REM 取当前系统时间,可能因 *** 作系统 不同而取值不一样

set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%

set CURMON=%date:~0,4%%date:~5,2%

set CURTIME=%time:~0,2%

REM 小时数如果小于10,则在前面补0

if "%CURTIME%"==" 0" set CURTIME=00

if "%CURTIME%"==" 1" set CURTIME=01

if "%CURTIME%"==" 2" set CURTIME=02

if "%CURTIME%"==" 3" set CURTIME=03

if "%CURTIME%"==" 4" set CURTIME=04

if "%CURTIME%"==" 5" set CURTIME=05

if "%CURTIME%"==" 6" set CURTIME=06

if "%CURTIME%"==" 7" set CURTIME=07

if "%CURTIME%"==" 8" set CURTIME=08

if "%CURTIME%"==" 9" set CURTIME=09

set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%

REM 设置所有者、用户名和密码

set OWNER=orcl

set USER=bktcgl

set PASSWORD=bktcgl

REM 创建备份用目录,目录结构为oraclebak/YYYYMMDD/

if not exist "oraclebak" mkdir oraclebak

cd oraclebak

if not exist "%CURMON%" mkdir %CURMON%

set FILENAME=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%DMP

set EXPLOG=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%_loglog

REM 调用ORACLE的exp命令导出用户数据

exp %USER%/%PASSWORD%@%OWNER% file=%FILENAME% log=%EXPLOG% owner=%USER% grants=n

exit

注:

1bat文件可双击或直接在命令行执行,检查正确与否

2检查时可注释掉exit

3以上文件实现按月份创建文件夹,按时间生成备份文件

2建立windows任务

步骤:

开始 -> 所有程序 -> 附件 -> 系统工具 -> 任务计划程序 -> *** 作 -> 创建基本任务

-> 任务名输入"oracle_backup"(自定义任务名),执行这个任务选择每天,下一步

-> 起始时间下午12:00,起始日期2012-7-11,下一步 ->(启动程序)下一步

->在 浏览 中查找刚刚写好的 backupbat 文件 >下一步 > 完成

注:

1在任务计划栏目下新增一个名为"oracle_backup"的任务计划,表明已经配置完毕。

2不同系统的任务计划略有不同,但基本换汤不换药,不做一一例举

问题:系统警告"已创建新任务,但可能不能运行,因为无法设置账户信息。指定的错误是:Ox80041315:任务计划程序服务没有运行"

原因:电脑的任务计划程序服务没有启动起来。

解决:开始 > 所有程序 > 管理工具 > 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",

右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划就可以了。

3简单解释

1 bat:是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用 Cmdexe按照该文件中各个命令出现的顺序来逐个运行它们。

2 Echo 命令:打开回显或关闭请求回显功能,或显示消息。

3 @ 命令:表示不显示@后面的命令

4 Rem 命令:注释命令

5 If命令:if表示将判断是否符合规定的条件,从而决定执行不同的命令。

6 exit :退出命令行

7 GRANTS: 是权限的意思,在你导出的目标数据库中可能会有一些表的如select 权限等赋给了别的用户。

GRANTS=Y导出的时候将这些权限导出,导入的时候将这些权限导入。

GRANTS=N权限不被导入。

先确认oracle服务器上oracle如下截图中标红的相关的服务是否已经正常启动。

要断开数据库的所有连接,如果数据库中有正在连接客户端,备份的时候可能会出现异常,比如PLSQL的连接先退出一下。

在开始菜单中输入“cmd”命令后回车,打开dos命令窗口,如下截图1和2所示。

在cmd窗口中,输入以下命令:

exp 用户名/密码@SID file=d:\xxdmp owner=用户名,按下回车键,界面如下截图所示。

导出的时间是根据数据库的大小决定的,如果数据库中表比较多,数据量比较大速度就会比较慢,请耐心等待。当数据完成导出之后,cmd窗口中会出现如下图所示的提示语,这就表示已经完成了数据库备份导出的动作。

这时候在计算机中找到第四步中设定的文件保存路径,如下截图,你会发现多了一个dmp的文件,这个文件就是我们需要的备份文件了。

可以在控制面板的管理工具中,找到任务计划程序,设置一个定时任务,每天执行一遍exp 用户名/密码@SID file=d:\xxdmp owner=用户名这个命令,这样就能实现数据库数据的定时备份了。

oracle数据库备份exp命令:

第一个,表模式,备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_csd_yyyymmdddmp

log=exp_icdmain_csd_yyyymmddlog

tables=icdmaincommoninformation,icdmainserviceinfo,icdmaindealinfo

若直接备份到磁带设备,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_csd_yyyymmddlog

tables=icdmaincommoninformation,icdmainserviceinfo,icdmaindealinfo

注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。

第二个,用户模式,备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_yyyymmdddmp

log=exp_icdmain_yyyymmddlog

若直接备份到磁带设备,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_yyyymmddlog

注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。

第三个,完全模式,备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y

file=exp_fulldb_yyyymmdddmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmddlog

对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y inctype=incremental

file=exp_fulldb_yyyymmdddmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmddlog

扩展资料:

关于增量备份必须满足下列条件:

1、只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数

2、用户必须有EXP_FULL_DATABASE的系统角色。

3、话务量较小时方可采用数据库备份。

4、 如果磁盘有空间,建议备份到磁盘,然后再备份到磁盘。

版权声明:本文为CSDN博主「kalogen」的原创文章,遵循 CC 40 BY-SA 版权协议,转载请附上原文出处链接及本声明。

参考资料来源:Oracle数据库备份(exp/imp命令)

1、热备:完善的数据备份应该使用归档模式,用rman或者备份工具进行备份;
2、冷备:关闭数据库,备份控制文件、spfile、数据文件;
3、数据迁移工具:exp/imp
exp可以根据选择导出全库、用户、指定表的结构和数据;
imp时如果目的库没有创建对应的表,注意目的库的表空间名称要和源数据库的一致;
exp可能存在数据不一致的可能,即主从表数据不一致,会导致错误漏掉一些记录。

oracle备份的几种方法:\x0d\1)导出/导入(EXP/IMP)。\x0d\ 2)热备份。\x0d\ 3)冷备份。\x0d\ 注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份。\x0d\ 一、 导出/导入(Export/Import)\x0d\ 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。\x0d\ 1、简单导出数据(Export)和导入数据(Import)\x0d\ Oracle支持三种方式类型的输出:\x0d\(1)、表方式(T方式),将指定表的数据导出。\x0d\exp amis/amis@amisdb tables= B_S_AGT_LNE_ACCT_H_0714 file=B_S_AGT_LNE_ACCT_H_0714dmp \x0d\imp odsbdata/odsbdata@amisdb file= B_S_AGT_DEP_ACCT_TDE_H_0714dmp full=y ignore=y\x0d\ (2)、用户方式(U方式),将指定用户的所有对象及数据导出。\x0d\ (3)、全库方式(Full方式),瘵数据库中的所有对象导出。\x0d\ 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。\x0d\ 2、 增量导出/导入\x0d\ 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。导出文件名缺省为exportdmp,如果不希望自己的输出文件定名为exportdmp,必须在命令行中指出要用的文件名。\x0d\ 增量导出包括三种类型:\x0d\ (1)、“完全”增量导出(Complete)\x0d\ 即备份三个数据库,比如:\x0d\ exp system/manager inctype=complete file=040731dmp\x0d\ (2)、“增量型”增量导出\x0d\ 备份上一次备份后改变的数据,比如:\x0d\ exp system/manager inctype=incremental file=040731dmp\x0d\ (3)、“累积型”增量导出\x0d\ 累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:\x0d\ exp system/manager inctype=cumulative file=040731dmp\x0d\ 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。\x0d\ 比如数据库的被封任务可以做如下安排:\x0d\ 星期一:完全备份(A)\x0d\ 星期二:增量导出(B)\x0d\ 星期三:增量导出(C)\x0d\ 星期四:增量导出(D)\x0d\ 星期五:累计导出(E)\x0d\ 星期六:增量导出(F)\x0d\ 星期日:增量导出(G)\x0d\ 如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:\x0d\ 第一步:用命令CREATE DATABASE重新生成数据库结构;\x0d\ 第二步:创建一个足够大的附加回滚。\x0d\ 第三步:完全增量导入A:\x0d\ imp system/manager inctype=RESTORE FULL=y FILE=A\x0d\ 第四步:累计增量导入E:\x0d\ imp system/manager inctype=RESTORE FULL=Y FILE=E\x0d\ 第五步:最近增量导入F:\x0d\ imp system/manager inctype=RESTORE FULL=Y FILE=F\x0d\二、 冷备份\x0d\ 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:\x0d\ 1、 是非常快速的备份方法(只需拷文件)\x0d\ 2、 容易归档(简单拷贝即可)\x0d\ 3、 容易恢复到某个时间点上(只需将文件再拷贝回去)\x0d\ 4、 能与归档方法相结合,做数据库“最佳状态”的恢复。\x0d\ 5、 低度维护,高度安全。\x0d\ 但冷备份也有如下不足:\x0d\ 1、 单独使用时,只能提供到“某一时间点上”的恢复。\x0d\ 2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。\x0d\ 3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。\x0d\ 4、 不能按表或按用户恢复。\x0d\ 如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:\x0d\ 1、 所有数据文件\x0d\ 2、 所有控制文件\x0d\ 3、 所有联机REDO LOG文件\x0d\ 4、 Initora文件(可选)\x0d\ 值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。\x0d\ 下面是作冷备份的完整例子。\x0d\ (1) 关闭数据库\x0d\ sqlplus /nolog\x0d\ sql>connect /as sysdba\x0d\ sql>shutdown normal;\x0d\ (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件\x0d\ sql>cp \x0d\ (3) 重启Oracle数据库\x0d\ sql>startup\x0d\ 三、 热备份\x0d\ 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下 *** 作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:\x0d\ 1 数据文件一个表空间一个表空间的备份。\x0d\ (1) 设置表空间为备份状态\x0d\ (2) 备份表空间的数据文件\x0d\ (3) 回复表空间为正常状态\x0d\ 2 备份归档log文件\x0d\ (1) 临时停止归档进程\x0d\ (2) log下那些在archive rede log目标目录中的文件\x0d\ (3) 重新启动archive进程\x0d\ (4) 备份归档的redo log文件\x0d\ 3 用alter database bachup controlfile命令来备份控制文件\x0d\ 热备份的优点是:\x0d\ 1 可在表空间或数据库文件级备份,备份的时间短。\x0d\ 2 备份时数据库仍可使用。\x0d\ 3 可达到秒级恢复(恢复到某一时间点上)。\x0d\ 4 可对几乎所有数据库实体做恢复\x0d\ 5 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。\x0d\ 热备份的不足之处:\x0d\ 1 不能出错,否则后果不堪设想。\x0d\ 2 假如热备份不成功,所得结果则不能用于时间点的恢复(scn)。\x0d\如果是全库一般需要配置一个rman\x0d\oracle的恢复方案:\x0d\oracle 恢复表到以前的某个状态\x0d\1用bda登录进去\x0d\select from syssmon_scn_time; --scn 与时间的对应关系 \x0d\每隔5分钟,系统产生一次系统时间标记与scn的匹配并存入syssmon_scn_time表。 \x0d\以下是我在测试机上做了一个测试:\x0d\select from table as of scn 3296161275\x0d\\x0d\select from table as of scn 3296200982;\x0d\\x0d\然后我们恢复到这个检查点。\x0d\以上是oracle的备份和恢复方案。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13354651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存