加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

第7天-2 flashback table 】【flashback version query 】【flas

发布时间:2020-12-15 17:48:21 所属栏目:百科 来源:网络整理
导读:flashback--============1.flashback query (undo)2.flashback drop (recyclebin)(system tablespace不支持)3.flashback table(undo)(sys user 不支持)4.flashback version query select versions_xid,versions_operation,versions_startscn,versions_startt
flashback
--============
1.flashback query (undo)
2.flashback drop (recyclebin)(system tablespace不支持)
3.flashback table(undo)(sys user 不支持)
4.flashback version query

  select versions_xid,versions_operation,versions_startscn,versions_starttime,versions_endscn,versions_endtime,id,name
  from t2 versions  between scn minvalue and maxvalue;
5.flashback transaction query

select * from flashback_transaction_query where xid='0900020066020000'

6.flashback database

select flashback_on from v$database


select tablespace_name from user_tablespaces
select * from user_tables 

SQL> alter table t move;    --改变数据物理位置,导致index失效

--flashback删除放到回收站中的数据的rowid,可以被oracle重新使用,在对其进行闪回时,就可能导致rowid需要改变,所有闪回前提是允许行移动

3.flashback table(sys user 不支持)
SQL> select table_name,ROW_MOVEMENT from user_tables;

TABLE_NAME                     ROW_MOVE
------------------------------ --------
T                              DISABLED
SYS_TEMP_FBT                   DISABLED
TT                             DISABLED

SQL> select t.*,rowid from t;

        ID ROWID
---------- ------------------
         3 AAAE45AAEAAAB1IAAA
         3 AAAE45AAEAAAB1IAAB

SQL> alter table t enable row movement;

表已更改。

SQL> flashback table t to scn 2306145;

闪回完成。

SQL> select * from t;

        ID
----------
         1
         2
         
4.flashback version query        
  select versions_xid,name
  from t2 versions  between scn minvalue and maxvalue;
  
   	VERSIONS_XID	VERSIONS_OPERATION	VERSIONS_STARTSCN	VERSIONS_STARTTIME	VERSIONS_ENDSCN	VERSIONS_ENDTIME	ID	NAME
1	040022004C020000	D	2308064	07-12月-13 04.15.12 下午			3	c
2	0900020066020000	U	2308015	07-12月-13 04.14.06 下午			1	abc
3					2308015	07-12月-13 04.14.06 下午	1	a
4							2	b
5					2308064	07-12月-13 04.15.12 下午	3	c
6							4	d

5.flashback transaction query

select * from flashback_transaction_query where xid='0900020066020000'

   	XID	START_SCN	START_TIMESTAMP	COMMIT_SCN	COMMIT_TIMESTAMP	LOGON_USER	UNDO_CHANGE#	OPERATION	TABLE_NAME	TABLE_OWNER	ROW_ID	UNDO_SQL
1	0900020066020000	2308005	2013-12-7 16:13:39	2308015	2013-12-7 16:14:06	TEST	1	UPDATE	T2	TEST	AAAE47AAEAAAB1QAAA	update "TEST"."T2" set "NAME" = 'a' where ROWID = 'AAAE47AAEAAAB1QAAA';
2	0900020066020000	2308005	2013-12-7 16:13:39	2308015	2013-12-7 16:14:06	TEST	2	UNKNOWN	T2			
3	0900020066020000	2308005	2013-12-7 16:13:39	2308015	2013-12-7 16:14:06	TEST	3	BEGIN				


SQL> select * from t2;

        ID NAME
---------- ----------
         1 abc
         2 b
         4 d

SQL> update "TEST"."T2" set "NAME" = 'a' where ROWID = 'AAAE47AAEAAAB1QAAA';      --select * from flashback_transaction_query where xid='0900020066020000'中的UNDO_SQL

已更新 1 行。

SQL> select * from t2;

        ID NAME
---------- ----------
         1 a
         2 b
         4 d

SQL> commit;

6.flashback database
select flashback_on from v$database;
select * from v$flashback_database_logfile     --闪回日志文件
select * from v$flashback_database_log         --查询闪回可以退到的点
select * from v$flashback_database_stat
select * from v$process

SQL> select log_mode,flashback_on from v$database;

LOG_MODE     FLASHBACK_ON
------------ ------------------
ARCHIVELOG   NO

SQL> alter database flashback on;

数据库已更改。

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      C:oracleproduct10.2.0flash
                                                 _recovery_area
db_recovery_file_dest_size           big integer 2G
SQL> select flashback_on from v$database;

--模拟误删了用户,用flashback database闪回到没有删除用户之前
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    2324494

SQL> drop user test;
drop user test
*
第 1 行出现错误:
ORA-01922: 必须指定 CASCADE 以删除 'TEST'


SQL> drop user test cascade;

用户已删除。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
SQL> disc
从 Oracle Database 10g Enterprise Edition Release 10.2.0.
With the Partitioning,OLAP and Data Mining options 断开
SQL> connect /@jingtai1 as sysdba
已连接到空闲例程。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  209715200 bytes
Fixed Size                  1289724 bytes
Variable Size             142606852 bytes
Database Buffers           58720256 bytes
Redo Buffers                7098368 bytes
数据库装载完毕。
SQL> flashback database to scn 2324494;

闪回完成。

SQL> select file#,checkpoint_change# from datafile;

SQL> select file#,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2324497
         2            2324497
         3            2324497
         4            2324497
         5            2324497
         6            2324497
         7            2324497
         8            2324497
         9            2324497
        10            2324497
        11            2324497

已选择11行。

SQL> select file#,checkpoint_change# from v$datafile_head

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2324497
         2            2324497
         3            2324497
         4            2324497
         5            2324497
         6            2324497
         7            2324497
         8            2324497
         9            2324497
        10            2324497
        11            2324497

已选择11行。

SQL> alter database open read only;
alter database open read only
*
第 1 行出现错误:
ORA-16006: audit_trail 目标与数据库打开模式不兼容


SQL> show parameter audit;

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------
audit_file_dest                      string      C:ORACL
                                                 TESTAD
audit_sys_operations                 boolean     FALSE
audit_trail                          string      DB_EXTEN
SQL> alter system set audit_trail=none scope=spfile;

系统已更改。

SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  209715200 bytes
Fixed Size                  1289724 bytes
Variable Size             150995460 bytes
Database Buffers           50331648 bytes
Redo Buffers                7098368 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOG


SQL> alter database open read only;

数据库已更改。

SQL> select usrname from dba_users;

SQL> select username from dba_users;

USERNAME
------------------------------
TEST1
TEST
TEST2
DIP
TSMSYS
SYSMAN
DBSNMP
WMSYS
SYSTEM
SYS
MGMT_VIEW

USERNAME
------------------------------
OUTLN

已选择12行。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  209715200 bytes
Fixed Size                  1289724 bytes
Variable Size             159384068 bytes
Database Buffers           41943040 bytes
Redo Buffers                7098368 bytes
数据库装载完毕。


SQL> alter database open resetlogs;

数据库已更改。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读