DDL操作導致oracle表空間增大的小知識

2021-06-10 16:49:36 字數 658 閱讀 6299

ddl

create table 建立表 alter table 修改表 drop table 刪除表 truncate table 刪除表中所有行 create index 建立索引 drop index 刪除索引當執行ddl語句時,在每一條語句前後,oracle都將提交當前的事務。如果使用者使用insert命令將記錄插入到資料庫後,執行了一條ddl語句(如create table),此時來自insert命令的資料將被提交到資料庫。當ddl語句執行完成時,ddl語句會被自動提交,不能回滾。

dmlinsert 將記錄插入到資料庫update 修改資料庫的記錄delete 刪除資料庫的記錄當執行dml命令如果沒有提交,將不會被其他會話看到。除非在dml命令之後執行了ddl命令或dcl命令,或使用者退出會話,或終止例項,此時系統會自動發出commit命令,使未提交的dml命令提交。

在同乙個事物中,先delete全表資料(不帶條件),再insert 後commit, 如此重複操作表,會造成表空間無限增大,導致效能下降.其原因就是因為delete的時候不帶條件刪除會鎖定整張表, 然後每次insert commit資料,又重新建立新的表空間,導致表空間不能重複引用引起表空間增大.

解決辦法

1.delete帶條件

2.可以增加臨時表遷移資料

3.move table(寫定時指令碼整理表空間碎片)

oracle語句管理表 DDL

學習oracle的語句管理之前,我們需要了解oracle的體系結構 oracle database 資料庫是由 資料庫 例項組成 從概念上來看,例項是暫時的,它不過是一組邏輯劃分的記憶體結構和程序結構,例項會隨著程序的關閉而關閉,但是資料庫不一樣,資料庫是一堆物理檔案,資料庫是永久存在磁碟上的 除非...

Oracle空表開關

設定deferred segment creation引數 以下語句可以在cmd裡登入資料庫後執行 檢視引數 show parameter deferred segment creation 設定引數 alter system set deferred segment creation false ...

oracle 匯出空表

資料庫備份 空表不能匯出的問題處理 設定deferred segment creation 引數 設定deferred segment creation 引數為false來禁用 段推遲建立 也就是直接建立segment 無論是空表還是非空表,都分配segment。在sqlplus中,執行如下命令 s...