日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle闪回技术(笔记)

發布時間:2025/4/16 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle闪回技术(笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、設置SQL*Plus提示符

臨時設置

set sqlprompt "_user'@'_connect_identifier>"

永久設置

為了對所有SQL*Plus會話自動設置sqlprompt.將上面的命令放置在ORACLE_HOME_HOME/sqlplus/admin目錄中的glogin.sql文件內

2、查看是否啟用閃回臨視

SQL> select flashback_on from v$database;

?

FLASHBACK_ON

------------------

YES

3、查詢回收站

show recyclebin;會顯示當前的用戶有三個刪除的表并顯示:原先的名稱、回收站名稱以及刪除的時間。

右要了解更詳細的信息,查詢數據字典視圖USER_RECYCLEBINDBA_RECYCLEBIN來查看全局視圖

select owner,original_name,type,droptime,can_undrop,space fromdba_recyclebin;

4PURGE命令永久性地清除刪除的對象

(1)刪除表并且不將它轉移到回收站

drop table <table_name> purge;

(2)從回收站中清除表,如果存在多個具有相同原始名稱的對象,那么將清除時間最久的對象。也可以通過指定回收站名稱來避免這種混淆

purge table <table_name>;

3)從回收站中清除索引

?purge index<index_name>;

?(4)從表空間中清除所有刪除的對象

?purge tablespace<tablespace_name>;

?(5)從表空間中清除屬于一個用戶的所有刪除的對象

?purge tablespace<tablespace_name> user <user_name>;

?(6)清除您刪除的所有對象

?purge user_recyclebin;

?7)清除所有刪除的對象,但是執行它需要DBA權限。

?purge dba_recyclebin;

5、配置閃回數據庫

1)確保數據庫處于歸檔日志模式

歸檔日志模式是啟用閃回數據庫的先決條件

?

SQL> select log_mode from v$database;

?

LOG_MODE

------------

ARCHIVELOG

2)創建閃回恢復區

SQL> alter system setdb_recovery_file_dest='/opt/oracle/flash_recovery_area';

SQL> alter system set db_recovery_file_dest_size=8G;

3)設置閃回保留目標時間

SQL> alter system set db_flashback_retention_target=240;

4)干凈地關閉并加載數據庫

SQL> shutdown immediate

SQL> startup mount;

5)啟用閃回日志記錄。

SQL> alter database flashback on;

6)打開數據庫

SQL> alter database open;

6、創建閃回數據歸檔

(1)創建一個供閃回數據庫歸檔使用的表空間:

create tablespace fda datafile 'fda1.dbf'size 10m;

(2)在表空間創建一個保留時間為7年的閃回數據歸檔:

create flashback archive fla1 tablespacefda retention 7 year;

(3)創建用于此練習的模式,并授予它DBA角色:

grant dba to fbdauser identified byfbdauser;

(4)授予用戶操作歸檔的必要權限:

grant flashback archive on fla1 tofbdauser;

(5)作為fbdauser進行連接。創建一個表并為此表啟用閃回數據歸檔:

conn fbdauser/fbdauser

create table t1 as select * from all_users;

alter table t1 flashback archive fla1;

(6)運行這些查詢來確定歸檔創建的對象。可能必須等待幾分鐘,因為對象不是立即創建的。

select object_name,object_type from user_objects;

select segment_name,segment_type from dba_segments wheretablespace_name='FDA';

(7)對保護的表執行一些DML

delete from t1;

commit;

8)使用標準的閃回查詢語法對保護的表執行閃回查詢,然后查詢歸檔中的歷史表。

select count(*) from t1;

select count(*) from t1 as of timestamp(sysdate-20/1440);

select ENDSCN,USER_ID,CREATED from SYS_FBA_HIST_75307;

(9)嘗試對保護的表執行一些DDL命令:

alter table t1 drop column created;

truncate table t1;

drop table t1;

作為SYSDBA連接,并嘗試執行如下命令:

drop user fbdauser cascade;

drop tablespace fda including contents and datafiles;

注意,這些命令將會生成與歸檔和保護的表的存在有關的錯誤。

10)刪除表的除歸檔保護:

alter table fdbauser.t1 no flashbackarchive;

(11)刪除閃回數據歸檔

drop flashback archive fla1;

(12)重新運行步驟(9)中的所有命令。

7、閃回查詢實驗

(1)記錄時間

SCOTT@orcl>select sysdate from dual;

?

SYSDATE

-------------------

2015-10-06 18:46:43

2)從表中刪除一些行,并提交更改。

SCOTT@orcl>delete from regions where region_name like 'A%';

?

2 rows deleted.

?

SCOTT@orcl>commit;

?

Commit complete.

3)查詢確認表中只有兩行。

SCOTT@orcl>select * from regions;

?

?REGION_ID REGION_NAME

---------- --------------------------------------------------

?????? ?1 Europe

?????? ?4 Middle East and Africa

4)查詢針對以前某個時間的表

SCOTT@orcl>select * from regions as of timestampto_timestamp('2015-10-06 18:46:43','yyyy-mm-dd hh24:mi:ss');

?

?REGION_ID REGION_NAME

---------- --------------------------------------------------

?????? ?1 Europe

?????? ?2 Americas

?????? ?3 Asia

?????? ?4 Middle East and Africa

?

SCOTT@orcl>select * from regions as of timestampto_timestamp('2015-10-06 18:46:43','yyyy-mm-dd hh24:mi:ss') minus select * fromregions;

?

?REGION_ID REGION_NAME

---------- --------------------------------------------------

?????? ?2 Americas

?????? ?3 Asia

8、通過SQL*Plus使用閃回刪除

在本練習中創建一個新的模式并在該模式內創建一個表,然后使用flashback drop恢復它

1)作為用戶SYSTEM使用SQL*Plus連接數據庫

2)創建一個用戶

SYS@orcl>create user dropper identified by dropper;

SYS@orcl>grant create session,resource to dropper;

SYS@orcl>conn dropper/dropper

3)創建一個帶有索引和約束的表,并插入一行:

DROPPER@orcl>create table names (name varchar2(10));

DROPPER@orcl>create index name_idx on names(name);

DROPPER@orcl>alter table names add (constraint name_uunique(name));

DROPPER@orcl>insert into names values('John');

DROPPER@orcl>commit;

4)確認模式的內容

DROPPER@orcl>select object_name,object_type from user_objects;

DROPPER@orcl>select constraint_name,constraint_type,table_namefrom user_constraints;

5)刪除該表:

DROPPER@orcl>drop table names;

6)重新運行步驟(4)中的查詢。注意,已從user_objects中刪除了對象,但是仍存在采用系統生成的約束。

7)查詢回收站以查看原始的名稱到回收站名稱的映射:

DROPPER@orcl>select object_name,original_name,type fromuser_recyclebin;

注意,該視圖并沒有顯示約束

8)這表明可以查詢回收站但是無法對它執行DML

DROPPER@orcl>select * from"BIN$IVfJDb9uy+zgVQAAAAAAAQ==$0";

?

NAME

----------

John

9)使用flashback drop恢復表:

DROPPER@orcl>flashback table names to before drop;


轉載于:https://blog.51cto.com/corasql/1700513

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Oracle闪回技术(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。