oracle資料庫清理

2021-09-06 05:24:02 字數 1779 閱讀 6572

使用truncate:清理並**空間,(mysql,sqlserver等有自增序列的資料庫將序列歸零),無法恢復,不能回滾;

使用drop:刪除表,但不**空間,可以恢復,不能回滾;

使用delete:刪除記錄,不**空間,可恢復,可回滾;

1. 使用drop和delete之後如何恢復?

使用flashback語句

flashback table test2 to before drop ;

查詢**站

select * from dba_recyclebin;   

如果不知道原表名或有多個相同表在不同時間被drop,也可以直接使用**站中的名稱進行閃回。

例如: flashback table  "bin$b2q1qvwuqzy+1tawj0m+oa==$0"  to  before drop;   

這樣就知道是恢復哪個時間drop掉的表了。

oracle10g以前,drop table後,那麼該錶就會從資料字典裡被刪除。但是oracle10g中在drop table(非purge)後只是在資料字典中對被刪除的表進行重新命名,並沒有真的把錶從資料字典中刪除,而用來維護被刪除前的表的名字和後面重新生成的表名字之間的關係的資料字典表,我們稱之為「**站」(recycle bin), 當drop table(沒有加 purge)的時候,索引,觸發器也會一起進入**站。

**站中的物件將一直存在,直到使用者決定永久刪除它們,使用purge命令對**站空間進行清除; 或是出現表空間的空間不足時它們才會被刪除。

注意: 雖然只是資料字典中的表名(當然可能還有索引名,trigger名)發生變化(一般會變成類似bin$phio9oeiqyesliauickse==$0),但是實體的資料等還是存放在原表的表空間中。

**站中表名的格式:   bin$globaluid$sversion ,  globaluid是乙個全域性唯一的標識物件,長度為24個字元。它是oracle內部使用的標識。$sversion是資料庫分配的版本號。

2.  使用drop表和delete之後如何**表空間?

使用purge語句

可直接使用以下語法徹底刪除表並**空間

drop table table_name purge ;

**站可以提供誤操作後進行恢復的必要資訊,但是如果不經常對**站的資訊

進行管理的話,磁碟空間會被長時間占用,因此要經常清除**站中無用的東

西。要清除**站,可以使用purge命令。purge命令可以刪除**站中的

表、表空間和索引,並釋放表、表空間和索引所占用的空間。purge命令語法

格式如下:

purge table table_name ;

purge index index_name ;   

purge recyclebin ;

purge dba_recyclebin  ;

purge tablespace tablespace_name user username ;  

(1) table指示清除**站中的表。

(2) index指示清除**站中的索引。

(3) tablespace指示清除**站中的表空間。

(4) recyclebin指的是當前使用者需要清除的**站。

(5) recyclebin僅sysdba系統許可權才能使用,此引數可使使用者從oracle系統**站清除所有物件。

資料庫oracle目錄清理分析

資料庫在執行過程中會不停的產生各類的trc檔案,需要及時清理作業系統oracle目錄,防止資料庫hang死 1 清理oracle使用者下的trc檔案 oracle je b31 home oracle bdump 1 cdump 1 hm 1 incident 1 incpkg 1 ir 1 lck...

資料庫清理

1 如果有plsql客戶端,則可以使用該使用者登入,選中所有表 右鍵drop即可。2 如果有刪除使用者的許可權,則可以 1 dropuseruser namecascade 加了cascade就可以把使用者連帶的資料全部刪掉。建立使用者 create user 使用者名稱 profile defau...

oracle資料庫清理歸檔日誌步驟

1.root登陸後切換oracle使用者 root localhost su oracle2.執行sqlplus as sysdba進入oracle資料庫 oracle localhost sqlplus as sysdba3.執行 select from v flash recovery area...