- 浏览: 342231 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (198)
- HIBERNATE (8)
- JAVA (13)
- 数据库 (24)
- SPRING (1)
- LINUX (0)
- 需求管理 (3)
- 职业提升 (6)
- 团队建设 (1)
- 日常用到语句 (1)
- FLEX (6)
- 用户体验 (3)
- 设计模式 (6)
- weblogic (2)
- PowerDesigner (3)
- HTML (7)
- ANT (7)
- 工具. (1)
- bat (5)
- 存储过程 (1)
- strus2 (1)
- DWR (2)
- jfreechart (4)
- 上线测试优化 (17)
- JVM (9)
- 工具使用 (2)
- 算法 (3)
- 私事 (0)
- 数据库-Oracle session (1)
- 软件开发 (5)
- 产品 (2)
- 项目管理 (4)
- oracle语句 (1)
- IntelliJ IDEA (4)
- GRAILS (10)
- Groovy (1)
- JS (1)
- DUBBO (1)
- JAVA EXCEL (3)
- netty websocket (1)
- kafka (1)
- 秘钥体系 (2)
- golang (6)
- gradle (1)
- spring cloud (0)
最新评论
-
wujt:
...
Grails_数据库逆向工程插件 db-reverse-engineer -
yy8093:
我也遇到这个问题,不过并不觉得是个好的方法。。。。不过最后也确 ...
关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting s -
wujt:
# ----- Execute The Requested C ...
jconsole基础配置(原创) -
gaowei52306:
你好,请问remotedir="/home/dmwe ...
Ant FTP -
抢街饭:
ant生成日志 在命令行也能看见 怎么去做啊
ant生成日志
在oracle10g中如何恢复drop掉的表
在oracle10g中,如果不小心drop掉一张表,能不能恢复呢?
答案是肯定的,在oracle10g中,当使用命令drop table tablename 命令时,其实不会真正的删除该表,而是把表放到了回收站中(回收站的概念类似windows中的回收站),所以我们可以通过flashback命令来恢复drop掉的表,下面就该问题做一个小小的研究
我们先创建一张表
Create table test (
Id int,
Name varchar(20)
)
再插入几条数据
insert into test(id,name) values(1,'a');
insert into test(id,name) values(2,'b');
commit;
好了,为了更好观察,我们先执行下面的命令清空一下回收站
Purge recyclebin;
SQL> select original_name,dropscn from recyclebin;
未选定行
好了,回收站已经清空了
下面再把上面创建的test表drop掉,再看下回收站
SQL> drop table test;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1742491
SQL> select * from test;
select * from test
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL>
这时候从回收站中查到了被drop表的,而且使用select语句也找不到表了,好了,下面我们再使用flashback恢复一下
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
恢复以后,表结构和数据都被找了回来
那么好,下面我们再出个考题,这是OCP考试里的题,在上面的实验基本上再执行下面的操作,想想会发生什么事呢?
drop table test; --drop表test表
以相同的名字再次创建test表,但字段不同
Create table test (
a int,
b varchar(20),
c varchar(30)
)
drop table test --然后再次drop掉test表
再执行flashback恢复
flashback table test to before drop;
这时候大家想想会恢复哪个表呢?是第一次创建的?还是第二次创建的?好了做实验,让实事来说话
SQL> drop table test;
表已删除。
SQL> create table test(
2 a int,
3 b varchar(20),
4 c varchar(30)
5 );
表已创建。
SQL> drop table test;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743515
TEST 1743435
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
未选定行
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B VARCHAR2(20)
C VARCHAR2(30)
通过以上实验,我们可以看到,虽然名字相同,但flashback恢复的只是最后一次创建的表
请注意上面的查询回收站的语句,从回收站中,可以看到,共有两个test表,但dropscn不一样,使用flashback命令只恢复dropscn大的哪个表,以前的都是垃圾了
关于flashback命令还有一个需要注意的,如果在drop表时,加上了purge选项,则无法恢复,看下面实验
SQL> drop table test purge;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743435
SQL> flashback table test to before drop;闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
drop时使用了purge选项,所以该drop没有放入回收站,那为什么执行flashback table时又恢复成功了呢?
能过上面的实验可以看到,恢复的是我们第一次创建的test表,而第二次创建的test表就无法恢复了
在oracle10g中,如果不小心drop掉一张表,能不能恢复呢?
答案是肯定的,在oracle10g中,当使用命令drop table tablename 命令时,其实不会真正的删除该表,而是把表放到了回收站中(回收站的概念类似windows中的回收站),所以我们可以通过flashback命令来恢复drop掉的表,下面就该问题做一个小小的研究
我们先创建一张表
Create table test (
Id int,
Name varchar(20)
)
再插入几条数据
insert into test(id,name) values(1,'a');
insert into test(id,name) values(2,'b');
commit;
好了,为了更好观察,我们先执行下面的命令清空一下回收站
Purge recyclebin;
SQL> select original_name,dropscn from recyclebin;
未选定行
好了,回收站已经清空了
下面再把上面创建的test表drop掉,再看下回收站
SQL> drop table test;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1742491
SQL> select * from test;
select * from test
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL>
这时候从回收站中查到了被drop表的,而且使用select语句也找不到表了,好了,下面我们再使用flashback恢复一下
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
恢复以后,表结构和数据都被找了回来
那么好,下面我们再出个考题,这是OCP考试里的题,在上面的实验基本上再执行下面的操作,想想会发生什么事呢?
drop table test; --drop表test表
以相同的名字再次创建test表,但字段不同
Create table test (
a int,
b varchar(20),
c varchar(30)
)
drop table test --然后再次drop掉test表
再执行flashback恢复
flashback table test to before drop;
这时候大家想想会恢复哪个表呢?是第一次创建的?还是第二次创建的?好了做实验,让实事来说话
SQL> drop table test;
表已删除。
SQL> create table test(
2 a int,
3 b varchar(20),
4 c varchar(30)
5 );
表已创建。
SQL> drop table test;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743515
TEST 1743435
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
未选定行
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B VARCHAR2(20)
C VARCHAR2(30)
通过以上实验,我们可以看到,虽然名字相同,但flashback恢复的只是最后一次创建的表
请注意上面的查询回收站的语句,从回收站中,可以看到,共有两个test表,但dropscn不一样,使用flashback命令只恢复dropscn大的哪个表,以前的都是垃圾了
关于flashback命令还有一个需要注意的,如果在drop表时,加上了purge选项,则无法恢复,看下面实验
SQL> drop table test purge;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743435
SQL> flashback table test to before drop;闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
drop时使用了purge选项,所以该drop没有放入回收站,那为什么执行flashback table时又恢复成功了呢?
能过上面的实验可以看到,恢复的是我们第一次创建的test表,而第二次创建的test表就无法恢复了
发表评论
-
左关联右关联全关联
2014-11-10 17:06 3887左关联右关联全关联 参考:http://www.cn ... -
win8系统倒入数据imp-00058错误
2014-09-21 17:52 700win8系统倒入数据imp-00058错误 ... -
oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
2013-12-18 13:09 1512本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个t ... -
查询闪存
2013-12-17 09:36 799(1)查询目标表30分钟前的数据 select * from ... -
ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
2013-08-16 13:35 733ORA-00031: session marked for k ... -
Oracle创建表空间、创建用户以及授权
2013-07-30 11:30 722Oracle创建表空间、创建用户以及授权 创建临时表空间 创 ... -
Oracle中诊断阻塞session的方法 blocking error
2014-10-22 11:36 717Oracle中诊断阻塞session的方法 blocking ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:58 0查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:57 2669查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
ORACLE阻塞
2013-01-19 13:56 924ORACLE阻塞 案例一: 34.//SYS窗口 35. ... -
数据库阻塞和死锁的区别(转载)
2013-01-19 13:30 1385数据库阻塞和死锁的区别(转载) 数据库阻塞和死锁在程序开发过程 ... -
oracle 死锁和锁等待的区别(转载)
2013-01-19 13:27 1328oracle 死锁和锁等待的区别(转载) 所谓的锁等待:就是 ... -
关于“ORA-00060:等待资源时检测到死锁”问题的分析(转载)
2013-01-19 13:26 1358关于“ORA-00060:等待资源时检测到死锁”问题的分析(转 ... -
查询Oracle正在执行和执行过的SQL语句
2013-01-18 22:55 0查询Oracle正在执行和执行过的SQL语句 ---正在执 ... -
如何检测被锁住的Oracle存储过程(转帖)
2013-01-18 17:39 872如何检测被锁住的Oracle存储过程(转帖) 1.查看是哪 ... -
Oracle死锁的处理
2013-01-18 17:29 746Oracle死锁的处理 Oracle死锁问题应该如何解决呢?可 ... -
oracle 查询所有表的记录数 SQL
2013-01-18 15:06 1312oracle 查询所有表的记录数 SQL create o ... -
oracle enterprise manager console 出现 ora-12154:TNS:无法处理的服务名
2011-11-27 20:23 1200登录oracle enterprise manager con ... -
启动服务报错ORA-12505
2011-10-25 18:23 1474今天在工作中配置plsqldev时,报错误是找不到服务名 同 ... -
ORACLE-数据库导出(exp)/ 导入(imp)
2011-06-09 09:42 1502exp 将数据库内的各对象以二进制方式下载成dmp 文件, ...
相关推荐
在Oracle 10g及后续版本中,为了提供更高效的数据管理能力,引入了一个非常实用的功能——**回收站**(Recycle Bin)。这一特性使得数据库管理员能够在不慎删除表等数据库对象后,能够轻松地从回收站中恢复这些对象,...
本文将围绕“Oracle 10g创建用户和表空间”这一主题展开,深入探讨如何在Oracle 10g环境中创建、修改和删除用户及其相关的表空间。 ### 创建用户 在Oracle 10g中,创建用户是数据库管理员的一项基本任务。用户是...
Oracle自10g版本起引入了回收站(Recycle Bin)的概念,这一特性允许用户恢复已删除的对象,包括表、索引等。通过回收站机制,即使一个表被意外删除,也可以轻松将其恢复到删除前的状态。 #### 回收站的工作原理 当...
Oracle 10g是Oracle公司于2004年推出的一款企业级数据库管理系统,其中“g”代表“grid”,强调了其在网格计算环境中的高效能与灵活性。它在前代产品的基础上,进一步增强了数据安全性、可用性和可扩展性,同时引入...
Oracle 10G是Oracle公司推出的数据库管理系统的一个版本,它在数据库管理领域具有广泛的影响力,尤其是在企业级应用中。OCP(Oracle Certified Professional)是Oracle认证的专业资格,对于希望深入理解和掌握Oracle...
Oracle 10g 是Oracle公司推出的数据库管理系统的一个版本,它在数据库领域有着广泛的应用,尤其在企业级数据存储和管理中占据重要地位。本套快速入门学习资源旨在帮助初学者迅速掌握Oracle 10g的基本操作和核心概念...
在深入探讨 Oracle 10g 数据库的备份与恢复之前,我们需要了解一些基本概念和环境配置。 ##### 1. 连接到 Oracle 10g 数据库 - **连接到 SYS 用户**: - 使用 SQL*Plus 工具,通过 `sys` 用户以 `SYSDBA` 角色登录...
本篇文章将深入探讨Oracle 10g的闪回表特性及其在实际操作中的应用。 首先,我们需要理解什么是闪回表(Flashback Table)。闪回表是Oracle数据库闪回技术的一部分,它允许用户将表恢复到之前的一个状态,即使这个...
删除表是数据库管理中的常见操作,本压缩包包含的是关于在Oracle 10g中如何删除表的相关程序和资源。 在Oracle 10g中,删除表有几种不同的方法,主要通过SQL语句实现。最常用的是`DROP TABLE`语句,用于永久性地从...
"第08章 Oracle支持的SQL.ppt"涵盖了SQL语言在Oracle 10g中的应用,包括DML(数据操作语言)如INSERT、UPDATE、DELETE,以及DDL(数据定义语言)如CREATE、ALTER、DROP等。 "第10章 数据管理.ppt"可能涵盖数据备份...
在Oracle 10g中,SQL被用来查询、插入、更新和删除数据,以及创建和修改数据库对象如表、视图、索引等。 - 支持高级查询功能,如联接(JOIN)、子查询、集合操作(UNION, INTERSECT, EXCEPT)以及分组和聚合函数...
当表被删除时,Oracle 10g 并不会立即将表彻底删除,而是将其重命名,并放置在一个名为“回收站”的特殊逻辑容器中。被删除的表会保留其原有的结构、数据以及相关联的索引和触发器等对象。 - **表的重命名**:删除...
Oracle 10g 是 Oracle 公司推出的一款功能强大的关系型数据库管理系统,广泛应用于各种企业级应用中。与其他数据库如 MySQL、SQL Server 相比,Oracle 在数据处理能力、安全性以及稳定性方面具有明显的优势。 - **...
在Oracle 10g环境中,可以创建一个系统级别的触发器,用于阻止非`SYS`用户执行`DROP TABLE`或`TRUNCATE TABLE`命令。 #### 创建触发器脚本 ```sql CREATE OR REPLACE TRIGGER TRIGGER_UNDROPTABLE BEFORE DROP OR ...
Oracle 10g是Oracle公司推出的数据库管理系统的一个版本,它在2003年发布,提供了许多增强功能和改进,使得数据库管理更加高效和安全。本教程将带你深入理解Oracle 10g的基础知识,适合数据库新手入门学习。 首先,...
《Oracle 10g安装与使用详解》 Oracle 10g是一款强大的关系型数据库管理系统,广泛应用于企业级数据管理。本文将详细讲解Oracle 10g的安装过程及日常使用技巧,帮助读者掌握这一重要工具。 一、Oracle 10g安装 1....
从给定的文件内容中,我们可以提取出与Oracle11G数据库备份和恢复相关的一些关键知识点。下面将对文件中提到的内容进行详细解读: 1. Oracle数据库环境设置 文件提到了一些环境变量和目录的设置。例如,`C:\app\...
本文将依据给定的实验手册内容,详细阐述Oracle 10G闪回功能的使用方法、工作原理及其在不同场景下的应用。 ### 闪回功能概述 Oracle的闪回功能允许用户回溯至数据库中的某一特定时间点或系统变更号(SCN),查看或...
如果第一次安装 Oracle Database 10g 并选择自动存储管理(ASM)作为存储和恢复选项,Oracle Universal Installer 则会配置创建并启动 Oracle 集群同步服务 OracleCSService;若没有选择自动存储管理,则可删除 ...