SQL> select current_scn
;
已更新 行。
; //查询之前scn时的值
ID
) from
dual;
SCN_TO_TIMESTAMP()
月 ...000000000 上午
SQL> select to_timestamp('24-2月 -13
01.12.07.000000000 上午') from
dual; 月 ...000000000 上午
SQL> select timestamp_to_scn(to_timestamp('24-2月 -13 01.12.07.000000000 上午')) from
dual;
TIMESTAMP_TO_SCN(TO_TIMESTAMP(
查询smon维护的最早scn
SQL> select min(scn)
from sys.smon_scn_time
;
) from
dual;
SCN_TO_TIMESTAMP()
月 ...000000000 下午
小于最早scn则无法进行运算
) from
dual;
) from
dual
行出现错误:
ORA:
指定的编号不是有效的系统更改号
ORA: 在 "SYS.SCN_TO_TIMESTAMP",
line
table(sys用户下的表不能用这个方式,利用UNDO。而闪回表内部实际是先delete再insert)闪回表到之前某个scn的状态
OBJECT_ID NAME
----------
aaa
aaa
SQL> select current_scn
行。
SQL> commit;
提交完成。
SQL> flashback table t12 to scn
;
flashback table t12 to scn
行出现错误:
ORA: 因为未启用行移动功能,
不能闪回表(因为闪回个时间点,行位置可能被占用,存储位置可能发生变化)
bbb AAAXMiAAEAAAMFTAAA
bbb AAAXMiAAEAAAMFTAAB
是否允许行移动,查询dba_tables表中row_movement=DISABLED|ENABLE
SQL> alter table t12
enable row movement;
表已更改。
SQL> flashback table t12 to scn
;
闪回完成。
aaa AAAXMiAAEAAAMFTAAC
aaa AAAXMiAAEAAAMFTAAD
query(返回版本查询)
versions_startscn,versions_endscn,versions_xid,versions_operation,versions_starttime,versions_endtime,id,name
from
scott.t1 versions between scn minvalue and maxvalue order by versions_startscn;
query(闪回事务查询,使用undo)
已连接。
SQL> create table t1
(id ));
表已创建。
SQL> insert into t1
,
行。
SQL>
insert into
t1 ,
行。
SQL>
commit;
提交完成。
行。
SQL> commit;
提交完成。
查询该事务的事务id,versions_xid:
xid='0A00170079230000';
t_recycle (id number) tablespace
users;
表已创建。
:00::
T11 BIN$ :00::
T_RECYCLE BIN$ :::
闪回完成。
FLASHBACK_ON
------------------
NO
db_recover
NAME TYPE VALUE
------------------------------------
-----------
--------------------------------
db_recovery_file_dest string D:\app\Lenovo\fast_recovery_area
db_recovery_file_dest_size big
integer 10000M
开启闪回数据库:
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL>
startup mount
ORACLE 例程已经启动。
Total System Global
Area bytes
Fixed bytes
Variable
bytes
Database
Buffers bytes
Redo
Buffers bytes
数据库装载完毕。
SQL> archive log
list
数据库日志模式 存档模式
自动存档 启用
存档终点 D:\app\arch
最早的联机日志序列
下一个存档日志序列
当前日志序列
SQL> show parameter db_recover
NAME TYPE VALUE
------------------------------------
-----------
------------------------------
db_recovery_file_dest string D:\app\Lenovo\fast_recovery_area
db_recovery_file_dest_size big
integer 10000M
SQL> alter database flashback on;
数据库已更改。
SQL> alter database
open;
数据库已更改。
db_flashback
NAME TYPE VALUE
------------------------------------
-----------
闪回库最早可闪回的scn点:
v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBA
RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
月
redo_data单位是字节,表示从begin_time至今产生的闪回日志、数据、redo的大小,可以粗略的估算闪回需要的时间和闪回的量
v$flashback_database_stat;
BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA
ESTIMATED_FLASHBACK_SIZE
--------------
月
月
SQL> drop user scott cascade;
用户已删除。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL>
startup mount
ORACLE 例程已经启动。
Total System Global
Area bytes
Fixed bytes
Variable
bytes
Database
Buffers bytes
Redo
Buffers bytes
数据库装载完毕。
SQL> flashback database to scn
;
闪回完成。
SQL> alter database
open read
only;
数据库已更改。
SQL> conn scott/tiger
已连接。
resetlog
11g有个新的闪回表空间,不依赖undo