1.知识点:能够对比以下的录屏进行阅读

  1. SQL> --1. 错误地删除了记录
  2. SQL> --2. 错误地删除了表
  3. SQL> --3. 查询历史记录
  4. SQL> --4. 怎样撤销一个已经提交的事务
  5. SQL>
  6. SQL> --闪回的类型
  7. SQL> --1. 闪回表:将表回退到过去的一个时间上
  8. SQL> --2. 闪回删除:Oracle回收站
  9. SQL> --3. 闪回版本号查询:全部历史记录
  10. SQL> --4. 闪回事务查询:通过select语句得到一个 undo_sql
  11.  
  12. SQL> --5. 闪回数据库
  13. SQL> --6. 闪回归档日志
  14. --------------------------------------------------------------------------
  15. 须要考虑的事情
  16. FLASHBACK TABLE命令作为单一的事务运行。会得到一个单一的DML
  17. 表的统计数据不会被闪回
  18. 当前的索引和从属的对象会被维持
  19. 闪回表操作:1、系统表不能被闪回2、不能跨越DDL操作3、会被写入警告日志4、产生撤销和重做的数据
  20.  
  21. --------------------------------------------------------------------------
  22. 语法:
  23. FLASHBACK TABLE[achema.]<table_name>
  24. TO
  25. {[BEFORE DROP[RENAME TO table]]
  26. [SCN|TIMESTAMP]expr
  27. [ENABLE|DISABLE]TRIGGERS}
  28. schema:模式名,一般为username
  29. TO TIMESTAMP:系统邮戳,包括年月日时分秒
  30. TO SCN:系统更改号
  31. ENABLE TRIGGERS:表示触发器恢复以后为enable状态。而默觉得disable状态
  32. TO BEFORE DROP:表示恢复到删除前
  33. RENAME TO table:表示更换表名
  34. --------------------------------------------------------------------------
  35. --SCN:系统改变号(时间)
  36. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') time,
  37. 2 timestamp_to_scn(systimestamp) SCN
  38. 3 from dual;
  39.  
  40. --scope的取值: momery spfile both
  41. --momery:仅仅改当前内存(即数据库),不改參数文件;重新启动数据库后恢复原样
  42. --spfile:仅仅改參数文件,不改数据库。重新启动数据库后变为改动后的
  43. --both:数据库。參数都改
  44.  
  45. --授予闪回权限:grant flashback any table to scott;
  46. --授予事务查询权限:grant select any transaction to scott;
  47.  
  48. SQL> -- 1.闪回表:将表回退到过去的一个时间上
  49. SQL> flashback table flashback_table to scn 3784220;
  50.  
  51. SQL> --开启表的行移动
  52. SQL> alter table flashback_table enable row movement;
  53.  
  54. SQL> --2.闪回删除
  55. SQL> flashback table testseq to before drop;
  56. SQL> --闪回重名的表
  57. SQL> flashback table testseq to before drop rename to testseq_old;
  58.  
  59. SQL> --查看回收站,管理员没有回收站
  60. SQL> show recyclebin
  61. SQL> --清空回收站
  62. SQL> purge recyclebin;
  63. SQL> --通过回收站的名字查看表要加双引號
  64. SQL> select * from "BIN$UhseqyX1Reyl5iurpupyEg==$0";
  65.  
  66. SQL> /*
  67. SQL> 小结:
  68. SQL> 基本概念: 1. SCN 2. 900秒 3. 权限 flashback any tables
  69. SQL> 闪回表:将表回退到过去的一个时间
  70. SQL> 1. 行移动
  71. SQL> 2. 运行闪回表
  72. SQL> 注意: 系统表不能闪回;不能跨越DDL
  73. SQL> 问题: 怎样得到离该操作近期的一个时间?
  74.  
  75. ?
  76.  
  77. SQL> 闪回删除: Oracle的回收站
  78. SQL> 1. 运行闪回删除
  79. SQL> 2. 通过回收站中的名字闪回(双引號)
  80. SQL> 3. 重名的表
  81. SQL> 4. 触发器(disable)
  82. SQL> */
  83.  
  84. SQL> --3.闪回版本号查询
  85. SQL> --运行闪回版本号查询
  86. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  87. 2 versions_endtime 结束时间,versions_xid 事务号
  88. 3 from versions_table
  89. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  90. 5 order by 1,4;
  91.  
  92. SQL> --4.闪回事务查询
  93. SQL> --视图flashback_transaction_query
  94. SQL> desc flashback_transaction_query
  95.  
  96. SQL> --得到XID
  97. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  98. 2 versions_endtime 结束时间,versions_xid 事务号
  99. 3 from transaction_table
  100. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  101. 5 order by 事务号;
  102.  
  103. SQL> --通过XID查询事务信息,再利用undo_sql撤销事务操作
  104. SQL> select operation,undo_sql
  105. 2 from flashback_transaction_query
  106. 3 where xid='080029005C050000';

