转自:it168
EXP和IMP是Oracle提供的一种逻辑备份工具。逻辑备份创建数据库对象的逻辑拷贝并存入一个二进制转储文件。这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。此备份方式是通过Oracle的实用工具export和import来实施的, export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。通过此工具可以衍生出多种功能, 比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。
Oracle Export/Import工具提供了灵活多样的功能和导出/导入模式,最常使用的三种模式是User、table和full database。除此以外,还可以在导出/导入时决定是否包含与对象有关的数据字典信息,如索引、约束、权限等等。
注意:通过逻辑备份可以备份整个数据库, 或仅备份部分重要数据。因为是逻辑上的备份,故只能用于逻辑的恢复数据, 一旦数据库被物理损坏, 导致不能启动,逻辑备份的数据不能帮助恢复数据库。
1. Export/Import的使用举例:(以下操作均为在
(1). 将一个用户的对象导入到另一个用户模式中:
把数据库中原有的用户Export至一个dmp文件(如把用户olduser的对象导出到文件olduser0701.dmp中):
$ exp sys/password file= olduser0701 owner=olduser grant=N indexes=Y rows=Y
从dmp文件中把一个用户的对象import至一个用户的模式中(从olduser0701.dmp中,把用户olduser的对象导入到用户newuser中):
$imp sys/password file=olduser0701 fromuser=olduser touser=newuser indexes=Y rows=Y
(2). 导入时避免出现ORA-00942(表或是图不存在)错误:
因为,导出是按照在数据库中对象建立的顺序进行的,从而在导入时,数据库对象之间的依赖性会引起某些先导入对象找不到其依赖对象(如view、procedure等等),就会引起ORA-00942(表或是图不存在)错误。通常解决这种问题的方法是,做两次导入工作,第一遍导入时设置如下:
$ imp sys/password file=demo0701 full=Y commit=y rows=Y
导入时如果出现错误,就修改设置:rows=n,ignore=n:
$ imp sys/password file=demo0701 full=Y rows=N commit=Y ignore=N
(3). 做无增量的全数据库备份及恢复的例子:
全数据库Export至dmp文件(如sidfull0701.dmp):
$ exp sys/password file=sidfull0701.dmp Full=y -- rows确省为Y
把整个数据库备份的sidfull0701.dmp文件至数据库中:
$ imp sys/password file=sidfull0701.dmp ignore=y full=y-- rows确省为Y
注意:导入/导出是最彻底的减少磁盘碎片的方法。
2. 备份策略和综合应用举例:
(1). 做全数据库增量备份和恢复的方法:
全数据库Export至dmp文件(如sidfull0701.dmp):
$ exp sys/manager file= sidfull0701.dmp Full=y inctype=complete
第一天增量备份Export至dmp文件(如sidincr1.dmp):
$ exp sys/manager file= sidincr1.dmp inctype=incremental
第二天增量备份Export至dmp文件(如sidincr2.dmp):
$ exp sys/manager file= sidincr2.dmp inctype=incremental
第三天增量备份Export至dmp文件(如sidincr3.dmp):
$ exp sys/manager file= sidincr3.dmp inctype=incremental
现假设Oracle数据库在第三天被破坏了重新建一个Oracle数据库,先把最后的一个dmp文件imp至数据库中:
$ imp sys/manager file= sidincr3.dmp full=y ignore=y inctype=system
把整个数据库备份的dmp文件imp至数据库中:
$ imp sys/manager file= sidfull0701.dmp ignore=y full=y inctype=restore
把第一天增量备份的dmp文件imp至数据库中:
$ imp sys/manager file= sidincr1.dmp ignore=y full=y inctype=restore
把第二天增量备份的dmp文件imp至数据库中:
$ imp sys/manager file= sidincr2.dmp ignore=y full=y inctype=restore
把第三天增量备份的dmp文件imp至数据库中
$ imp sys/manager file= sidincr3.dmp ignore=y full=y inctype=restore
(2). 数据库逻辑备份策略的制定:
数据库管理员可以排定一个备份日程表,结合数据导出的三个不同方式合理、高效、可靠地完成。比如数据库的备份任务可作如下安排:
星期一:完全导出(A)
星期二:增量导出(B)
星期三:增量导出(C)
星期四:增量导出(D)
星期五:累计导出(E)
星期六:增量导出(F)
星期日:增量导出(G)
如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚段。
第三步:完全增量导入A:
$ imp system/manager inctype=RECTORE FULL=Y FILE=A
第四步:累计增量导入E:
$ imp system/manager inctype=RECTORE FULL=Y FILE =E
第五步:最近增量导入F:
$ imp system/manager inctype=RESTORE FULL=Y FILE=F
注: 备份文件的命名最好加上日期,这样便于以后的恢复工作。
操作如下:
$ tar -cvf full'date +%Y-%m-%d-%H-%M'.dmp abc
$ tar -cvf full'date +%Y-%m-%d-%H-%M-%S'.dmp abc
(3). 利用cron定时备份数据库:
Linux、Unix提供了定时服务cron程序,能够在确定的时间中执行一系列任务,因此数据库的备份必须和cron合作来完成,或者使用/etc下的daily,weekly,monthly文件做定时的数据库备份操作。
例如:编写Oracle逻辑备份的sh文件,并用cron程序来制定备份的时间。
i. 编辑完全备份的脚本文件(exp_comp.sh):
rq='date +"%m%d"'
su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/
export/db_comp$rq.dmp"
ii. 编辑累计备份的脚本文件(exp_cumu.sh):
rq=' date +"%m%d"'
su - oracle -c"exp system/manager full=y inctype=cumulative file=/oracle
/export/db_cumu$rq.dmp"
iii. 编辑增量备份的脚本文件(exp_incr.sh):
rq='date +"%m%d" '
su - oracle -c"exp system/manager full=y inctype=incremental file=/oracle
/export/db_incr$rq.dmp"
iv. 编辑root用户crontab文件,将上面的脚本命令用cron程序来制定数据库备份的时间:
$ vi /var/spool/cron/crontabs/root
v. 在/var/spool/cron/crontabs/root文件中增加以下内容:
0 2 1 * * /oracle/exp_comp.sh
30 2 * * 0-5 /oracle/exp_incr.sh
45 2 * * 6 /oracle/exp_cumu.sh
当然上面这个时间表可以根据不同的需求来改变。比如按照上面的数据库的备份安排表来做这个cron程序的制定,如下所示:
星期一:完全导出(A)
星期二:增量导出(B)
星期三:增量导出(C)
星期四:增量导出(D)
星期五:累计导出(E)
星期六:增量导出(F)
星期日:增量导出(G)
(4).使用Export/Import的注意事项:
在做Export和Import的时候千万请注意您的字符集设置,如果在做Export或Import的时候,UINX的环境变量如果和字符集设置不一致的话, 将导致数据库恢复的信息不能正确读取,特别是数据库采用的非缺省值的中文字符集。切记一定要求保持一致,如果有特殊的要求请先联系Oracle售后支持部。下面介绍怎样确定Oracle数据库的字符集设置和操作系统的环境变量:
$ sqlplus sys/manager
SQL> select * from NLS_DATABASE_PARAMETERS;
PARAMETER VALUE
------------------------- -----------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET UTF8
环境变量应设置
$ export NLS_LANG=American_america.UTF8
Export/Import支持的增量和累计备份实际上是表级的,即上一次备份之后变化的表将全表卸载,而不是变化的记录。因此,在以OLTP应用为主的数据库中,由于保存主要业务数据的表处于频繁的录入和更新之中,增量和累计卸载并不能显著提高备份的效率。
在做整个数据库Import时,缺省状态下以一个Table为一个Transaction,所以如果存在一些表的数据量很大, 建议使用commit=y并且要提供一个较大的buffer值,同时建立一个临时Rollback segment ,它的default storage参数initial 和 next要设置大一些,并要将这个Rollback Segment Online,同时offline 其他小的rollback segments。确保一个Table能完整import 。因为在做import时, 数据库将自动创建索引,及完整性约束, 为了加快数据加载的速度及一次成功的概率,可以考虑在export之前首先disable所有的完整性约束, 在import之后在enable所有的完整性约束。而对索引,可以考虑单独export索引。通过使用命令 "imp indexfile=……" 在import数据之后来单独创建索引。
如果希望在export数据库时,直接将产生的dmp文件写到外设上, 你可以使用 " exp file=设备名… Volsize=设备的容量"。
由于export出来的文件可能较大,而某些操作系统(如Linux)对文件大小有限制,如不能大于2G。因此可将dmp文件设置为指定大小的若干文件。如:
$exp sys/manager buffer=4096000 file=(full1.dmp,full2.dmp,full3.dmp,full4.dmp) filesize=2G Full=y inctype=complete log=full.log
分享到:
相关推荐
ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,...
Oracle数据库逻辑增量备份之exp/imp 1 一、实现需求 1 二、逻辑备份恢复工具exp/imp 2 1、逻辑备份原理 2 2、exp语法和参数 2 3、imp语法和参数 3 三、exp逻辑备份 4 1、exp表模式备份 4 2、exp用户模式备份 5 3、...
浅析Oracle数据库的逻辑备份与恢复.pdf
Oracle 数据库的备份与恢复 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。
oracle备份与还原数据库Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。
Oracle数据库的逻辑备份shell程序.pdf
Oracle数据库逻辑备份的SH文件
Oracle 数据库逻辑备份使用工具 Oracle 数据库逻辑备份形式 数据库状态检查 数据库版本检查 查看SGA区域 回滚段竞争检查 查看日志文件 查看表空间 检查job状态 监听管理 本地服务名配置 处理简单的连接问题 错误...
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
Java存储过程实现Oracle远程逻辑备份与恢复.pdf
2.6 ORACLE数据库的备份与恢复 39 2.6.1 Export 转入程序 40 2.6.2 Import 转入程序 42 2.6.3 增量卸出/装入 44 第3章 ORACLE数据库的网络应用 46 3.1 SQL*Net产品介绍 46 3.2 配置客户机/服务器结构 47 3.2.1 配置...
第三部分:管理Oracle数据库 第十六章:Oracle ASM 管理 第十七章:逻辑备份与恢复 第十八章:物化视图。 由于文件过大,只提供百度网盘下载地址和提取码,请放心下载。 信誉第一,如有任何问题,可以给我发私信或者...
数据备份专家是一款专为ORACLE数据库管理人员设计的,能够自动完成 ORACLE 数据库逻辑备份操作的软件。它封装了 ORACLE 自带的 EXP 数据导出工具和 IMP 数据导入工具,在设定好定时时间及其它信息后,每天在设定的...
Oracle8i数据库的逻辑备份技术及其应用.pdf
一个批处理脚本,可以作为windows的任务计划,对oracle数据库进行逻辑备份,并滚动删除,仅保留最近的N天备份。
总 目 录 第1章 数据库引论 第2章 Oracle数据库实用工具 第3章 SQL语言与查询 第4章 数据的定义、操纵与控制 第5章 PL/SQL程序块 ...第10章 Oracle数据库的逻辑备份 第11章 数据库设计过程与方法
Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式
Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,...