Oracle数据库的闪回

使用的是10g,前几天在操作数据库的时候,突然发现每删除一个表就会产生一个系统生成的表,再一看这个表里面就是刚刚删除的表,只是表名被改成了系统字段,初步判定是从oracle的新技术,删除表并不立即丢弃,因为以前用9i的时候没遇到过这种情况,新技术虽然比较人性化,但是有时候也有不方便的时候,我在这里就针对这一块来提出10个问题。

1自己已经删除的表,怎么会多出一张表,而且结构还是一样的?
  这是由于oracle从9i开始引用的新技术,叫做闪回(flashback)技术,从10g开始默认闪回为开,Drop 掉的表不被会删除,它还保存在回收站中,Oracle给他指派一个系统生成的名字,此名字通常有30个字符长,且只能查询,可方便用户撤销已经误删的表和数据库。

2如何进行物理删除?
可以使用drop table tablename purge; 这样就可以物理删除表。

3删除了的表要怎么才可以恢复?
使用flashback table tablename to before drop;可以恢复。

4如何删除回收站中的单个表?
purge table test_drop;

5我一次性删了好多表,不愿意一张一张删除,该怎么删?
可以使用清空回收站命令:purge recyclebin;

6如何查看回收站中的表?
用show recyclebin;可以查看当前回收站中的表

7如何查看当前闪回是否开启?
可以使用select flashback_on from v$database;查看是否已经开启闪回。

8如何关闭闪回?
1.关闭数据库SQL> shutdown immediate;
2.启动数据库为mount模式SQL> startup mount;
SQL> alter database flashback off ;

9如何启动闪回?
1.关闭数据库SQL> shutdown immediate;
2.启动数据库为mount模式SQL> startup mount
3.显示和修改归档模式SQL> archive log listSQL> alter database archivelog;SQL> alter database open
4.设置归档日志的格式SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;
5.设置归档日志的存放路径SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;SQL>shutdown immediateSQL>startup
6.强制切换归档日至SQL>alter system switch logfile;
7.取消归档SQL>alter database noarchivelog;

10如何闪回数据库?
1.关闭数据库SQL> shutdown immediate;
2.启动数据库为mount模式SQL> startup mountSQL>flashback database to timestamp(to_date('2008-03-11 16:58:23', 'yyyy-mm-dd hh24:mi:ss'));
SQL>alter database open;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值