oracle drop columns
oracle drop columns
從oracle 8i開始能夠刪除表中的列。以前則需要刪除整個表然後重建的方式來刪除表中的列。現在有兩種刪除方式,一種是將要刪除的列設定為unused,從而邏輯上刪除。另外一種方式是透過alter table ...drop column 的方式物理上刪除。邏輯上刪除
當在一張很大的表中物理上刪除列的時候,需要消耗很多的資源和時間,這時候我們可以簡單的把要刪除的列設定為unused,這就是從邏輯上面刪除了表中的列(對資料庫中後設資料進行的修改)。
SQL> create table emp as select * from employees;
Table created.--建立一張測試用的表,結構和employees一致。
SQL> alter table emp set unused (salary);
Table altered.--將salary 列設定為unused.
這時候使用desc 檢視錶的結構就不會存在salary 這一列了,該列對使用者是不可見不可用的。
SQL> select max(salary) from emp;
select max(salary) from emp
*
ERROR at line 1:
ORA-00904: "SALARY": invalid identifier
可以透過*_unused_col_tabs 檢視到表中刪除的列的數量。
SQL> select * from dba_unused_col_tabs
2 where table_name = 'EMP';
OWNER TABLE_NAME COUNT
------------------------------ ------------------------------ ----------
HR EMP 1
如果需要回收設定為unused 的列所佔用的空間,可以使用以下的語句。
checkpoint 的意義在於當在一個很大的表中刪除一個列的時候需要長時間佔用很多的undo 空間,這可能會影響到其他操作對undo 空間的獲取,所以指定處理完一定數量的列以後,執行一次checkpoint 釋放undo空間。
SQL> alter table emp drop unused columns checkpoint 250;
Table altered.
上述語句會把某張表中所有設定為unused 的列都刪除掉。同時需要注意的是設定為unused 的列是不可以恢復的。不存在類似rollback 的方式。
物理上刪除
可以使用以下的方式物理上面刪除一個列:
SQL> alter table emp drop column commission_pct;
Table altered.--一次只刪除一個列。
SQL> alter table emp drop (first_name,last_name);
Table altered.--一次刪除多個列。
物理上刪除的列也不存在類似rollback 的恢復方式。
注:不能刪除一個表中所有的列。
當物理上刪除一個表中的列的時候,該表中所有設定為unused 的列也會被刪除。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-739452/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 11g之alter table drop unused columns checkpoint刪除表不可用列系列二Oracle
- Oracle 11G Virtual ColumnsOracle
- Oracle中drop user和drop user cascade的區別Oracle
- How to drop Oracle RAC database manually?OracleDatabase
- oracle 誤刪表 drop tableOracle
- CSS columnsCSS
- Oracle Drop表(purge)恢復(ODU)Oracle
- Oracle Purge和drop的區別Oracle
- oracle 11gr2 drop asmOracleASM
- oracle下,drop column 的語句Oracle
- 【VIEW】Oracle資料字典檢視之DICT_COLUMNSViewOracle
- 深入解析 oracle drop table內部原理Oracle
- Oracle回收站及flashback drop(上)Oracle
- Oracle回收站及flashback drop(下)Oracle
- Oracle drop,truncate partition 索引失效 實驗Oracle索引
- Oracle資料庫快速Drop 大表Oracle資料庫
- 由drop datafile導致的oracle bugOracle
- 恢復oracle中drop掉的表Oracle
- Oracle 10g新增DROP DATABASE命令Oracle 10gDatabase
- Oracle - ORA-01789: Query block has incorrect number of result columnsOracleBloC
- CSS3 columnsCSSS3
- MySQL COLUMNS分割槽MySql
- Indexing on Virtual ColumnsIndex
- CSS columns 多列布局CSS
- F. Color Rows and Columns
- oracle 10g R2 drop empty datafileOracle 10g
- oracle誤drop/update資料恢復測試Oracle資料恢復
- Oracle10g 回收站及徹底刪除table : drop table xx purge 以及drop flashOracle
- drop asm disk、撤銷drop asm diskASM
- sqlserver查詢table,columns資訊SQLServer
- oracle關於*_tab_columns檢視的描述有一個錯誤Oracle
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- 體驗Oracle 10gR2的drop empty datafileOracle 10g
- Drop DatabaseDatabase
- [20130721]ORACLE 12C Invisible Columns.txtOracle
- CSS columns多列布局瀑布流CSS
- PostgreSQL DBA(53) - PG 12 Generated columnsSQL
- Indexing Mixed-Character Set ColumnsIndex