SQL> select col#, name, segcol#, intcol#
2 from col$
3 where obj# in (select object_id
4 from dba_objects
5 where object_name = 'ALL_SALES'
6 and wner = 'SCOTT');
COL# NAME SEGCOL# INTCOL#
---------- ------------------------------ ---------- ----------
1 YEAR 1 1
2 MONTH 2 2
3 PRD_TYPE_ID 3 3
4 EMP_ID 4 4
5 AMOUNT 5 5
SQL> ALTER TABLE SCOTT.ALL_SALES SET UNUSED COLUMN EMP_ID;
表已更改。
SQL> desc SCOTT.ALL_SALES;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
YEAR NUMBER(38)
MONTH NUMBER(38)
PRD_TYPE_ID NUMBER(38)
AMOUNT NUMBER(8,2)
SQL> select column_name,
2 column_id,
3 hidden_column,
4 segment_column_id as seg_cid,
5 internal_column_id as internal_cid
6 from dba_tab_cols
7 where wner = 'SCOTT'
8 and table_name = 'ALL_SALES';
COLUMN_NAME COLUMN_ID HID SEG_CID INTERNAL_CID
------------------------------ ---------- --- ---------- ------------
AMOUNT 4 NO 5 5
SYS_C00004_11052423:01:47$ YES 4 4
PRD_TYPE_ID 3 NO 3 3
MONTH 2 NO 2 2
YEAR 1 NO 1 1
SQL>
SQL> ALTER TABLE SCOTT.ALL_SALES DROP UNUSED COLUMNS;---------------------把标记为unused的列物理删除掉这个命令如果对大表操作会长时间的锁表,产生阻塞,常常是library cache lock。
表已更改。
SQL> select column_name,
2 column_id,
3 hidden_column,
4 segment_column_id as seg_cid,
5 internal_column_id as internal_cid
6 from dba_tab_cols
7 where wner = 'SCOTT'
8 and table_name = 'ALL_SALES';
COLUMN_NAME COLUMN_ID HID SEG_CID INTERNAL_CID
------------------------------ ---------- --- ---------- ------------
AMOUNT 4 NO 4 4
PRD_TYPE_ID 3 NO 3 3
MONTH 2 NO 2 2
YEAR 1 NO 1 1
SQL> select col#, name, segcol#, intcol#
2 from col$
3 where obj# in (select object_id
4 from dba_objects
5 where object_name = 'ALL_SALES'
6 and wner = 'SCOTT');
COL# NAME SEGCOL# INTCOL#
---------- ------------------------------ ---------- ----------
1 YEAR 1 1
2 MONTH 2 2
3 PRD_TYPE_ID 3 3
4 AMOUNT 4 4
SQL>
2 from col$
3 where obj# in (select object_id
4 from dba_objects
5 where object_name = 'ALL_SALES'
6 and wner = 'SCOTT');
COL# NAME SEGCOL# INTCOL#
---------- ------------------------------ ---------- ----------
1 YEAR 1 1
2 MONTH 2 2
3 PRD_TYPE_ID 3 3
4 EMP_ID 4 4
5 AMOUNT 5 5
SQL> ALTER TABLE SCOTT.ALL_SALES SET UNUSED COLUMN EMP_ID;
表已更改。
SQL> desc SCOTT.ALL_SALES;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
YEAR NUMBER(38)
MONTH NUMBER(38)
PRD_TYPE_ID NUMBER(38)
AMOUNT NUMBER(8,2)
SQL> select column_name,
2 column_id,
3 hidden_column,
4 segment_column_id as seg_cid,
5 internal_column_id as internal_cid
6 from dba_tab_cols
7 where wner = 'SCOTT'
8 and table_name = 'ALL_SALES';
COLUMN_NAME COLUMN_ID HID SEG_CID INTERNAL_CID
------------------------------ ---------- --- ---------- ------------
AMOUNT 4 NO 5 5
SYS_C00004_11052423:01:47$ YES 4 4
PRD_TYPE_ID 3 NO 3 3
MONTH 2 NO 2 2
YEAR 1 NO 1 1
SQL>
SQL> ALTER TABLE SCOTT.ALL_SALES DROP UNUSED COLUMNS;---------------------把标记为unused的列物理删除掉这个命令如果对大表操作会长时间的锁表,产生阻塞,常常是library cache lock。
表已更改。
SQL> select column_name,
2 column_id,
3 hidden_column,
4 segment_column_id as seg_cid,
5 internal_column_id as internal_cid
6 from dba_tab_cols
7 where wner = 'SCOTT'
8 and table_name = 'ALL_SALES';
COLUMN_NAME COLUMN_ID HID SEG_CID INTERNAL_CID
------------------------------ ---------- --- ---------- ------------
AMOUNT 4 NO 4 4
PRD_TYPE_ID 3 NO 3 3
MONTH 2 NO 2 2
YEAR 1 NO 1 1
SQL> select col#, name, segcol#, intcol#
2 from col$
3 where obj# in (select object_id
4 from dba_objects
5 where object_name = 'ALL_SALES'
6 and wner = 'SCOTT');
COL# NAME SEGCOL# INTCOL#
---------- ------------------------------ ---------- ----------
1 YEAR 1 1
2 MONTH 2 2
3 PRD_TYPE_ID 3 3
4 AMOUNT 4 4
SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13750068/viewspace-696192/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13750068/viewspace-696192/