




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Oracle從入門到精通明日科技
Oracle,西方人認為有“神諭、預言”之意,中國人則譯作“甲骨文”,是當今世界最強大的數據庫軟件。所有這一切要從IBM的一篇論文談起,1970年的6月,IBM公司的研究員埃德加?考特發表了一篇著名的論文——《大型共享數據庫數據的關系模型》,這可以稱之為數據庫發展史上的一個轉折點。在當時還是層次模型和網狀模型的數據庫產品占據市場主要位置的情況下,從這篇論文開始,拉開了關系型數據庫軟件革命的序幕。1977年6月,LarryEllison與BobMiner和EdOates在硅谷共同創辦了一家名為“軟件開發實驗室”的軟件公司(Oracle公司的前身,英文縮寫SDL)。在Oates看到了埃德加?考特的那篇著名的論文連同其他幾篇相關的文章之后,非常興奮,他找來Ellison和Miner共同閱讀,Ellison和Miner也預見到關系型數據庫軟件的巨大潛力。于是,這3個數據庫界的巨人開始共同籌劃構建可商用的關系型數據庫管理系統(英文縮寫RDBMS),并把這種商用數據庫產品命名為Oracle。因為他們相信,Oracle(字典里的解釋有“神諭、預言”之意)是一切智慧的源泉,這樣當今世界最強大、最優秀的Oracle數據庫誕生了。簡述Oracle的發展史關系型數據庫的基本理論本講大綱:1、關系型數據庫與數據庫管理系統3、關系型數據庫的設計范式2、關系型數據庫的E-R模型關系型數據庫與數據庫管理系統在關系數據模型中,關系可以看成由行和列交叉組成的二維表格,表中一行稱為一個元組,可以用來標識實體集中的一個實體。表中的列稱為屬性,給每一列起一個名稱即為屬性名,表中的屬性名不能相同。列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。表中任意兩行(元組)不能相同。能唯一標識表中不同行的屬性或屬性組(即多個屬性的組合)稱為主鍵或復合主鍵。1.實體和屬性實體是一個數據對象,是指客觀存在并可以相互區分的事物,如一個教師、一個學生、一個雇員等等。每個實體由一組屬性來表示,如,一個具體的學生擁有學號、姓名、性別和班級等屬性,其中學號可以唯一標識具體某個學生這個實體。具有相同屬性的實體組合在一起就構成實體集—即實體集是實體的集合,而實體則是實體集中的某一個特例,例如,王同學這個實體就是學生實體集中的一個特例。2.聯系在實際應用中,實體之間是存在聯系的,這種聯系必須在邏輯模型中表現出來。在E-R模型中,聯系用菱形表示,菱形框內寫明“聯系名”,并用“連接線”將有關實體連接起來,同時在“連接線”的旁邊標注上聯系的類型,兩個實體之間的聯系類型可以分為3類。關系型數據庫的E-R模型1.增強信息生命周期管理和存儲管理能力2.全面回憶數據變化3.最大限度提高信息可用性4.Oracle快速文件5.更快的XML6.透明的加密7.嵌入式OLAP行列8.連接匯合和查詢結果高速緩存9.增強了應用開發能力Oracle11g的新功能Oracle11g的安裝與卸載本講大綱:1、Oracle11g的安裝2、Oracle11g的卸載Oracle11g的管理工具本講大綱:1、SQL*Plus工具2、Oracle企業管理器3、數據庫配置助手SQL*Plus工具
選擇“開始”/“所有程序”/“Oracle-OraDb11g_home1”/“應用程序開發”/“SQL*Plus”命令,打開的命令窗口如下圖所示。Oracle企業管理器OracleEnterpriseManager(OEM)是基于WEB界面的Oracle數據庫管理工具。啟動Oracle11g的OEM只需在瀏覽器中輸入其URL地址——通常為https://localhost:1518/em,然后連接主頁即可;也可以在“開始”菜單的“Oracle程序組”中選擇“DatabaseControl-orcl”菜單命令來啟動Oracle11g的OEM工具。數據庫配置助手
在開始菜單中選擇“所有程序”/“Oracle-OraDb11g_home1”/“配置和移植工具”/“DatabaseConfigurationAssistant”菜單命令,就會打開如圖所示的窗口。啟動與關閉數據庫實例本講大綱:1、啟動數據庫實例2、關閉數據庫實例啟動數據庫實例Oracle數據庫實例的啟動過程分為3步驟,分別是啟動實例、加載數據庫、打開數據庫。用戶可以根據實際情況的需要,以不同的模式啟動數據庫,啟動數據庫所使用的命令格式如下。STARTUP[nomount|mount|open|force][resetrict][pfile=filename]關閉數據庫實例與啟動數據庫實例相同,關閉數據庫實例也分為3個步驟,分別是關閉數據庫、卸載數據庫、關閉Oracle實例。在SQL*Plus中,可以使用shutdown語句關閉數據庫,其具體語法格式如下:SHUTDOWN[normal|transactional|immediate|abort]在Oracle數據庫管理系統中有3個重要的概念需要理解,那就是實例(Instance)、數據庫(Database)和數據庫服務器(DatabaseServer)。其中,實例是指一組Oracle后臺進程以及在服務器中分配的共享內存區域;數據庫是由基于磁盤的數據文件、控制文件、日志文件、參數文件和歸檔日志文件等組成的物理文件集合;數據庫服務器是指管理數據庫的各種軟件工具(比如,sqlplus、OEM等)和實例及數據庫三個部分。從實例與數據庫之間的辯證關系來講,實例用于管理和控制數據庫;而數據庫為實例提供數據。一個數據庫可以被多個實例裝載和打開;而一個實例在其生存期內只能裝載和打開一個數據庫。ORACLE11g體系結構概述邏輯存儲結構本講大綱:1、數據塊(DataBlocks)3、段(Segment)2、數據區(Extent)4、表空間(TableSpace)數據塊(DataBlocks)數據塊是Oracle邏輯存儲結構中的最小的邏輯單位,也是執行數據庫輸入輸出操作的最小存儲單位。Oracle數據存放在“Oracle數據塊”中,而不是“操作系統塊”中。通常Oracle數據塊是操作系統塊的整數倍,如果操作系統快的大小為2048B,并且Oracle數據塊的大小為8192B,則表示Oracle數據塊由4個操作系統塊構成。Oracle數據塊有一定的標準大小,其大小被寫入到初始化參數DB_BlOCK_SIZE中。另外,Oracle支持在同一個數據庫中使用多種大小的快,與標準塊大小不同的塊就是非標準塊。數據區(也可稱作數據擴展區)是由一組連續的Oracle數據塊所構成的Oracle存儲結構,一個或多個數據塊組成一個數據區,一個或多個數據區再組成一個段(Segment)。當一個段中的所有空間被使用完后,Oracle系統將自動為該段分配一個新的數據區,這也正符合Extent這個單詞所具有的“擴展”的含義,可見數據區是Oracle存儲分配的最小單位,Oracle就以數據區為單位進行存儲控件的擴展。使用數據區的目的是用來保存特定數據類型的數據,也是表中數據增長的基本單位。在Oracle數據庫中,分配存儲空間就是以數據區為單位的。一個Oracle對象包含至少一個數據區。設置一個表或索引的存儲參數包含設置它的數據區大小。數據區(Extent)段(Segment)數據區(也可稱作數據擴展區)是由一組連續的Oracle數據塊所構成的Oracle存儲結構,一個或多個數據塊組成一個數據區,一個或多個數據區再組成一個段(Segment)。當一個段中的所有空間被使用完后,Oracle系統將自動為該段分配一個新的數據區,這也正符合Extent這個單詞所具有的“擴展”的含義,可見數據區是Oracle存儲分配的最小單位,Oracle就以數據區為單位進行存儲控件的擴展。使用數據區的目的是用來保存特定數據類型的數據,也是表中數據增長的基本單位。在Oracle數據庫中,分配存儲空間就是以數據區為單位的。一個Oracle對象包含至少一個數據區。設置一個表或索引的存儲參數包含設置它的數據區大小。表空間(TableSpace)
Oracle使用表空間將相關的邏輯結構(比如段、數據區等)組合在一起,表空間是數據庫的最大邏輯劃分區域,通常用來存放數據表、索引、回滾段等數據對象(即Segment),任何數據對象在創建時都必須被指定存儲在某個表空間中。表空間(屬邏輯存儲結構)與數據文件(屬物理存儲結構)相對應,一個表空間由一個或多個數據文件組成,一個數據文件只屬于一個表空間;Oracle數據的存儲空間在邏輯上表現為表空間,而在物理上表現為數據文件。舉個例子來說,表空間相當于操作系統中的文件夾,而數據文件就相當于文件夾中的文件。每個數據庫至少有一個表空間(即SYSTEM表空間),表空間的大小等于所有從屬于它的數據文件大小的總和。物理存儲結構本講大綱:1、數據文件3、日志文件4、服務器參數文件5、密碼文件、警告文件和跟蹤文件2、控制文件數據文件
數據文件是用于保存用戶應用程序數據和Oracle系統內部數據的文件,這些文件在操作系統中就是普通的操作系統文件,Oracle在創建表空間的同時會創建數據文件。Oracle數據庫在邏輯上由表空間組成,每個表空間可以包含一個或多個數據文件,一個數據文件只能隸屬于一個表空間。控制文件是一個二進制文件,它記錄了數據庫的物理結構,其中主要包含數據庫名、數據文件與日志文件的名字和位置、數據庫建立日期等信息。控制文件一般在Oracle系統安裝時或創建數據庫時自動創建,控制文件所存放的路徑由服務器參數文件spfileorcl.ora的control_files參數值來指定。由于控制文件存放有數據文件、日志文件等的相關信息,因此,Oracle實例在啟動時必須訪問控制文件。如果控制文件正常,實例才能加載并打開數據庫;但若控制文件中記錄了錯誤的信息,或者實例無法找到一個可用的控制文件,則實例無法正常啟動。控制文件
日志文件的主要功能是記錄對數據所作的修改,對數據庫所作的修改幾乎都記錄在日志文件中。在出現問題時,可以通過日志文件得到原始數據,從而保障不丟失已有操作成果。Oracle的日志文件包括重做日志文件(RedoLogFile)和歸檔日志文件(ArchiveLogFile),它們是Oracle系統的主要文件之一,尤其是重做日志文件,它是Oracle數據庫系統正常運行所不可或缺的。下面將介紹這兩種日志文件。日志文件服務器參數文件
服務器參數文件SPFILE(ServerparameterFile)是二進制文件,用來記錄了Oracle數據庫的基本參數信息(如,數據庫名、控制文件所在路徑、日志緩沖大小等)。數據庫實例在啟動之前,Oracle系統首先會讀取SPFILE參數文件中設置的這些參數,并根據這些初始化參數來配置和啟動實例。比如,設置標準數據塊的大小(即參數db_block_size的值)、設置日志緩沖區的大小(即參數log_buffer的值)等等,所以SPFILE參數文件非常重要。服務器參數文件在安裝Oracle數據庫系統時由系統自動創建,文件的名稱為SPFILEsid.ora,sid為所創建的數據庫實例名。
與早期版本的初始化參數文件INITsid.ora不同的是,SPFILE中的參數由Oracle系統自動維護,如果要對某些參數進行修改,則盡可能不要直接對SPFILE進行編輯,最好通過企業管理器(OEM)或ALTERSYSTEM命令來修改,所修改過的參數會自動寫到SPFILE中。
Oracle系統運行時,除了必須的數據文件、控制文件、日志文件及服務器參數文件外,還需要一些輔助文件,如,密碼文件、警告文件和跟蹤文件,下面將對這些輔助文件進行簡單的介紹。密碼文件、警告文件和跟蹤文件Oracle11g服務器結構本講大綱:1、系統全局區(SGA)2、程序全局區(PGA)3、前臺進程4、后臺進程系統全局區(SGA)系統全局區(SystemGlobalArea)是所有用戶進程共享的一塊內存區域,也就是說,SGA中的數據資源可以被多個用戶進程共同使用。SGA主要由高速數據緩沖區、共享池、重做日志緩存區、java池和大型池等內存結構組成。SGA隨著數據庫實例的啟動而加載到內存中,當數據庫實例關閉時,SGA區域也就消失了。程序全局區(PGA)程序全局區(ProgramGlobalArea)也可稱作用戶進程全局區,它的內存區在進程私有區而不是共享區中。雖然PGA是一個全局區,可以把代碼、全局變量和數據結構都可以存放在其中,但區域內的資源并不像SGA一樣被所有的用戶進程所共享,而是每個Oracle服務器進程都只擁有屬于自己的那部分PGA資源。在程序全局區(PGA)中,一個服務進程只能訪問屬于它自己的那部分PGA資源區,各個服務進程的PGA區的總和即為實例的PGA區的大小。通常PGA區由私有SQL區和會話區組成。前臺進程1.用戶進程用戶進程是指那些能夠產生或執行SQL語句的應用程序,無論是SQL*Plus,還是其它應用程序,只要是能生成或執行SQL語句,都被稱作用戶進程。2.服務器進程服務進程就是用于處理用戶會話過程中向數據庫實例發出的SQL語句或SQL*Plus命令,它可以分為專用服務器模式和共享服務器模式。后臺進程Oracle后臺進程是一組運行于Oracle服務器端的后臺程序,是Oracle實例的重要組成部分。進程包括DBWR、CKPT、LGWR、ARCH、SMON、PMON、LCKN、RECO、DNNN、SNPN。其中SMON、PMON、DBWR、LGWR和CKPT這5個后臺進程必須正常啟動,否則將導致數據庫實例崩潰。此外,還有很多輔助進程,用于實現相關的輔助功能,如果這些輔助進程發生問題,只是某些功能受到影響,一般不會導致數據庫實例崩潰。數據字典本講大綱:1、Oracle數據字典簡介2、Oracle常用數據字典Oracle數據字典簡介Oracle數據字典的名稱由前綴和后綴組成,使用下劃線“_”連接,其代表的含義如下:(1)DBA_:包含數據庫實例的所有對象信息。(2)V$_:當前實例的動態視圖,包含系統管理和系統優化等所使用的視圖。(3)USER_:記錄用戶的對象信息。(4)GV_:分布式環境下所有實例的動態視圖,包含系統管理和系統優化使用的視圖。(5)ALL_:記錄用戶的對象信息機被授權訪問的對象信息。Oracle常用數據字典數據字典名稱說明dba_tablespaces關于表空間的信息dba_ts_quotas所有用戶表空間限額dba_free_space所有表空間中的自由分區dba_segments描述數據庫中所有段的存儲空間dba_extents數據庫中所有分區的信息dba_tables數據庫中所有數據表的描述數據字典名稱說明v$database描述關于數據庫的相關信息v$datafile數據庫使用的數據文件信息v$log從控制文件中提取有關重做日志組的信息v$logfile有關實例重置日志組文件名及其位置的信息
SQL*Plus工具主要用來進行數據查詢和數據處理。利用SQL*Plus可將SQL和Oracle專有的PL/SQL結合起來進行數據查詢和處理。SQL*Plus工具具備以下功能:(1)定義變量,編寫SQL語句。(2)插入、修改、刪除、查詢,以及執行命令和PL/SQL語句。比如,執行showparameter命令。(3)格式化查詢結構、運算處理、保存、打印機輸出等。(4)顯示任何一個表的字段定義,并實現與用戶進行交互。(5)完成數據庫的幾乎所有管理工作。比如,維護表空間和數據表。(6)運行存儲在數據庫中的子程序或包。(7)以sysdba身份登錄數據庫實例,可以實現啟動/停止數據庫實例。SQL*Plus與數據庫的交互設置SQL*Plus的運行環境本講大綱:1、簡介SET命令2、使用SET命令設置運行環境簡介SET命令在Oracle11g數據庫中,用戶可以使用SET命令來設置SQL*Plus的運行環境,SET命令的語法格式為:SETsystem_variablevalue
參數system_variable表示變量名,參數value表示變量值。1.PAGESIZE變量2.NEWPAGE變量3.LINESIZE變量4.PAUSE變量5.NUMFORMAT變量使用SET命令設置運行環境常用SQL*Plus命令本講大綱:1、HELP命令3、SPOOL命令4、其它常用命令2、DESCRIBE命令HELP命令
HELP命令的語法形式如下。
HELP|?[topic]
DESCRIBE命令的語法形式如下:desc[ribe]object_name;describe可以縮寫為desc,object_name表示將要查詢的對象名稱。DESCRIBE命令
SPOOL命令的語法格式如下:SPO[OL][file_name[.ext][CRE[ATE]|REP[LACE]|APP[END]]|OFF|OUT]參數file_name用于指定脫機文件的名稱,默認的文件擴展名為LST。SPOOL命令其它常用命令1.DEFINE命令2.SHOW命令3.EDI[T]命令4.SAVE命令5.GET命令6.start和@命令格式化查詢結果本講大綱:1、COLUMN命令2、TTITLE和BTITLE命令COLUMN命令
該命令可以實現格式化查詢結果、設置列寬度、重新設置列標題等功能。其語法格式如下:COL[UMN][column_name|alias|option] column_name:用于指定要設置的列的名稱。 alias:用于指定列的別名,通過它可以把英文列標題設置為漢字。 option:用于指定某個列的顯示格式,TTITLE和BTITLE命令
TTITLE命令的語法格式如下:TTI[TLE][printspec[text|variable]...]|[OFF|ON]text:用于設置輸出結果的頭標題(即報表頭文字)。variable:用于在頭標題中輸出相應的變量值。OFF:表示禁止打印頭標題。ON:表示允許打印頭標題。SQL語言簡介本講大綱:1、SQL語言的特點3、SQL語言的編寫規則2、SQL語言的分類SQL語言的特點
SQL語言主要有以下特點。(1)集合性SQL可以在高層的數據結構上進行工作,工作時不是單條的處理記錄,而對數據進程成組的處理。所有SQL語句都接受集合作為輸入,并且返回集合作為輸出,SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。(2)統一性SQL為許多任務提供了統一的命令,這樣方便用戶學習和使用,基本的SQL命令只需很少時間就能學會,甚至最高級的命令也可以在幾天內掌握。(3)易于移植性由于所有主要的關系型數據庫管理系統都支持SQL語言,這樣用戶就比較容易將原先使用SQL的技能從一個RDBMS轉到另一個,而且用兼容SQL標準編寫的程序都是可以移植的。(1)數據查詢語言(DQL)(2)數據操縱語言(DML)(3)事務控制語言(TCL)(4)數據定義語言(DDL)(5)數據控制語言(DCL)SQL語言的分類SQL語言的編寫規則
SQL關鍵字不區分大小寫,既可以使用大寫格式,也可以使用小寫格式,或者大小寫格式混用。用戶模式本講大綱:1、模式與模式對象2、示例模式SCOTT模式與模式對象
模式是一個數據庫對象的集合。模式為一個數據庫用戶所有,并且具有與該用戶相同的名稱,比如,SYSTEM模式、SCOTT模式等。在一個模式內部不可以直接訪問其它模式的數據庫對象,即使在具有訪問權限的情況下,也需要指定模式名稱才可以訪問其它模式的數據庫對象。模式對象是由用戶創建的邏輯結構,用以存儲或引用數據。例如,前面章節中所講過的段(比如,表、索引等),以及用戶所擁有的其它非段的的數據庫對象。這些非段的數據庫對象通常包括:約束、視圖、同義詞、過程以及程序包等。那么,簡單的說,模式與模式對象之間的關系就是擁有與被擁有的關系,即模式擁有模式對象;而模式對象被模式所擁有。
Oracle提供的SCOTT模式的目的,就是為了給用戶提供一些示例表和數據來展示Oracle數據庫的一些特性。SCOTT模式擁有的模式對象(都是數據表)如圖所示。示例模式SCOTT檢索數據本講大綱:1、簡單查詢3、分組查詢
4、排序查詢
5、多表關聯查詢
2、篩選查詢
簡單查詢
只包含SELECT子句和FROM子句的查詢就是簡單查詢,SELECT子句和FROM子句是SELECT語句的必選項,也就是說每個SELECT語句都必須包含這兩個子句。其中,SELECT子句用于選擇想要在查詢結果中顯示的列,對于這些要顯示的列,即可以使用列名來表示,也可以使用星號(*)來表示。在檢索數據時,數據將按照SELECT子句后面指定的列名的順序來顯示;如果使用星號(*),則表示檢索所有的列,這時數據將按照表結構的自然順序來顯示。在SELECT語句中,WHERE子句位于FROM子句之后,其語法格式如下:SELECTcolumns_listFROMtable_nameWHEREconditional_expression篩選查詢在SELECT語句中,GROUPBY子句位于FROM子句之后,其語法格式如下:SELECTcolumns_listFROMtable_name[WHEREconditional_expression]GROUPBYcolumns_list分組查詢排序查詢
在SELECT語句中,可以使用ORDERBY子句對檢索的結果集進行排序,該子句位于FROM子句之后,其語法格式如下:SELECTcolumns_listFROMtable_name[WHEREconditional_expression][GROUPBYcolumns_list]ORDERBY{order_by_expression[ASC|DESC]}[,...n]
在實際的應用系統開發中會設計多個數據表,每個表的信息不是獨立存在的,而是若干個表之間的信息存在一定的關系,這樣當用戶查詢某一個表的信息時,很可能需要查詢關聯數據表的信息,這就是多表關聯查詢。SELECT語句自身是支持多表關聯查詢的,多表關聯查詢要比單表查詢復雜得多。在進行多表關聯查詢時,可能會涉及到表別名、內連接、外連接、自然連接和交叉連接等概念多表關聯查詢Oracle常用系統函數本講大綱:1、字符類函數
2、數字類函數
3、日期和時間類函數
4、轉換類函數
5、聚合類函數
字符類函數(1)ASCII(c)函數和CHR(i)函數(2)CONCAT(s1,s2)函數(3)INITCAP(s)函數(4)INSTR(s1,s2[,i][,j])函數(5)LENGTH(s)函數(6)LOWER(s)函數和UPPER函數(s)(7)LTRIM(s1,s2)函數、RTRIM(s1,s2)函數和TRIM(s1,s2)函數(8)REPLACE(s1,s2[,s3])函數(9)SUBSTR(s,i,[j])函數數字類函數(1)CEIL(n)函數(2)ROUND(n1,n2)函數(3)POWER(n1,n2)函數日期和時間類函數(1)SYSDATE()函數(2)ADD_MONTHS(d,i)函數轉換類函數(1)TO_CHAR()函數(2)TO_NUMBER(s[,format[lan]])函數聚合類函數(1)AVG(x[DISTINCT|ALL])函數(2)COUNT(x[DISTINCT|ALL])函數(3)SUM(x[DISTINCT|ALL])函數子查詢的用法本講大綱:1、什么是子查詢
2、單行子查詢
3、多行子查詢
4、關聯子查詢什么是子查詢子查詢是在SQL語句內的另外一條SELECT語句,也被稱為內查詢或是內SELECT語句。在SELECT、INSERT、UPDATE或DELETE命令中允許是一個表達式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個子查詢中。單行子查詢
單行子查詢是指返回一行數據的子查詢語句。當在WHERE子句中引用單行子查詢時,可以使用單行比較運算符(=、>、<、>=、<=和<>)。多行子查詢
多行子查詢是指返回多行數據的子查詢語句。當在WHERE子句中使用多行子查詢時,必須使用多行比較符(IN、ANY、ALL)。關聯子查詢
在當行子查詢和多行子查詢中,內查詢和外查詢是分開執行的,也就是說內查詢的執行與外查詢的執行是沒有關系的,外查詢僅僅是使用內查詢的最終結果。在一些特殊需求的子查詢中,內查詢的執行需要借助于外查詢,而外查詢的執行又離不開內查詢的執行,這時,內查詢和外查詢是相互關聯的,這種子查詢就被稱為關聯子查詢。操作數據庫本講大綱:1、插入數據(INSERT語句)
3、刪除數據(DELETE語句和TRUNCATE語句)2、更新數據(UPDATE語句)插入數據(INSERT語句)INSERT語句的法格式如下:
INSERTINTOtable_name[(column_name1[,column_name2]…)]VALUES(express1[,express2]…)UPDATE語句的語法格式如下:UPDATEtable_nameSET{column_name1=express1[,column_name2=express2...]|(column_name1[,column_name2…])=(selectSubquery)}[WHEREcondition]更新數據(UPDATE語句)1、DELETE語句語法如下DELETEFROMtable_name[WHEREcondition]2、TRUNCATE語句語法如下:TRUNCATE
TABLEtable_name刪除數據(DELETE語句和TRUNCATE語句)事務處理本講大綱:1、事務的概述2、操作事務事務的概述事務包含4種重要的屬性,被統稱為ACID(原子性、一致性、隔離性和持久性),一個事務必須通過ACID。(1)原子性(Atomic):事務是一個整體的工作單元,事務對數據庫所做的操作要么全部執行,要么全部取消。如果某條語句執行失敗,則所有語句全部回滾。(2)一致性(ConDemoltent):事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用于事務的修改,以保持所有數據的完整性。如果事務成功,則所有數據將變為一個新的狀態;如果事務失敗,則所有數據將處于開始之前的狀態。(3)隔離性(Isolated):由事務所作的修改必須與其他事務所作的修改隔離。事務查看數據時數據所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的數據。(4)持久性(Durability):當事務提交后,對數據庫所做的修改就會永久保存下來。Oracle11g中的事務是隱式自動開始的,它不需要用戶顯示地執行開始事務語句。但對于事務的結束處理,則需要用戶進行指定的操作,通常在以下情況時,Oracle認為一個事務結束了。(1)執行COMMIT語句提交事務。(2)指定ROLLBACK語句撤銷事務。(3)執行一條數據定義語句,比如,CREATE、DROP或ALTER等語句。如果該語句執行成功,那么Oracle系統會自動執行COMMIT命令;否則,則Oracle系統會自動執行ROLLBACK命令。(4)執行一個數據控制命令,比如,GRANT、REVOKE等控制命令,這種操作執行完畢,Oracle系統會自動執行COMMIT命令。(5)正常地斷開數據庫的連接、正常地退出SQL*Plus環境,則Oracle系統會自動執行COMMIT命令;否則,則Oracle系統會自動執行ROLLBACK命令。操作事務PL/SQL簡介本講大綱:1、PL/SQL塊結構
2、代碼注釋和標示符
PL/SQL塊結構
標準PL/SQL塊的語法格式如下:
[DECLARE]
--聲明部分,可選
BEGIN
--執行部分,必須
[EXCEPTION]
--異常處理部分,可選
END1.單行注釋單行注釋由連個連接字符“--”開始,后面緊跟著注釋內容。2.多行注釋多行注釋由/*開頭,由*/結尾,這個大多數編程語言是相同的。3.PL/SQL字符集所有的PL/SQL程序元素(比如,關鍵字、變量名、常量名等)都是由一些字符序列組合而成的,而這些字符序列中的字符都必須取自PL/SQL語言所允許使用的字符集,那么這些合法的字符集主要包括以下內容:大寫和小寫字母:A-Z或a-z。數字:0-9。非顯示的字符:制表符、空格和回車。數學符號:+,-,*,/,>,<,=等。間隔符:包括(),{},[],?,!,;,:,@,#,%,$,&等。代碼注釋和標示符數據類型、變量和常量本講大綱:1、基本數據類型2、特殊數據類型3、定義變量和常量基本數據類型1.數值類型數值類型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三種基本類型
2.字符類型字符類型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。這些類型的變量用來存儲字符串或字符數據。
3.日期類型日期類型只有一個種——即DATE類型,用來存儲日期和時間信息,DATE類型的存儲空間是7個字節,分別使用一個字節存儲世紀、年、月、天、小時、分鐘和秒。4.布爾類型布爾類型也只有一種——即BOOLEAN,主要用于程序的流程控制和業務邏輯判斷,其變量值可以是TRUE、FALSE或NULL中的一種。1.%TYPE類型使用%TYPE關鍵字可以聲明一個與指定列名稱相同的數據類型,它通常緊跟在指定列名的后面。2.RECORD類型,語法如下:typerecord_typeisrecord(var_member1data_type[notnull][:=default_value],…var_memberndata_type[notnull][:=default_value])3.%ROWTYPE類型,語法如下:rowVar_nametable_name%rowtype;特殊數據類型1.定義變量<變量名><數據類型>[(長度):=<初始值>];2.定義常量<常量名>constant<數據類型>:=<常量值>;定義變量和常量流程控制語句本講大綱:1、選擇語句2、循環語句
選擇語句1.if…then語句2.If…then…else語句3.if…then…elsif語句4.case語句1.loop語句loopplsql_sentence;exitwhenend_condition_expendloop;2.while語句whilecondition_expressionloopplsql_sentence;endloop;3.for語句forvariable_counter_namein[reverse]lower_limit..upper_limitloopplsql_sentence;endloop;循環語句PL/SQL游標本講大綱:1、顯示游標2、游標的屬性3、隱式游標
4、通過for語句循環游標
顯示游標
顯示游標是由用戶聲明和操作的一種游標,通常用于操作查詢結果集(即由SELECT語句返回的查詢結果),使用它處理數據的步驟包括:聲明游標、打開游標、讀取游標和關閉游標4個步驟。
游標的屬性無論是顯式游標還是隱式游標,都具有%found、%notfound、%isopen和%rowcount四個屬性,通過這4個屬性可以獲知SQL語句的執行結果以及該游標的狀態信息。下面對這4個屬性的功能進行講解。(1)%found:布爾型屬性,如果SQL語句至少影響到一行數據,則該屬性為true,否則為fasle。(2)%notfound:布爾型屬性,與%found屬性的功能相反。(3)%rowcount:數字型屬性,返回受SQL語句影響的行數。(4)%isopen:布爾型屬性,當游標已經打開時返回true,游標關閉時則為false。隱式游標在執行一個SQL語句時,Oracle會自動創建一個隱式游標。這個游標是內存中處理該語句的工作區域。隱式游標主要是處理數據操縱語句(如,UPDATE、DELETE語句)的執行結果,當然特殊情況下,也可以處理SELECT語句的查詢結果。由于隱式游標也有屬性,當使用隱式游標的屬性時,需要在屬性前面加上隱式游標的默認名稱——SQL。通過for語句循環游標(1)在for語句中遍歷隱式游標中的數據時,通常在關鍵字“in”的后面提供由SELECT語句檢索的結果集,在檢索結果集的過程中,Oracle系統會自動提供一個隱式的游標sql。(2)在for語句中遍歷顯式游標中的數據時,通常在關鍵字“in”的后面提供游標的名稱,其語法格式如下:forvar_auto_recordincur_nameloopplsqlsentence;endloop;PL/SQL異常處理本講大綱:1、預定義異常
2、自定義異常
預定義異常
當PL/SQL程序違反了Oracle系統內部規定的設計規范時,就會自動引發一個預定義的異常,例如,當除數為零時,就會引發“ZERO_DIVIED”異常。
系統預定義異常說明ZERO_DIVIDE除數為零時引發的異常ACCESS_INTO_NULL企圖為某個未初始化對象的屬性賦值COLLECTION_IS_NULL企圖使用未初始化的集合元素CURSOR_ALREADY_OPEN企圖再次打開一個已經打開過的游標,但在重新打開之前,游標未關閉INVALID_CURSOR執行一個非法的游標操作,例如,關閉一個未打開的游標INVALID_NUMBER企圖將一個字符串轉換成一個無效的數字而失敗LOGIN_DENIED企圖使用無效的用戶名或密碼連接數據庫NO_DATA_FOUNDSELECTINTO語句沒有返回數據ROWTYPE_MISMATCH主游標變量與PL/SQL游標變量的返回類型不兼容SELF_IS_NULL使用對象類型時,使用空對象調用其方法自定義異常1.錯誤編號異常錯誤號異常是指在Oracle系統發生錯誤時,系統會顯示錯誤號和相關描述信息的異常,雖然直接使用錯誤編號也可以完成異常處理,但錯誤編號較為抽象,不易于用戶理解和記憶,對于這種異常,首先在PL/SQL塊的聲明部分(DECLARE部分)使用EXCEPTION類型定義一個異常變量名,然后使用語句PRAGMAEXCEPTION_INIT為“錯誤編號”關聯“這個異常變量名”,接下來就可以像對待系統預定義異常一樣處理了。2.業務邏輯異常在實際的應用中,程序開發人員可以根據具體的業務羅規則自定義一個異常。這樣,當用戶操作違反業務邏輯規則時,就引發一個自定義異常,從而中斷程序的正常執行并轉到自定義的異常處理部分。但無論是預定義異常,還是錯誤編號異常,都是由Oracle系統判斷的錯誤,但業務邏輯異常是Oracle系統本身是無法知道的,這樣就需要有一個引發異常的機制,引發業務邏輯異常通常使用RAISE語句來實現。當引發一個異常時,控制就會轉到EXCEPTION異常處理部分執行異常處理語句。業務邏輯異常首先在DECLARE部分使用EXCEPTION類型聲明一個異常變量,然后在BEGIN部分根據一定的義務邏輯規則執行RAISE語句(在RAISE關鍵字后面跟著異常變量名),最后在EXCEPTION部分編寫異常處理語句。存儲過程本講大綱:1、創建存儲過程2、存儲過程的參數3、IN參數的默認值創建存儲過程語法格式如下:create[orreplace]procedurepro_name[(parameter1[,parameter2]…)]is|asbeginplsql_sentences;[exception][dowith_sentences;]end[pro_name];1.IN模式參數這是一種輸入類型的參數,參數值由調用方傳入,并且只能被存儲過程讀取。(1)指定名稱傳遞指定名稱傳遞是指在向存儲過程傳遞參數時需要指定參數名稱,即參數名稱在左側,中間是賦值符號“=>”,右側是參數值,其語法格式如下:pro_name(parameter1=>value1[,parameter2=>value2]…)(2)按位置傳遞指定名稱傳遞參數雖然直觀易讀,但也有缺點,就是參數過多時,會顯得代碼冗長,反而變得不容易閱讀。這樣用戶就可以采取按位置傳遞參數,采用這種方式時,用戶提供的參數值順序必須與存儲過程中定義的參數順序相同。
(3)混合方式傳遞混合方式就是將前兩種方式結合到一起,這樣就可以兼顧二者的優點,
2.OUT模式參數這是一種輸出類型的參數,表示這個參數在存儲過程中已經被賦值,并且這個參數值可以傳遞到當前存儲過程以外的環境中,關鍵字out位于參數名稱之后。
存儲過程的參數前面的IN參數的值都是在調用存儲過程時傳入的,實際上,Oracle支持在聲明IN參數的同時給其初始化默認值,這樣在存儲過程調用時,如果沒有向IN參數傳入值,則存儲過程可以使用默認值進行操作。IN參數的默認值函數本講大綱:1、創建函數
2、調用函數
3、刪除函數
創建函數create[orreplace]functionfun_name[(parameter1[,parameter2]…)returndata_typeis[inner_variable]beginplsql_sentence;[exception][dowith_sentences;]end[fun_name];由于函數有返回值,所以在調用函數時,必須使用一個變量來保存函數的返回值,這樣函數和這個變量就組成了一個賦值表達式。
調用函數觸發器本講大綱:1、觸發器簡介
2、語句級觸發器
3、行級別觸發器
4、替換觸發器
5、用戶事件觸發器
觸發器簡介語法格式如下:create[orreplace]triggertri_name[before|after|insteadof]tri_eventontable_name|view_name|user_name|db_name[foreachrow[whentri_condition]beginplsql_sentences;endtri_name;
語句級觸發器,顧名思義,就是針對一條DML語句而引起的觸發器執行。在語句級觸發器中,不使用foreachrow子句,也就是說無論數據操作影響多少行,觸發器都只會執行一次。
語句級觸發器
不言而喻,行級觸發器會針對DML操作所影響的每一行數據都執行一次觸發器。創建這種觸發器時,必須在語法中使用foreachfor這個選項。使用行級觸發器的一個典型應用就是給數據表生成主鍵值,下面就來講解這個典型應用的實現過程。行級別觸發器
替換觸發器——即insteadof觸發器,它的“觸發時機”關鍵字是insteadof,而不是before或after。與其它類型觸發器不同是,替換觸發器定義在視圖(一種數據庫對象,在后面章節中會講解到)上的,而不是定義在表上。由于視圖是由多個基表連接組成的邏輯結構,所以一般不允許用戶進行DML操作(如insert、update、delete等操作),這樣當用戶為視圖編寫“替換觸發器”后,用戶對視圖的DML操作實際上就變成了執行觸發器中的PL/SQL語句塊,這樣就可以通過在“替換觸發器”中編寫適當的代碼對構成視圖的各個基表進行操作。替換觸發器
用戶事件觸發器是因進行DDL操作或用戶登錄、退出等操作而引起運行的一種觸發器,引起該類型觸發器運行的常見用戶事件包括:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、RENAME、TRUNCATE、SUSPEND、LOGON和LOGOFF等。用戶事件觸發器程序包本講大綱:1、程序包的規范2、程序包的主體程序包的規范該“規范”用于規定在程序包中可以使用哪些變量、類型、游標和子程序(指各種命名的PL/SQL塊),需要注意的是:程序包一定要在“包主體”之前被創建,其語法格式如下:create[orreplace]packagepack_nameis[declare_variable];[declare_type];[declare_cursor];[declare_function];[declare_procedure];end[pack_name];
與創建“規范”不同的是,創建“程序包主體”使用CREATEPACKAGEBODY語句,而不是CREATEPACKAGE,這一點需要讀者注意,創建程序包主體的代碼如下:create[orreplace]packagebodypack_nameis[inner_variable][cursor_body][function_title]{beginfun_plsql;[exception][dowith_sentences;]end[fun_name]}[procedure_title]{beginpro_plsql;[exception][dowith_sentences;]end[pro_name]}…end[pack_name];程序包的主體管理控制文件本講大綱:1、簡介控制文件
2、控制文件的多路復用
3、創建控制文件4、備份和恢復控制文件
5、刪除控制文件
6、查詢控制文件的信息
簡介控制文件
在Oracle數據庫中,控制文件是一個很小(大小一般在10MB范圍內)的二進制文件,含有數據庫的結構信息,包括數據文件和日志文件的信息。可以將控制文件理解為物理數據庫的一個元數據存儲庫。控制文件在數據庫創建時被自動創建,并在數據庫發生物理變化時更新。控制文件被不斷更新,并且在任何時候都要保證控制文件是可用的。只有Oracle進程才能夠安全地更新控制文件的內容,所以,任何時候都不要試圖手動編輯控制文件。
(1)及時備份控制文件Oracle數據庫的控制文件是在創建數據庫時自動創建的,一般情況下,控制文件至少有一個副本。(2)保護控制文件一旦控制文件被損壞,數據庫便無法順利啟動,而且修復也非常困難。也因為如此,控制文件的管理與維護工作顯得格外重要。
為了提高數據庫的安全性,至少要為數據庫建立兩個控制文件,并且這兩個控制文件最好分別保存在不同的磁盤中,這樣就可以避免產生由于某個磁盤故障而無法啟動數據庫的危險,該管理策略被稱為多路復用控制文件。通俗地說,多路復用控制文件是指在系統不同的位置上同時存放多個控制文件的副本,在這種情況下,如果多路復用控制文件中的某個磁盤發生物理損壞導致其所包含的控制文件損壞,數據庫將被關閉(在數據庫實例啟動的情況下),此時就可以利用另一個磁盤中保存的控制文件來恢復被損壞的控制文件,然后再重新啟動數據庫,達到保護控制文件的目的。
1.更改CONTROL_FILES參數SQL>altersystemsetcontrol_files=2'E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',3'E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL',4'D:\OracleFiles\ControlFiles\CONTROL03.CTL'5scope=spfile;2.復制控制文件控制文件的多路復用手工創建控制文件使用CREATECONTROLFILE語句,其語法格式如下。createcontrolfilereusedatabasedb_namelogfilegroup1redofiles_list1group2redofiles_list2group3redofiles_list3...datafiledatafile1datafile2datafile3…maxlogfilesmax_value1maxlogmembersmax_value2maxinstancesmax_value3maxdatafilesmax_value4noresetlogs|resetlogsarchivelog|noarchivelog;創建控制文件1.備份控制文件備份控制文件需要使用到ALTERDATABASEBACKUPCONTROLFILE語句。有兩種備份方式:一種是備份為二進制文件,另一種是備份為腳本文件。2.恢復控制文件當控制文件執行備份后,即使發生了磁盤物理損壞,只需要在初始化文件中重新設置CONTROL_FILES參數的值,使它指向備份的控制文件,即可重新啟動數據庫。備份和恢復控制文件
如果控制文件的位置不在適合時,可以從數據庫中刪除控制文件,其操作過程如下。(1)關閉數據庫(shutdown)。(2)編輯初始化參數CONTROL_FILES,清除掉打算要刪除的控制文件的名稱。(3)重新啟動數據庫(startup)。刪除控制文件
控制文件是一個二進制文件,其中被分隔成許多部分,分別記錄各種類型的信息。每一類信息成為一個記錄文檔段。控制文件的大小在創建時即被確定,其中各個記錄文檔段大小也是固定的。例如,在創建數據庫時通過MAXLOGFILES子句設定數據庫中最多的重做日志文件數量,那么在控制文件中就會為LOGFILE記錄文檔分配相應的存儲空間。
查詢控制文件的信息字典視圖說明V$CONTROLFILE包含所有控制文件的名稱和狀態信息V$CONTROLFILE_RECORD_SECTION包含控制文件中各個記錄文檔段的信息V$PARAMETER包含了系統的所有初始化參數,從中可以查詢參數CONTROL_FILES值管理重做日志文件本講大綱:1、重做日志文件概述
2、增加日志組及其成員
3、刪除重做日志
4、更改重做日志的位置或名稱
5、查看重做日志信息
重做日志文件概述1.日志文件的內容及數據恢復重做日志文件由重做記錄組成,重做記錄又稱為重做條目,它由一組變更向量組成。每個變更向量都記錄了數據庫中某個數據塊所做的修改。2.寫入重做日志文件在Oracle中,用戶對數據庫所做的修改首先被保存在內存沖,這樣可以提高數據庫的性能,因為對內存中的數據進行操作要比對磁盤中的數據進行操作快的多。
1.添加新的重做日志文件組在Oracle數據庫的日常管理中,為了防止后臺進程LGWR等待寫入日志組,數據庫管理員必須選擇合適的日志組個數。增加重做日志文件組可以使用ALTERDATABASEADDLOGFILE語句。2.創建日志成員文件如果某個日志組中的所有日志成員都被損壞了,那么當后臺進程LGWR切換到該日志組時,Oracle會停止工作,并對該數據庫執行不完全恢復,為此數據庫管理員需要向該日志組中添加一個或多個日志成員。為重做日志組添加新的成員,需要使用ALTERDATABASEADDLOGMEMBER語句。增加日志組及其成員1.刪除日志成員要刪除一個日志成員文件,可以使用“ALTERDATABASEDROPLOGFILEMEMBER”語句。2.刪除日志文件組如果某個日志文件組不再需要使用,可以將整個日志組刪除;或者當日志組大小不合適時,由于已經存在的日志組的大小不能改變,就需要重新建立日志組,在重新建立日志組之前,就需要刪除大小不合適的原日志組。刪除一個日志組時,其中的成員文件也將被刪除。刪除重做日志在重做日志文件創建后,有時候可能需要改變它們的名稱或位置。比如,某一個日志文件最初被放置在D盤上,由于D盤的空間并不足夠大,隨著應用系統業務量的不斷增加,D盤經常發生剩余空間不足的情況,這時候數據庫管理員就需要把D盤上的日志文件移動到其它大容量的磁盤分區中,針對這種情況,我們來看一下它的具體實現步驟。更改重做日志的位置或名稱
對于數據庫管理員而言,經常查看日志文件是其一項必要的工作內容,用以了解數據庫的運行情況。要了解Oracle數據庫的日志文件信息,可以查詢如下表所示的三個常用數據字典視圖。
查看重做日志信息字典視圖說明V$LOG顯示控制文件中的日志文件信息V$LOGFILE日志組合日志成員信息V$LOG_HISTORY日志歷史信息管理歸檔日志文件本講大綱:1、日志模式模式分類2、管理歸檔操作3、設置歸檔文件位置4、查看歸檔日志信息日志模式模式分類雖然歸檔日志文件可以保存重做日志文件中即將被覆蓋的記錄,但它并不是總起作用的,這樣要看Oracle數據庫所設置的日志模式,通常Oracle有兩種日志模式:第一種是非歸檔日志模式(NOARCHIVELOG),第二種是歸檔日志模式(ARCHIVELOG)。在非歸檔日志模式下,原日志文件的內容會被新的日志內容所覆蓋;在歸檔日志模式下,Oracle會首先對原日志文件進行歸檔存儲,且在歸檔未完成之前不允許覆蓋原有日志。默認情況下,Oracle數據庫處于非歸檔日志模式,這樣重做日志文件中被覆蓋掉的日志記錄就不會被寫入到歸檔日志文件中。根據Oracle數據庫對應的應用系統的要求,用戶可以把數據庫的日志模式切換到歸檔模式,反之亦可操作。要實現數據庫在歸檔模式與非歸檔模式之間進行切換,可以使用ALTERDATABASEARCHIVELOG或NOARCHIVELOG語句。管理歸檔操作
歸檔日志文件保存的位置稱為歸檔目標,用戶可以為數據庫設置多個歸檔目標,與設置控制文件和重做日志文件一樣,不同的歸檔目標最好位于不同的磁盤中,以緩解歸檔操作時磁盤的I/O瓶頸。
歸檔目標在初始化參數LOG_ARCHIVE_DEST_n中進行設置,其中n為1到10的整數,即可以為數據庫指定1到10個歸檔目標。在進行歸檔時,Oracle會將重做日志文件組以相同的方式歸檔到每一個歸檔目標中。在設置歸檔目標時,可以指定本地機器作為歸檔目標(LOCATION),也可以選擇遠程服務器作為歸檔目標(SERVER)。設置歸檔文件位置
查看歸檔日志信息主要有兩種方法:一種是使用數據字典和動態性能視圖;另一種是使用ARCHIVELOGLIST命令,下面分別進行講解。(1)使用數據字典和動態性能視圖(2)使用ARCHIVELOGLIST命令在SQL*Plus環境中,使用ARCHIVELOGLIST命令可以顯示當前數據庫的歸檔信息。查看歸檔日志信息Oracle磁盤空間管理中的最高邏輯層是表空間(TABLESPACE),它的下一層是段(SEGMENT),并且一個段只能駐留在一個表空間內。段的下一層就是盤區,一個或多個盤區(EXTENT)可以組成一個段,并且每個盤區只能駐留在一個數據文件中。如果一個段跨越多個數據文件,它就只能由多個駐留在不同數據文件中的盤區構成。盤區的下一層就是數據塊,它也是磁盤空間管理中邏輯劃分的最底層,一組連續的數據塊可以組成一個盤區。下圖展示了數據庫、表空間、數據文件、段、盤區、數據塊及操作系統塊之間的相互關系。表空間與數據文件的關系Oracle11g的默認表空間本講大綱:1、SYSTEM表空間2、SYSAUX表空間SYSTEM表空間
Oracle數據庫的每個版本都使用SYSTEM表空間存放內部數據和數據字典,SYSTEM表空間主要存放SYS用戶的各個對象和其他用戶的少量對象。用戶可以從DBA_SEGMENTS數據字典中查詢到某個表空間所存放的數據對象及其類型(如,索引、表、簇等)和擁有者。
SYSTEM表空間主要用于存放Oracle系統內部的數據字典,而SYSAUX表空間充當SYSTEM的輔助表空間,主要用于存儲除數據字典以外的其他數據對象,它在一定程度上降低了SYSTEM表空間的負荷。SYSAUX表空間創建表空間本講大綱:1、創建表空間的語法
2、通過本地化管理方式創建表空間
3、通過段空間管理方式創建表空間
4、創建非標準塊表空間
5、建立大文件表空間
4、創建非標準塊表空間
5、建立大文件表空間
3、通過段空間管理方式創建表空間
4、創建非標準塊表空間
5、建立大文件表空間
2、通過本地化管理方式創建表空間
3、通過段空間管理方式創建表空間
4、創建非標準塊表空間
5、建立大文件表空間
1、創建表空間的語法
2、通過本地化管理方式創建表空間
3、通過段空間管理方式創建表空間
4、創建非標準塊表空間
5、建立大文件表空間
創建表空間的語法創建表空間的語法如下:CREATE[SMALLFILE/BIGFILE]TABLESPACEtablespace_nameDATAFILE‘/path/filename’SIZEnum[k/m]REUSE[,’/path/filename’SIZEnum[k/m]REUSE][,…][AUTOEXTEND[ON|OFF]NEXTnum[k/m][MAXSIZE[UNLIMITED|num[k/m]]]][MININUMEXTENTnum[k/m]][DEFAULTSTORAGEstorage][ONLINE|OFFLINE][LOGGING|NOLOGGING][PERMANENT|TEMPORARY][EXTENTMANAGEMENTDICTIONARY|LOCAL[AUTOALLOCATE|UNIFORMSIZEnum[k/m]]]]本地化表空間管理使用位圖跟蹤表空間所對應的數據文件的自由空間和塊的使用狀態,位圖中的每個單元對應一個塊或一組塊。當分配或釋放一個擴展時,Oracle會改變位圖的值以指示該快的狀態。這些位圖值的改變不會產生回滾信息,因為它們不更新數據字典的任何表。
通過本地化管理方式創建表空間1.手工段空間管理方式
手工段空間管理方式是為了往后兼容而保留的,它使用自由塊列表和PCT_FREE與PCT_USED參數來標識可供插入操作使用的數據塊。
在每個INSERT或UPDATE操作后,數據庫都會比較該數據塊中的剩余自由空間與該段的PCT_FREE設置。如果數據塊的剩余自由空間少于PCT_FREE自由空間(也就是說剩余空間已經進入系統的下限設置),則數據庫就會從自由塊列表上將其取下,不再對其進行插入操作。剩余的空余空間保留給可能會增大該數據塊中行大小的UPDATE操作。2.自動段空間管理方式如果采用自動段空間管理方式,那么數據庫會使用位圖而不是自由列表來標識哪些數據塊可以用于插入操作,哪些數據塊需要從自由塊列表上將其取下。此時,表空間段的PCT_FREE和PCT_USED參數會被自動忽略。通過段空間管理方式創建表空間
在Oracle數據庫中,通常的塊大小為8192字節,即8KB,但Oracle11g允許創建塊大小與基本塊不同的表空間,塊大小可由創建表空間時的blocksize參數指定,這樣有利于存儲不同大小的對象,但用戶需要注意以下三點:(1)表空間的非標準塊的大小為基本塊的倍數。比如,大小為16KB,64KB,128KB。(2)Oracle11g通常使用SGA自動共享內存管理,因此需要設置初始化參數db_16k_cache_size=16K。(3)這種塊較大的表空間通常用來存放大對象(LOB)類型。創建非標準塊表空間
從Oracle11g版本開始,引進了一個新的表空間類型——大文件(BIGFILE)。與以前版本的最多可由1022個文件組成的表空間不同;大文件表空間存放在一個單一的數據文件中,并且它需要更大的磁盤容量來存放數據;大文件表空間可以根據選擇的塊的大小變化,從32TB增至128TB。
大文件表空間是為超大型數據庫而設計的。當一個超大型數據庫具有上千個讀/寫數據文件時,必須更新數據文件頭部(比如檢查點)的操作可能會花費相當長的時間。如果降低數據文件的數量,那么,這些操作完成起來就可能會快的多。創建一個大文件表空間,只需要在CREATE語句中使用BIGFILE關鍵字即可。建立大文件表空間維護表空間與數據文件本講大綱:1、設置默認表空間2、更改表空間的狀態3、重命名表空間4、刪除表空間5、維護表空間中的數據文件設置默認表空間
更改默認臨時表空間需要使用ALTERDATABASEDEFAULTTEMPRORYTABLESPACE語句,更改默認永久表空間需要使用ALTERDATABASEDEFAULTTABLESPACE語句。更改表空間的狀態表空間有只讀和可讀寫兩種狀態,若設置某個表空間為只讀狀態,則用戶就不能夠對該表空間中的數據進行DML操作(INSERT、UPDATE、DELETE),但對某些對象的刪除操作還是可以進行的,比如,索引和目錄就可以被刪除掉;若設置某個表空間為可讀寫狀態,則用戶就可以對表空間中的數據進行任何正常的操作,這也是表空間的默認狀態。重命名表空間
在Oracle11g以前的版本中,表空間無法重命名,但Oracle11g提供了對表空間進行重命名的新功能,這對于一般的管理和移植來說是非常方便的。但要注意的是:數據庫管理員只能對普通的表空間進行更名,不能夠對SYSTEM和SYSAUX表空間進行重命名,也不能對已經處于OFFLINE狀態的表空間進行重命名。命名表空間需要使用ALTERTABLESPACE…RENAMETO語句。刪除表空間當Oracle系統采用OracleManagedFiles方式管理文件時,刪除某
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無償商業合作協議書
- 樓上漏水調解協議書
- 服裝箱包轉讓協議書
- 液體裝卸合同協議書
- 樹枝買賣合同協議書
- 打胎男方賠償協議書
- 舊衣回收代理協議書
- 景區寵物看管協議書
- 泉州房產認購協議書
- 執紀審查醫療協議書
- 留置導尿法操作評分標準
- 圖集04S206自動噴水與水噴霧滅火設施安裝
- IQC來料不合格品處理流程管理規定
- 2023年拍賣師考試真題模擬匯編(共469題)
- MOOC 引領世界的中國乒乓-西南交通大學 中國大學慕課答案
- 低碳示范區評價技術規范低碳景區
- 語法填空謂語和非謂語動詞解題技巧課件(共16張)
- 人教版七年級上冊數學《整式的加減》單元作業設計
- 咖啡文化與飲品調制智慧樹知到期末考試答案2024年
- (2024年)勞動法課件勞務派遣
- 兒童支氣管哮喘共患病診治專家共識
評論
0/150
提交評論