设为首页 收藏本站
查看: 855|回复: 0

[经验分享] oracle逻辑备份imp/exp-yiyi

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2018-9-22 12:53:18 | 显示全部楼层 |阅读模式
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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-599919-1-1.html 上篇帖子: 我对oracle架构的心得 下篇帖子: oracle中dump函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表