热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

备份和恢复

备份定义:备份是一份数据副本。这个数据副本包含着数据库的主要部分,例如控制文件和数据文件。备份就像是一项安全措施,他可以防止意外的数据丢失,即便原始数据丢失了,我们也可以通过备份来重新构建数据。备份分为物理备份和逻辑备份。物理备份,将实际

备份定义:备份是一份数据副本。这个数据副本包含着数据库的主要部分,例如控制文件和数据文件。备份就像是一项安全措施,他可以防止意外的数据丢失,即便原始数据丢失了,我们也可以通过备份来重新构建数据。 备份分为物理备份和逻辑备份。物理备份,将实际

备份定义:备份是一份数据副本。这个数据副本包含着数据库的主要部分,例如控制文件和数据文件。备份就像是一项安全措施,他可以防止意外的数据丢失,即便原始数据丢失了,我们也可以通过备份来重新构建数据。

备份分为物理备份和逻辑备份。物理备份,将实际组成的数据库的操作系统文件从一处拷贝到另外一处的备份过程,可以使用Oracle的恢复管理器(recovery Manager,RMAN)或操作系统命令进行数据的物理备份。

根据数据库的备份策略可分为:全部数据库备份和部分数据库备份。

全部数据库备份:包含所有数据库文件和至少一个控制文件。部分数据库备份:可能包括0个或多个表空间,或者0个或多个数据文件,归档日志后控制文件。

根据备份类型可以分为完全备份和增量备份。完全备份,在对数据文件进行备份是将数据文件的所有数据块全部备份出来,不论该数据块是否被修改过。增量备份,自上一次备份后,数据文件中发生变化的数据块的一个副本。

根据实施物理备份时的数据库状态分为冷备份和热备份。冷备份又称为一直备份和脱机备份,在数据库没有打开的情况下创建的。热备份是不一致备份或联机备份,当数据库中可读写的数据库文件和控制文件的系统改变号(SCN)在不一致的条件下备份。

逻辑备份与恢复,就是对数据库实施导入和导出,导出,数据库的逻辑备份,实质是读取一个数据库记录集并将这个记录写入一个文件,这些记录的导出与其物理位置无关。

导入,数据库的逻辑恢复,实质是读取被导出的二进制转储文件并将其恢复到数据库。

逻辑备份创建数据库对象的逻辑拷贝并存入一个二进制转储文件,这种二进制转储文件一般都是.dmp文件。

恢复定义:就是当发生故障后,利用已备份的数据文件或者控制文件,重新建立一个完整的数据库。恢复分为实例恢复和介质恢复。实例恢复是当Oracle实例出现失败后,Oracle自动进行的恢复。介质恢复是当存放数据库的介质出现故障时所做的恢复。

数据泵是一种在数据库之间或在数据库与操作系统文件之间传输数据或元数据的高速机制。

数据泵可以用来在两个数据库之间或者单个数据库内把数据库从一个用户复制到另外一个用户,他还可以用来把整个数据库的逻辑结构副本、一个用户列表、一个库表列表或一个表空间列表提取到可移植的操作系统。

数据泵工具可以从命令行实用程序expdp和impdp中调用,或者通过PL/SQL程序包DBMS_DATAPUMP调用。

数据泵技术的特定:1、导入/导出的所有工作都由数据库实例完成。2、可以使用DBMS_DATAPUMPPL/SQL建立、检测和调整数据泵任务。3、可以对IMPDP/EXPDP导入/导出任务进行重新启动(类似于网络下载的断点续传)

如果要将数据导出到一个文件中,首先要做的就是为输出路径建立一个数据库的DIRECTORY对象,然后还要给将要进行数据导入和导出的用户授予访问权限。

使用CREATE DITECTORY创建目录对象window环境下:CREATEDIRECTORY pbdir AS ‘D:\datadump’; Unix环境下:CREATEDIRECTORY pbdir AS ‘/oracle/datapump/dumps’;

为用户授权:grant read,write on directorypbdir to pb;授完权后用户可以使用数据泵导入和导出操作了。

恢复方法分类:完全恢复,将数据库恢复到数据库失败时的状态。不完全备份,将数据库恢复到数据库失败前的某一时刻的状态。

Expdp的导出方式:

数据库方式

整个数据库被导出到操作系统文件中,包括用户账户、公用的同义词、角色及资源

用户模式

可以导出一个或多个用户下的所有数据和元数据

表导出

导出的数据包括用于一组表的所有数据和元数据

表空间方式

导出时提取用于一个表空间中所有对象的数据和元数据,另外还提取依赖于指定表空间列表中所有对象的任何依赖对象。

对于索引之类的某些对象,在导出时只会导出元数据。由数据泵导出程序所创建的文件称为转储文件。

