oracle 建表

DROP TABLE **** CASCADE CONSTRAINTS;

使用DROP TABLE语句将表或对象表移动到回收站或从数据库中完全删除表及其所有数据。

注:除非指定purge子句,否则drop table语句不会将表占用的空间释放回表空间供其他对象使用,占用空间继续计入用户的空间配额。

级联约束

指定 CASCADE CONSTRAINTS 以删除引用已删除表中的主键和唯一键的所有引用完整性约束。如果省略此子句,并且存在此类引用的完整性约束,那么数据库将返回一个错误,而不会删除表。


CREATE TABLE *********8
(
  CREATED_DATE  DATE,
  GROUP_ID      VARCHAR2(20 BYTE),
  ID            VARCHAR2(20 BYTE)               NOT NULL,
  IEEE          VARCHAR2(30 BYTE),
  REF_ID        VARCHAR2(50 BYTE),
  STATUS        VARCHAR2(10 BYTE),
  UPDATED_BY    VARCHAR2(20 BYTE),
  UPDATED_DATE  DATE,
  USED          NUMBER
)TABLESPACE USERS      表段***********放在表空间USERS中PCTUSED    0      1.pctfree和pctused是oracle使用block时的两个阀值,这两个值决定block的状              态。

        2.pctfree:当orcale insert/update数据时,检查该block的空闲情况,如果空闲率小于pctfree        的值,那么该block被放入非空闲列表中,oracle不再对该块做添加数据的操作,剩余的空间        留给update的操作使用。

        3.pctused:当oracle delete数据时,检查block的使用情况,如果使用率小于pctuseed的          值,那么该block被放入空间列表中,oracle可以对block进行insert操作
          ————————————————
        版权声明:本文为CSDN博主「zero_plus」的原创文章,遵循CC 4.0 BY-SA版权协议,转载        请附上原文出处链接及本声明。
        原文链接:https://blog.csdn.net/zero_plus/article/details/6052452


PCTFREE    10                块保留10%的空间留给更新该块数据使用
INITRANS   1      初始化事务槽的个数
MAXTRANS   255    最大事务槽的个数
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )        指定第三个及其后的Extent相对于上一个Extent所增加的百分比,
            如果PCTINCREASE为0,则Segment中所有新增加的Extent的大小都相同,等于             NEXT的值,
LOGGING
NOCOMPRESS
NOCACHE
MONITORING;

表存储参数的理解

原创 Oracle 作者:大偉 时间:2014-05-23 14:19:25 1780 0

1.      基本表:

CREATE TABLE FMMESPD.C_SN

(

  SN                VARCHAR2(40 BYTE)           NOT NULL,

  LOTNAME           VARCHAR2(40 BYTE)

)

TABLESPACE FMREP_GGDATA

PCTUSED    0

PCTFREE    10

INITRANS   1

MAXTRANS   255

STORAGE    (

            INITIAL          64K

            MINEXTENTS       1

            MAXEXTENTS       UNLIMITED

            PCTINCREASE      0

            BUFFER_POOL      DEFAULT

           )

LOGGING

NOCOMPRESS

NOCACHE

NOPARALLEL

MONITORING;

官網鏈接:http://docs.oracle.com/cd/E11882_01/server.112/e17118/clauses009.htm

參數解析:

TABLESPACE:指定表所在的表空間

PCTUSED

ASSM模式(段空間自動管理),該值為0,Oracle會根據dba_tables.avg_row_len欄位來調整pctused值的大小,pctused值的意思是當數據塊block內的數據低於多少百分比,才可重新被插入數據(關鍵字used和重新插入),默認值40

MANUAL模式,Oracle根據pctused參數設定pctused的值;

PCTFREE:數據塊block的可用空間百分比(關鍵字free),默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update

關於PCTUSED,PCTFREE的調整:    

pctused表示数据所占最低百分比,如果达到pctfree时不能插入,delete后如果达到pctused才可以用来insert

如果你使用的是自动管理表空间pctused不需要设置

altertable tablename pctfree values;

说明:

pctfree默认是10,主要看更新的数据有多大,可以查看表的max_row_len如果很大又频繁更新可以考虑增加该值。

pctused主要看删除数据的大小,如果很大可以调大该值,如果不是很频繁可以设置小一些30-40,pctused+pctfree<90

 可再參考我的上一篇博文《PCTUSED和PCTFREE的理解》

