- 浏览: 62342 次
- 来自: 上海
最新评论
SQL> conn / as sysdba;
已连接。
SQL> select dbid,name,log_mode , open_mode from v$database;
DBID NAME LOG_MODE OPEN_MODE
---------- --------- ------------ ----------
1384775892 CHARIOT NOARCHIVELOG READ WRITE
SQL>
打开闪回开关。
SQL> alter database flashback on;
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 184552324 bytes
Database Buffers 419430400 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL>
下面配置Oracle 10g 闪回数据库的工作步骤以及内容:
Oracle数据库10g中使用闪回数据库操作
使用FLASHBACK DATABASE可以恢复数据库到先前的某个时间点或者某个SCN号。
在Oracle10g以前的版本中,要实现数据库恢复到过去某个时间点或者SCN号,只能够
通过数据库的不完全恢复实现。从Oracle 10g开始,可以使用FLASHBACK DATABASE
实现。
使用FLASHBACK DATABASE要比执行数据库系统的不完全恢复要快的多,
但是需要对数据库做以下的配置:
1、数据库必须运行在归档模式下
2、必须启用数据库的闪回功能
3、必须配置初始化参数DB_FLASHBACK_RETENTION_TARGET
闪回操作的语法
FLASHBACK [STANDBY | DATABASE] [数据库名称]
to SCN SCN号 | TIMESTAMP 时间表达式 | restore point 恢复点
配置步骤:
第一步: 将数据库启动到MOUNT状态:
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL> select dbid,name,open_mode,log_mode from v$database;
DBID NAME OPEN_MODE LOG_MODE
---------- --------- ---------- ------------
1384775892 CHARIOT MOUNTED NOARCHIVELOG
SQL>
第二步:首先将数据库日志运行模式调整为归档模式。
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 6
下一个存档日志序列 8
当前日志序列 8
SQL>
第三步: 修改初始化参数,配置闪回数据库
SQL> alter database flashback on;
数据库已更改。
SQL>
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
SQL>
第四步:设置一个初始化参数,与闪回时间设置相关的一个参数
SQL> show parameter db_flashback_retention_target;
NAME TYPE VALUE
------------------------------------ ----------- -----------------
db_flashback_retention_target integer 1440
该初始化参数的意义是自从打开数据库闪回开关以后,能够在某个时间点向前闪回数据库的最大时间间隔。单位为:分钟。
默认值为1440分钟。
如何修改为2880分钟呢?
SQL> show parameter db_flashback_retention_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
SQL> alter system set db_flashback_retention_target=2880;
系统已更改。
SQL> show parameter db_flashback_retention_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 2880
SQL> alter system set db_recovery_file_dest_size=4G;
系统已更改。
SQL> show parameter db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 4G
SQL>
db_recovery_file_dest string d:\oracle\product\10.2.0/flash
_recovery_area
db_recovery_file_dest_size big integer 2G
请注意由于flash_recovery_area 区域以后会存在闪回日志,归档日志,默认情况下的数据库备份文件等等众多文件
所以2G的容量很快就会达到,当达到2G的容量是,数据库就会停顿。故障!
通过实验模拟几个故障,通过闪回数据库技术处理。
********************************************************************************************************************
实验一: 删除 drop table scott.emp; 表,然后找回。
********************************************************************************************************************
1、查询SCOTT用户的EMP表,确认其存在。
2、确认系统时间,精确到秒
SQL> alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-06-08:11:39:51
SQL>
3、删除EMP表
SQL> drop table scott.emp;
表已删除。
SQL> select * from scott.emp;
select * from scott.emp
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL>
如何找回表?
这个时候可以采用闪回数据库技术找回表。
闪回的步骤:
第一步:正常关闭数据库,然后将数据库加载到MOUNT状态
shutdown immediate;
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 192940932 bytes
Database Buffers 411041792 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL>
第二步:查询数据库能够闪回到最前的最大时间点。
SQL> alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
会话已更改。
SQL> select to_char(oldest_flashback_time,'yyyy-mm-dd:hh24:mi:ss')
2 from v$flashback_database_log;
TO_CHAR(OLDEST_FLAS
-------------------
2010-06-08:11:26:26
SQL>
通过记录发现,在2010-06-08:11:26:26到2010-06-08:11:39:51之间,SCOTT用户的EMP表是存在的。
第三步:
执行闪回
flashback database to timestamp to_date('2010-06-08:11:26:26','yyyy-mm-dd:hh24:mi:ss');
SQL> flashback database to timestamp to_date('2010-06-08:11:26:26','yyyy-mm-dd:hh24:mi:ss');
闪回完成。
SQL>
第四步:通过RESETLOGS选项打开数据库
SQL> alter database open resetlogs;
数据库已更改。
SQL> set linesize 150;
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17:00:00:00 9000 20
7499 ALLEN SALESMAN 7698 1981-02-20:00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22:00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02:00:00:00 9000 20
7654 MARTIN SALESMAN 7698 1981-09-28:00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01:00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09:00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19:00:00:00 9000 20
7839 KING PRESIDENT 1981-11-17:00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08:00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23:00:00:00 9000 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 1981-12-03:00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03:00:00:00 9000 20
7934 MILLER CLERK 7782 1982-01-23:00:00:00 1300 10
已选择14行。
SQL>
误删除的数据库表已经找回。
********************************************************************************************************************
实验二: 截断表,然后找回。 truncate table ***
********************************************************************************************************************
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-06-08:11:52:29
SQL>
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-06-08:11:52:29
SQL> truncate table scott.emp;
表被截断。
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-06-08:11:52:55
SQL>
在 2010-06-08:11:52:29与2010-06-08:11:52:55 之间通过truncate命令截断了表中的数据。
现在需要找回数据。
数据库数据库的步骤:
第一步: 正常关闭数据库,然后将数据库加载到MOUNT状态
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 197135236 bytes
Database Buffers 406847488 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL>
第二步: 可以选在执行闪回数据库操作的方式
1、执行基于时间点的闪回
2、执行基于SCN的闪回
select oldest_flashback_scn from v$flashback_database_log;
SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
733900
决定执行基于时间点的闪回
flashback database to timestamp to_date('2010-06-08:11:52:29','yyyy-mm-dd:hh24:mi:ss');
SQL> flashback database to timestamp to_date('2010-06-08:11:52:29','yyyy-mm-dd:hh24:mi:ss');
闪回完成。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 9000 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 9000 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 9000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 9000 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 9000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
SQL>
*******************************************************************************************************
对于使用drop table table_name误删除了表,更为快捷的处理方法
********************************************************************************************************
普通用户删除了表
SQL> conn scott/tiger;
已连接。
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 9000 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 9000 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 9000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 9000 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 9000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
SQL> drop table emp;
表已删除。
SQL> select * from emp;
select * from emp
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL>
如何找回?
采用闪回删除表技术,几秒钟之内就可以解决问题。
SQL> flashback table emp to before drop;
闪回完成。
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 9000 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 9000 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 9000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 9000 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 9000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择14行。
SQL>
回收站的问题。
SQL> drop table emp;
表已删除。
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP BIN$AZ1Y5c5AROmmf37vcByCXg==$0 TABLE 2010-06-08:12:02:30
SQL> flashback table emp to before drop;
闪回完成。
SQL> show recyclebin;
SQL>
在Oracle10g数据库中,如果普通用户采用drop table table_name删除了某一张数据库表,则该表被放到了一个叫做
回收站的容器中。数据没有变换,仅仅改变了表名称,用户不能查询了。
只需要采用flashback table *** to before drop 即可找回。
彻底删除表,如何操作
drop table table_name purge;
采用闪回数据库技术即可找回。
发表评论
文章已被作者锁定,不允许评论。
-
ORACLE日期时间处理
2013-01-25 17:56 1295--感觉ORACLE对日期的处理比MS较方便些 --修改会 ... -
AutoTrace执行结果说明
2013-01-25 14:11 836统计信息 --------------- ... -
QUESTIONS
2011-11-25 08:51 712问题一:获取SCOTT用户中EMP表里最早入职的前五名雇员? ... -
触发器实例
2011-11-24 09:16 1097create or replace trigger u ... -
包实例
2011-11-24 09:16 781SQL> col object_name f ... -
存储过程、函数简单应用
2011-11-24 09:16 1027create or replace procedure ... -
ORACLE体系结构
2011-11-24 09:15 860001、oracle体系结构: oracle产品和 ... -
游标简单操作
2011-11-25 08:50 1265--显示游标 处理检索多行数据 --whil ... -
数据泵导出导入(SCHEMAS)
2011-11-25 08:51 8596一、导出 1、 cmd-->C:\Docume ... -
PLSQL developer连接oracle
2011-11-25 08:50 1035装好ORACLE 10g后,安装plsql ... -
ORACLE安装前后
2011-11-24 09:17 870安装前:计算机名必须小于8位(不能以数字开 ... -
数据库事务
2011-11-22 11:24 935查看数据库默认隔离级别: 查看InnoDB系统级别 ... -
导入TXT文件与导出TXT
2011-11-28 10:05 1061导入.TXT文件与导出*. ... -
加载数据
2011-11-28 10:05 9031、使用LOAD DATA语句要比INSERT语句的加载 ... -
字符串连接
2011-11-28 10:05 853mysql> select 'abc'+'123' ... -
DELETE语法
2011-11-28 10:06 1651仅仅在 FROM 或 USING 子句之前列出的表中的匹 ... -
复制表
2011-11-22 11:24 798创建测试表test:mysql> create tabl ... -
定时执行存储过程
2011-11-18 22:46 1004存储过程学习:http://www.111 ... -
计算机localhost在网络上不存在
2011-11-22 11:22 1065计算机localhost在网络上不存在——数据库 ... -
EXPLAIN语法
2011-11-29 09:09 927EXPLAIN table == DESC table ...
相关推荐
Oracle闪回数据库是一种高效的数据恢复技术,它允许管理员迅速恢复数据库至某一特定时间点,而无需执行完整的数据库恢复过程。这种技术显著提高了数据恢复的速度和便捷性,特别适合处理逻辑错误,例如用户误操作导致...
为了使用闪回数据库技术,必须启用撤销表空间自动管理回滚信息。 3. 闪回表(Flashback Table) 闪回表可以将表恢复到过去的某个时间点或某个 SCN 值时的状态。该功能允许选择性地复原某些对象,减小恢复时间。 4...
如果要使用闪回删除技术和闪回数据库技术,还需要启用回收站、闪回恢复区。 闪回技术包括以下几方面: 1. 闪回数据库(Flashback Database):允许用户通过Flashback Database语句,使数据库迅速地回滚到以前的...
2. **闪回技术在数据恢复中的应用**:如果一名数据库管理员不小心删除了一个重要的表,闪回表功能可以将该表恢复到删除之前的最后一个状态,从而避免了可能的数据丢失。 ### 结论 RMAN和闪回技术是Oracle数据库...
### 利用闪回数据库(Flashback)修复Failover后的DG环境 #### 1. 概述 在Oracle Database环境中,Data Guard (DG)是一种重要的容灾解决方案,它通过复制主数据库(Primary Database)的数据到一个或多个备用数据库...
"使用EM控制台闪回数据库"这一主题聚焦于Oracle数据库的一种高级特性——闪回技术,以及如何通过Enterprise Manager (EM)控制台来实现这一功能。Oracle EM是Oracle公司提供的一个强大的数据库管理工具,它提供了直观...
通过本文对Oracle闪回技术的介绍,我们可以了解到如何设置和管理闪回恢复区,以及如何启用和禁用闪回数据库功能。这些步骤对于保障数据的安全性和提高数据库恢复能力具有重要意义。同时,我们也探讨了闪回恢复区中的...
这一技术在Oracle 9i中初步引入,到了Oracle 10g得到了进一步增强,包括闪回查询、闪回版本查询、闪回事务查询、闪回表、闪回删除和闪回数据库等多种功能。 **14.1 闪回技术概述** - **闪回基本概念**:Oracle 9i...
Oracle数据库闪回技术是Oracle 10g及后续版本引入的一种强大特性,主要用于应对逻辑错误,比如用户误删除表、管理员误操作等。它允许数据库快速恢复到错误发生前的状态,而无需进行复杂的不完全恢复操作。闪回技术...
Oracle 闪回技术 Oracle 闪回技术是 Oracle 数据库管理系统提供的一种功能,旨在快速...闪回技术包括闪回数据库、闪回删除、闪回表、闪回事务、闪回版本查询和闪回数据归档等功能,能够快速恢复数据库中的逻辑误操作。
Oracle 10g数据库的闪回技术是一种强大的数据恢复工具,它允许用户撤销数据库到一个先前的状态,以修复错误或恢复丢失的数据。这项技术在9i版本中初步引入,但在10g中得到了显著增强,增加了多种闪回操作类型。 1. ...
Oracle数据库的闪回技术是一种强大的数据恢复机制,主要用于处理逻辑错误,而非物理损坏或介质丢失。这一技术的核心在于撤销段,它是保存事务修改数据前原始信息的地方,为闪回操作提供必要的历史数据。 撤销段...
Oracle数据库的闪回技术是一种强大的数据恢复机制,主要用于纠正逻辑错误,而不适用于物理损坏或介质丢失的恢复。这一技术依赖于撤销段(UNDO SEGMENT),撤销段存储了事务对数据进行修改前的原始信息,使得在事务...
本文将详细介绍达梦数据库中如何开启归档和闪回功能,并通过具体的配置示例来帮助读者更好地理解和应用这些技术。 #### 开启归档 ##### 1. 理解归档 归档是指将数据库中的日志文件定期或按需复制到指定位置的过程...
#### 闪回数据库技术 闪回数据库是Oracle的一项创新功能,允许数据库恢复到过去某一时刻的状态,而无需停机。这在处理用户错误、数据损坏或恢复需求时特别有用。闪回数据库依赖于undo段中的历史数据,可以用于观察...
Oracle提供了四种可供使用的闪回技术:闪回查询、闪回删除、闪回归档、闪回数据库。每种闪回技术都有不同的底层体系结构支撑,但其实这四种不同的闪回技术部分功能是有重叠的,使用时也需要根据实际场景合理选择最...
1. **回闪数据库**:这是最高级别的回闪操作,可以将整个数据库恢复到某个时间点的状态。这通常用于灾难恢复,需要在归档模式下运行,并且需要足够的备份和Redo Log信息。 2. **回闪表空间**:此操作允许您恢复一个...