[20130721]ORACLE 12C Invisible Columns.txt
[20130721]ORACLE 12C Invisible Columns.txt
在ORACLE 12C中有了Invisible Columns的概念,就是在表中真實的存在該列,但是透過設定Invisible可以實現不顯示該列。
自己測試看看。
--可以發現COL#的順序發現了變化,利用這個特性可以實現修改顯示select *時列的展示順序(Column Ordering)。
在ORACLE 12C中有了Invisible Columns的概念,就是在表中真實的存在該列,但是透過設定Invisible可以實現不顯示該列。
自己測試看看。
SQL> select banner from v$version ;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE 12.1.0.1.0 Production
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
SQL> create table t (a number,b number ,c number);
Table created.
SQL> select object_id,data_object_id from dba_objects where wner=user and object_name='T';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
92476 92476
SQL> select obj#,col#,segcol#,SEGCOLLENGTH,OFFSET, NAME,TYPE#,LENGTH , INTCOL# from sys.col$ where obj#= 92476;
OBJ# COL# SEGCOL# SEGCOLLENGTH OFFSET NAME TYPE# LENGTH INTCOL#
---------- ---------- ---------- ------------ ---------- -------------------- ---------- ---------- ----------
92476 1 1 22 0 A 2 22 1
92476 2 2 22 0 B 2 22 2
92476 3 3 22 0 C 2 22 3
--因為我建立的是普通表,注意看COL#,SEGCOL#,INTCOL#相同。
--intcol#為建立表時的列順序,col#初始情況下跟intcol#相同。而segcol#表示列在資料段上儲存時的順序。
--如果是IOT,cluster table可能不同。
SQL> ALTER TABLE t MODIFY (a invisible);
Table altered.
SQL> select obj#,col#,segcol#,SEGCOLLENGTH,OFFSET, NAME,TYPE#,LENGTH , INTCOL# from sys.col$ where obj#= 92476;
OBJ# COL# SEGCOL# SEGCOLLENGTH OFFSET NAME TYPE# LENGTH INTCOL#
---------- ---------- ---------- ------------ ---------- -------------------- ---------- ---------- ----------
92476 0 1 22 0 A 2 22 1
92476 1 2 22 0 B 2 22 2
92476 2 3 22 0 C 2 22 3
SQL> ALTER TABLE t MODIFY (a visible);
Table altered.
SQL> select obj#,col#,segcol#,SEGCOLLENGTH,OFFSET, NAME,TYPE#,LENGTH , INTCOL# from sys.col$ where obj#= 92476;
OBJ# COL# SEGCOL# SEGCOLLENGTH OFFSET NAME TYPE# LENGTH INTCOL#
---------- ---------- ---------- ------------ ---------- -------------------- ---------- ---------- ----------
92476 3 1 22 0 A 2 22 1
92476 1 2 22 0 B 2 22 2
92476 2 3 22 0 C 2 22 3
--可以發現COL#的順序發現了變化,利用這個特性可以實現修改顯示select *時列的展示順序(Column Ordering)。
SQL> set linesize 40
SQL> desc t;
Name Null? Type
----------------- -------- ------------
B NUMBER
C NUMBER
A NUMBER
--但是要注意如果插入資料:
insert into t values(1,2,3);
commit ;
SQL> select * from t;
B C A
---------- ---------- ----------
1 2 3
-- 實際上按照desc t顯示的順序,如果你看資料塊,可以發現保持A,B,C的順序。
SQL> @lookup_rowid AAAWk8AAJAAAACtAAA
OBJECT FILE BLOCK ROW DBA
---------- ---------- ---------- ---------- --------------------
92476 9 173 0 9,173
SQL> alter system dump datafile 9 block 173 ;
System altered.
Block header dump: 0x024000ad
Object id on Block? Y
seg/obj: 0x1693c csc: 0x00.28e176 itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x24000a8 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.020.00000869 0x01402866.0111.21 --U- 1 fsc 0x0000.0028e177
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
bdba: 0x024000ad
data_block_dump,data header at 0x179d6064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x179d6064
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f8c
avsp=0x1f78
tosp=0x1f78
0xe:pti[0] nrow=1 ffs=0
0x12:pri[0] ffs=0x1f8c
block_row_dump:
tab 0, row 0, @0x1f8c
tl: 12 fb: --H-FL-- lb: 0x1 cc: 3
col 0: [ 2] c1 04
col 1: [ 2] c1 02
col 2: [ 2] c1 03
end_of_block_dump
End dump data blocks tsn: 3 file#: 9 minblk 173 maxblk 173
SQL> select dump(A,16) c20 ,dump(b,16) c20,dump(c,16) c20 from t ;
C20 C20 C20
-------------------- -------------------- --------------------
Typ=2 Len=2: c1,4 Typ=2 Len=2: c1,2 Typ=2 Len=2: c1,3
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-766892/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20130723]ORACLE 12C Invisible Columns的補充.txtOracle
- Oracle之不可見索引(invisible indexes)Oracle索引Index
- oracle invisible index與unusable index的區別OracleIndex
- Invisible IndexIndex
- Oracle 12cOracle
- oracle 12c Deprecation of Oracle StreamsOracle
- index , virtual , invisibleIndex
- Oracle資料庫中的不可見索引 invisible indexOracle資料庫索引Index
- Oracle 12C GDSOracle
- Oracle 索引的可見與隱藏(visible/invisible)Oracle索引
- oracle小知識點7--索引的unusable,disable,invisibleOracle索引
- 【12c Partitioning】Oracle 12c Partitioning特性Oracle
- Oracle 12C安裝Oracle
- Oracle 12c新特性Oracle
- Oracle 12c Relocate PDBOracle
- Oracle 12c Refreshable CloneOracle
- Oracle 12c RAC: MGMTDBOracle
- ORACLE 12C EM ExpressOracleExpress
- Oracle 12C配置EMOracle
- ORACLE 12c Core DocOracle
- Oracle 12c - Data RedactionOracle
- oracle 12c 釋出Oracle
- 20130721 OOW媒體釋出會
- Oracle 12c升級指南Oracle
- 12C Oracle ASM Filter DriverOracleASMFilter
- Oracle 12c Automatic ReoptimizationOracle
- benchmark 壓測Oracle 12cOracle
- sysbench壓測Oracle 12COracle
- Oracle 12c 新特性(四)Oracle
- Oracle 12c 新特性(三)Oracle
- Oracle 12c 新特性(二)Oracle
- Oracle 12c 新特性(一)Oracle
- Oracle 12C dgbroker 配置Oracle
- Oracle 12c PDB淺析Oracle
- Some ideas About ‘invisible bug‘Idea
- Oracle Linux 7上安裝Oracle 12cOracleLinux
- Oracle 12C新特性-History命令Oracle
- Oracle 12c 兩個新特性Oracle