17.4、Making User-Managed Backups of Online Tablespaces and Datafiles

当数据库打开时,能够备份一个在线表空间全部和一个指定的数据文件。备份过程的差别依赖于在线表空间是read、write或者read-only。

注意:不应该备份暂时表空间

17.4.1、Making User-Managed Backups of Online Read/Write Tablespaces

当表空间是在线状态时,必须把一个read/write表空间置为备份模式,才干备份数据文件。在备份模式,数据把改变的数据块复制到redo stream。

在运行alter tablespace ... end

backup或alter database end backup后,数据库把数据文件头提高到当前数据库检查点。当还原以上方式备份的数据文件,假设须要恢复。数据库会索要适当的重做日志集来应用

重做日志。

在打开的数据库中。备份在线的read/write表空间:

(1)在备份之前,使用DBA_DATA_FILES识别在表空间中的数据文件

(2)标记在线表空间备份的開始

注意:拷贝在线表空间前,假设没有begin backup做标记。或没有等到begin backup的语句运行完。那么随后的恢复操作,拷贝的数据文件是不能用的。尝试恢复这种备份文件

是危急的,它会返回"fuzzy files"警告,导致一个不一致的、不能打开的数据库

(3)使用操作系统命令备份在线表空间的在线数据文件

(4)标记在线表空间备份的结束

(5)归档未归档的重做日志

SQL> alter system archive log current;

注意:假设标记在线表空间备份的结束失败。oracle把表空间相应的改变写入到在线重做日志。引起性能问题。关闭数据库时,会接受一个ORA-01149的错误

模拟1、表空间testtbs01在线,然后备份在线的数据文件

(1)

SQL> col file_name for a40

SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='TESTTBS01';

TABLESPACE_NAME                FILE_NAME

------------------------------ ----------------------------------------

TESTTBS01                      /oracle/oradata/boss/testtbs01_01.dbf

TESTTBS01                      /oracle/oradata/boss/testtbs01_02.dbf

(2)

SQL> alter tablespace testtbs01 begin backup;

(3)

##新启动一个会话

SQL> create table test01 (id number, name varchar2(30)) tablespace testtbs01;

SQL> insert into test01 values(1,'aaa');

SQL> insert into test01 values(2,'bbb');

SQL> commit;

##原始会话

SQL> select * from test01;

ID NAME

---------- ------------------------------

         1 aaa

         2 bbb

$ cp -rf /oracle/oradata/boss/testtbs01_01.dbf /oradata/bossbak/20140605/testtbs01_01_`date "+%y_%m_%d"`.dbf

$ cp -rf /oracle/oradata/boss/testtbs01_02.dbf /oradata/bossbak/20140605/testtbs01_02_`date "+%y_%m_%d"`.dbf

(4)

SQL> alter tablespace testtbs01 end backup;

(5)

SQL> alter system archive log current;

17.4.2、Ending a Backup After an Instance Failure or SHUTDOWN ABORT--实例失败时,没有end backup

下面情况引起表空间备份失败和不一致:

(1)备份完毕。没有运行end backup

(2)实例失败或shutdown abort,没有运行end backup

数据文件在备份模式,数据库尝试打开它,数据库直到运行一个恢复命令或把数据文件end backup,数据库才干打开。

HA环境。当没有dba监视数据库的情况下,须要人工干预。

能够写一个崩溃恢复的脚本:

(1)mount数据库

(2)运行alter database end backup

(3)alter database open

17.4.2.1、Ending Backup Mode with the SQL*Plus RECOVER Command

recover命令的方法比end backup的方法慢,由于数据库必须浏览在线备份開始后产生的重做日志。

模拟1、表空间testtbs01没有end backup,此时shutdown abort,使用recover。

总结:没有end backup,实例失败或shutdown abort。须要恢复

(1)

SQL> col file_name for a40

SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='TESTTBS01';

TABLESPACE_NAME                FILE_NAME

------------------------------ ----------------------------------------

TESTTBS01                      /oracle/oradata/boss/testtbs01_01.dbf

TESTTBS01                      /oracle/oradata/boss/testtbs01_02.dbf

(2)

SQL> alter tablespace testtbs01 begin backup;

(3)

##新启动一个会话

SQL> insert into test01 values(3,'ccc');

SQL> insert into test01 values(4,'ddd');

SQL> commit;

$ cp -rf /oracle/oradata/boss/testtbs01_01.dbf /oradata/bossbak/20140605/testtbs01_01_`date "+%y_%m_%d"`.dbf

