oracle不完全恢复类型,Oracle——不完全恢復
不完全恢復分為用戶不完全恢復和RMAN不完全恢復。若聯機重做日志文件或者歸檔日志文件有丟失,則只能進行不完全恢復。
一.不完全恢復的分類
1.time recover選項,指定恢復到某個時間點,常用。
2.cancel recover選項,停止在某個日志切換序列號處,通常只在歸檔日志文件受損或丟失的情況下使用,從而無法進一步恢復。
3.change-base recover選項,指定到某個SCN號。
4.在所有情況下都將恢復到恰好在請求的停止點之前的變更向量,比如將不會應用到指定的SCN。
二.執行不完全恢復的步驟
1.關閉和備份數據庫或者某些數據文件;
2.加載數據庫。
3.還原數據文件(必要時還原控制文件);
4.將數據庫恢復到某個時間點;
5.使用重置日志(resetlog)打開數據庫。
三.基於時間的恢復
指定到某個時間點,但是要注意其時間的格式是不允許改變的,無論在SQL*PLUS會話中如何設置它的NLS_DATE_FORMAT ,日期必須是yyyy-mm-dd:hh24:mi:ss。
1.在用戶Dave下創建個表sunny,插入數據,
SQL> create table sunny (id int,name char(10)) tablespace app1;
Table created.
SQL> insert into sunny values(0,'baby');
1 row created.
SQL> commit;
Commit complete.
手動發生檢查點,
SQL> alter system checkpoint;
System altered.
這樣數據寫進了數據文件app1_01.dbf。
2.關閉數據庫,對app1_01.dbf數據文件做個備份,插入新的數據
備份數據文件,
[oracle@oracle11g wilson]$ cp app1_01.dbf /u01/ubackup/cold
打開數據庫,插入新數據
SQL> insert into sunny values(1,'Jasper');
1 row created.
SQL> commit;
Commit complete.
查看當前時間,
SQL> select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'DD-MON-YYYYH
-----------------------------
04-SEP-2013 12:52:34
3.刪除表,再恢復回來,
SQL> drop table sunny;
Table dropped.
關閉數據庫,刪除數據文件,再還原備份的數據文件(這個文件中不含有新的數據),
[oracle@oracle11g wilson]$ rm -f app1_01.dbf
還原數據文件,
[oracle@oracle11g backup]$ cp /u01/backup/app1_01.dbf /u01/oradata/wilson/
4.將數據庫置於mount狀態,恢復表
SQL> recover database until time '2013-09-04:12:52:22';
Media recovery complete.
指定時間點,打開數據庫,
SQL> alter database open resetlogs;
即可。
四.基於cancel的恢復
1.關閉數據庫,備份數據庫,命令如下,
[root@oracle11g wilson]# cp /u01/oradata/wilson/* /u01/ubackup/cold/
2.打開數據庫,在表Dave.sunny中插入數據,
SQL> insert into sunny values(3,'memory');
1 row created.
SQL> commit;——————數據存於聯機重做日志中
Commit complete.
SQL> alter system checkpoint;——————數據存於數據文件中
System altered.
SQL> alter system archive log current;——————數據存於歸檔日志中
System altered.
可以看到記錄(3,‘memory’)存於數據文件,聯機重做日志文件和歸檔日志文件中。
3.插入新數據,不放在歸檔日志中
SQL> insert into sunny values(4,'king');
1 row created.
SQL> commit;——————數據存於聯機重做日志中
Commit complete.
SQL> alter system checkpoint;——————數據存於數據文件中
System altered.
4.先備份控制文件
SQL> alter database backup controlfile to trace as '/tmp/wilson.sql';
Database altered.
然后除了歸檔日志文件,把其它文件都刪除了,關閉數據庫,把備份的數據文件還原(沒有控制文件和聯機重做日志文件),
[root@oracle11g wilson]# cp /u01/ubackup/cold/*.dbf /u01/oradata/wilson/
5.修改備份的控制文件腳本
如果不用腳本創建,可以復制個二進制的控制文件,復制過去即可;
在腳本中有兩組恢復方法:a.在聯機重做日志正常的情況下,
b.在聯機重做日志不正常的情況下,
a方法在用戶管理的恢復(三)中使用了,請參照:Oracle—用戶管理的完全恢復(三)
這里使用b方法,打開腳本修改一下,
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "WILSON" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/oradata/wilson/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/oradata/wilson/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/oradata/wilson/redo03.log' SIZE 50M BLOCKSIZE 512
DATAFILE
'/u01/oradata/wilson/system01.dbf',
'/u01/oradata/wilson/sysaux01.dbf',
'/u01/oradata/wilson/undotbs01.dbf',
'/u01/oradata/wilson/users01.dbf',
'/u01/oradata/wilson/example01.dbf',
'/u01/oradata/wilson/app1_01.dbf',
'/u01/oradata/wilson/smallundo1.dbf'
CHARACTER SET AL32UTF8
;
注意上面語句之間能有空格行,
中間略..........
下面語句是腳本中的,也刪除了,可以手工執行,
RECOVER DATABASE USING BACKUP CONTROLFILE
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/wilson/temp01.dbf'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE MYTEMP ADD TEMPFILE '/u01/oradata/wilson/mytemp01.dbf'
SIZE 104857600 REUSE AUTOEXTEND OFF;
執行腳本,
SQL> @/tmp/wilson.sql
執行下面語句,因為聯機重做日志丟失,所以恢復到某個日志切換序列號處,
SQL> recover database using backup controlfile until cancel;
提示,輸入cancel
打開數據庫,
SQL> alter database open resetlogs;
然后執行恢復臨時表空間,
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/wilson/temp01.dbf'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE MYTEMP ADD TEMPFILE '/u01/oradata/wilson/mytemp01.dbf'
SIZE 104857600 REUSE AUTOEXTEND OFF;
是腳本中的語句。
為什么刪除腳本最后的四條語句? 因為沒有了聯機重做日志文件,所以腳本中RECOVER DATABASE USING BACKUP CONTROLFILE命令會出錯,必須要使用until cancel進行人工干預。
6.查看表Dave.sunny
SQL> select * from sunny;
ID NAME
---------- ----------
3 memory
0 baby
1 Jasper
可以看到沒有了記錄(4,’king’),這是因為記錄(3,’memory’)被存放到了歸檔日志文件中,而記錄4沒有,所以只能是不完全的恢復。
五.基於系統更改號的恢復
找到需要指定恢復的SCN號,然后使用命令recover database until change號即可;
方法和上面說明的差不多。
六.RMAN的不完全恢復
它和用戶管理的不完全恢復差不多,只是是使用RMAN來進行的,下面來舉個例子來說明一下,
1.在Dave用戶下,創建表和插入數據,
SQL> create table test (id int,name char(10));
Table created.
SQL> insert into test values(0,'heihei');
1 row created.
SQL> commit;
寫到數據文件中
SQL> alter system checkpoint;
System altered.
2.RMAN連接上數據庫,備份數據文件
RMAN> backup database format '/u01/backup/rman_hot_%U';
3.記錄時間和刪除表
SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2013-09-06:00:53:43
SQL> drop table test;
Table dropped.
現在怎么恢復表? 在10g版本引用了閃回技術,可以使不完全恢復更方便。
4.在這里數據庫進入mount狀態,RMAN連接數據執行腳本
RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> allocate channel c3 type disk;
5> set until time “2013-09-06:00:53:43';
6> restore database;
7> recover database;
8> alter database open resetlogs;}
即可。
RMAN的不完全恢復還可以指定日志文件的sequence號,命令如下,
Set until sequence 120 thread 1;
oracle不完全恢复类型,Oracle——不完全恢復相关推荐
- oracle 创建nchar类型,Oracle NChar类型
本篇文章帮大家学习Oracle NChar类型,包含了Oracle NChar类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中,您将了解Oracle NCH ...
- oracle 函数参数类型,ORACLE 11g中的表值函数? (参数化视图)
搜索热词 过去我已经看过关于这个问题的讨论,比如 here.但是我想知道如果某个地方沿线,或许10g或11g(我们正在使用11g),ORACLE已经对"参数化视图"提供了更好的支持 ...
- oracle 怎么创建类型,ORACLE—002:Create之创建类型
--积累工作中用到的SQL ORACLE中也是有类型的,可作为存储过程,函数等的输入输入出. 下面看下创建. 用法 CREATE OR REPLACE TYPE 类型名称 AS OBJECT ( 字段 ...
- oracle使用text类型,oracle数据库中text类型用什么类型表示
oracle对于大文本数据用clob类型. 但对于这个类型处理起来还是比较麻烦,varchar2长度为4000bytes,如果varchar2能满足需求的话,建议使用varchar2. 扩展资料: O ...
- oracle数据库 number类型,oracle 数据库 NUMBER类型细讲
1>.NUMBER类型细讲: Oracle number datatype 语法:NUMBER[(precision [, scale])] 简称:precision --> p scal ...
- Oracle 队列锁类型 Oracle Enqueue Lock Type Reference including 11g new locks
内部视图x$ksqst记录了以enqueue type分类的队列管理统计信息(Enqueue management statistics by type),ksqstwat列反映了等待次数,而ksqs ...
- oracle的hints类型,Oracle Hints详解
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用.基于代价的优化器是很聪明的,在绝大多数情况下它会选择 ...
- oracle的hints类型,oracle中的sql语句优化附件_HINTS
j介绍了hints的用法 运用HINT提高SQL语句的执行效率 1. 使用HINTS的目的 hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划.我们可以用hint ...
- oracle 强制转类型,Oracle 数据类型转换
-- Start Oracle 为每种数据类型都提供了相应的函数,一般情况下它们之间的相互转换是非常简单的,Oracle 提供的函数有: CAST 将一种类型转成另一种类型 TO_DATE 将字符串转 ...
- oracle的string类型,oracle 数据类型之‘字符串’
所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间. 1. CHAR类型 CHAR(size [BYTE | CHAR]) ...
最新文章
- 项目用的几种机型参数调查
- 随手记录自动化常用的一些事情
- 企业微服务:搭建环境
- iOS - LocalCache 本地数据缓存
- java js webservice_java Web技术探路:js Ajax调用WebService
- Dojo学习笔记(8. dojo.event dojo.event.topic dojo.event.browser)
- Python学习之Python安装
- [转载]企业网站建设必知必会
- C++判断进程id是否存在
- C++之指针探究(二):一级指针和一维数组
- Linux学习总结(81)—— Linux 权限详解
- 如何有逻辑的,简单清晰的回应问题
- make条件判断ifeq,ifneq,ifdef,ifndef
- CentOS 6.5忘记root密码,怎么办?
- 管理工作时间的软件有哪些?
- TCP报文-选项字段
- android小米卸载app,MIUI系统软件卸载工具
- grunt html模块化管理插件,grunt模块化配置
- ESXI安装OpenWRT LEDE软路由部署指南(附镜像下载)
- 0x03数据类型和变量