2.在Sqlplus下实际运行的结果录屏

  1. SQL> host cls
  2.  
  3. SQL> /*
  4. SQL> 1. 错误地删除了记录
  5. SQL> 2. 错误地删除了表
  6. SQL> 3. 查询历史记录
  7. SQL> 4. 怎样撤销一个已经提交的事务
  8. SQL>
  9. SQL> 闪回的类型
  10. SQL> 1. 闪回表:将表回退到过去的一个时间上
  11. SQL> 2. 闪回删除:Oracle回收站
  12. SQL> 3. 闪回版本号查询:全部历史记录
  13. SQL> 4. 闪回事务查询: 通过select语句得到一个 undo_sql
  14. SQL>
  15. SQL> 5. 闪回数据库
  16. SQL> 6. 闪回归档日志
  17. SQL> */
  18. SQL> --SCN系统改变号(时间)
  19. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') 时间,
  20. 2 timestamp_to_scn(systimestamp) SCN
  21. 3 from dual;
  22.  
  23. 时间 SCN
  24. ----------------------------- ----------
  25. 2012-10-25 10:31:02*000000 3783972
  26.  
  27. SQL> /*
  28. SQL> SQL> show parameter undo
  29. SQL>
  30. SQL> NAME TYPE VALUE
  31. SQL> ------------------------------------ ----------- --------------------
  32. SQL> undo_management string AUTO
  33. SQL> undo_retention integer 1200
  34. SQL> undo_tablespace string UNDOTBS1
  35. SQL> SQL> --scope的取值: momery spfile both
  36. SQL> SQL> alter system set undo_retention=900 scope=both;
  37. SQL> */
  38. SQL> --权限 grant flashback any table to scott;
  39. SQL> create table flashback_table
  40. 2 (fid number,fname varchar2(20));
  41.  
  42. 表已创建。
  43.  
  44. SQL> insert into flashback_table values(1,'Tom');
  45.  
  46. 已创建 1 行。
  47.  
  48. SQL> insert into flashback_table values(2,'Mary');
  49.  
  50. 已创建 1 行。
  51.  
  52. SQL> insert into flashback_table values(3,'Mike');
  53.  
  54. 已创建 1 行。
  55.  
  56. SQL> commit;
  57.  
  58. 提交完毕。
  59.  
  60. SQL> --当前时间
  61. SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') 时间,
  62. 2 timestamp_to_scn(systimestamp) SCN
  63. 3 from dual;
  64.  
  65. 时间 SCN
  66. ----------------------------- ----------
  67. 2012-10-25 10:36:22*046000 3784220
  68.  
  69. SQL> select * from flashback_table;
  70.  
  71. FID FNAME
  72. ---------- --------------------
  73. 1 Tom
  74. 2 Mary
  75. 3 Mike
  76.  
  77. SQL> --删除mary
  78. SQL> delete from flashback_table where fid =2;
  79.  
  80. 已删除 1 行。
  81.  
  82. SQL> commit;
  83.  
  84. 提交完毕。
  85.  
  86. SQL> select * from flashback_table;
  87.  
  88. FID FNAME
  89. ---------- --------------------
  90. 1 Tom
  91. 3 Mike
  92.  
  93. SQL> --运行闪回表
  94. SQL> flashback table flashback_table to scn 3784220;
  95. flashback table flashback_table to scn 3784220
  96. *
  97. 1 行出现错误:
  98. ORA-08189: 由于未启用行移动功能, 不能闪回表
  99.  
  100. SQL> --开启表的行移动
  101. SQL> alter table flashback_table enable row movement;
  102.  
  103. 表已更改。
  104.  
  105. SQL> flashback table flashback_table to scn 3784220;
  106.  
  107. 闪回完毕。
  108.  
  109. SQL> select * from flashback_table;
  110.  
  111. FID FNAME
  112. ---------- --------------------
  113. 1 Tom
  114. 2 Mary
  115. 3 Mike
  116.  
  117. SQL> --问题:怎样获取近期的一个时间?
  118. SQL> host cls
  119.  
  120. SQL> --闪回删除
  121. SQL> select * from tab;
  122.  
  123. TNAME TABTYPE CLUSTERID
  124. ------------------------------ ------- ----------
  125. DEPT TABLE
  126. EMP TABLE
  127. BONUS TABLE
  128. SALGRADE TABLE
  129. EMP20 TABLE
  130. TESTSAVEPOINT TABLE
  131. TEST2 TABLE
  132. MYPERSON TABLE
  133. EMP10 TABLE
  134. EMPINCOME TABLE
  135. VIEW1 VIEW
  136.  
  137. TNAME TABTYPE CLUSTERID
  138. ------------------------------ ------- ----------
  139. VIEW2 VIEW
  140. TESTSEQ TABLE
  141. HREMP SYNONYM
  142. MSG1 TABLE
  143. TEST1 TABLE
  144. PM_CI TABLE
  145. PM_STU TABLE
  146. FLASHBACK_TABLE TABLE
  147. SYS_TEMP_FBT TABLE
  148.  
  149. 已选择20行。
  150.  
  151. SQL> drop table test1;
  152.  
  153. 表已删除。
  154.  
  155. SQL> show recyclebin
  156. ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  157. ---------------- ------------------------------ ------------ -------------------
  158. TEST1 BIN$Rn2qG7V+SO2k+aNrG/oYww==$0 TABLE 2012-10-25:10:45:11
  159. SQL> purge recyclebin;
  160.  
  161. 回收站已清空。
  162.  
  163. SQL> --管理员没有回收站
  164. SQL> select * from TESTSEQ;
  165.  
  166. TID TNAME
  167. ---------- --------------------
  168. 3 aaa
  169. 4 aaa
  170. 5 aaa
  171. 8 aaa
  172.  
  173. SQL> drop table TESTSEQ;
  174.  
  175. 表已删除。
  176.  
  177. SQL> show recyclebin
  178. ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  179. ---------------- ------------------------------ ------------ -------------------
  180. TESTSEQ BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE 2012-10-25:10:47:38
  181. SQL> select * from TESTSEQ;
  182. select * from TESTSEQ
  183. *
  184. 1 行出现错误:
  185. ORA-00942: 表或视图不存在
  186.  
  187. SQL> select * from tab;
  188.  
  189. TNAME TABTYPE CLUSTERID
  190. ------------------------------ ------- ----------
  191. DEPT TABLE
  192. EMP TABLE
  193. BONUS TABLE
  194. SALGRADE TABLE
  195. EMP20 TABLE
  196. TESTSAVEPOINT TABLE
  197. TEST2 TABLE
  198. MYPERSON TABLE
  199. EMP10 TABLE
  200. EMPINCOME TABLE
  201. VIEW1 VIEW
  202.  
  203. TNAME TABTYPE CLUSTERID
  204. ------------------------------ ------- ----------
  205. VIEW2 VIEW
  206. HREMP SYNONYM
  207. MSG1 TABLE
  208. BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE
  209. PM_CI TABLE
  210. PM_STU TABLE
  211. FLASHBACK_TABLE TABLE
  212. SYS_TEMP_FBT TABLE
  213.  
  214. 已选择19行。
  215.  
  216. SQL> select * from BIN$UhseqyX1Reyl5iurpupyEg==$0;
  217. select * from BIN$UhseqyX1Reyl5iurpupyEg==$0
  218. *
  219. 1 行出现错误:
  220. ORA-00933: SQL 命令未正确结束
  221.  
  222. SQL> select * from "BIN$UhseqyX1Reyl5iurpupyEg==$0";
  223.  
  224. TID TNAME
  225. ---------- --------------------
  226. 3 aaa
  227. 4 aaa
  228. 5 aaa
  229. 8 aaa
  230.  
  231. SQL> host cls
  232.  
  233. SQL> show recyclebin
  234. ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  235. ---------------- ------------------------------ ------------ -------------------
  236. TESTSEQ BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE 2012-10-25:10:47:38
  237. SQL> --运行闪回删除
  238. SQL> flashback table testseq to before drop;
  239.  
  240. 闪回完毕。
  241.  
  242. SQL> show recyclebin
  243. SQL> select * from testseq;
  244.  
  245. TID TNAME
  246. ---------- --------------------
  247. 3 aaa
  248. 4 aaa
  249. 5 aaa
  250. 8 aaa
  251.  
  252. SQL> host cls
  253.  
  254. SQL> drop table testseq;
  255.  
  256. 表已删除。
  257.  
  258. SQL> create table testseq(tid number);
  259.  
  260. 表已创建。
  261.  
  262. SQL> drop table testseq;
  263.  
  264. 表已删除。
  265.  
  266. SQL> show recyclebin
  267. ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  268. ---------------- ------------------------------ ------------ -------------------
  269. TESTSEQ BIN$ZsXHtmHLTLu40DAC6jiKqg==$0 TABLE 2012-10-25:10:51:22
  270. TESTSEQ BIN$hBllsvl5Tum9hHaSvtQhag==$0 TABLE 2012-10-25:10:51:01
  271. SQL> flashback table testseq to before drop;
  272.  
  273. 闪回完毕。
  274.  
  275. SQL> show recyclebin
  276. ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
  277. ---------------- ------------------------------ ------------ -------------------
  278. TESTSEQ BIN$hBllsvl5Tum9hHaSvtQhag==$0 TABLE 2012-10-25:10:51:01
  279. SQL> select * from testseq;
  280.  
  281. 未选定行
  282.  
  283. SQL> flashback table testseq to before drop;
  284. flashback table testseq to before drop
  285. *
  286. 1 行出现错误:
  287. ORA-38312: 原始名称已被现有对象使用
  288.  
  289. SQL> --闪回重名的表
  290. SQL> flashback table testseq to before drop rename to testseq_old;
  291.  
  292. 闪回完毕。
  293.  
  294. SQL> select * from testseq_old;
  295.  
  296. TID TNAME
  297. ---------- --------------------
  298. 3 aaa
  299. 4 aaa
  300. 5 aaa
  301. 8 aaa
  302.  
  303. SQL> host cls
  304.  
  305. SQL> /*
  306. SQL> 小结:
  307. SQL> 基本概念: 1. SCN 2. 900秒 3. 权限 flashback any tables
  308. SQL> 闪回表:将表回退到过去的一个时间
  309. SQL> 1. 行移动
  310. SQL> 2. 运行闪回表
  311. SQL> 注意: 系统表不能闪回。不能跨越DDL
  312. SQL> 问题: 怎样得到离该操作近期的一个时间??
  313. SQL> 闪回删除: Oracle的回收站
  314. SQL> 1. 运行闪回删除
  315. SQL> 2. 通过回收站中的名字闪回(双引號)
  316. SQL> 3. 重名的表
  317. SQL> 4. 触发器(disable)
  318. SQL> */
  319. SQL> host cls
  320.  
  321. SQL> --闪回版本号查询
  322. SQL> create table versions_table
  323. 2 (tid number,tname varchar2(20));
  324.  
  325. 表已创建。
  326.  
  327. SQL> insert into versions_table values(1.'Tom');
  328. insert into versions_table values(1.'Tom')
  329. *
  330. 1 行出现错误:
  331. ORA-00917: 缺失逗号
  332.  
  333. SQL> insert into versions_table values(1,'Tom');
  334.  
  335. 已创建 1 行。
  336.  
  337. SQL> commit;
  338.  
  339. 提交完毕。
  340.  
  341. SQL> insert into versions_table values(2,'Mary');
  342.  
  343. 已创建 1 行。
  344.  
  345. SQL> commit;
  346.  
  347. 提交完毕。
  348.  
  349. SQL> insert into versions_table values(3,'Mike');
  350.  
  351. 已创建 1 行。
  352.  
  353. SQL> commit;
  354.  
  355. 提交完毕。
  356.  
  357. SQL> update versions_table set tname='MaryNew' where tid=2;
  358.  
  359. 已更新 1 行。
  360.  
  361. SQL> commit;
  362.  
  363. 提交完毕。
  364.  
  365. SQL> select * from versions_table;
  366.  
  367. TID TNAME
  368. ---------- --------------------
  369. 1 Tom
  370. 2 MaryNew
  371. 3 Mike
  372.  
  373. SQL> --怎样查询Mary?
  374. SQL> --运行闪回版本号查询
  375. SQL> select tid,tname
  376. 2 from versions_table
  377. 3 versions between TIMESTAMP MINVALUE and MAXVALUE
  378. 4 order by 1;
  379.  
  380. TID TNAME
  381. ---------- --------------------
  382. 1 Tom
  383. 2 MaryNew
  384. 2 Mary
  385. 3 Mike
  386.  
  387. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  388. 2 versions_endtime 结束时间,versions_xid 事务号
  389. 3 from versions_table
  390. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  391. 5 order by 1,4;
  392.  
  393. TID TNAME
  394. ---------- -------------------- -
  395. 起始时间
  396. ---------------------------------------------------------------------------
  397. 结束时间
  398. ---------------------------------------------------------------------------
  399. 事务号
  400. ----------------
  401. 1 Tom I
  402. 25-10月-12 11.17.28 上午
  403.  
  404. 03002E005A050000
  405.  
  406. TID TNAME
  407. ---------- -------------------- -
  408. 起始时间
  409. ---------------------------------------------------------------------------
  410. 结束时间
  411. ---------------------------------------------------------------------------
  412. 事务号
  413. ----------------
  414. 2 Mary I
  415. 25-10月-12 11.17.37 上午
  416. 25-10月-12 11.18.16 上午
  417. 02000D0064050000
  418.  
  419. TID TNAME
  420. ---------- -------------------- -
  421. 起始时间
  422. ---------------------------------------------------------------------------
  423. 结束时间
  424. ---------------------------------------------------------------------------
  425. 事务号
  426. ----------------
  427. 2 MaryNew U
  428. 25-10月-12 11.18.16 上午
  429.  
  430. 0600030065050000
  431.  
  432. TID TNAME
  433. ---------- -------------------- -
  434. 起始时间
  435. ---------------------------------------------------------------------------
  436. 结束时间
  437. ---------------------------------------------------------------------------
  438. 事务号
  439. ----------------
  440. 3 Mike I
  441. 25-10月-12 11.17.46 上午
  442.  
  443. 0400130061050000
  444.  
  445. SQL> set linesize 150
  446. SQL> col tid for 99
  447. SQL> col tname for a10
  448. SQL> col 操作 for a8
  449. SQL> col 起始时间 for a40
  450. SQL> col 结束时间 for a40
  451. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  452. 2 versions_endtime 结束时间,versions_xid 事务号
  453. 3 from versions_table
  454. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  455. 5 order by 1,4;
  456.  
  457. TID TNAME 操作 起始时间 结束时间 事务号
  458. --- ---------- -------- ---------------------------------------- ---------------------------------------- ----------------
  459. 1 Tom I 25-10月-12 11.17.28 上午 03002E005A050000
  460. 2 Mary I 25-10月-12 11.17.37 上午 25-10月-12 11.18.16 上午 02000D0064050000
  461. 2 MaryNew U 25-10月-12 11.18.16 上午 0600030065050000
  462. 3 Mike I 25-10月-12 11.17.46 上午 0400130061050000
  463.  
  464. SQL> col 起始时间 for a30
  465. SQL> col 结束时间 for a30
  466. SQL> col 操作 for a4
  467. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  468. 2 versions_endtime 结束时间,versions_xid 事务号
  469. 3 from versions_table
  470. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  471. 5 order by 1,4;
  472.  
  473. TID TNAME 操作 起始时间 结束时间 事务号
  474. --- ---------- ---- ------------------------------ ------------------------------ ----------------
  475. 1 Tom I 25-10月-12 11.17.28 上午 03002E005A050000
  476. 2 Mary I 25-10月-12 11.17.37 上午 25-10月-12 11.18.16 上午 02000D0064050000
  477. 2 MaryNew U 25-10月-12 11.18.16 上午 0600030065050000
  478. 3 Mike I 25-10月-12 11.17.46 上午 0400130061050000
  479.  
  480. SQL> host cls
  481.  
  482. SQL> --闪回事务查询
  483. SQL> create table transaction_table
  484. 2 (tid number,tname varchar2(20));
  485.  
  486. 表已创建。
  487.  
  488. SQL> --第一个事务
  489. SQL> insert into transaction_table values(1,'Tom');
  490.  
  491. 已创建 1 行。
  492.  
  493. SQL> insert into transaction_table values(2,'Mary');
  494.  
  495. 已创建 1 行。
  496.  
  497. SQL> insert into transaction_table values(3,'Mike');
  498.  
  499. 已创建 1 行。
  500.  
  501. SQL> commit;
  502.  
  503. 提交完毕。
  504.  
  505. SQL> --第二个事务
  506. SQL> update transaction_table set tname='MaryNew' where tid=2;
  507.  
  508. 已更新 1 行。
  509.  
  510. SQL> delete from transaction_table where tid =3;
  511.  
  512. 已删除 1 行。
  513.  
  514. SQL> commit;
  515.  
  516. 提交完毕。
  517.  
  518. SQL> --怎样撤销第二个事务??
  519. SQL> --视图flashback_transaction_query
  520. SQL> desc flashback_transaction_query
  521. 名称 是否为空?
  522.  
  523. 类型
  524. ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
  525. XID RAW(8)
  526. START_SCN NUMBER
  527. START_TIMESTAMP DATE
  528. COMMIT_SCN NUMBER
  529. COMMIT_TIMESTAMP DATE
  530. LOGON_USER VARCHAR2(30)
  531. UNDO_CHANGE# NUMBER
  532. OPERATION VARCHAR2(32)
  533. TABLE_NAME VARCHAR2(256)
  534. TABLE_OWNER VARCHAR2(32)
  535. ROW_ID VARCHAR2(19)
  536. UNDO_SQL VARCHAR2(4000)
  537.  
  538. SQL> --得到XID
  539. SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
  540. 2 versions_endtime 结束时间,versions_xid 事务号
  541. 3 from transaction_table
  542. 4 versions between TIMESTAMP MINVALUE and MAXVALUE
  543. 5 order by 事务号;
  544.  
  545. TID TNAME 操作 起始时间 结束时间 事务号
  546. --- ---------- ---- ------------------------------ ------------------------------ ----------------
  547. 3 Mike I 25-10月-12 11.29.38 上午 25-10月-12 11.30.23 上午 0100100060050000
  548. 2 Mary I 25-10月-12 11.29.38 上午 25-10月-12 11.30.23 上午 0100100060050000
  549. 1 Tom I 25-10月-12 11.29.38 上午 0100100060050000
  550. 2 MaryNew U 25-10月-12 11.30.23 上午 080029005C050000
  551. 3 Mike D 25-10月-12 11.30.23 上午 080029005C050000
  552.  
  553. SQL> select operation,undo_sql
  554. 2 from flashback_transaction_query
  555. 3 where xid='080029005C050000';
  556.  
  557. OPERATION
  558. --------------------------------
  559. UNDO_SQL
  560. ------------------------------------------------------------------------------------------------------------------------------------------------------
  561. DELETE
  562. insert into "SCOTT"."TRANSACTION_TABLE"("TID","TNAME") values ('3','Mike');
  563.  
  564. UPDATE
  565. update "SCOTT"."TRANSACTION_TABLE" set "TNAME" = 'Mary' where ROWID = 'AAANpoAAEAAAAJvAAB';
  566.  
  567. BEGIN
  568.  
  569. SQL> insert into "SCOTT"."TRANSACTION_TABLE"("TID","TNAME") values ('3','Mike')
  570. 2 ;
  571.  
  572. 已创建 1 行。
  573.  
  574. SQL> update "SCOTT"."TRANSACTION_TABLE" set "TNAME" = 'Mary' where ROWID = 'AAANpoAAEAAAAJvAAB';
  575.  
  576. 已更新 1 行。
  577.  
  578. SQL> commit;
  579.  
  580. 提交完毕。
  581.  
  582. SQL> select * from transaction_table;
  583.  
  584. TID TNAME
  585. --- ----------
  586. 1 Tom
  587. 2 Mary
  588. 3 Mike
  589.  
  590. SQL> spool off