$ cp -rf /oracle/oradata/boss/testtbs01_02.dbf /oradata/bossbak/20140605/testtbs01_02_`date "+%y_%m_%d"`.dbf

(4)

SQL> shutdown immediate;  

ORA-01149: cannot shutdown - file 6 has online backup set

ORA-01110: data file 6: '/oracle/oradata/boss/testtbs01_01.dbf'

SQL> shutdown abort

ORACLE instance shut down.

SQL> startup open;

ORA-01113: file 6 needs media recovery

ORA-01110: data file 6: '/oracle/oradata/boss/testtbs01_01.dbf'

SQL> recover datafile 6;  ##把红色部分改为:recover database

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 7 needs media recovery

ORA-01110: data file 7: '/oracle/oradata/boss/testtbs01_02.dbf'

SQL> recover datafile 7;

SQL> alter database open;

SQL> select status from v$instance;

STATUS

------------

OPEN

17.4.2.2、Ending Backup Mode with the ALTER DATABASE END BACKUP Statement

当有多个表空间处在备份模式,mount阶段执行alter database end backup。

模拟1、表空间testtbs01没有end backup,此时shutdown abort,使用end backup

(1)

SQL> col file_name for a40

SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='TESTTBS01';

TABLESPACE_NAME                FILE_NAME

------------------------------ ----------------------------------------

TESTTBS01                      /oracle/oradata/boss/testtbs01_01.dbf

TESTTBS01                      /oracle/oradata/boss/testtbs01_02.dbf

SQL> select dbid,name,log_mode,checkpoint_change# from v$database;

DBID NAME                                     LOG_MODE     CHECKPOINT_CHANGE#

---------- ---------------------------------------- ------------ ------------------

1375601832 BOSS                                     ARCHIVELOG               625063

SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header;

FILE# NAME                                     STATUS  CHECKPOINT_CHANGE# REC

---------- ---------------------------------------- ------- ------------------ ---

         1 /oracle/oradata/boss/system01.dbf        ONLINE              625063 NO

         2 /oracle/oradata/boss/undotbs01.dbf       ONLINE              625063 NO

         3 /oracle/oradata/boss/sysaux01.dbf        ONLINE              625063 NO

         4 /oracle/oradata/boss/users01.dbf         ONLINE              625063 NO

         5 /oracle/oradata/boss/example01.dbf       ONLINE              625063 NO

         6 /oracle/oradata/boss/testtbs01_01.dbf    ONLINE              625063 NO

         7 /oracle/oradata/boss/testtbs01_02.dbf    ONLINE              625063 NO

(2)

SQL> alter tablespace testtbs01 begin backup;  ##运行后,立马会使相应的数据文件头的scn提升

SQL> select dbid,name,log_mode,checkpoint_change# from v$database;

DBID NAME                                     LOG_MODE     CHECKPOINT_CHANGE#

---------- ---------------------------------------- ------------ ------------------

1375601832 BOSS                                     ARCHIVELOG               625063

SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header;

FILE# NAME                                     STATUS  CHECKPOINT_CHANGE# REC

---------- ---------------------------------------- ------- ------------------ ---

         1 /oracle/oradata/boss/system01.dbf        ONLINE              625063 NO

         2 /oracle/oradata/boss/undotbs01.dbf       ONLINE              625063 NO

         3 /oracle/oradata/boss/sysaux01.dbf        ONLINE              625063 NO

         4 /oracle/oradata/boss/users01.dbf         ONLINE              625063 NO

         5 /oracle/oradata/boss/example01.dbf       ONLINE              625063 NO

         6 /oracle/oradata/boss/testtbs01_01.dbf    ONLINE              625806 NO

         7 /oracle/oradata/boss/testtbs01_02.dbf    ONLINE              625806 NO

(3)

##新启动一个会话

SQL> insert into test01 values(5,'eee');

insert into test01 values(6,'fff');

SQL> commit;

$ cp -rf /oracle/oradata/boss/testtbs01_01.dbf /oradata/bossbak/20140605/testtbs01_01_`date "+%y_%m_%d"`.dbf

$ cp -rf /oracle/oradata/boss/testtbs01_02.dbf /oradata/bossbak/20140605/testtbs01_02_`date "+%y_%m_%d"`.dbf

(4)

SQL> shutdown abort

ORACLE instance shut down.

SQL> startup open;

ORA-01113: file 6 needs media recovery

ORA-01110: data file 6: '/oracle/oradata/boss/testtbs01_01.dbf'

