Oracle 基础 数据库备份与恢复

一、为什么需要数据备份

  造成数据丢失的主要原因:

  1、介质故障。

  2、用户的错误操作。

  3、服务器的彻底崩溃。

  4、计算机病毒。

  5、不可预料的因素。

  Oracle中故障类型分为以下4种。

  1、语句故障:

  执行SQL语句过程发生的逻辑故障可导致语句故障。如果用户编写的SQL语句无效,就会发生语句故障。Oracle可自我修复语句故障,撤销语句产生的而印象,并将控制权交给应用程序。

  

  2、用户进程故障

  当用户程序出错而无法访问Oracle数据库时,就会发生用户进程故障。用户进程故障只会导致当前用户无法操作数据库,但不会印象其他用户进程,当用户进程出现故障时,进程监控程序(PMON)会自动执行进程恢复。

  3、实例故障

  当Oracle 数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障。硬件问题包括意外断电,而然间问题可能是服务器操作系统崩溃。如果发现实例故障,Oracle会自动完成实例修复。实例修复将数据库恢复到与故障之前的事务一致状态,Oracle会自动回滚未提交的数据。

  4、介质故障

  介质故障是当一个数据库文件或者磁盘不能读或者不能写时出现的故障。

二、备份

  备份就是把创建一个数据库副本到磁盘。从不同角度分类如下:

  1、从物理角度与逻辑角度分类:

  (1)物理备份:对数据库操作系统的物理文件(如数据文件、控制文件和日志文件等)的备份。物理备份又可分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者对运行在归档日志方式的数据库进行备份。

  (2)逻辑备份:对数据库逻辑组件(如表和存储过程等数据对象)的备份。

  2、从数据库的备份策略角度分类:

  (1)完全备份:每次对数据进行完整备份。

  (2)增量备份:值有那些在上次完全备份或者增量备份后备修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖之前的备份记录,出问题的风险较大。例如:如果在星期一进行完全备份,在星期二至星期五进行增量备份。如果星期五数据被破坏了,则数据恢复需要星期一的完全备份和从星期二至星期五的所有增量备份。

  (3)差异备份:备份那些从上次完全备份之后被修改过得文件。因此从差异备份中恢复数据的时间长短,因此只需要两份数据(最后一次完全备份和最后一次差异备份),缺点是每次备份的时间较长。例如:如果在星期一进行完全备份,在星期二到星期五进行了差异备份,如果星期五数据被破坏了,则数据恢复只需要星期的完全备份和星期四的差量备份。

  增量备份和差异备份的区别:增量备份需要保留所有增量备份的数据;差异备份只需要保留最后一次差异备份的数据。

三、恢复

  恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库。恢复分为两种类型:

  1、实例恢复:当Oracle实例出现失败后,Oracle自动进行的恢复。

  2、介质恢复:当存放数据库的介质出现故障时所做的恢复。介质恢复又分为完全恢复和不完全恢复。

    完全恢复:将数据库恢复到数据库失败时的状态。

    不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。

四、导出

  (一)使用数据泵技术:

  1、expdp的导出方式:

    1)数据库方式:整个数据被导入到操作系统文件中。

    2)用户模式:导出一个或者多个用户下的所有数据和元数据。

    3)表方式:到处一组表的所有数据和元数据。

    4)表空间方式:用于提取一个表空间中所有的数据和元数据,另外还提取依赖于指定表空间列表中所有对象的任何依赖对象。

    转储文件:由数据泵到处程序所创建的文件成为转储文件,在单个数据泵导出作业期间所有的转储文件称为转储文件集。

  2、基于命令行导出

   语法:

  c:\expdb system/password directory=pbdir dumpfile=pb.dmp full=y tables=table_list tablespaces=tablesapce_list schemas=schema_list    remap_schema=user1:user2 nologfile=y sqlfile=pb.sql

  system/passwrod:用户名和密码

  directory:数据库目录对象

  dumpfile:指定转储文件

  full=y:表示实施的全部导入

  tables=table_list:表示导入表的列表

schemas=schema_list:表示导入的用户模式

tablespaces=tablesapce_list:表示导入的表空间

