ORACLE数据库数据的备份与恢复

原创作品,转自请在文字开头显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10052949.html

数据备份恢复在数据库管理中至关重要,今天,总结一下数据库备份与恢复需要注意的方面和实际操作!、

一、在备份之前首先应该执行commit语句,将所有未提交的数据进行提交,(提交了的数据也有可能在内存),执行alter system checkpoint语句,所有的脏数据(内存中所有修改过的数据,这些数据有可能被提交,也有可能未被提交)都会被写入到了磁盘上,但是如果被写入磁盘的数据块处于未提交状态,那么另外一个会话登入后是不可见的!

commit:标志了事务的提交,数据的生效,其他用户或者会话才是可见的,不管该数据是在磁盘上还是在内存中。

commit后首先将redo保存到磁盘,首先保存redo而不保存数据的原因是redo的保存比修改数据的保存快很大,保证了数据提交的速度,而且一旦redo被保存,那么即使数据没有被保存,也可以通过redo将该数据恢复,所以,redo的保存保证了数据的安全。

redo保证了数据的安全,此时再执行checkpoint,并不是多此一举,将内存数据写入磁盘,一是保证内存的利用率,不至于内存脏数据太大,二是对于数据恢复有很大的作用

二、实例恢复发生在oracle启动的第三个阶段

第一阶段:startup nomount(读取spfile),没有进行实例恢复

第二阶段:alter database mount(读取控制文件),没有进行实例恢复

第三阶段:alter database open(检查控制文件,数据文件头,检查数据完整性),进行实例恢复

下面将数据库强制关闭,shutdown abort(强制关闭,这样关闭快速,但是一些内存数据不会被保存到数据库磁盘,在数据库下次启动的时候就会进行实例恢复,在实际环境中不建议这样关闭),然后分阶段启动数据库:

数据库实例恢复的大概原理:Oracle在打开数据库时(alter database open),会检查每个文件头上的信息(SCN),并同控制文件中相应的信息(SCN)比较,如果不一致,则进行实例恢复。

实例恢复的过程 :

首先:前滚 rolling forward ,读取状态为current和active状态的日志(redo log),将发生crash时,没有来得及写到磁盘上的数据块,使用redo的信息来恢复。

其次:打开数据库(alter database open)

最后:回滚 rolling back: 将没有提交的事务进行回滚。

三:介质恢复

当发生以下情况时,实例恢复无效,需要进行介质恢复:

1、数据文件丢失,损坏

2、在线日志文件(online redo)丢失,损坏

3、数据文件太旧 (比如从一个备份集中恢复过来的文件)

4、文件太新(比如,其它所有的文件都是从备份中恢复过来的)

如下图:将数据文件11号文件offline之后,进行11号文件恢复,显示出错,这种错误就是数据文件太旧无法恢复

四、数据库的备份方式

1、Rman(物理备份):针对 数据库,表空间,数据文件,数据块,这种方案备份的速度很慢,不建议备份在线日志文件,其他文件都可以备份

2、exp,expdp(逻辑备份):针对 用户,数据库对象(表,分区...),这种备份方案对数据的完整性保证不是很好

3、只读表空间+传递表空间,这种备份方案要求将某些表空间置为只读形式,类似与数据仓库,不能再改变

4、Data guard,这种备份方案比较常用

五、数据库备份操作

1、Rman备份:首先建议将数据运行在归档模式下

其次,以rman模式登录数据库,如果全库备份,直接使用下面命令备份就好

如果备份个别表空间,则首先我们看看有哪些表空间

随便选择一个表空间,我们就选择users表空间进行备份,可以看到速度很快

接下来恢复该表空间,过程都是很快的

2、export

备份:export  用户名/密码 file=用户名.dmp  导出该用户下的所有表

恢复: import  用户名/密码 file=用户名.dmp full=y(表示全部导入)

import  用户名/密码 file=用户名.dmp tables=tt(表示导入tt表)

持续更新......

原文地址:https://www.cnblogs.com/sunshine5683/p/10052949.html

时间: 2024-08-01 14:24:00

ORACLE数据库数据的备份与恢复的相关文章

Oracle数据库泵的备份与恢复

