博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle——20数据库恢复与备份
阅读量:5968 次
发布时间:2019-06-19

本文共 4706 字,大约阅读时间需要 15 分钟。

hot3.png

 备份是将数据库中的数据信息保存起来,而恢复则是将已经备份的数据库信息还原到数据库系统中。

 
 一、数据库的备份类型
 Oracle数据库的备份有3种标准形式:导出、脱机备份和联机备份。
 导出方式是数据库的逻辑备份,脱机备份和联机备份都是物理备份。
 1、逻辑备份
 导出有以下3种模式:
  (1)用户(user)模式:导出用户所有对象以及对象中的数据。
  (2)表(table)模式:导出用户的所有表或者用户指定的表。
  (3)全局(full)模式:导出数据库中的所有对象,包括数据、数据定义和用于重建数据库的存储对象。
 在导出期间,可以选择是否导出与表相关的数据字典的信息,如权限、索引和约束条件等。导出备份有3种类型:
  (1)完全型(complete export):对所有表执行全数据库导出,或仅对上次导出后修改过的表执行全数据库导出。
  (2)积累型(cumulative):备份上一次积累型备份所改变的数据。
  (3)增量型(incremental):备份上一次备份后改变的数据。
 2、物理备份
 物理备份是复制数据库文件而不是其逻辑内容。
 (1)脱机备份。脱机备份是在数据库正常关闭的情况下进行。数据库正常关闭后会提供给用户一个完整的数据库。当数据库处于脱机备份状态时,备份的文件包括所有数据文件、控制文件、联机重做日志和服务器参数文件。
 (2)联机备份。联机备份可以在数据库打开的情况下进行。进行联机备份时要求数据库必须在归档方式下操作,在数据库不使用或者使用率低的情况下,同时要有大量的存储空间。数据库可从一个联机备份中完全恢复,并且可以通过归档的重做日志,前滚到任一时刻。联机备份的主要文件包括所有数据文件、归档的重做日志文件和一个控制文件。

 二、导入和导出
 导入是数据库的逻辑恢复,导出是数据库的逻辑备份。
 1、导出
 导出是通过在命令提示符窗口输入exp命令来实现的,可以通过输入exp help=y来调用exp命令的帮助信息。
 导出有3种模式:
  交互模式:在输入exp命令后,更加提示来输入导出参数完成导出。
  命令行模式:把参数和参数值传递给导出命令。
  参数文件模式:参数文件模式的关键参数是parfile。parfile的对象是一个包含激活控制导出对话的参数和参数值的文件名。
  
 下面以交互模式为例导出用户andy下的几个表:
 Microsoft Windows [版本 6.1.7601]
 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

 C:\Users\andy>exp /*在命令提示符下输入exp命令,接下来按提示操作*/

 Export: Release 11.1.0.6.0 - Production on 星期五 6月 1 10:48:19 2012

 Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 用户名: andy /*输入登录数据库的用户名*/
 口令:    /*输入登录口令*/

 连接到: Oracle Database 11g Release 11.1.0.6.0 - Production

 输入数组提取缓冲区大小: 4096 > /*这里选择默认值,直接回车*/

  导出文件: EXPDAT.DMP > D:\andy.dmp /*输入导出文件的位置*/

 (1)E(完整的数据库), (2)U(用户) 或 (3)T(表): (2)U > t /*选择导出类型,这里选表(t)*/

 导出表数据 (yes/no): yes > /*这里选择默认值,直接回车*/

 压缩区 (yes/no): yes > /*这里选择默认值,直接回车*/

 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

 即将导出指定的表通过常规路径...

 要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_module /*输入要导出的表名*/

 . . 正在导出表                        T_MODULE导出了          47 行

 要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_employee /*输入要导出的表名*/

 . . 正在导出表                      T_EMPLOYEE导出了           1 行

 要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_sysauthority /*输入要导出的表名*/

 . . 正在导出表                  T_SYSAUTHORITY导出了         137 行

 要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > /*导完之后可以直接按回车退出*/

 

 

命令行模式:

       

exp username/password@host:port/service file=exportFilePath

 

  • username:导出的用户名称
  • password:导出的用户的密码
  • host:导出数据库所在主机的ip
  • port:导出数据库所在主机使用的端口
  • service:导出数据库的实例名
  • file:指定导出文件存放的路径

 

当导出数据库是本地数据库,或者在本地的NETWORK中配置了对应的别名后可以讲host和port省略,如:

exp abc/abc@orcl file=d:\oracle\abc.dmp

 

 
 2、导入
 导入跟导出类似,用法也类似,只是导出用的是exp命令,而导入用的是imp命令。
 以下是通过在命令提示符窗口输入imp help=y得到的帮助信息:
  Microsoft Windows [版本 6.1.7601]
  版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
  C:\Users\andy>imp help=y
  Import: Release 11.1.0.6.0 - Production on 星期五 6月 1 11:16:52 2012
  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  通过输入 IMP 命令和您的用户名/口令, 导入
  操作将提示您输入参数:
    例如: IMP SCOTT/TIGER
  或者, 可以通过输入 IMP 命令和各种参数来控制导入
  的运行方式。要指定参数, 您可以使用关键字:
    格式:  IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
    例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
        或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
  USERID 必须是命令行中的第一个参数。
  关键字   说明 (默认值)        关键字      说明 (默认值)
  --------------------------------------------------------------------------
  USERID   用户名/口令           FULL       导入整个文件 (N)
  BUFFER   数据缓冲区大小        FROMUSER    所有者用户名列表
  FILE     输入文件 (EXPDAT.DMP)  TOUSER     用户名列表
  SHOW     只列出文件内容 (N)     TABLES      表名列表
  IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度
  GRANTS   导入权限 (Y)          INCTYPE     增量导入类型
  INDEXES   导入索引 (Y)         COMMIT       提交数组插入 (N)
  ROWS     导入数据行 (Y)        PARFILE      参数文件名
  LOG     屏幕输出的日志文件    CONSTRAINTS    导入限制 (Y)
  DESTROY                覆盖表空间数据文件 (N)
  INDEXFILE              将表/索引信息写入指定的文件
  SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
  FEEDBACK               每 x 行显示进度 (0)
  TOID_NOVALIDATE        跳过指定类型 ID 的验证
  FILESIZE               每个转储文件的最大大小
  STATISTICS             始终导入预计算的统计信息
  RESUMABLE              在遇到有关空间的错误时挂起 (N)
  RESUMABLE_NAME         用来标识可恢复语句的文本字符串
  RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
  COMPILE                编译过程, 程序包和函数 (Y)
  STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
  STREAMS_INSTANTIATION  导入流实例化元数据 (N)

  下列关键字仅用于可传输的表空间

  TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
  TABLESPACES 将要传输到数据库的表空间
  DATAFILES 将要传输到数据库的数据文件
  TTS_OWNERS 拥有可传输表空间集中数据的用户

 

导入常用如下指令:

imp username/password@host:port/service fromuser=fromuser touser=touser file=importFilePath
  • username:导入用户名
  • password:导入用户的密码
  • host:导入的数据库所在主机的ip
  • port:导入数据库使用的端口号
  • service:导入数据库使用的实例名
  • fromuser:导出文件对应的用户
  • touser:导入到哪个用户
  • file:将用来进行导入的文件所在的路径

 

当导入数据库是本地数据库,或者在本地的NETWORK中配置了对应的别名后可以讲host和port省略,如:

imp abc/abc@orcl fromuser=def touser=abc file=D:\oracle\def.dmp

 

 

 

 三、脱机备份
 脱机备份是一种物理备份,通常在数据库通过一个shutdown normal或shutdown immediate命令正常关闭后进行。当数据库关闭时,其使用的各个文件都可以
进行备份。脱机备份一般在SQL/PLUS中进行。步骤如下:
 (1)正常关闭要备份的实例,在登录数据库后,使用shutdown normal命令关闭数据库
 (2)备份数据库。关闭数据库后可以使用各种备份工具备份所有的数据文件、重做日志文件、控制文件和参数文件。
 (3)启动数据库。备份完成后可以使用startup mount命令启动数据库。
 
 
 四、联机备份
 联机备份又称为archivelog备份,它要求数据库运行在archivelog方式下。
 1、以archivelog方式运行数据库
 步骤如下:
  (1)首先以管理员身份连接数据库
  (2)在sql/plus中运行如下语句:
   shutdown immediate;
   startup mount;
   alter database archivelog;
   alter database open;
   注:利用archive log list语句可以查看数据库的archive log状态。
 2、执行数据库备份
  一旦数据库在archivelog方式下打开并对用户可用时就可以进行备份。尽管联机备份可以在工作期间进行,但最好安排在用户活动比较少的时间进行。
  数据库的备份可以方便的通过企业管理器进行,打开企业管理器,选择调度备份开始备份操作。

转载于:https://my.oschina.net/NEMOCoder/blog/608960

你可能感兴趣的文章
JDK10都发布了,nio你了解多少?
查看>>
Android P FAQ第一弹:非SDK管控特性
查看>>
node+express+mongDB实现简单登录注册
查看>>
个人博客 SEO 优化(2):站内优化
查看>>
从源码全面剖析 React 组件更新机制
查看>>
十个你需要在 PHP 7 中避免的坑
查看>>
spring-MVC源码解读(一)
查看>>
[译]php和curl_multi_exec
查看>>
java对象关系映射ROM
查看>>
Hystrix指标窗口实现原理
查看>>
【419天】跃迁之路——程序员高效学习方法论探索系列(实验阶段176-2018.03.31)...
查看>>
LeetCode 200. Number of Islands
查看>>
做一个合格的前端,gulp资源大集合
查看>>
常用符号的英文名
查看>>
Laravel - Artisan 个人常用总结
查看>>
重温一遍数据结构之单链表(golang版)
查看>>
使用git修复线上指定版本的问题
查看>>
【Node核心模块HTTP】
查看>>
CSS > 关于雪碧图预处理和后处理方案的讨论
查看>>
从 JavaScript 到 TypeScript 5 - 路由进化
查看>>