Oracle学习(十三):闪回的更多相关文章

  1. Oracle Flashback Technologies - 闪回查询

    Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...

  2. Oracle Flashback Technologies - 闪回被drop的表

    Oracle Flashback Technologies - 闪回被drop的表 在oracle10g中,drop一个表后,表没有真正被删除,支持被rename后放在recyclebin中. #新建 ...

  3. Oracle Flashback Technologies - 闪回数据库

    Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...

  4. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...

  5. oracle中的闪回

    项目中运用: 首先说明:闪回方法有一个前提,就是需要尽早的发现问题,果断的采取行动.若误操作的记录已经在UNDO表空间中被清除,则此方法就不可行了,需要另寻他法. 例如: SELECT * FROM ...

  6. 吴裕雄--天生自然ORACLE数据库学习笔记:Oracle 11g的闪回技术

    alter system set db_recovery_file_dest_size=4g scope=both; connect system/1qaz2wsx as sysdba; archiv ...

  7. 【Oracle】Oracle 10g利用闪回挽救误删的数据

    我们在开发和运维过程中,经常遇到数据被误删除的情况.无论是在应用开发中的Bug,还是修改数据的时候,如果提交了错误数据修改结果,会带来很多问题.一般来说,一旦提交commit事务,我们是不能获取到之前 ...

  8. Oracle数据库中闪回恢复的详细分析

    Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的.这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了.oracle10g大 ...

  9. oracle 基础(一)--闪回技术

    一,闪回表初探 闪回须知: 1 使用闪回表注意如下事项: 2 3 (1)被闪回的表必须启用行移动功能 4 5 SQL> alter table dept enable row movement; ...