INITRANS MAXTRANS

    表示數據塊可以被多少個事務同時訪問,INITRANS 初始值,MAXTRANS最大值;數據塊可以分成兩部分:數據塊頭和數據塊體。數據塊體存放一條條用戶記錄,每條用戶記錄分成記錄頭和記錄體兩部分。數據塊頭部分有一個ITL的數據結構,叫做事務表,記錄哪些事務修改了這個數據塊,每個事務對應一個事務表項,一個事務表項佔用數據塊頭23字節的存儲空間。Initrans 定義事務表的初始大小,事務表可以動態增加, MAXTRANS 事務表的最大值

STORAGE

   INITIAL 初始區的大小512K,一個數據塊大小默認8K(查看表所在的tablespace 的 blocksize 設置)

   MINEXTENTS  表的最小區數,MAXEXTENTS 表的最大區數

   PCTINCREASE 區的增長百分比

    例如使用一个initial盘区为1MB,next盘区为2MB,pctincrease为50,可得到盘区应该是:(1)1mb(2)2mb(2)3mb(2的150)(4)4.5mb(3的150%)。一般认为这些参数是过时的,数据库应该使用局部管理并且盘区大小一致的表空间。在这种方式下,initial盘区总是等于next盘区的大小,并且不必使用pctincrease,使用pctincrease只会导致表空间产生碎片。在没用局部管理表空间的情况下,建议总是设置initial=next和pctincrease等于0,这样可以模拟局部管理表空间的使用,为了避免碎片。

   BUFFER_POOL每個數據塊與 database buffer cache 中的數據庫對應,有三個值:default默認緩沖區池, keep保留回收池 ,recycle回收池; buffer pool 設置表的數據塊 讀到內存中,對應放在哪個池中;

   keep缓冲区池

当数据读取到kepp缓冲区池后,会一直保留在内存中,不会被刷出内存,比如整天使用频繁的表,有利的做法是讲其放在keep缓冲池中,以减少IO数量。

keep池的大小由db_keep_cache_size决定,默认值为0

   10g后設置sga_target,自動管理sga 內存。

   LOGGING NOLOGGING:

Nologging對表的某些特定操作不寫入redo log, 如 insert /*+ APPEND*/直接插入,create table as select …可以減少日誌的生成量,加快記錄的插入。但平時表的insert,update,delete 還是會寫入redo log的 。

   NOCOMPRESS COMPRESS

   默認為 nocompress, 是否壓縮表數據,在很小改變的表適用compress,節省空間,提高查詢性能,經常改變的表不要使用壓縮,它會使更新,插入操作變慢

 NOCACHE CACHE

   指定表的數據塊如何存儲在buffer cache中。CACHE,對經常訪問的數據,檢索到該表的數據塊會放在LRU列表的前端,NOCACHE的話,數據塊放在LRU列表的末端,對小表的全表掃描很有用,可以加快小表的全表掃描。

NOPARALLELPARALLEL  n

  指定對表進行DML操作時的并行度

 


MONITORING;

        使表處於監控狀態,Oracle跟蹤表的DML操作對表的記錄的影響,9i需要手動添加,10g后自動啟動,目的Oracle 知道表自上一次統計收集信息以來的變化,計算下次該表進行統計收集的時間(超過10%的記錄被修改觸發對該表進行統計);SMON會每隔15分鐘把被監控表的DML變化的statistics寫回數據字典中,也可手動回寫(用sysdba權限執行,需要analyze any 的系統權限)

execute DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

查看表的DML修改情況(sys賬號)

Select * from DBA_TAB_MODIFICATIONS  /all_tab_modifications 

其中timestamp 欄位即更新該記錄的時間 ;

          查看 dba_tab_stats_history 視圖看表被統計的歷史記錄,只記錄dbms_stats.gather_table_stats()的歷史記錄,不記錄analyze table 的歷史記錄;
          視圖dba_tab_modifications的信息來源于sys.mon_mods_all$,當參數statistics_level 被設置為typical 或all 時,會默認開啟表監控的特性,Oracle 會監控自上一次統計以后發生的insert,update,delete 以及表是否被truncate 截斷,并將這些操作數量的近似值記錄到數據字典基表sys.MON_MODS$. SMON後台進程會每15分鐘將SGA中的DML統計信息刷新到sys.MON_MODS$中,同時會將sys.MON_MODS$中符合要求的數據MERGE合併到sys.mon_mods_all$,并清空sys.MON_MODS$ 對應的記錄,起到輔助統計信息收集的作用

原文地址:https://www.cnblogs.com/bedfly/p/13269922.html