remap_schema=user1:user2:表示从user1导入到user2中

  nologfile=y:表示不进行日志操作

  sqlfile:表示将元数据(DDL语句)写入到指定文件中。

  注意:如果需要导出完全数据库,必须具备exp_full_database权限。

  1)数据库方式:    

  注意:如果需要导出完全数据库,必须具备exp_full_database权限。

  expdp scott/[email protected] directory=dump_dir dumpfile=full.dmp full=y

    

  2)用户模式方式:    

  expdp scott/[email protected] directory=dump_dir dumpfile=scottschema.dmp schemas=scott

   

  3)表导出方式:    

  expdp scott/[email protected] directory=dump_dir dumpfile=tables.dmp tables=emp,dept,bonus,salgrade content=data_only

  说明:

  content=data_only:data_only表示只导出表中的数据,不导出元数据;metadata_only:则表示只导出元数据而不导出表中的数据。如果不写,则两者全部导出。  

  4)表空间导出方式:    

  expdp scott/[email protected] directory=dump_dir dumpfile=tablespace.dmp tablespaces=users

    

  3、DBMS_DATAPUMP进行数据泵导出

  使用这种方式比直接使用命令方式要麻烦一些,但是却从数据库作业调度中安排数据泵导出作业的运行日程提供了方便,为数据泵导出提供了更好的功能度和控制度。

declare
  --创建数据泵工作句柄
  h1 NUMBER;
begin
  --建立一个用户定义的数据泵做schema的方案备份。
    h1 := DBMS_DATAPUMP.open(operation => ‘export‘,job_mode => ‘schema‘);
    --定义存储文件
    DBMS_DATAPUMp.add_file(handle => h1,filename => ‘es_shop.dmp‘);
    --定义过滤条件
    DBMS_DATAPUMP.metadata_filter(handle => h1,name => ‘schema_expr‘,value => ‘in‘‘SHOP_USER‘‘‘);
    --启动数据泵会话
    DBMS_DATAPUMP.start_job(handle => h1);
    --断开数据泵会话
    DBMS_DATAPUMP.detach(handle => h1);
end;

--默认保存路径:C:\Oracle11g\admin\orcl\dpdump

  

五、导入

  (一)数据泵导入模式

  1、导出方式

  1)全部导入模式:一个导出文件集的全部内容被装入,该导出文件集不一定是全数据库方式进行导出的。

  2)用户模式:指定文件集中的一个用户列表的全部内容被导入。

  3、表模式:指定表和相依对象从导出文件中得到导入。

  4、表空间模式:指定文件集中属于表空间列表内的所有内容都被导入。

  2、使用命令行导入

  语法:

  c:\impdp system/password directory=pbdir dumpfile=pb.dmp full=y tables=table_list tablespaces=tablesapce_list schemas=schema_list  remap_schema=user1:user2 nologfile=y sqlfile=pb.sql

  system/passwrod:用户名和密码

  directory:数据库目录对象

  dumpfile:指定转储文件

  full=y:表示实施的全部导入

  tables=table_list:表示导入表的列表

schemas=schema_list:表示导入的用户模式

tablespaces=tablesapce_list:表示导入的表空间

remap_schema=user1:user2:表示从user1导入到user2中

  nologfile=y:表示不进行日志操作

  sqlfile:表示将元数据(DDL语句)写入到指定文件中。

  

  例:

  1)导入整个数据库:  

  impdp scott/scott@accp directory=dump_dir dumpfile=FULL.DMP full=y

  2)导入表空间:  

  impdp scott/scott@accp directory=dump_dir dumpfile=tablespace.DMP tablespaces=mytest

  3)导入scott用户下的所有表:  

  impdp scott/scott@accp directory=dump_dir dumpfile=TABLES.DMP tables=emp,dept,bonus,salgrade

  4)将导出的scott用户下的dept和emp表导入到mytest用户下

  impdp scott/[email protected] directory=dump_dir dumpfile=SCHEMA.DMP tables=dept,emp remap_schema=scott:mytest

  

  3、DBMS_DATAPUMP进行数据泵导入

  

declare
  --创建数据泵句柄
    h1 NUMBER;
