Making User-Managed Backups-17.4、Making User-Managed Backups of Online Tablespaces and Datafiles
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的更多相关文章
- 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 ...
- Python入门笔记(17):错误、异常
一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象.当错误中断流程时,该程序将尝试寻找异常处理程序 ...
- Yii 1.1.17 六、开启路由与使用缓存
一.开启路由 1.在配置文件main.php的components中 定义如下: // 定义路由 'urlManager'=>array( // URL模式为PATHINFO 'urlForma ...
- Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数
这几天了解了一下Yii框架,以简单的博客项目实战入门.大致的实现流程做个记录. 一.Yii 安装与环境检测 从 www.yiiframework.com 获取一份Yii的拷贝,解压到 /wwwroot ...
- 17.JAVA-Dom、Sax解析XML详解
在JAVA中,解析有三种方式: Dom解析(支持改删,耗内存). Sax解析(不支持改删,不耗内存). Pull解析(在Android中推荐使用的一种解析XML的方式,在下章学习). 1.支持Dom与 ...
- python note 17 random、time、sys、os模块
1.random模块(取随机数模块) # 取随机小数 : 数学计算 import random print(random.random())# 取0-1之间的小数 print(random.unifo ...
- [c/c++] programming之路(17)、高级指针
一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 #include<stdio.h> #include<stdlib.h> void main() ...
- opencv学习之路(17)、边缘检测
一.概述 二.canny边缘检测 #include "opencv2/opencv.hpp" using namespace cv; void main() { //Canny边缘 ...
- Yii 1.1.17 五、分页类、关联模型、权限验证与默认页面跳转
一.分页类使用 1.在控制器中 // 实例化 $criteria = new CDbCriteria(); $articleModel = Article::model(); // 分页 $total ...
随机推荐
- 06002_Redis概述
1.什么是Redis? (1)Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,他通过提供多种键值对数据类型类适应不同场景下的存储需求: (2)Redis是一种高级的key ...
- 【henuacm2016级暑期训练-动态规划专题 B】Coloring Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] f[i][j][k]前i个位置,第i个位置放j这个颜色,然后形成了k个联通块的最小花费 分第i个位置有没有已经放颜色两种情况考虑. ...
- CF16A Flag
CF16A Flag 题意翻译 题目描述 根据一项新的ISO标准,每一个国家的国旗应该是一个n×m的格子场,其中每个格子最多有10种不同的颜色.并且国旗应该有条纹:旗帜的每一行应包含相同颜色的方块,相 ...
- windows下使用libsvm3.2
一.官方介绍 libsvm主页:https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html libsvm介绍文档:http://www.csie.ntu. ...
- 17、lambda表达式
一.简介 lambda表达式允许你通过表达式来代替功能接口,lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块),它还增强了集合 ...
- 使用C++实现学生管理系统
我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统.近期正好在学习C++,于是我便使用C++实现了学生成绩管理系统.算法和前面的C语言的动态数组实现的学生成绩管理系统几乎相同,仅仅是 ...
- C++字符串操作笔试题第二波
//1.字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". //比如输入"we are happy.".则输出"we%20are ...
- Android圆形图片--自己定义控件
Android圆形图片控件效果图例如以下: 代码例如以下: RoundImageView.java package com.dxd.roundimageview; import android.con ...
- How to Hide Zip Files Inside a Picture Without any Extra Software in Windows
http://www.howtogeek.com/119365/how-to-hide-zip-files-inside-a-picture-without-any-extra-software/ c ...
- ORACLE 11GR2 RAC的网络规划解析
在ORACLE 11gR2中,安装RAC发生了显著变化.在10g以及11gR1的时代,安装RAC的步骤是先安装CRS,再安装DB,而到了11gR2的时代,crs与asm被集成在一起,合称为GRID,必 ...