完整的数据库导出要求用户拥有EXP_FULL_DATABASE角色。

windows环境下:使用SYSTEM用户实施完全数据库导出

d:expdpsystem/passwd directory = pbdir dumpfile=alldb.dmp full=y;

unix环境下:$ expdp system/passwd directory=pbdirdumpfile=alldb.dmp full=y;

其中system/passwd是用户和密码;directory:导出数据的目录;dumpfile:转储文件名称;full=y;表示实施的是完全数据库。

用户模式导出方式:可以省略full=y参数,使用schemas=schema_list参数来表示要导出的用户列表,如果有多个用户,则用户之间用逗号分隔。要想导出多个用户,必须具有EXP_FULL_DATABASE角色权限。

例如:expdp pb/123456 directory = pdbirdumpfile = pb.dmp schemas = pb;

表导出方式:需要使用tables = table_list参数取代schemas或full参数。其中table_list是一个用逗号分隔的待导出的表列表。

示例:expdp pb/123456 directory=pbdirdumpfile = pb_tables.dmp tables=person,student nologfile=y cOntent= data_only

nologfile=y表示不会将操作日志写入磁盘,不过仍会在终端显示出来。cOntent= data_only:表示只导出表中的数据而不导出元数据;如果是cOntent= metadata_only,则表示只导出元数据而不导出表中的数据。如果不写这个参数,则二者全部导出。

表空间导出方式:要求数据库用户拥有EXP_FULL_DATABASE角色权限

要想用表空间方式执行表空间导出,需要使用参数tablespaces=tablespace_list指定要导出的表空间

示例:expdp system/passwddirectory=pbdir dumpfile=person_ts.dmp tablespaces=person;

只有用户导入不能导入表和表空间模式导出的数据。

读取导出文件pb.dmp,并且提取所有的DDL,将其放入到pb.sql文件中,不对操作日志进行写入磁盘操作。

d:>impdpsystem/passwd full=y directory=pbdir dumpfile=pb.dmp nologfile=y sqlfile=pb.sql

system/passwd:用户名和密码。directory:数据库目录对象。dumpfile:指定转储文件。full=y表示实施的是全部导入。nologyfile=y:表示不进行写日志操作。sqlfile:表示将元数据(如DDL语句)写入到指定的文件中。

使用exp导出整个数据库,要导出整个数据库仍然需要用户具有EXP_FULL_DATABASE角色权限。

示例:exp userid=pb/123456 direct=yfull=y rows=y file=d:\exp\pb.dmp log=d:\exp\pb.log。

userid:导出操作的用户名和密码;direct:是否按照直接路径导出;full=y:表示试试的是全部数据库导出操作;rows=y表示连同基表中的数据一同导出;file:导出文件,注意,这里不是使用数据泵是的数据库目录对象,而是操作系统的文件目录。log:导出操作日志文件。

导出某个用户的全部数据:与导出整个数据库相比,只是少了参数full=y。导出某个用户中的表,与导出某个用户全部数据相比只是多了tables=(person,student)语句。

使用imp导入整个数据库:imp pb/123456 file=d:\exp\pb.dmp log=d:\exp\pb.log full=y ignore=y;

参数ignore表示可以忽略导入过程中产生的错误。

指定用户的导入:如果导入时设置full=y,那么在导入时就可以通过fromuser和touser实现将一个用户中的数据导入另一个用户中。

例如:imp pn/123456 file=d:\exp\pb.dmpfromuser=pb touser=pbdemo help=y;

就是将pb用户中的数据导入到了pbdemo用户中。

椐]枫熼枫鷌妜犊楗╧yOracle以循环方式,写入联机重做日志文件。

热备份要备份的文件:1、所有数据文件,一个表空间一个表空间备份(设置表空间为备份状态、备份表空间的数据文件、恢复表空间为正常状态。)2、所有归档的重做日志文件(临时停止归档进程、记录下归档重做日志文件、重启归档进程、备份归档的重做日志文件)3、一个控制文件(通过alter database命令进行)

热备份优点:1、提供了完全的时间点恢复。2、在文件系统备份是允许数据库保持打开状态。

热备份缺点:1、难于维护且不能出错。2、若热备份不成功,则多得到的结果不可能用于时间点的恢复。
推荐阅读
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了B360主板是否可以安装win7系统的问题。由于B360主板不支持win7系统且缺乏官方驱动的支持,安装win7系统可能存在兼容性和稳定性问题。然而,通过借助USB3.0转接卡,B360主板仍然可以安装win7系统,但USB接口无法使用。相比之下,B365主板可以直接支持win7系统,并提供了相应的驱动,具有更好的稳定性和兼容性。选择合适的主板对于安装win7系统至关重要。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
author-avatar
小辉0110_737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有