<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)系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    Table的學習 ①
    ?
    ??? 又要學習Table了,其實每次學習都會有一些不同的收獲。在這本教材里,主要偏重于對對創(chuàng)建Table時的一些邊邊角角的內(nèi)容的詳細介紹,所以只要能夠完全掌握這篇文章,基本上對于Table的理解就可以更進一層。至于那些普通的管理操作,都是浮云。
    ?
    一、管理表的準則
    ?
    ??? 1、創(chuàng)建表之前的設計
    ?
    ??? 一般表的結構由應用開發(fā)者負責,數(shù)據(jù)庫管理員負責設置存儲參數(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ù)庫管理的時間
    ??? ③ 如果被默認創(chuàng)建在SYSTEM空間,會影響Oracle性能
    ??? ④ 相關聯(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ù)據(jù)庫所需磁盤空間,購買合適的硬件設備。
    ??? ② 估計單個表的大小,以便更好管理該表使用的磁盤空間,以配置合適的存儲參數(shù),改善I/O性能
    ?
    ??? 7、規(guī)劃大表
    ?
    ??? 可以設置MAXEXTENTS UNLIMITED來簡單規(guī)劃大表,減少消耗的空間和碎片。具體可以考慮:
    ?
    ??? ① 將表和索引分開。放入不同的表空間,甚至不同的磁盤。這樣在重建索引時也可以更容易找到連續(xù)的空間。
    ??? ② 分配足夠的臨時空間。用于防止排序時臨時空間不夠。
    ?
    ??? 注:不能更改數(shù)據(jù)字典來使MAXEXTENTS大于允許的數(shù)據(jù)庫塊的最大值。
    ?
    ??? 8、表的限制
    ?
    ??? ① 包含對象類型的表不能導入Oracle 8之前的數(shù)據(jù)庫中
    ??? ② 當原始數(shù)據(jù)還在數(shù)據(jù)庫中時,不能將類型和盤區(qū)表移動到不同的模式中
    ??? ③ 不能將一個導出的表合并到不同模式中相同名字的表中
    ??? ④ 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:事務特殊,提交后舍棄表。
    ??? ON COMMIT PRESERVE ROWS:會話特殊,結束會話時才舍棄表。
    ?
    ??? 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ù)。
    ?
    ??? 可以通過這個包來收集、修改、查看、導出、導入和刪除統(tǒng)計數(shù)據(jù)。所統(tǒng)計的信息可以使用DBA|ALL|USER_TAB_MODIFICATIONS視圖來查看。
    ?
    ??? 取消收集用NOMONITORING語句。
    ?
    ?
    三、更改表
    ?
    ??? 可以使用ALTER TABLE語句來更改表。更改表可能處于以下的原因:
    ?
    ??? ● 添加、刪除、修改現(xiàn)有的列
    ??? ● 修改數(shù)據(jù)塊空間的使用參數(shù)(PCTFREE|PCTUSED)
    ??? ● 修改事務入口配置(INITRANS|MAXTRANS)
    ??? ● 修改存儲參數(shù)
    ??? ● 將表移動到一個新段或表空間
    ??? ● 明確分配一個盤區(qū)或收回未使用的空間
    ??? ● 修改表的日志屬性
    ??? ● 修改CACHE|NOCACHE屬性
    ??? ● 添加、修改、刪除表的相關完整性約束
    ??? ● 啟用、停用表的相關完整性約束或觸發(fā)器
    ??? ● 修改表的并行度
    ??? ● 重命名表
    ??? ● 添加、修改索引結構表的特征
    ??? ● 添加、修改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、標記未使用且刪除
    ?
    ??? ALTER TABLE emp SET UNUSED (sal,comm);
    ?
    ??? 注1:標記未使用的列在查詢和數(shù)據(jù)字典視圖中均不顯示,新建列可以使用改名字,且相關的約束、索引、統(tǒng)計數(shù)據(jù)均被刪除。
    ??? 注2:DBA|ALL|USER_UNUSED_COL_TABS視圖中列出所有包含未使用列的表,以及未使用列的個數(shù)。
    ?
    ??? 使用以下語句來刪除標記為未使用的列:
    ?
    ??? ALTER TABLE emp DROP UNUSED COLUMNS;
    ?
    ?
    ?
    ?
    posted on 2009-02-11 21:51 decode360 閱讀(150) 評論(0)  編輯  收藏 所屬分類: 08.DBA
    主站蜘蛛池模板: 一级特黄色毛片免费看| 99久久成人国产精品免费 | 久久精品国产亚洲5555| 久久精品视频免费| 在线aⅴ亚洲中文字幕| 国产国拍亚洲精品福利 | 日韩亚洲一区二区三区| 欧美日韩国产免费一区二区三区| 爱情岛论坛亚洲品质自拍视频网站 | 国产成人无码精品久久久免费| 亚洲视频在线观看免费视频| 国产做床爱无遮挡免费视频| 99精品免费视频| 亚洲国产成人AV网站| 亚洲影院在线观看| 免费不卡中文字幕在线| 99久久久国产精品免费牛牛| 大桥未久亚洲无av码在线| 日韩亚洲Av人人夜夜澡人人爽 | 免费成人黄色大片| 1000部拍拍拍18勿入免费视频软件| 色妞www精品视频免费看| 亚洲精品国产情侣av在线| 亚洲国产综合久久天堂| 国产精品久久久久久久久久免费| 久久精品成人免费国产片小草| 国产精品亚洲一区二区麻豆| 亚洲成在人线av| 亚洲美日韩Av中文字幕无码久久久妻妇 | 91亚洲视频在线观看| 国产亚洲精品va在线| 免费观看国产小粉嫩喷水| 四虎永久在线观看免费网站网址| 国内精品免费久久影院| 国产亚洲综合视频| 亚洲aⅴ无码专区在线观看春色 | 成全视频高清免费观看电视剧| 免费高清A级毛片在线播放| 亚洲天堂免费在线| 亚洲国产精品日韩在线观看| 久久久久久亚洲av成人无码国产|