SQL> select dbid,name,log_mode,checkpoint_change# from v$database;   ##scn没有改变

DBID NAME                                     LOG_MODE     CHECKPOINT_CHANGE#

---------- ---------------------------------------- ------------ ------------------

1375601832 BOSS                                     ARCHIVELOG               625063

SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header;

FILE# NAME                                     STATUS  CHECKPOINT_CHANGE# REC

---------- ---------------------------------------- ------- ------------------ ---

         1 /oracle/oradata/boss/system01.dbf        ONLINE              625063 NO

         2 /oracle/oradata/boss/undotbs01.dbf       ONLINE              625063 NO

         3 /oracle/oradata/boss/sysaux01.dbf        ONLINE              625063 NO

         4 /oracle/oradata/boss/users01.dbf         ONLINE              625063 NO

         5 /oracle/oradata/boss/example01.dbf       ONLINE              625063 NO

         6 /oracle/oradata/boss/testtbs01_01.dbf    ONLINE              625806 NO

         7 /oracle/oradata/boss/testtbs01_02.dbf    ONLINE              625806 NO

SQL> col "文件号" for a40;

SQL>

select

  ts.name "表空间名"

  , df.file# "文件号"

  , df.checkpoint_change# "检查点"

  , df.name "文件名称"

  , df.status "在线状态"

  , rf.error "恢复原因"

  , rf.change# "系统变更号"

  , rf.time

  from v$tablespace ts,v$datafile df,v$recover_file rf

where ts.ts#=df.ts# and df.file#=rf.file#

order by df.file#;

表空间名                           文件号     检查点

------------------------------ ---------- ----------

文件名称

------------------------------------------------------------------------------------------------------------------------------------------------------

在线状  恢复原因           系统变更号 TIME

------- ------------------ ---------- ------------

TESTTBS01                      ##########     625806

/oracle/oradata/boss/testtbs01_01.dbf

ONLINE                         625806 05-JUN-14

TESTTBS01                      ##########     625806

/oracle/oradata/boss/testtbs01_02.dbf

ONLINE                         625806 05-JUN-14

表空间名                           文件号     检查点

------------------------------ ---------- ----------

文件名称

------------------------------------------------------------------------------------------------------------------------------------------------------

在线状  恢复原因           系统变更号 TIME

------- ------------------ ---------- ------------

SQL> alter database end backup;

SQL> alter database open;

SQL> select dbid,name,log_mode,checkpoint_change# from v$database;

DBID NAME                                     LOG_MODE     CHECKPOINT_CHANGE#

---------- ---------------------------------------- ------------ ------------------

1375601832 BOSS                                     ARCHIVELOG               646384

SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header;

FILE# NAME                                     STATUS  CHECKPOINT_CHANGE# REC

---------- ---------------------------------------- ------- ------------------ ---

         1 /oracle/oradata/boss/system01.dbf        ONLINE              646384 NO

         2 /oracle/oradata/boss/undotbs01.dbf       ONLINE              646384 NO

         3 /oracle/oradata/boss/sysaux01.dbf        ONLINE              646384 NO

         4 /oracle/oradata/boss/users01.dbf         ONLINE              646384 NO

         5 /oracle/oradata/boss/example01.dbf       ONLINE              646384 NO

         6 /oracle/oradata/boss/testtbs01_01.dbf    ONLINE              646384 NO

         7 /oracle/oradata/boss/testtbs01_02.dbf    ONLINE              646384 NO

17.4.2.3、Making User-Managed Backups of Read-Only Tablespaces

当备份一个在线read-only表空间,备份在线数据文件很easy。不必把表空间置为备份模式。由于数据库不同意把变更写入这些数据文件。

假设read-only表空间是独立的,那么使用操作系统命令拷贝数据文件。也能够使用传输表空间导出表空间的元数据。

介质失败或用户错误时,把表空间传输到数据库。

Administrator's Guide提供了怎么传输表空间的信息。Reference提供了dba_data_files和dba_tablespaces的很多其它信息

一个打开的数据库中,备份在线read-only表空间

(1)查询dba_tablespaces,查看哪些表空间是read-only

(2)备份表空间前,查询dba_data_files识别表空间的数据文件

(3)使用操作系统命令备份read-only表空间的在线数据文件

注意:还原read-only表空间的数据文件时。把表空间离线,还原数据文件,然后把表空间置为在线。