Oracle数据库泵的备份与恢复 目录 一.数据库备份和恢复前的准备... 1 1.给数据库用户授权并创建DIRECTORY对象... 1_Toc388455817 二.数据泵的备份和恢复... 1 1.      数据库备份... 1 2.      数据库恢复... 2 三.进入交互模式... 4 一.数据库备份和恢复前的准备 1.给数据库用户授权并创建DIRECTORY对象 在SQL命令行下执行如下命令(执行sql的用户要有目录创建和授权的权限): grant create any dir

Oracle 数据库 数据文件 表 表空间 用户的关系

这涉及到数据库的物理结构和逻辑结构. 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理存储. 每一个Oracle数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数据.逻辑数据库结构(如表.索引等)的数据物理地存储在数据库的数据文件中.数据文件通常为*.dbf格式,例如:userCIMS.dbf.数据文件有下列特征:

Oracle数据库数据同步方案

一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblink来完成. 二.通过物化视图定时刷新来实现数据同步.物化视图刷新方式有增量刷新和完全刷新两种模式: 三.高级复制,分为多主复制和物化视图复制两种模式.其中多主复制能进行双向同步复制和异步复制:物化视图用于单向复制,定时刷新,与第二条类似: 四.流复制,可实现实时和非实时同步: 五.GoldenGat

Oracle数据访问其他Oracle数据库数据

在本地oracle数据库创建database link DROP DATABASE LINK MYDBLINK; create database link mydblink connect to zszq identified by "zszq" using '192.168.0.175:1521/orcl'; SQL> DROP DATABASE LINK MYDBLINK; 数据库链接已删除. SQL> create database link mydblink con

SSIS获取Oracle数据库数据

获取Oracle数据库步骤如下: 1.目标服务器获取连接Oracle数据库权限2.安装Oracle客户端,名称为win32_11gR2_client 安装管理员版本的.3.将配置文件tnsnames.ora放到D:\app\Administrator\product\11.2.0\client_1\network\admin下,并且tnsnames.ora包含ip,端口号和服务名(SID)4.SSIS中使用OLE DB连接Microsoft OLE DB Provider for Oracle

cmd导出oracle数据库数据

今天弄了下oracle数据库导入导出命令exp,imp 首先这个命令是在cmd直接执行,不是sqlplus登录后再执行,见下图: 再次,注意结尾不能有分号(;): exp scott/[email protected] file="F:\materials\oracleMet\test1.dmp" tables=(dept,test_imp) 如果出现如下异常,那就是结尾的分号问题: 即将导出指定的表通过常规路径... . . 正在导出表 DEPT导出了 4 行 EXP-00011:

windows计划任务+批处理文件实现oracle数据库的定时备份与恢复

1.  备份: PS:2014-1-15 如果导出的dmp数据文件不大的话,就直接每天导出好了,不要只保存七天的数据.然后顶起通过winrar对文件进行打包,我发现dmp文件的压缩包还是很高的. 那么就需要考虑在导出的dmp文件末尾加上日期了.bat脚本里面有date和time的函数,通过以下函数我们就可以得到想要的日期了.如果要求日期是以"-"结束,需要设定日期的格式为YYYY-M-D,而不是YYYY/M/D才可以. C:\Users\User>echo %date:~0,10

很多人都没用过的轻量级Oracle数据库数据导出工具SQLLDR2——性能超赞

SQLLDR2 介绍 每周发表一篇数据库或大数据相关的帖子,敬请关注 1. 工具介绍 Sqluldr2(SQL * UnLoader 第二版)是灵活与强大的 Oracle 文本导出程序,已被大众使 用许多年了,有上千个国内外 DBA 在使用它或使用过它,并在使用的过程中提出了宝贵实 用的改进需求,在完善了众多真实客户的需求后,最终形成了现在的稳定版本.Oracle 有一 个工具叫 SQL*Loader(sqlldr)是用来将文本文件装载到数据库中的,而这个工具是用来将 Oracle 中的数据导出

oracle数据库数据导出和导入

oracle的客户端里面的bin下面有两个可执行文件,名称分别为exp.exe和imp.exe. 他俩的用途就是导出和导入数据用的. 全库 导出:exp 用户名/密码@数据库名 full=y file=c:xxxx.dmp owner=数据库用户 导入:imp 用户名/密码@数据库名 full=y file=c:xxxx.dmp owner=数据库用户 单表 导出:exp 用户名/密码@数据库名 grants=y tables=table_name file=c:xxx.dmp owner=数据