<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
    一、管理表的準(zhǔn)則
    ?
    ??? 1、創(chuàng)建表之前的設(shè)計
    ?
    ??? 一般表的結(jié)構(gòu)由應(yīng)用開發(fā)者負(fù)責(zé),數(shù)據(jù)庫管理員負(fù)責(zé)設(shè)置存儲參數(shù)以及給表定義簇。具體的需要做到:
    ?
    ??? ① 表被規(guī)范化
    ??? ② 每個列具有合適的數(shù)據(jù)類型
    ??? ③ 最后定義允許空值的列,以便節(jié)約存儲空間
    ??? ④ 合適的時候?qū)Ρ矸执兀怨?jié)省存儲空間和優(yōu)化SQL語句性能
    ?
    ??? 2、指定數(shù)據(jù)塊空間參數(shù)
    ?
    ??? 在創(chuàng)建每個表的時候,指定PCTFREEPCTUSED參數(shù)。
    ?
    ??? 3、指定每個表的位置
    ?
    ??? 在創(chuàng)建表的時候,都用TABLESPACE子句指定合適的表空間,具體意義有:
    ?
    ??? ① 可以提高數(shù)據(jù)庫系統(tǒng)的性能
    ??? ② 可以減少數(shù)據(jù)庫管理的時間
    ??? ③ 如果被默認(rèn)創(chuàng)建在SYSTEM空間,會影響Oracle性能
    ??? ④ 相關(guān)聯(lián)的表被隨機存儲在多個表空間,則管理操作時間會增加
    ?
    ??? 4、考慮并行創(chuàng)建表
    ?
    ??? 如果使用CREATE TABLE ... SELECT ...語句來創(chuàng)建表時,盡量使用并行執(zhí)行,這樣由多個進程一起創(chuàng)建表,會改善創(chuàng)建的效率。
    ?
    ??? 5、考慮創(chuàng)建時使用NOLOGGING
    ?
    ??? 使用NOLOGGING子句可以使創(chuàng)建表時所產(chǎn)生的重做信息量最小,具體好處有:
    ?
    ??? ① 節(jié)省了重做日志文件的空間
    ??? ② 減少了創(chuàng)建表的時間
    ??? ③ 改善了大表的并行創(chuàng)建的性能
    ?
    ??? 注:NOLOGGING子句還指定了不等級后續(xù)的用SQL*Loader和INSERT操作所做的直接加載操作,但是后續(xù)的DML語句不受影響,任然會產(chǎn)生重做登記。
    ?
    ??? 6、估計表的大小和設(shè)置存儲參數(shù)
    ?
    ??? ① 通過對表、索引、回滾段、重做日志文件的估計,以決定支持期望的數(shù)據(jù)庫所需磁盤空間,購買合適的硬件設(shè)備。
    ??? ② 估計單個表的大小,以便更好管理該表使用的磁盤空間,以配置合適的存儲參數(shù),改善I/O性能
    ?
    ??? 7、規(guī)劃大表
    ?
    ??? 可以設(shè)置MAXEXTENTS UNLIMITED來簡單規(guī)劃大表,減少消耗的空間和碎片。具體可以考慮:
    ?
    ??? ① 將表和索引分開。放入不同的表空間,甚至不同的磁盤。這樣在重建索引時也可以更容易找到連續(xù)的空間。
    ??? ② 分配足夠的臨時空間。用于防止排序時臨時空間不夠。
    ?
    ??? 注:不能更改數(shù)據(jù)字典來使MAXEXTENTS大于允許的數(shù)據(jù)庫塊的最大值。
    ?
    ??? 8、表的限制
    ?
    ??? ① 包含對象類型的表不能導(dǎo)入Oracle 8之前的數(shù)據(jù)庫中
    ??? ② 當(dāng)原始數(shù)據(jù)還在數(shù)據(jù)庫中時,不能將類型和盤區(qū)表移動到不同的模式中
    ??? ③ 不能將一個導(dǎo)出的表合并到不同模式中相同名字的表中
    ??? ④ Oracle對表所能具有的列數(shù)(或?qū)ο箢愋蛯傩?有限制
    ?
    ?
    二、創(chuàng)建表
    ?
    ??? 具體的創(chuàng)建方式,以及表的類型,可以參見“Oracle表介紹”。這里簡單得介紹一下
    ?
    ??? 1、表創(chuàng)建的格式
    ?
    ??? CREATE TABLE emp (
    ??? empno NUMBER(5) PRIMARY KEY,
    ??? ename VARCHAR2(15) NOT NULL,
    ??? job VARCHAR2(10),
    ??? mgr NUMBER(5),
    ??? hiredate DATE DEFAULT (sysdate),
    ??? sal NUMBER(7,2),
    ??? comm NUMBER(7,2),
    ??? deptno NUMBER(3) NOT NULL,
    ??? CONSTRAINT dept_fkey REFERENCES dept)
    ??? PCTFREE 10
    ??? PCTUSED 40
    ??? TABLESPACE users
    ??? STORAGE?
    ??? (INITIAL 50K
    ??? NEXT 50K
    ??? MAXEXTENTS 10
    ??? PCTINCREASE 25)
    ?
    ??? 2、創(chuàng)建臨時表
    ?
    ??? CREATE GLOBAL TEMPORARY TABLE work_area
    ??? (startdate DATE,
    ??? enddate DATE,
    ??? class CHAR(20))
    ??? ON COMMIT DELETE ROWS;
    ?
    ??? 說明:
    ??? ON COMMIT DELETE ROWS:事務(wù)特殊,提交后舍棄表。
    ??? ON COMMIT?PRESERVE ROWS:會話特殊,結(jié)束會話時才舍棄表。
    ?
    ??? 3、并行創(chuàng)建表
    ?
    ??? 可以通過兩種方法來并行創(chuàng)建表:
    ?
    ??? ① 在CREATE TABLE .. AS SELECT語句中包含了PARALLEL子句
    ??? ② 指定了ALTER SESSION FORCE PARALLEL DDL語句
    ?
    ??? CREATE TABLE emp_dept
    ??? PARALLEL
    ??? AS SELECT * FROM scott.emp
    ??? WHERE deptno = 10;
    ?
    ??? 4、自動收集表上的統(tǒng)計信息
    ?
    ??? 在CREATE(ALTER) TABLE語句中,加入MONITORING子句,則會使用DBMS_STATS包來自動收集統(tǒng)計數(shù)據(jù)。
    ?
    ??? 可以通過這個包來收集、修改、查看、導(dǎo)出、導(dǎo)入和刪除統(tǒng)計數(shù)據(jù)。所統(tǒng)計的信息可以使用DBA|ALL|USER_TAB_MODIFICATIONS視圖來查看。
    ?
    ??? 取消收集用NOMONITORING語句。
    ?
    ?
    三、更改表
    ?
    ??? 可以使用ALTER TABLE語句來更改表。更改表可能處于以下的原因:
    ?
    ??? ● 添加、刪除、修改現(xiàn)有的列
    ??? ● 修改數(shù)據(jù)塊空間的使用參數(shù)(PCTFREE|PCTUSED)
    ??? ● 修改事務(wù)入口配置(INITRANS|MAXTRANS)
    ??? ● 修改存儲參數(shù)
    ??? ● 將表移動到一個新段或表空間
    ??? ● 明確分配一個盤區(qū)或收回未使用的空間
    ??? ● 修改表的日志屬性
    ??? ● 修改CACHE|NOCACHE屬性
    ??? ● 添加、修改、刪除表的相關(guān)完整性約束
    ??? ● 啟用、停用表的相關(guān)完整性約束或觸發(fā)器
    ??? ● 修改表的并行度
    ??? ● 重命名表
    ??? ● 添加、修改索引結(jié)構(gòu)表的特征
    ??? ● 添加、修改LOB列
    ??? ● 添加、修改對象類型、嵌入的表、Varray列
    ??? ● 啟動、停用統(tǒng)計數(shù)據(jù)采集(MONITORING|NOMONITORING)
    ?
    ??? 下面舉例具體操作語句:
    ?
    ??? 1、移動表到一個新段或表空間
    ?
    ??? ALTER TABLE emp MOVE
    ??? STORAGE
    ??? ( INITIAL 20K
    ?????NEXT 40K
    ???? MINEXTENS 2
    ???? MAXEXTENS 20
    ???? PCTINCREASE 0);
    ?
    ??? 2、手動給表分配存儲空間
    ?
    ??? 使用ALTER TABLE語句中的ALLOCATE EXTENT子句來分配新盤區(qū)
    ??? 使用ALTER TABLE語句中的DEALLOCATE UNUSED子句來明確收回未使用的空間
    ?
    ??? 3、刪除列
    ?
    ??? ALTER TABLE emp DROP COLUMN sal;
    ??? ALTER TABLE emp DROP (sal,comm);
    ?
    ??? 注:不能刪除所有的列,不能刪除SYS擁有的表的列。
    ?
    ??? 4、標(biāo)記未使用且刪除
    ?
    ??? ALTER TABLE emp SET UNUSED (sal,comm);
    ?
    ??? 注1:標(biāo)記未使用的列在查詢和數(shù)據(jù)字典視圖中均不顯示,新建列可以使用改名字,且相關(guān)的約束、索引、統(tǒng)計數(shù)據(jù)均被刪除。
    ??? 注2:DBA|ALL|USER_UNUSED_COL_TABS視圖中列出所有包含未使用列的表,以及未使用列的個數(shù)。
    ?
    ??? 使用以下語句來刪除標(biāo)記為未使用的列:
    ?
    ??? ALTER TABLE emp DROP UNUSED COLUMNS;
    ?
    ?
    ?
    ?




    -The End-

    posted on 2009-02-11 21:51 decode360-3 閱讀(250) 評論(0)  編輯  收藏 所屬分類: DBA
    主站蜘蛛池模板: 在线播放国产不卡免费视频| 免费看的一级毛片| 美女扒开尿口给男人爽免费视频| 亚洲国产天堂在线观看| 亚洲精品成a人在线观看| 中字幕视频在线永久在线观看免费 | 亚洲无人区一区二区三区| 最近最好的中文字幕2019免费 | 四只虎免费永久观看| 九九精品免费视频| 免费在线看黄网站| 一级特级aaaa毛片免费观看| 亚洲av成人中文无码专区| 亚洲国产日韩视频观看| 亚洲成人午夜电影| 久久亚洲AV成人无码电影| 久久精品国产亚洲| 亚洲精品无码Av人在线观看国产 | 免费无码专区毛片高潮喷水| 亚洲变态另类一区二区三区| 国产亚洲福利在线视频| 亚洲中文无码线在线观看| 亚洲精品在线免费看| 亚洲视频在线播放| 亚洲va在线va天堂va888www| 久久久久亚洲AV成人无码| 亚洲一区爱区精品无码| 亚洲热妇无码AV在线播放| 亚洲中文字幕在线乱码| 亚洲乱码中文字幕综合| 亚洲情综合五月天| 亚洲国产美国国产综合一区二区| 亚洲成a人片在线观看无码| 亚洲精品成人片在线观看精品字幕| 亚洲区小说区激情区图片区| 亚洲αv久久久噜噜噜噜噜| 亚洲成AV人片在线观看| 亚洲国产成人久久综合一| 久久久久亚洲精品天堂| 亚洲国产精品免费在线观看| 亚洲一级大黄大色毛片|