随机推荐

  1. Linux运维打怪升级篇,从苦逼到牛逼的必备装备(转)

    http://chenhao6.blog.51cto.com/6228054/1949673

  2. hdu 3625 Examining the Rooms 轮换斯特林数

    题目大意 n个房间对应n把钥匙 每个房间的钥匙随机放在某个房间内,概率相同. 有K次炸门的机会,求能进入所有房间的概率 一号门不给你炸 分析 我们设\(key_i\)为第i间房里的钥匙是哪把 视作房间 ...

  3. 【NOIP2016】换教室(DP,期望)

    题意: 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程 ...

  4. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

  5. window10下用ZIP压缩包安装 mysql 8.0.11

    1.下载地址 https://dev.mysql.com/downloads/mysql/ 2.解压后的文件目录如图,复制到指定的文件目录,如我的 E:\root\mysql-8.0.11-winx6 ...

  6. indexOf()、includes()、startsWith()、endsWith()

    是否包含字符串三种新方法 传统上,JavaScript只有 indexOf 方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否 ...

  7. MySQL通用编程

    第一阶段:基础入门 第一章:关系模型 第二章:基本查询 第三章:复杂查询 第四章:权限控制 第五章:查询优化 第二阶段:模型设计 第六章:设计选择 第七章:函数依赖 第八章:分解算法 第九章:设计过程 ...

  8. CDOJ 879 摩天轮 dp+斜率优化

    原题链接:http://www.acm.uestc.edu.cn/#/problem/show/879 题意: 中文题 题解: 这是一道斜率dp的题. 先把$a$数组排个序. 令$dp[i][j]$表 ...

  9. bzoj 1453: [Wc]Dface双面棋盘

    1453: [Wc]Dface双面棋盘 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 617  Solved: 317[Submit][Status][ ...

  10. [ZJOI 2016] 小星星

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 653  Solved: 400[Submit][Status] ...