- 浏览: 5101507 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
使用闪回功能恢复被TRUNCATE表的内容
- 博客分类:
- 数据库
转自:http://space.itpub.net/519536/viewspace-629763
我们实际感受一下使用Flashback Database功能找回被TRUNCATE表的快感。
1.Oracle数据库版本信息
sys@secooler> select * from v$version;
BANNER
---------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
2.验证是否启用了flashback database
sys@secooler> select flashback_on,force_logging from v$database;
FLASHBACK_ON FOR
------------------ ---
NO NO
这里显示没有开启闪回功能,同时force_logging也没有开启。
3.开启闪回功能和force logging
开启过程可以详细参考《【Flashback】启用Flashback闪回功能》http://space.itpub.net/?uid-519536-action-viewspace-itemid-590636
1)关闭数据库,启动到mount状态
sys@secooler> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
NotConnected@> startup mount;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
2)设置db_recovery_file_dest和db_recovery_file_dest_size参数
NotConnected@> alter system set db_recovery_file_dest='/oracle/ora11gR2/flash_recovery_area';
System altered.
NotConnected@> alter system set db_recovery_file_dest_size=4g scope=spfile;
System altered.
NotConnected@> show parameter db_recovery_file_dest
NAME TYPE VALUE
---------------------------------------- -------------------- ------------------------------------------------------------
db_recovery_file_dest string /oracle/ora11gR2/flash_recovery_area
db_recovery_file_dest_size big integer 3882M
3)重启数据库到mount状态
NotConnected@> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
NotConnected@> startup mount;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
4)开启闪回功能
(1)第一次尝试
NotConnected@> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
之所以会报此错误,是因为这个数据库没有运行在归档模式下。
(2)将数据库修改为归档模式
NotConnected@> alter database archivelog;
Database altered.
(3)再次尝试开启闪回功能,成功。
NotConnected@> alter database flashback on;
Database altered.
5)OPEN数据库,
NotConnected@> alter database open;
Database altered.
6)开启force logging功能
sys@secooler> alter database force logging;
Database altered.
7)最后的验证
sys@secooler> select flashback_on,force_logging from v$database;
FLASHBACK_ON FOR
------------------ ---
YES YES
此时,数据库已经启用闪回功能,同时force_logging也被开启。
4.在sec用户下创建一个T表并初始化一条数据
sys@secooler> conn sec/sec
Connected.
sec@secooler> select * from tab;
no rows selected
sec@secooler> create table t (x varchar2(8));
Table created.
sec@secooler> insert into t values ('secooler');
1 row created.
sec@secooler> commit;
Commit complete.
sec@secooler> select * from t;
X
--------
secooler
5.查看当前数据库可以闪回到的时间
sec@secooler> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
sec@secooler> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
8443212 2010-03-17 19:26:45
6.模拟表T被误TRUNCATE
sec@secooler> select sysdate from dual;
SYSDATE
-------------------
2010-03-17 19:47:14
sec@secooler> truncate table t;
Table truncated.
7.此时数据已被删除
sec@secooler> select * from t;
no rows selected
8.使用Flash Database功能
1)关闭数据库
sys@secooler> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2)开启数据库到mount exclusive状态
sys@secooler> startup mount exclusive;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
3)恢复到truncate表T之前的时间,注意这里时间格式的写法
sys@secooler> Flashback Database to timestamp(to_date('2010-03-17 19:47:14','yyyy-mm-dd hh24:mi:ss'));
Flashback complete.
4)打开数据库到read only状态
sys@secooler> alter database open read only;
Database altered.
5)到sec用户中确认,数据是否被恢复
sys@secooler> conn sec/sec
Connected.
sec@secooler> select * from t;
X
--------
secooler
“激动人心”的消息:“我secooler又回来啦!”
此时也可以以“resetlogs”的方式开启数据库(alter database open resetlogs;),不推荐这样使用,因为这样打开数据库后,恢复到的时间点之后的数据将会丢失。
9.小结
我们真实完整的操练了一遍Flash Database功能,它可以完美、便捷和快速的恢复被误TRUNCATE的表。在“特定场合”下可以考虑使用这个优秀的功能。
“特定场合”:数据库的数据量不大,确认数据库确实可以恢复到指定的时间点。
受这个技术本身的
Good luck.
secooler
10.03.17
-- The End --
我们实际感受一下使用Flashback Database功能找回被TRUNCATE表的快感。
1.Oracle数据库版本信息
sys@secooler> select * from v$version;
BANNER
---------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
2.验证是否启用了flashback database
sys@secooler> select flashback_on,force_logging from v$database;
FLASHBACK_ON FOR
------------------ ---
NO NO
这里显示没有开启闪回功能,同时force_logging也没有开启。
3.开启闪回功能和force logging
开启过程可以详细参考《【Flashback】启用Flashback闪回功能》http://space.itpub.net/?uid-519536-action-viewspace-itemid-590636
1)关闭数据库,启动到mount状态
sys@secooler> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
NotConnected@> startup mount;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
2)设置db_recovery_file_dest和db_recovery_file_dest_size参数
NotConnected@> alter system set db_recovery_file_dest='/oracle/ora11gR2/flash_recovery_area';
System altered.
NotConnected@> alter system set db_recovery_file_dest_size=4g scope=spfile;
System altered.
NotConnected@> show parameter db_recovery_file_dest
NAME TYPE VALUE
---------------------------------------- -------------------- ------------------------------------------------------------
db_recovery_file_dest string /oracle/ora11gR2/flash_recovery_area
db_recovery_file_dest_size big integer 3882M
3)重启数据库到mount状态
NotConnected@> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
NotConnected@> startup mount;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
4)开启闪回功能
(1)第一次尝试
NotConnected@> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
之所以会报此错误,是因为这个数据库没有运行在归档模式下。
(2)将数据库修改为归档模式
NotConnected@> alter database archivelog;
Database altered.
(3)再次尝试开启闪回功能,成功。
NotConnected@> alter database flashback on;
Database altered.
5)OPEN数据库,
NotConnected@> alter database open;
Database altered.
6)开启force logging功能
sys@secooler> alter database force logging;
Database altered.
7)最后的验证
sys@secooler> select flashback_on,force_logging from v$database;
FLASHBACK_ON FOR
------------------ ---
YES YES
此时,数据库已经启用闪回功能,同时force_logging也被开启。
4.在sec用户下创建一个T表并初始化一条数据
sys@secooler> conn sec/sec
Connected.
sec@secooler> select * from tab;
no rows selected
sec@secooler> create table t (x varchar2(8));
Table created.
sec@secooler> insert into t values ('secooler');
1 row created.
sec@secooler> commit;
Commit complete.
sec@secooler> select * from t;
X
--------
secooler
5.查看当前数据库可以闪回到的时间
sec@secooler> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
sec@secooler> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
8443212 2010-03-17 19:26:45
6.模拟表T被误TRUNCATE
sec@secooler> select sysdate from dual;
SYSDATE
-------------------
2010-03-17 19:47:14
sec@secooler> truncate table t;
Table truncated.
7.此时数据已被删除
sec@secooler> select * from t;
no rows selected
8.使用Flash Database功能
1)关闭数据库
sys@secooler> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2)开启数据库到mount exclusive状态
sys@secooler> startup mount exclusive;
ORACLE instance started.
Total System Global Area 726540288 bytes
Fixed Size 2216904 bytes
Variable Size 541068344 bytes
Database Buffers 176160768 bytes
Redo Buffers 7094272 bytes
Database mounted.
3)恢复到truncate表T之前的时间,注意这里时间格式的写法
sys@secooler> Flashback Database to timestamp(to_date('2010-03-17 19:47:14','yyyy-mm-dd hh24:mi:ss'));
Flashback complete.
4)打开数据库到read only状态
sys@secooler> alter database open read only;
Database altered.
5)到sec用户中确认,数据是否被恢复
sys@secooler> conn sec/sec
Connected.
sec@secooler> select * from t;
X
--------
secooler
“激动人心”的消息:“我secooler又回来啦!”
此时也可以以“resetlogs”的方式开启数据库(alter database open resetlogs;),不推荐这样使用,因为这样打开数据库后,恢复到的时间点之后的数据将会丢失。
9.小结
我们真实完整的操练了一遍Flash Database功能,它可以完美、便捷和快速的恢复被误TRUNCATE的表。在“特定场合”下可以考虑使用这个优秀的功能。
“特定场合”:数据库的数据量不大,确认数据库确实可以恢复到指定的时间点。
受这个技术本身的
Good luck.
secooler
10.03.17
-- The End --
发表评论
-
Oracle数据库相关系统突然提示“SQLException:违反协议”
2024-02-19 15:50 349SQLException:违反协议这个异常可能由很多的 ... -
CentOS在Docker中安装Oracle
2024-02-06 12:13 4761.拉取Oracle镜像,并检 ... -
Windows Server安装oracle数据库一直停在82%
2023-02-04 12:01 410网上有个说法:服务器超过一定数量的CPU后,将不能正常安装 ... -
ORA-04030错误处理
2023-02-04 11:52 2198【错误描述】 错误信息如下: ORA-04030:在尝 ... -
ORA-04030错误处理
2023-02-04 11:45 403【错误描述】 错误信息如下: ORA-04030:在尝 ... -
Linux安装MySQL数据库
2019-06-10 22:27 16181.进入安装包所在目录,解压: tar zxvf mysql- ... -
确定MySQL在Linux系统中配置文件的位置
2019-04-14 19:30 26241.通过which mysql命令来查看mysql的安装位置。 ... -
mysql set names 命令和 mysql 字符编码问题
2019-04-12 00:34 1011转自:https://www.cnblogs.com/digd ... -
MYSQL中取当前周/月/季/年的第一天与最后一天
2018-11-17 23:16 2090转自:https://blog.csdn.net/ ... -
Oracle删除大量数据的实践
2016-11-07 18:03 5676一、引言 从来没有 ... -
Oracle 数据库简明教程 V0.1
2016-03-23 21:01 1916供初学者入门学习使用,以开发者常见、常用的知识为主,基本上 ... -
Oracle拆分字符串函数
2016-03-23 10:58 3231create or replace type string ... -
Oracle数据库远程连接无响应
2016-03-21 10:20 4145故障现象: 服务器本机使用sqlplus / as s ... -
Oracle PGA详解
2015-10-21 15:34 11268转自:http://yanguz123.iteye.com/b ... -
Oracle12C导入dmp数据
2015-10-08 23:43 20415Oracle12C,发生了较大的变化。以前熟悉的东西变得陌 ... -
SQLLDR数据导入小结
2015-07-25 22:06 73861.创建数据表 CREATE TABLE ... -
Window7安装Oracle10
2015-03-06 12:14 1504每次安装都要百度,转到自己的博客上,找起来方便,还能增加访 ... -
Oracle SQL Developer 连接 Mysql 数据库
2015-02-25 19:36 3556下载JDBC包,解压缩这里只要mysql-connector- ... -
Mysql数据备份与恢复
2015-02-25 19:15 1248备份/恢复策略 1. 要定期做 mysql备份,并考虑系统可以 ... -
Oracle中merge into的使用
2015-01-23 22:57 3912引自:http://www.cnblogs.com/highr ...
相关推荐
gdul 工具恢复被truncate 表 示例
PRM恢复表数据时存在多种模式, PRM需要知道哪些表上的数据块是需要被读取并取出数据的。默认的表现形式是直接从segment header数据段头里获取EXTENT MAP即盘区图,另一种方案就是由PRM自己去构建一个盘区图。 这些...
1、 表是否能成功恢复,取决于被truncate了的表所占用的数据块是不是被新的段(表、索引等)所重用,如果被重用就无法完成这样的恢复了,看个人运气了 。 2、需用到牛人写的恢复包,FY_Recover_Data。
Truncate 不会逐个清除用户数据块上的数据,而仅仅重置数据字典和元数据块上的...也就是说,此时,基本数据表并未破坏,而是被系统回收,等待被重新分配—因此,要恢复被truncate的数据,需要及时备份所在的数据文件。
因自己前段时间因truncate一张表无法找回,且数据超过60W,平常的企业软件超过1W收费,故整理此内容,希望和我遇到同样问题的新手有帮助
truncate误操作恢复方法集合truncate误操作恢复方法集合truncate误操作恢复方法集合
NULL 博文链接:https://steve-111.iteye.com/blog/750326
truncate表恢复,包含了相应的操作步骤以及脚本。遇到紧急情况,很实用哦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
实现在oracle使用truncate吴删数据的恢复
此类是不完全恢复类型,基于时间点恢复,恢复后,应该再次进行一次全备.
Oracle中Truncate表的恢复方法.pdf
Oracle_授权审计表Truncate权限
实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行数据写入。 这里为了简单说明,只拿弄一个简单的业务场景举例。 测试环境: Percona-...
SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完
使用bbed强制online数据文件,修复system头损坏,找回truncate数据
Oracle_审计表_sys.aud$_授权给用户Truncate权限
。