打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle数据库的备份和恢复
    ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。
a.简介
// 数据库的备份(导出)和恢复(导入)  *.dmp
    1.逻辑备份和物理备份
      一个数据库实例可以有多个用户,每个用户对应着一种方案,
      每个方案里面有每个用户自己的表视图索引等;
    2.导出/备份:导出表、导出方案(同时导出表视图触发器等)、导出数据库
      导出命令为exp命令,常用选项有:
         userid:用于指定执行导出操作的用户名、口令、连接字符串
         tables:指定表
         owner:指定方案
         full=y:用于指定执行导出操作的数据库
         inctype:指定导出操作的增量类型
         rows:指定执行导出操作是否要导出表中的数据
         file:用于指定导出文件名

b. 创建用户及赋予权限
    在sql/plus或者PL/SQL developer中运行:
    导出或备份当前用户下的表,用scott用户登陆,导出scott用户下的emp表
    1.用sys用户登陆数据库
       connsys/oracle@SIMLINK as sysdba;
    2.创建一个新用户
       create userexp_imp_dba identified by sys;
    3.给该用户赋予dba权限
   (1、scott用户备份自己表时也需要赋予dba权限;
     2、对sys用户赋予dba权限后对表备份和恢复仍然需要输入用户名和密码,输入用户名时为 sysas sysdba才可以)
       grant dba toexp_imp_dba;
C. 备份表和方案
   在dos命令行中运行:
    1.在oracle安装目录下BIN文件夹中有一个EXP.EXE程序,所以需要在BIN目录下运行导出命令,
   如“E:\oracle\product\10.1.0\Db_1\BIN”
    cmd
    E:
    cdoracle\product\10.1.0\Db_1\BIN
    2.//导出单张表
    expexp_imp_dba/exp_imp_dba@SIMLINK tables=(scott.kkk)file=D:\kkk.dmp
    3.//导出多张表
    expexp_imp_dba/exp_imp_dba@SIMLINK tables=(scott.kkk,scott.dept1)file=D:\kkk_dept1.dmp
    4.//将数据库中的表table1中的字段filed1以"76"打头的数据导出
    expexp_imp_dba/exp_imp_dba@SIMLINK tables=(scott.emp) file=d:\emp.dmpquery=\" where empno like '76%'\"
    5.//只导出表结构
    expexp_imp_dba/exp_imp_dba@SIMLINK tables=(scott.emp)file=d:\emp_jiegou.dmp rows=n;
   6.//当表比较大的时候,为了加快导出速度,可直接导出
    expexp_imp_dba/exp_imp_dba@SIMLINK tables=(scott.emp) file=d:\emp.dmp direct=y
    7.//导出方案(即一个用户下的所有表,视图,索引等)
    expexp_imp_dba/exp_imp_dba@SIMLINK owner=scott file=d:\scott.dmp
   

D. 恢复/还原表和方案
    1.//还原单张表(ignore=y 表示忽略建表错误)
    1.1注意这个还原表的时候会重复插入,所以应该在sql/plus中先删除表中所有原数据
    delete fromscott.kkk;
    delete fromscot.dept1;
    1.2DOS中BIN目录下运行:
       impexp_imp_dba/exp_imp_dba@SIMLINK  file=d:\kkk.dmpfromuser=scott tables=(kkk) ignore=y
    或者首先在sql/plus环境下sys用户中对scott用户授权
    grant dba to scott;
       impscott/tiger@SIMLINK file=d:\kkk.dmp tables=(kkk) ignore=y(没有表会自动创建)
    1.3设置表主键后就不会添加重复数据,但这也是恢复成功的一种
    alter tablescott.dept1 add constraint dept1_pri primary key(deptno);
    2.//还原多张表
    impexp_imp_dba/exp_imp_dba@SIMLINK file=d:\kkk_dept1.dmpfromuser=scott tables=(kkk,dept1) ignore=y
    3.//还原方案
    impexp_imp_dba/exp_imp_dba@SIMLINK file=D:\scott.dmp fromuser=scott touser=scott ignore=y
      
E. 导出整个数据库
    expexp_imp_dba/exp_imp_dba@SIMLINK full=y inctype=completefile=d:\simlink.dmp
    完全备份complete:对整个数据库的备份
   增量备份incremental:是备份上一次完全导出后改变的数据。
   累积备份cumulative :是备份自上次完全导出后改变的数据。
F. 恢复整个数据库
    impexp_imp_dba/exp_imp_dba@SIMLINK full=y  file=d:\simlink.dmp ignore=y

最后补充一下用PL/SQLDeveloper备份和还原表
 (1、E:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN下的tnsnames.ora文件中有数据库连接配置
   2、但是好像因为压缩方式不一样,经试验和命令不兼容
   3、这中方式只能备份和还原本用户下的表)
  登陆用户scott/tiger->工具->导出表->选择pl/sqldeveloper方式,之后看界面操作,略;
  登陆用户scott/tiger->工具->导入表,重点介绍四种导入方式:
   1、删掉表(Drop tables)
         勾选之后,自动默认选择创建表(Create tables),并且截断表(Truncate tables)和删除记录(Deletetables)变为灰色不可用;这个选项在恢复前首先删除表,然后创建表,再恢复表数据;
   2、创建表(Create tables)
         在导入数据前,表还未创建时可勾选;
   3、截断表(Truncate tables)
         在导入数据前首先清空表数据,然后再导入数据。此项和删除记录(Delete tables)互斥;
   4、删除记录(Delete tables)
         和截断表的功能基本相同,单和截断表互斥,且速度较慢,一般不使用;
  


   
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
备份数据库
oracle imp导入导出时表空间问题 - - JavaEye技术网站
oracle学习笔记之数据可管理
Linux 宝库 - oracle数据库 exp/imp命令详解
Oracle把本地的dmp备份文件导入到本地的Oracle数据库中语句
oracle数据库的导入导出实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服