truncate table 表名;
delete from 表名;
兩者都可以用來刪除表中所有的記錄。區別在於:truncate是ddl操作,它移動hwk,不需要 rollback segment(執行完沒有提交或者回滾),立即釋放空間。而delete是dml操作, 需要rollback segment(執行完有提交或者回滾),不釋放空間,且花費較長時間
rollback segments是在你資料庫中的一些儲存空間,它用來臨時的儲存當資料庫資料發生改變時的先前值,rollback segment主要有兩個目的:
1. 如果因為某種原因或者其他用使用者想要通過rollback宣告來取消乙個人的資料操作,資料就會復原到之前為改變時的值。這種情況只在transaction的過程中有效,如果使用者執行了commit命令,那麼rollback segment裡面的值就會標識為失效的,資料改變就將永久化。
2. 另乙個目的是當有併發的session訪問了乙個資料值改變但事務還沒有提交的表。如果乙個select語句開始讀取乙個表同時乙個事務也在修改這個表的值,那麼修改前的值就會儲存到rollback segment裡面,select語句也是從rollback segment裡面讀取表的值
Oracle 清空表分割槽
etl重刷201709資料,為了加快插入速度,不與已有資料比較,需要直接清空表指定分割槽的月份資料 alter table tf fin cux doc sre truncate partition balance dt 201709 接著需要重建索引,不然會報錯 ora 01502 alter i...
清空Oracle臨時表空間
tags oracle 今天發現一oracle的sql語句執行超過了2分鐘,因為本人從事的專案資料量都不大,還沒遇到過2分鐘以上不出結果的時候。因此十分疑惑。執行了一段時間之後,發覺oracle無法連線出現異常。此時登入oracle安裝伺服器,sqlplus無法連線。檢視硬碟空間,發現硬碟已滿。經過...
清空oracle臨時表空間
清空臨時表空間 0.shutdown immediate 1.startup 啟動資料庫 2.create temporary tablespace temp2 tempfile home2 oracle oradata sysmon temp02.dbf size 512m reuse autoe...