Making User-Managed Backups-17.4、Making User-Managed Backups of Online Tablespaces and Datafiles的更多相关文章

  1. Making User-Managed Backups-17.3、Making User-Managed Backups of Offline Tablespaces and Datafiles

    17.3.Making User-Managed Backups of Offline Tablespaces and Datafiles 备份离线的表空间时.须要注意下面指导原则: (1)不能离线s ...

  2. Python入门笔记(17):错误、异常

    一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象.当错误中断流程时,该程序将尝试寻找异常处理程序 ...

  3. Yii 1.1.17 六、开启路由与使用缓存

    一.开启路由 1.在配置文件main.php的components中 定义如下: // 定义路由 'urlManager'=>array( // URL模式为PATHINFO 'urlForma ...

  4. Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数

    这几天了解了一下Yii框架,以简单的博客项目实战入门.大致的实现流程做个记录. 一.Yii 安装与环境检测 从 www.yiiframework.com 获取一份Yii的拷贝,解压到 /wwwroot ...

  5. 17.JAVA-Dom、Sax解析XML详解

    在JAVA中,解析有三种方式: Dom解析(支持改删,耗内存). Sax解析(不支持改删,不耗内存). Pull解析(在Android中推荐使用的一种解析XML的方式,在下章学习). 1.支持Dom与 ...

  6. python note 17 random、time、sys、os模块

    1.random模块(取随机数模块) # 取随机小数 : 数学计算 import random print(random.random())# 取0-1之间的小数 print(random.unifo ...

  7. [c/c++] programming之路(17)、高级指针

    一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 #include<stdio.h> #include<stdlib.h> void main() ...

  8. opencv学习之路(17)、边缘检测

    一.概述 二.canny边缘检测 #include "opencv2/opencv.hpp" using namespace cv; void main() { //Canny边缘 ...

  9. Yii 1.1.17 五、分页类、关联模型、权限验证与默认页面跳转

    一.分页类使用 1.在控制器中 // 实例化 $criteria = new CDbCriteria(); $articleModel = Article::model(); // 分页 $total ...

随机推荐

  1. Spring MVC学习总结(7)——Spring MVC整合Ehcache缓存框架

    Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力.接下来我们看怎么把缓存使用起来. SpringMVC集成Ehcache所需的j ...

  2. 彻底理解tomcat是怎样多线程处理http请求并将代码执行到controller里的的

    彻底理解tomcat是怎样多线程处理http请求并将代码执行到controller里的的 1.线程池,thread = threadPool.getThread(),thread.executeHtt ...

  3. POJ 3904

    第一道莫比乌斯反演的题. 建议参看http://www.isnowfy.com/mobius-inversion/ 摘其中部分 证明的话感觉写起来会比较诡异,大家意会吧说一下这个经典题目:令R(M,N ...

  4. linux文件与用户和群组

    文件基本属性 在图片中alogrithm的文件属性为drwxrwxr-x,其中d代表此文件为目录. 后面rwx,rwx,r-x分别代表文件所属者(ower),组(group),其他用户(other)的 ...

  5. servlet调用的几种方式

    參见 文库/java/javaEE全新学习教程2.2节 1.通过URL调用 2通过提交表单 3超链接 4 javascript写一个函数,调用这个函数 1,首先在project的WebRoot目录下建 ...

  6. 零基础学HTML 5实战开发(第一季)

    開始学习html5了.趋势不得不学习啊,之前老毛说过落后就要挨打,如今是不学习就要被市场淘汰,被社会淘汰.喜欢挑战,喜欢冒险.来吧.csdn给我们提供了那么好的平台.用起来..零基础学HTML 5的实 ...

  7. MonkeyRunner源代码分析之启动

    在工作中由于要追求完毕目标的效率,所以很多其它是强调实战.注重招式.关注怎么去用各种框架来实现目的.可是假设一味仅仅是注重招式.缺少对原理这个内功的了解,相信自己非常难对各种框架有更深入的理解. 从几 ...

  8. 省赛i题/求1~n内全部数对(x,y),满足最大公约数是质数的对数

    求1~n内全部数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数.最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...

  9. Java虚拟机的类载入机制

    Java虚拟机类载入过程是把Class类文件载入到内存.并对Class文件里的数据进行校验.转换解析和初始化,终于形成能够被虚拟机直接使用的java类型的过程. 在载入阶段,java虚拟机须要完毕下面 ...

  10. 修改DNS

    解决方案一: 修改/etc/resolv.conf,添加 nameserver 8.8.8.8 nameserver 8.8.4.4 然后停用NetworkManager,service Networ ...