begin
  --建立一个用户定义的数据泵通过数据泵连接orcllib进行访问。
    h1 := DBMS_DATAPUMP.open(operation => ‘IMPORT‘,job_mode => ‘schema‘,remote_link => ‘orcllib‘);
    --把shop_dev_data对象模式导入到shop_back对象模式中。
    DBMS_DATAPUMP.metadata_remap(handle => h1,name => ‘REMAP_SCHEMA‘,old_value => ‘SHOP_DEV_DATA‘,value => ‘SHOP_BACK‘);
  --将日志写入shop.log文件中
    DBMS_DATAPUMP.add_file(handle => h1,filename => ‘shop.log‘,filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
    --启动数据泵
    DBMS_DATAPUMP.start_job(handle => h1);
    --断开数据泵连接
    DBMS_DATAPUMP.detach(handle => h1);
end;
时间: 2024-09-29 01:04:41

Oracle 基础 数据库备份与恢复的相关文章

Oracle 10g数据库备份与恢复操作手册

Oracle 10g数据库备份与恢复操作手册 前言 文档目的 备份与恢复是数据库管理中最重要的方面之一.如果数据库崩溃却没有办法恢复它,那么对企业造成的毁灭性结果可能会是数据丢失.收入减少.客户不满等.不管公司是使用单个数据库还是多个数据库来存储数百  GB或    TB的数据,它们都有一个共同点,即需要制订一个备份与恢复方案来备份重要数据并使自身免于灾难.要制定一个适合自己公司情况的合理的备份与恢复方案,就必须熟悉备份与恢复的方法和操作. 为了给 Oracle DBA和相关技术人员提供一个参考

Oracle基础 数据库备份和恢复

原文:Oracle基础 数据库备份和恢复 一.为什么需要数据备份 造成数据丢失的主要原因: 1.介质故障. 2.用户的错误操作. 3.服务器的彻底崩溃. 4.计算机病毒. 5.不可预料的因素. Oracle中故障类型分为以下4种. 1.语句故障: 执行SQL语句过程发生的逻辑故障可导致语句故障.如果用户编写的SQL语句无效,就会发生语句故障.Oracle可自我修复语句故障,撤销语句产生的而印象,并将控制权交给应用程序. 2.用户进程故障 当用户程序出错而无法访问Oracle数据库时,就会发生用户

深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)

课程讲师:小流老师 课程分类:Oracle 适合人群:高级 课时数量:15课时 更新程度:完成 服务类型:C类(普通服务类课程) 用到技术:oracle 涉及项目:oracle 12c数据库备份与恢复 需要更多相关资料可以联系 Q2748165793 课程提纲 第一讲:介绍备份和恢复相关操作 备份和恢复的目标 备份和恢复的解决方案 Oracle flashback技术 第二讲:开始RMAN操作和RMAN体系架构 RMAN的环境 RMAN Channels RMAN Repository RMAN

oracle 12c数据库备份与恢复教程

深入oracle 12c数据库备份与恢复(优化RMAN性能.Oracle flashback技术)课程讲师:小流老师 课程分类:Oracle适合人群:高级课时数量:15课时用到技术:oracle涉及项目:oracle 12c数据库备份与恢复咨询QQ:1337192913 课程简介:   学习最新ORACLE 12c数据库备份与恢复的相关的知识,讲解RMAN的体系结构,并通过大量的实践操作完成各种场景的备份与恢复操作.优化RMAN性能.诊断并处理数据库备份和恢复中出现的问题, 以实际的项目管理角度

ORACLE数据库备份与恢复详解

ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style) 和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示 三种方式各有优点,我们做个比较(这个是用Fireworks画的,

Oracle数据库备份与恢复的三种方法

转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10. 有删改 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份. 导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去. 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的

【转载:Oracle基础知识】Oracle数据库体系结构

先来看张直观的图:                                            oracle 11g 体系结构图 理解Oracle体系结构要充分理解三个概念:数据库(database),数据库实例(instance),会话(session),一定不要把这三个概念弄混. 数据库的概念 (A)    物理存储结构由数据文件.控制文件.重做日志文件组成: 1.       数据文件(datafile) select * from dba_data_files; 数据文件包括存

Oracle DBA数据库高级工程师培训上部(项目实施+备份恢复+基础深入)

Oracle DBA数据库高级工程师培训上部(项目实施+备份恢复+基础深入) 购买地址: http://edu.51cto.com/pack/view/id-739.html 描述 Oracle DBA数据库高级工程师培训课程是风哥独自研发的精品实战课程,本路线图主要是让大家快速就业.高薪就业.课程内容以实战为主(占98%),理论为辅(占2%).本课程知识全面系统实用,结合风哥十年Oracle经验,囊括企业用到的所有知识点,课程包含大量实战案例,涉及Oracle核心技术及底层研究,从零开始学习O

《Oracle 12c数据库DBA入门指南 》目录

 当当网页面链接: http://product.dangdang.com/23625712.html 第1章  Oracle数据库基础知识 1.1  什么是关系数据库 1.1.1  关系数据库模型 1.1.2  关系数据模型的创始人 1.2  Oracle数据库发展简史 1.2.1  公司之初 1.2.2  Oracle数据库的发展历程 1.3  数据库RDBMS 1.4  SQL语言简介 1.4.1  SQL语言概述 1.4.2  SQL语句 1.5  本章小结 第2章  Oracle