oracle資料型別data type與儲存空間大小(一)

wisdomone1發表於2010-06-27

SQL> desc t_seq;####檢視錶結構
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 A                                                  CHAR(10)  ###注意是char,且為16個寬度
 B                                                  NUMBER(38)

 

#####用plsql批次插入100000要記錄,利用序列為主鍵生成方式

SQL>   1  declare
  2  v_i int;
  3  begin
  4  for v_i in 1..100000 loop
  5  insert into t_seq values(seq_1.nextval,v_i);
  6  commit;
  7  end loop;
  8* end;

PL/SQL procedure successfully completed.

SQL> select segment_name,bytes,bytes/1024/1024 mb from user_segments where segment_name='T_SEQ';###10w記錄佔用空間為2m

SEGMENT_NAME
--------------------------------------------------------------------------------
     BYTES         MB
---------- ----------
T_SEQ
   3145728          3


SQL> alter table t_seq modify a char(5);######不能把資料型別從大變成小,只能從小變成大
alter table t_seq modify a char(5)
                         *
ERROR at line 1:
ORA-01441: cannot decrease column length because some value is too big



SQL> alter table t_seq modify a char(16);#####加大a列寬度,從10到16

Table altered.

SQL> select segment_name,bytes,bytes/1024/1024 mb from user_segments where segment_name='T_SEQ';#####這個表佔用空間增大到4m,足足加了1m

SEGMENT_NAME
--------------------------------------------------------------------------------
     BYTES         MB
---------- ----------
T_SEQ
   4194304          4

 

 

小結:

   1,瞭解業務,選擇適用表的列資料型別,科學節省儲存空間

   2,學習oracle各種列(不同資料型別)所佔用的空間的方法,結合業務,估算儲存空間,為選用儲存及分割槽作好準備

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-666445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章