版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、模式對象概述模式對象概述 管理表管理表 管理索引管理索引 管理視圖管理視圖 管理序列管理序列 管理同義詞管理同義詞l 理解表結(jié)構(gòu)和存儲管理的基本概念及管理原則理解表結(jié)構(gòu)和存儲管理的基本概念及管理原則l 掌握創(chuàng)建表的技術(shù)和方法掌握創(chuàng)建表的技術(shù)和方法l 掌握截?cái)唷⑿薷?、刪除和查詢表的技術(shù)和方法掌握截?cái)?、修改、刪除和查詢表的技術(shù)和方法l 理解索引結(jié)構(gòu)和存儲管理的基本概念及管理原則理解索引結(jié)構(gòu)和存儲管理的基本概念及管理原則l 掌握創(chuàng)建索引的技術(shù)和方法掌握創(chuàng)建索引的技術(shù)和方法l 掌握修改、分析、刪除和查詢索引的技術(shù)和方法掌握修改、分析、刪除和查詢索引的技術(shù)和方法l 了解視圖、同義詞、序列等模式對象的管理
2、方法了解視圖、同義詞、序列等模式對象的管理方法 模式對象是一種數(shù)據(jù)結(jié)構(gòu)模式對象是一種數(shù)據(jù)結(jié)構(gòu),如表、索引等,用戶和應(yīng)用系統(tǒng)所操作的數(shù)據(jù)都是以模式對象的形式進(jìn)行組織、管理的,如用戶可以通過表查詢某一個(gè)數(shù)據(jù),而不能直接查詢某一個(gè)數(shù)據(jù)段中的數(shù)據(jù)。 模式是一系列數(shù)據(jù)邏輯結(jié)構(gòu)或?qū)ο蟮募希J绞且幌盗袛?shù)據(jù)邏輯結(jié)構(gòu)或?qū)ο蟮募?,是是Oracle組織和管理模式對象的方式。組織和管理模式對象的方式。Oracle通過模式管理模式對象。一個(gè)模式只屬于一個(gè)數(shù)據(jù)庫用戶,并與數(shù)據(jù)庫用戶同名。一個(gè)數(shù)據(jù)庫用戶只能擁有一個(gè)模式,他所擁有的全部模式對象都保存在這個(gè)模式中。 Oracle的模式對象主要分為以下幾類:表、索引組織表
3、(Tables and index-organized tables)視圖(Views)索引、索引類型(Indexes and index types)簇(Clusters)同義詞(Synonyms)序列(Sequences)觸發(fā)器(Database triggers)存儲函數(shù)、存儲過程和包(Stored functions, procedures, and packages)Java類、Java資源和源代碼(Java classes, Java resources, and Java sources)數(shù)據(jù)庫連接(Database links)外部過程庫(External procedure
4、libraries) Oracle還有一些類型的對象有一些類型的對象可以保存在數(shù)據(jù)庫中,但是它們不屬于任何模式不屬于任何模式,這些對象主要包括:用戶(Users)表空間(Tablespaces)角色(Roles)回退段(Rollback segments)概要文件(Profiles)上下文(Contexts)目錄(Directories)l表結(jié)構(gòu)和存儲管理 表以二維表格的形式組織數(shù)據(jù),由行和列組成,行稱之為記錄,列稱之為字段。Oracle數(shù)據(jù)庫中的表分為4種類型:常規(guī)表分區(qū)表 索引組織表 集簇表常規(guī)表 分區(qū)表 索引組織表 集簇表訪問已建立索引的常規(guī)表的過程訪問索引組織表的過程訪問、插入分區(qū)表的
5、過程創(chuàng)建、插入集簇表的過程l表結(jié)構(gòu)和存儲管理 Oracle提供了3種內(nèi)置的數(shù)據(jù)類型:標(biāo)量、集合和關(guān)系。(1)內(nèi)置的標(biāo)量數(shù)據(jù)類型包括:字符類型 nCHAR(n)nVARCHAR2(n) nVARCHAR(n) nNCHAR(n) l表結(jié)構(gòu)和存儲管理 (1)內(nèi)置的標(biāo)量數(shù)據(jù)類型包括(續(xù)):數(shù)字類型 NUMBER(P,S)日期類型 DATE和TIMESTAMPROWID數(shù)據(jù)類型 l表結(jié)構(gòu)和存儲管理 (1)內(nèi)置的標(biāo)量數(shù)據(jù)類型包括(續(xù)):LOB數(shù)據(jù)類型 nBLOB nCLOB nNCLOB nBFILE l表結(jié)構(gòu)和存儲管理 (2)集合類型 集合類型用于表示多個(gè)元素,比如數(shù)組。在Oracle中有兩類集合類型
6、:VARRY 變長數(shù)組。變長數(shù)組一般用于存儲元素較少的列表,如用戶的電話號碼等。TABLE 嵌套表。嵌套表可以作為另一個(gè)表中某一個(gè)列的數(shù)據(jù)類型。l表結(jié)構(gòu)和存儲管理 (3)關(guān)系類型 REF是關(guān)系類型,可以定義與其它對象之間的關(guān)系。l表結(jié)構(gòu)和存儲管理 在創(chuàng)建表時(shí),用戶可以在CREATE TABLE語句中通過設(shè)置一些參數(shù)來管理表中區(qū)和塊的存儲空間的分配和使用:通過PCTFREE、PCTUSED等參數(shù)控制數(shù)據(jù)塊存儲空間的使用。通過INITIAL、NEXT、PCTINCREASE等存儲參數(shù)設(shè)置區(qū)的分配方式。l表結(jié)構(gòu)和存儲管理 Oracle采用記錄片段(row pieces)實(shí)現(xiàn)一條記錄存儲在幾個(gè)數(shù)據(jù)塊中
7、,并能夠完整地存取一條記錄。 l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 Oracle將一條記錄分成一個(gè)或幾個(gè)記錄片段,其條件是:如果一條記錄少于256的字段,并且該條記錄能夠保存在一個(gè)數(shù)據(jù)塊中,那么這條記錄可以作為一個(gè)記錄片段保存在一個(gè)數(shù)據(jù)塊中。如果一條記錄不能存儲在一個(gè)數(shù)據(jù)塊中,Oracle將把這條記錄分成幾個(gè)記錄片段,每個(gè)記錄片段都能保存在一個(gè)數(shù)據(jù)塊中。這種情況叫記錄鏈接(ROW CHAINING)現(xiàn)象。如果一條記錄能夠保存在一個(gè)數(shù)據(jù)塊中,但它的字段數(shù)大于255,這時(shí)Oracle將字段以255個(gè)為一組作為一個(gè)記錄片段,這些記錄片段都保存在一個(gè)數(shù)據(jù)塊中,這種情況叫塊內(nèi)記錄鏈接(INTRA-BLOC
8、K CHAINING)現(xiàn)象。記錄片段示意圖記錄片段示意圖 l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 記錄頭保存在數(shù)據(jù)之前,主要包括以下信息:記錄基本信息字段數(shù)量簇ID(如果該表建立了簇)ROWID(如果需要進(jìn)行記錄鏈接)l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 ROWID是表中每一條記錄的存儲地址,它唯一地標(biāo)識表中的每一條記錄。ROWID可分為兩種類型:物理ROWID(Physical rowids)是一般的表(除索引組織表)、簇表、分區(qū)表、索引和分區(qū)索引中每一條記錄的存儲地址。邏輯ROWID(Logical rowids)是索引組織表中每一條記錄的存儲地址。l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 執(zhí)行下列語
9、句可以查看ROWID:SQL SELECT ROWID , EMPNO , 2 ENAME , JOB 3 FROM SCOTT.EMP;結(jié)果顯示為:ROWID EMPNO ENAME JOB-AAAHW7AABAAAMUiAAA 7369 SMITH CLERKAAAHW7AABAAAMUiAAB 7499 ALLEN SALESMANAAAHW7AABAAAMUiAAC 7521 WARD SALESMANl表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 ROWID有兩種格式:擴(kuò)展ROWID 主要用于Oracle 8i和更高版本的Oracle產(chǎn)品中。如不加說明,本書中ROWID均指擴(kuò)展ROWID。限制R
10、OWID 主要用于Oracle 7和更早版本的Oracle產(chǎn)品中。l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 擴(kuò)展ROWID由18個(gè)字符組成,字符可以是A-Z、a-z、0-9、+、/。這18個(gè)字符按照OOOOOOFFFBBBBBBRRR的格式分為4組,每一組都代表了特殊的含義,各組內(nèi)容代表不同的含義如下:OOOOOO 這6個(gè)字符表示該條記錄所在數(shù)據(jù)對象編號(data object number)。FFF 這3個(gè)字符表示該條記錄所在的某一表空間中的數(shù)據(jù)文件編號(datafile number)。BBBBBB 這6個(gè)字符表示該條記錄所在的數(shù)據(jù)塊編號。RRR 這3個(gè)字符是該條記錄的編號,同一個(gè)表中的所有記錄
11、的這3個(gè)字符都是不同的。l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 ROWID的重要功能:利用ROWID可以快速查找一條記錄利用ROWID可以查詢表的存儲結(jié)構(gòu)利用ROWID唯一標(biāo)識某一條記錄l表結(jié)構(gòu)和存儲管理表結(jié)構(gòu)和存儲管理 例如,查詢SCOTT用戶的EMP表所存儲的數(shù)據(jù)文件情況。SQLSELECT 2 COUNT(DISTINCT(SUBSTR(ROWID,7,3) FILES 3 FROM SCOTT.EMP;結(jié)果顯示為:FILES-1l管理表的基本原則管理表的基本原則 創(chuàng)建表之前設(shè)計(jì)表 指定如何使用數(shù)據(jù)塊空間 指定表的存儲位置考慮在創(chuàng)建表時(shí)使用NOLOGGING子句 估計(jì)表的大小 規(guī)劃大表l創(chuàng)建
12、表創(chuàng)建表 【任務(wù)12.1】 在TEST模式中創(chuàng)建了一個(gè)名為STUDENTS的表,該表有ID(學(xué)號)、NAME(姓名)、SEX(性別)、COURSE(課程)、SCORE(成績)字段,并保存在USER01表空間中。l創(chuàng)建表創(chuàng)建表 1.創(chuàng)建表命令CREATE GLOBAL TEMPORARY TABLE schema.table(column datatype inline_constraint,column datatype inline_constraint.,outline_constraint ,outline_constraint.)TABLESPACE tablespacePCTFREE
13、 integerPCTUSED integerINITRANS integerMAXTRANS integerSTORAGE storage-clauseLOGGINGNOLOGGINGCACHENOCACHEON COMMIT DELETE | PRESERVE ROWS;l創(chuàng)建表創(chuàng)建表 1.創(chuàng)建表命令其中各個(gè)關(guān)鍵字和參數(shù)含義如下:GLOBAL TEMPORARY 建立臨時(shí)表。schema 模式名,即表所屬的模式。如果沒有顯式指定所屬模式,新表將被建立在當(dāng)前用戶模式中。column 列名。inline_constraint 列級約束定義子句。outline_constraint 表級約束定義
14、子句。datatype 列的數(shù)據(jù)類型,可以是CHAR、NUMBER等。tablespace 表所屬的表空間名。如果沒有顯式指定所處的表空間,新表將被建立在當(dāng)前用戶模式的默認(rèn)表空間中。l創(chuàng)建表創(chuàng)建表 1.創(chuàng)建表命令其中各個(gè)關(guān)鍵字和參數(shù)含義如下(續(xù)):PCTFREE 數(shù)據(jù)塊存儲空間利用率參數(shù),設(shè)置數(shù)據(jù)塊中必須保留的最小可用存儲空間的百分比,可以是0到99之間的整數(shù)。PCTUSED 數(shù)據(jù)塊存儲空間利用率參數(shù),設(shè)置數(shù)據(jù)塊中已用存儲空間與整個(gè)數(shù)據(jù)塊大小的百分比,可以是0到99之間的整數(shù)。INITRANS 每個(gè)數(shù)據(jù)塊內(nèi)并行事務(wù)處理的初始數(shù)量。取值范圍為1到255。MAXTRANS 每個(gè)數(shù)據(jù)塊內(nèi)并行事務(wù)處理
15、的最大數(shù)量。取值范圍為1到255。LOGGINGNOLOGGING 如果為LOGGING,表示對該表的所有操作都將記錄到重做日志文件中,否則不記錄到重做日志文件中。LOGGING為缺省值。l創(chuàng)建表創(chuàng)建表 1.創(chuàng)建表命令其中各個(gè)關(guān)鍵字和參數(shù)含義如下(續(xù)):lCACHENOCACHE 如果為CACHE,則Oracle總是將該表中的數(shù)據(jù)塊放在高速緩存的LRU列表中最近使用的一端,如果為NOCACHE,則Oracle總是將該表中的數(shù)據(jù)放在高速緩存的LRU列表中最近未使用的一端。lSTORAGE子句 該子句用來設(shè)置表的存儲參數(shù)。如果沒有使用該句,新建的表將自動繼承所屬表空間的默認(rèn)存儲參數(shù)設(shè)置。lON C
16、OMMIT DELETE ROWS 指定臨時(shí)表是事務(wù)級別。這時(shí)Oracle將在每次提交事務(wù)時(shí)自動刪除臨時(shí)表中的所有記錄,這是默認(rèn)情況。lON COMMIT PRESERVE ROWS 指定臨時(shí)表是會話級別。這時(shí)Oracle將直到會話終止時(shí)才會刪除臨時(shí)表中的所有記錄。l創(chuàng)建表創(chuàng)建表 2.數(shù)據(jù)塊空間利用率參數(shù) PCTFREE和PCTUSED是數(shù)據(jù)塊的空間利用率參數(shù)。PCTFREE可以為表將來的更新操作保留一定的空閑存儲區(qū),PCTUSED設(shè)置了當(dāng)數(shù)據(jù)塊中已經(jīng)使用的存儲空間降低到該值時(shí),這個(gè)塊才可以重新成為可用狀態(tài)。這兩個(gè)參數(shù)配合使用,可以減少數(shù)據(jù)塊中行遷移和鏈接現(xiàn)象的發(fā)生。 l創(chuàng)建表創(chuàng)建表 2.數(shù)據(jù)
17、塊空間利用率參數(shù) 設(shè)置較高的PCTFREE值會減少行遷移現(xiàn)象的發(fā)生,但是降低了每一個(gè)數(shù)據(jù)塊有效的存儲空間,使得每一個(gè)數(shù)據(jù)塊中只能保存較少的行。該參數(shù)的計(jì)算公式為:(平均行大小 初始行大?。?00平均行大小 在有下列情況時(shí),應(yīng)設(shè)置較高的PCTFREE值:表中很多字段的初始值為NULL,但隨著表的使用,這些字段都將填入新的值。需要經(jīng)常進(jìn)行更新操作的表。l創(chuàng)建表創(chuàng)建表 2.數(shù)據(jù)塊空間利用率參數(shù) 較高的PCTUSED參數(shù)會提高存儲空間的利用率,但會增加系統(tǒng)的I/O開銷。該參數(shù)的計(jì)算公式為: 100 PCTFREE 平均行大小100可用的數(shù)據(jù)空間l創(chuàng)建表創(chuàng)建表 3.STORAGE子句STORAGE子句的
18、語法為:STORAGE (INITIAL integer K | M | NEXT integer K | M | PCTINCREASE integer | MINEXTENTS integer | MAXEXTENTS integer | UNLIMITED | OPTIMAL integer K | M | NULL | BUFFER_POOL KEEP | RECYCLE | DEFAULT )l創(chuàng)建表創(chuàng)建表 3.STORAGE子句STORAGE子句存儲參數(shù)的含義為:INITIAL 指定為表的數(shù)據(jù)段分配的第一個(gè)區(qū)的大小,以KB或MB為單位。默認(rèn)值為5個(gè)數(shù)據(jù)塊大小,在字典管理的表空間中最
19、小值為2個(gè)數(shù)據(jù)塊大小,在本地管理的表空間中最小值為3個(gè)數(shù)據(jù)塊大小。NEXT 指定為表分配的第二個(gè)區(qū)的大小,以KB或MB為單位。默認(rèn)值為5個(gè)數(shù)據(jù)塊大小,最小值為1個(gè)數(shù)據(jù)塊大小。PCTINCREASE 指定從第二個(gè)區(qū)之后,為表的數(shù)據(jù)段分配的區(qū)的大小增加的比例。比如,指定了NEXT為10MB,PCTINCREASE為10,那么分配給數(shù)據(jù)段的第三個(gè)區(qū)的大小為10*(1+10/100)=11MB。默認(rèn)值為50,最小值為0。l創(chuàng)建表創(chuàng)建表 3.STORAGE子句STORAGE子句存儲參數(shù)的含義為(續(xù)):MINEXTENTS 指定創(chuàng)建表時(shí)初始分配給表的數(shù)據(jù)段的區(qū)數(shù)目。默認(rèn)值為1(回滾段為2),最小值為1(回
20、滾段為2),不能超過3。MAXEXTENTS 指定能夠分配給表的數(shù)據(jù)段的最大區(qū)數(shù)目。默認(rèn)值為UNLIMITED(不受限制),最小值為1(回滾段為2)。l創(chuàng)建表創(chuàng)建表 3.STORAGE子句STORAGE子句存儲參數(shù)的含義為(續(xù)):BUFFER_POOL 該參數(shù)有KEEP、RECYCLE和DEFAULT三個(gè)選項(xiàng),缺省值為DEFAULT。它們表示了該表中的數(shù)據(jù)放在數(shù)據(jù)庫高速緩存中的三個(gè)緩沖池中。nKEEP 放在KEEP緩存池中,其中的數(shù)據(jù)塊始終保留在該緩存池中,任何情況下都不會被換出。nRECYCLE 放在RECYCLE緩存池中,其中的數(shù)據(jù)塊一旦使用完畢將立刻被換出。nDEFAULT 放在DEFA
21、ULT緩存池中,其中的數(shù)據(jù)塊按照默認(rèn)的LRU算法進(jìn)行換入換出。l創(chuàng)建表創(chuàng)建表 3.STORAGE子句在STORAGE子句中設(shè)置存儲參數(shù)時(shí)受到以下限制:如果表所處的表空間是字典管理方式,STORAGE子句中可以設(shè)置任何存儲參數(shù),表中區(qū)的分配管理可以完全由用戶來控制。如果表所處的表空間是本地管理方式,并且在創(chuàng)建表空間的EXTENT MANAGEMENT子句中指定了AUTOALLOCATE關(guān)鍵字,這時(shí)只能夠在表的STORAGE子句中設(shè)置INITIAL、NEXT和MINEXTENTS三個(gè)存儲參數(shù),Oracle將利用它們設(shè)置創(chuàng)建表時(shí)初始分配的區(qū)數(shù)目,以后的區(qū)分配由Oracle自動管理。如果表所處的表空間
22、是本地管理方式,并且在創(chuàng)建表空間的EXTENT MANAGEMENT子句中指定了UNIFORM關(guān)鍵字,這時(shí)就不能為表指定STORAGE子句,也不能設(shè)置任何存儲參數(shù),表必須繼承表空間的區(qū)分配管理方式。 例如,SYSTEM用戶在TEST模式中創(chuàng)建了一個(gè)名為STUDENTS的表,并保存在USER01表空間中。SQLCREATE TABLE TEST.STUDENTS 2 (ID VARCHAR2(10), 3 NAME VARCHAR2(10), 4 SEX VARCHAR2(2), 5 COURSE VARCHAR2(20), 6 SCORE NUMBER(3) 7 TABLESPACE USER
23、01 8 PCTFREE 20 9 PCTUSED 40 10 INITRANS 1 11 MAXTRANS 100 12 STORAGE ( 13 INITIAL 400K 14 NEXT 400K 15 MINEXTENTS 2 16 MAXEXTENTS 20017 PCTINCREASE 20 18 BUFFER_POOL RECYCLE);l創(chuàng)建臨時(shí)表 【任務(wù)任務(wù)12.2】在TEST模式中創(chuàng)建了一個(gè)名為TEMP的臨時(shí)表,該表有ID(學(xué)號)、NAME(姓名)、SEX(性別)、COURSE(課程)、SCORE(成績)字段。思考:為什么需要臨時(shí)表,和臨時(shí)段有什么關(guān)系?我們?yōu)槭裁床煌ㄟ^使用永
24、久表來暫存數(shù)據(jù)?l創(chuàng)建臨時(shí)表 臨時(shí)表中的數(shù)據(jù)可以在事務(wù)結(jié)束或會話結(jié)束后由數(shù)據(jù)庫自動刪除。CREATE GLOBAL TEMPORARY TABLE語句中的ON COMMINT子句指定了臨時(shí)表的刪除時(shí)間:ON COMMIT DELETE ROWS 指定臨時(shí)表是事務(wù)級別。這時(shí)Oracle將在每次提交事務(wù)時(shí)自動刪除臨時(shí)表中的所有記錄,這是默認(rèn)情況。ON COMMIT PRESERVE ROWS 指定臨時(shí)表是會話級別。這時(shí)Oracle將直到會話終止時(shí)才會刪除臨時(shí)表中的所有記錄。l創(chuàng)建臨時(shí)表創(chuàng)建臨時(shí)表 下面的語句創(chuàng)建了一個(gè)臨時(shí)表:SQLCREATE GLOBAL TEMPORARY TABLE TEST
25、.TEMP 2 (ID VARCHAR2(10) 3 ON COMMIT DELETE ROWS;結(jié)果顯示為:表已創(chuàng)建。嘗試插入數(shù)據(jù)是否成功?如何解決面臨的問題?如果是兩個(gè)事務(wù)呢?create global temporary table mytestas select * from scott.deptl修改表修改表 【任務(wù)12.3】 修改STUDENTS表的存儲參數(shù)、為表分配新的存儲空間、將STUDENTS表從USER01表空間移動到另一個(gè)表空間、增加一個(gè)列、刪除一個(gè)列、設(shè)置列為無用狀態(tài)(UNUSED)。l修改表修改表如在下列情況下,可以修改表的結(jié)構(gòu)或存儲參數(shù)等:添加或刪除列。修改現(xiàn)有列的
26、數(shù)據(jù)類型、長度。修改數(shù)據(jù)塊的存儲空間利用律參數(shù)PCTFREE和PCTUSED。修改事務(wù)入口參數(shù)INITRANS和MAXTRANS。修改存儲參數(shù)。將一個(gè)表移動到一個(gè)新段或另一個(gè)表空間。為表分配或回收存儲空間。修改表的日志屬性。修改CACHE和NOCACHE屬性。重命名一個(gè)表。添加、修改和刪除與表相關(guān)的完整性約束。啟動或停止與表相關(guān)的完整性約束或觸發(fā)器。 l修改表修改表修改表命令的語法如下:ALTER TABLE schema. table | PCTFREE integer | PCTUSED integer | INITRANS integer | MAXTRANS integer | sto
27、rage_clause | CACHE | NOCACHE | LOGGING | NOLOGGING | allocate_extent_clause | deallocate_unused_clause | move_table_clause | column_clauses ;l修改表修改表該命令中,一些子句的含義如下:allocate_extent_clause 手工分配區(qū)子句。利用該子句可以為表分配新的區(qū),該子句的語法為: ALLOCATE EXTENT (| SIZE integer K | M | DATAFILE filename ) 其中,SIZE為分配區(qū)的大小,如果省略該參
28、數(shù),Oracle將從DBA_TABLES數(shù)據(jù)字典中獲得NEXT_EXTENT的值為表分配一個(gè)區(qū)。DATAFILE子句指定了新區(qū)所在的數(shù)據(jù)文件,該數(shù)據(jù)文件必須在表所在的表空間中,否則,Oracle提示錯誤信息,如果省略該參數(shù),Oracle將在表所在的表空間中選擇一個(gè)數(shù)據(jù)文件,將新區(qū)分配在這個(gè)數(shù)據(jù)文件中。l修改表修改表該命令中,一些子句的含義如下:deallocate_unused_clause 手工回收區(qū)子句。利用該子句收回表中空閑的區(qū),該子句的語法為: DEALLOCATE UNUSED KEEP integer K | M 其中,KEEP表示回收后超過高閥值以上應(yīng)保留的字節(jié)數(shù)。高閥值用于記錄
29、該表曾經(jīng)分配過的最大的數(shù)據(jù)塊數(shù)。高閥值在使用過程中只增不減,在表由于插入新的記錄而需要分配了新的區(qū)時(shí),高閥值增加,但是刪除表中的記錄而數(shù)據(jù)塊變空時(shí),該值也不會減小。只有在對表進(jìn)行截?cái)啵═RUNCATE)操作時(shí),該值才會被重置。如果省略該參數(shù),Oracle將收回大于高閥值之上的空閑區(qū)。l修改表修改表該命令中,一些子句的含義如下:move_table_clause 表移動子句。利用該子句可以將表移到新的表空間中,并根據(jù)新的區(qū)和段的存儲參數(shù)分配存儲空間。該子句的語法為:MOVE | TABLESPACE tablespace | PCTFREE integer | PCTUSED integer |
30、 INITRANS integer | MAXTRANS integer | storage_clause | LOGGING | NOLOGGINGl修改表修改表該命令中,一些子句的含義如下:column_clauses 列修改子句。利用該子句可以對表中的一個(gè)或多個(gè)列進(jìn)行重命名、加入新列、刪除列等操作。該子句的語法為:| ADD (column datatype inline_constraint inline_constraint),(column datatypeinline_constraint inline_constraint) | SET UNUSED (column |, co
31、lumn , column. ) CASCADE CONSTRAINTS | INVALIDATE | DROP (column | column , column. ) CASCADE CONSTRAINTS | INVALIDATE CHECKPOINT integer| DROP UNUSED COLUMNS | COLUMNS CONTINUE CHECKPOINT integer| RENAME COLUMN old_name TO new_namel修改表修改表1.改變表的存儲參數(shù) 執(zhí)行下列命令更改表的存儲參數(shù)。注意這些參數(shù)的作用時(shí)間和范圍需要。SQLALTER TABLE TES
32、T.STUDENTS 2 PCTFREE 20 3 PCTUSED 40 4 STORAGE 5 ( MAXEXTENTS 20000 6 PCTINCREASE 20 7 BUFFER_POOL RECYCLE);l修改表修改表2.為表分配新的區(qū) 例如,下列語句沒有指定新區(qū)的大小,新建區(qū)的大小為默認(rèn)NEXT參數(shù)值: SQL ALTER TABLE TEST.STUDENTS 2 ALLOCATE EXTENT;結(jié)果顯示為:表已更改。l修改表修改表2.為表分配新的區(qū)例如,下列語句指定新區(qū)的大小為400KB:SQL ALTER TABLE TEST.STUDENTS2 ALLOCATE EXTE
33、NT (SIZE 400K);結(jié)果顯示為:表已更改。我們試一試size 4m?l修改表修改表2.為表分配新的區(qū)例如,下列語句指定新區(qū)的大小為400KB,并且區(qū)所在的數(shù)據(jù)文件為:D:ORACLEORADATAORADB01DATA02.DBF;SQL ALTER TABLE TEST.STUDENTS 2 ALLOCATE EXTENT (SIZE 400K) 3 DATAFILE 4 D:ORACLEORADATAORADB01DATA02.DBF;結(jié)果顯示為:表已更改。l修改表修改表3.移動一個(gè)表例如,在同一表空間中移動一個(gè)表。SQLALTER TABLE TEST.STUDENTS MOV
34、E;結(jié)果顯示為:表已更改。l修改表修改表3.移動一個(gè)表例如,在不同表空間中移動一個(gè)表,并修改存儲參數(shù)。SQLALTER TABLE TEST.STUDENTS MOVE 2 TABLESPACE USER02 3 PCTFREE 20 4 PCTUSED 40 5 INITRANS 1 6 MAXTRANS 100 7 STORAGE ( 8 INITIAL 400K 9 NEXT 400K 10 MINEXTENTS 2 11 MAXEXTENTS 200 12 PCTINCREASE 20);l修改表修改表4. 增加列例如,執(zhí)行下列命令向表中增加一個(gè)新的列。SQLALTER TABLE T
35、EST.STUDENTS 2 ADD (DEPARTMENT VARCHAR2(10);l修改表修改表5. 刪除列在刪除列時(shí)需要注意:不能從一個(gè)對象類型的表中刪除列不能從嵌入表中刪除列不能刪除表中的所有列不能刪除表中的主鍵列不能刪除SYS模式中任何表的列l(wèi)修改表修改表5. 刪除列例如,執(zhí)行下列命令從表中刪除DEPARTMENT列。SQLALTER TABLE TEST.STUDENTS 2 DROP (DEPENTMENT) 3 CASCADE CONSTRAINTS CHECKPOINT 512;l修改表修改表6.設(shè)置列為無用狀態(tài)(UNUSED) 在刪除一個(gè)大表的列時(shí)需要花費(fèi)很多時(shí)間,因此可
36、以將想要刪除的列設(shè)置為無用狀態(tài)。 例如,在有大量事務(wù)操作時(shí),可以現(xiàn)將STUDENTS表中的DEPENTMENT列設(shè)置為無用列,這樣可以節(jié)省Oracle大量的執(zhí)行時(shí)間。SQLALTER TABLE TEST.STUDENTS 2 SET UNUSED (DEPENTMENT) 3 CASCADE CONSTRAINTS;l修改表修改表6.設(shè)置列為無用狀態(tài)(UNUSED) 在刪除一個(gè)大表的列時(shí)需要花費(fèi)很多時(shí)間,因此可以將想要刪除的列設(shè)置為無用狀態(tài)。 例如,在有大量事務(wù)操作時(shí),可以現(xiàn)將STUDENTS表中的DEPENTMENT列設(shè)置為無用列,這樣可以節(jié)省Oracle大量的執(zhí)行時(shí)間。SQLALTER
37、TABLE TEST.STUDENTS 2 SET UNUSED (DEPENTMENT) 3 CASCADE CONSTRAINTS; 在數(shù)據(jù)庫空閑狀態(tài)時(shí),可以執(zhí)行刪除無用列命令將該列徹底刪除。例如:SQL ALTER TABLE TEST.STUDENTS DROP UNUSED COLUMNS;l修改表修改表7.更改列名 使用ALTER TABLE語句中的RENAME子句可以對表中的列重命名。例如要把STUDENTS表中的DEPENTMENT列改名為DEPENTMENTS,可以執(zhí)行下列SQL語句:SQLALTER TABLE TEST.STUDENTS 2 RENAME COLUMN DEPENTMENT TO 3 DEPENTMENTS;l截?cái)啾斫財(cái)啾怼救蝿?wù)12.4】 刪除表中的所有記錄。 當(dāng)某一個(gè)表中的所有記錄不需要時(shí),一般可以采用DELETE語句刪除表中的所有記錄。此外,Oracle還提供了類似功能的TRUNCATE語句,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車企測試面試題目及答案
- 養(yǎng)老院特殊護(hù)理制度
- 養(yǎng)老院老人生活設(shè)施維修人員考核獎懲制度
- 養(yǎng)老院老人檔案管理制度
- 辦公室值班員職責(zé)與要求制度
- 道路旅客運(yùn)輸安全生產(chǎn)制度
- 焦慮癥自測題目及答案
- 汽車行業(yè)零部件檢測
- 餐飲成本控制與菜單設(shè)計(jì)技巧
- 輔導(dǎo)培訓(xùn)機(jī)構(gòu)獎學(xué)金制度
- 2026年標(biāo)準(zhǔn)版離婚協(xié)議書(有財(cái)產(chǎn))
- 養(yǎng)老院電氣火災(zāi)培訓(xùn)課件
- 中國工商銀行2025年度春季校園招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 對外話語體系構(gòu)建的敘事話語建構(gòu)課題申報(bào)書
- 中國家庭財(cái)富與消費(fèi)報(bào)告2025年第三季度
- 馬年猜猜樂(馬的成語)打印版
- 精神障礙防治責(zé)任承諾書(3篇)
- 2025年擔(dān)保公司考試題庫(含答案)
- 合肥新鑫人力資源服務(wù)有限公司介紹企業(yè)發(fā)展分析報(bào)告
- 2025年金融控股公司行業(yè)分析報(bào)告及未來發(fā)展趨勢預(yù)測
- 質(zhì)量控制計(jì)劃模板全行業(yè)適用
評論
0/150
提交評論