版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Oracle 10g數(shù)據(jù)庫基礎(chǔ)知識一、Oracle數(shù)據(jù)庫簡介數(shù)據(jù)庫技術(shù)是20世紀(jì)60年代后期產(chǎn)生并發(fā)展起來的,是信息技 術(shù)中發(fā)展最快的領(lǐng)域之一。按照數(shù)據(jù)模型的不同,可以把數(shù)據(jù)庫 系統(tǒng)劃分為層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫和面向?qū)ο髷?shù) 據(jù)庫等。Oracle是關(guān)系數(shù)據(jù)庫系統(tǒng)的杰出代表和領(lǐng)跑者。Oracle 數(shù)據(jù)庫管理系統(tǒng)的發(fā)展過程是一個不斷創(chuàng)新的過程。數(shù)據(jù)庫領(lǐng)域的Oracle代表兩個含義:一個是 IT界著名的Oracle(甲骨文)公司,另一個就是甲骨文公司的產(chǎn)品 Oracle數(shù)據(jù) 庫管理系統(tǒng)的簡稱。目前,Oracle產(chǎn)品覆蓋了大、中、小型機(jī)等 幾十種機(jī)型,Oracle數(shù)據(jù)庫管理系統(tǒng)已成為世界上使
2、用最廣泛的 關(guān)系數(shù)據(jù)庫系統(tǒng)之一,成為這一領(lǐng)域的領(lǐng)導(dǎo)者與標(biāo)準(zhǔn)制訂者。Oracle數(shù)據(jù)庫產(chǎn)品一直占據(jù)著數(shù)據(jù)庫市場龍頭老大的地位,遠(yuǎn)遠(yuǎn) 領(lǐng)先于其他公司。Oracle 10g是Oracle公司為迎接“網(wǎng)格計算”時代的來臨而提 供的數(shù)據(jù)庫解決方案。2003年9月8日,Oracle公司總裁拉里埃 里森在舊金山 Oracle用戶大會上宣布了全球首個企業(yè)網(wǎng)格計算 中間件Oracle數(shù)據(jù)庫10g。Oracle從“i”到“g”的演進(jìn):網(wǎng)格是建立在Internet 和 Web 技術(shù)和分布計算技術(shù)上的,軟硬件一體化的新一代網(wǎng)絡(luò)計算的基 礎(chǔ)設(shè)施,它采用開放、標(biāo)準(zhǔn)的協(xié)議,通過對大規(guī)模分散資源的有 效共享,為動態(tài)參與的、由
3、多機(jī)構(gòu)所形成的虛擬組織(virtualorganization , VO)協(xié)同完成某類應(yīng)用,提供可擴(kuò)展的、安全的、 一致的、不同等級質(zhì)量的服務(wù)。二、Oracle 10g 的體系結(jié)構(gòu)數(shù)據(jù)庫的體系結(jié)構(gòu)是從某一角度來分析與考察數(shù)據(jù)庫的組成、工作流 程與原理以及數(shù)據(jù)在數(shù)據(jù)庫中的組織與管理機(jī)制。 Oracle系統(tǒng)體系結(jié)構(gòu)是整個Oracle服務(wù)器系統(tǒng)的框架,是管理和應(yīng)用Oracle數(shù)據(jù)服 務(wù)器的基礎(chǔ)和核心。Oracle系統(tǒng)體系結(jié)構(gòu)由兩部分組成:存儲和實 例。存儲結(jié)構(gòu)包括邏輯結(jié)構(gòu)、物理結(jié)構(gòu)。實例是維系物理結(jié)構(gòu)和邏輯 結(jié)構(gòu)的核心。rocessInstanceServerrocessPGAShared pool
4、LibrarycacheData diet,cacheSGAData buffercacheRedo logbufferSMON;( DBWO)(PMON) CKPTX LGWRjtothersParameter ;file PPassword file 2.1 存儲結(jié)構(gòu)DataControlRedofiles files log filesDatabaseArchivedlog filesORACL改據(jù)庫的存儲結(jié)構(gòu)分為邏輯存儲結(jié)構(gòu)和物理存儲結(jié)構(gòu)。邏輯 存儲結(jié)構(gòu)與操作系統(tǒng)平臺無關(guān);物理存儲結(jié)構(gòu)與操作系統(tǒng)平臺有關(guān)。 從物理上看,數(shù)據(jù)庫是由控制文件、數(shù)據(jù)文件、重做日志文件、初始 化參數(shù)文件等組成的
5、;從邏輯上看,數(shù)據(jù)庫是由表空間組成的。表空 間是最大的邏輯存儲單位,塊是最小的邏輯單位,邏輯存儲結(jié)構(gòu)中的 塊對應(yīng)于操作系統(tǒng)中的塊。2.1.1 邏輯存儲結(jié)構(gòu)許多初始化參數(shù)都是針對邏輯存儲結(jié)構(gòu)來定義的邏輯存儲結(jié)構(gòu)包括表空間、段、區(qū)、塊。邏輯存儲結(jié)構(gòu)之間的關(guān) 系是:多個塊組成區(qū),多個區(qū)組成段、多個段組成表空間、多個 表空間組成邏輯數(shù)據(jù)庫。一個區(qū)只能存在一個數(shù)據(jù)文件中,一個段中的各個區(qū)可以分別在 多個數(shù)據(jù)文件中。組成區(qū)的塊是連續(xù)的。2.1.1,1 表空間表空間是最大的邏輯單位,一個數(shù)據(jù)庫由多個表空間組成,一個表 空間可以包含多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能屬于一個表空間。ORACL由動創(chuàng)建的表空間包括:
6、SYSTE陳統(tǒng)表空間、SYSAUXt助系 統(tǒng)表空間、SYSAU鴻甫助系統(tǒng)表空間、TEMP臨時表空間、UNDOTBS1 重做表空間、USERSI戶表空間等。當(dāng)SYSTE限空間被創(chuàng)建為一個 本地管理的表空間時,TEM誄空間就是必不可少的,否則他是可選 的。SYTEMF口 SYSAU案空間值存放系統(tǒng)信息,不存放非系統(tǒng)信息。2.1,1,2 段段用于存儲表空間中某一個特定的、具有獨(dú)立存儲結(jié)構(gòu)的的數(shù) 據(jù)庫對象的數(shù)據(jù),它由一個或多個連續(xù)的區(qū)組成。ORACL嚀可用的段類型:TABLE表段、TABLE PARTITION分 區(qū)段、INDEX索引段、INDEX PARTITION 引分區(qū)段、CLUSTER 簇段、
7、ROLLBACK退段、DETERRED ROLLBAC遲回退段、UN DO®銷段、TEMPORARW段、CACH高速緩存段、LOBX進(jìn)制 大對象段、LOBINDEX1進(jìn)制大對象索引段段的增大過程是通過增加區(qū)的個數(shù)而實現(xiàn)的(每次增加一個區(qū))。每個區(qū)的大小是塊的整數(shù)倍。(1)表段表段存儲表的所有數(shù)據(jù)。當(dāng)用戶創(chuàng)建表時,就會在該用戶的默認(rèn) 表空間中為該表分配一個與表名相同的表段,以便將來存儲該表 的所有數(shù)據(jù)。表分區(qū)段表分區(qū)段用于存儲分區(qū)表的所有數(shù)據(jù)。當(dāng)用戶創(chuàng)建分區(qū)表時,就 會在該用戶的默認(rèn)表空間中為該表的每個分區(qū)分配一個表分區(qū) 段。通過將一個達(dá)標(biāo)的數(shù)據(jù)分散到不同的表分區(qū)段中,就能降低I/O次
8、數(shù),提高性能。索引段索引段存儲索引的所有數(shù)據(jù)。當(dāng)用戶用 CREATE INDE浩句創(chuàng)建索 引,或在定義約束而自動創(chuàng)建索引時,就會在該用戶的默認(rèn)表空 間中為該索引分配一個與索引名相同的索引段。(4)索引分區(qū)段如果為分區(qū)表創(chuàng)建分區(qū)索引,則會為每個區(qū)分區(qū)索引分配一個索 引分區(qū)段,其功能與表分區(qū)段相同。(5)臨時段臨時段存儲排序所產(chǎn)生的臨時數(shù)據(jù)。臨時數(shù)據(jù)首先會被暫存到排 序區(qū)(屬于PGA區(qū))中,當(dāng)排序區(qū)不足以暫存這些臨時數(shù)據(jù)時,則 會在該用戶的臨時表空間中自動創(chuàng)建一個臨時段,用于暫存這些 臨時數(shù)據(jù),排序結(jié)束時,臨時段會自動消除。執(zhí)行以下操作時會 產(chǎn)生臨時數(shù)據(jù):CREATE INDEX,SELECT.O
9、RDER BY,SELECTGROU P BY,SELECT DISTINCT.,SELECT.UNION,SELECT.INTERSEC T,SELECT.MINUS,ANALYZ前令。在 ORACLED 每個用戶者B有一 個用戶分配臨時段的臨時表空間。臨時表空間一般通用,所有的 用戶的默認(rèn)臨時表空間都是 TEMP1空間。也可以創(chuàng)建另外的臨時 表空間,然后在創(chuàng)建用戶時或創(chuàng)建用戶之后,指定其臨時表空間。建議使用專用的臨時表空間作為用戶的臨時表空間。(6)回退段回退段存儲數(shù)據(jù)修改之前的位置和值。利用這些信息,可以回退 未提交的事務(wù),維護(hù)數(shù)據(jù)庫的讀一致性,并能從例程的崩潰中進(jìn) 行恢復(fù)?;赝硕蔚脑?/p>
10、與實現(xiàn)是一項十分復(fù)雜的技術(shù),已經(jīng)面臨淘汰。自O(shè)RACLE 9I來,增加了 UNDO銷或還原)表空間,并增 加了自動撤銷管理功能來代替回退段的功能,即用撤銷表空間代 替回退段,但功能相同。建議使用自動撤銷管理功能中的撤銷段, 不要使用手動撤銷管理的回退功能。(7)撤銷段撤銷表空間用于分配撤銷段。撤銷段也用于存儲數(shù)據(jù)修改之前的位置和值。默認(rèn)的撤銷表空間由初始化參數(shù) UNDO_TABLESPACE 定的。撤銷表空間是循環(huán)使用的,已提交的撤銷記錄可能被覆蓋, 但可以用初始化參數(shù)undo_retentiON撤銷記錄在撤銷段中的 保留時間。即使在ORACL中設(shè)置初始化參數(shù)UNDO_MANAGEMENT A
11、UTO即啟動自動撤銷管理功能,也會在 SYSTEM1空間中保留一 個SYSTE膽退段,以便存放和處理由 ORACL原統(tǒng)事務(wù)產(chǎn)生的撤 銷數(shù)據(jù)。在創(chuàng)建數(shù)據(jù)庫后,運(yùn)行 SQL.BSQ卻本時會自動創(chuàng)建SYST EM回退段,DBA不需要對它進(jìn)行任何的維護(hù)和管理,也不能刪除 它。(8)二進(jìn)制大對象段二進(jìn)制大對象段用于存儲 LOB數(shù)據(jù)類型列中的數(shù)據(jù),如:文檔, 圖像,音頻,視頻等。創(chuàng)建表時,可以定義 LOBB據(jù)類型的列,O RACL會為此自動分配對應(yīng)的二進(jìn)制大對象段。對于 LOBJ來說, 如果數(shù)據(jù)長度少于40000字節(jié),則與其他列的數(shù)據(jù)會一起存放在 表段中;否則數(shù)據(jù)就會被存儲到二進(jìn)制大對象段中。2.1.1.
12、3 區(qū)區(qū)是由物理上連續(xù)存放的塊構(gòu)成。由一個或多個區(qū)組成段。一個區(qū) 只能屬于一個數(shù)據(jù)文件。當(dāng)在數(shù)據(jù)庫中創(chuàng)建帶有實際存儲結(jié)構(gòu)的方 案對象時,ORACLEI為該方案對象分配若干個區(qū),以便組成一個對 應(yīng)的段,來為該方案對象提供初始的存儲空間。當(dāng)段中已分配的區(qū) 都寫滿后,ORACL就要在該方案對象所在的表空間中為該段分配下 一個新的空白區(qū),以便容納更多的數(shù)據(jù)。 塊塊是最小的數(shù)據(jù)管理單位。即數(shù)據(jù)管理中輸入輸出的最小單位。 相應(yīng)的,操作系統(tǒng)執(zhí)行輸入輸出操作的最小單位是操作系統(tǒng)塊。 塊的大小是操作系統(tǒng)塊大小的整數(shù)倍。塊大小是一個表空間的屬性。SYSTEM SYSAU族空間具有相同 的標(biāo)準(zhǔn)的塊大小
13、,這個大小是在創(chuàng)建數(shù)據(jù)庫時由DB_BLOCK_SIZE初始化參數(shù)指定的。在創(chuàng)建數(shù)據(jù)庫之后這個初始化參數(shù)值將不能 再改變。在ORACLE 9前,同一個數(shù)據(jù)庫中的所有表空間必須使用相同大小的塊;從ORACLE 9肝始,允許表空間使用各自不同的塊大小, 這個大小是在創(chuàng)建該表空間時用BLOCK integer K子句指定的。如果不適用該子句,則可以使用DB_BLOCK_SIZE始化參數(shù) 指定的塊大小。在使用非標(biāo)準(zhǔn)塊之前,必須先為非標(biāo)準(zhǔn)的塊分配 相應(yīng)的數(shù)據(jù)告訴緩存。2.1.2物理存儲結(jié)構(gòu)數(shù)據(jù)庫的物理存儲文件有:控制文件、數(shù)據(jù)文件、重做日志文件、 密碼文件、參數(shù)文件和歸檔重做日志文件等。邏輯存儲結(jié)構(gòu)只有
14、創(chuàng)建、刪除的操作;而物理存儲結(jié)構(gòu)除了創(chuàng)建、刪除之外,還有 一個最重要的將其移動到另外一個位置的操作。 控制文件控制文件是一個很小的二進(jìn)制文件。在裝載數(shù)據(jù)庫時,ORACLE將讀取控制文件中的信息,以便判斷數(shù)據(jù)庫的狀態(tài),獲得數(shù)據(jù)庫 的物理結(jié)構(gòu)信息及物理文件的使用權(quán)。因此,控制文件對于數(shù)據(jù) 庫的成功裝在,以及其后的打開都是至關(guān)重要的。只有控制文件 正常才能裝載、打開數(shù)據(jù)庫,否則不能。DBA在數(shù)據(jù)庫運(yùn)行的過程中,每當(dāng)出現(xiàn)數(shù)據(jù)庫檢查點(diǎn)(checkpoint)或修改數(shù)據(jù)庫結(jié)構(gòu)之后,ORACL就會修改控制文件的內(nèi)容可以通過OEME具修改控制文件中的部分內(nèi)容,但是不應(yīng)該認(rèn)為 的修改控制文件中的內(nèi)
15、容,否則會破壞控制文件。應(yīng)該定期對數(shù)據(jù)庫的控制文件進(jìn)行備份, 并將備份保存在不同的 硬盤上;另外,處于安全考慮,可以創(chuàng)建多個控制文件,互為鏡 像進(jìn)行復(fù)用。 數(shù)據(jù)文件數(shù)據(jù)文件是實際存儲插入到數(shù)據(jù)庫表中的實際的操作系統(tǒng)文件。數(shù)據(jù)文件的大小與它們所存儲的數(shù)據(jù)量的小小直接相關(guān),會自動增大,但刪除其中的數(shù)據(jù),數(shù)據(jù)文件的大小不會減少,只能使其 有更多的空閑區(qū)。一個表空間在物理上對應(yīng)于若干個數(shù)據(jù)文件,而一個數(shù)據(jù)文件只 能屬于一個表空間。在創(chuàng)建表空間時,ORACL由同時為該表空間創(chuàng)建第一個數(shù)據(jù)文 件。處SYSTEM#空間之外,任何表空間都可以由聯(lián)機(jī)狀態(tài)切換 到脫機(jī)狀態(tài)。當(dāng)表空間進(jìn)入脫機(jī)狀態(tài)時,組
16、成該表空間的數(shù)據(jù)文 件也就進(jìn)入脫機(jī)狀態(tài)了。也可以將表空間中的某一個數(shù)據(jù)文件單 獨(dú)的設(shè)置為脫機(jī)狀態(tài),以便進(jìn)行數(shù)據(jù)庫的備份或恢復(fù)。 正在使用 的聯(lián)機(jī)數(shù)據(jù)文件是不能備份的。 重做日志文件當(dāng)用戶對數(shù)據(jù)庫進(jìn)行修改時,ORACL跌際上是在內(nèi)容中進(jìn)行修 改,過一段時間后,再幾種將內(nèi)存中的修改結(jié)果成批的吸入上面 的數(shù)據(jù)文件中。如果在將內(nèi)存中的修改結(jié)果寫入到數(shù)據(jù)文件之前發(fā)生故障,導(dǎo)致計算機(jī)或數(shù)據(jù)庫崩潰,那么,這些修改結(jié)果就會被遺失。ORACLE是用重做日志文件來隨時保存這些修改結(jié)果的,即ORACLES時將內(nèi)存中的修改結(jié)果保存到重做日志文件中?!半S時”表示在將數(shù)據(jù)修改結(jié)果寫入數(shù)據(jù)文件之前,可能已經(jīng)分
17、好幾次寫入重做日志文件了。因此,即使發(fā)生故障導(dǎo)致數(shù)據(jù)庫崩潰,ORACL他可以利用重做日志文件中的信息來恢復(fù)丟失的數(shù)據(jù)。只要某項操作的重做信息沒有丟失,就可以利用這些重做信息來重現(xiàn)該操 作。因為ORACL星以循環(huán)方式來使用重做日志文件的,所以每個數(shù) 據(jù)庫至少需要2個以上重做日志文件。當(dāng)?shù)谝粋€重做日志文件被 寫滿之后,后臺進(jìn)程LGWRF始寫入第二個重做日志文件。當(dāng)?shù)?二個重做日志文件寫滿后,又開始寫入第一個重做日志文件。當(dāng)循環(huán)使用的重做日志文件比較多、 比較大時,可以記錄的重做 日志就比較多。還可以啟動自動歸檔功能,將即將被覆蓋的重做 日志文件中的內(nèi)容存儲到另外的歸檔文件總, 以便不丟失任何重 做
18、日志,得以恢復(fù)任何數(shù)據(jù)。 參數(shù)文件參數(shù)文件也被稱為初始化參數(shù)文件,用于存儲SGA可選的ORACLE特性和后臺進(jìn)程的配置參數(shù)。從 ORACLE 9肝始,它有2中 類型:文本參數(shù)文件 PFILE和服務(wù)器參數(shù)文件 SPFILE這兩種 參數(shù)文件的作用都相同,可以使用其中之一來配置例程和數(shù)據(jù)庫 選項。文本參數(shù)文件可以使用文本編輯器進(jìn)行編輯;服務(wù)器參數(shù)文件是二進(jìn)制文件,不能直接用文本編輯器進(jìn)行編輯。當(dāng)數(shù)據(jù)庫啟動時,并在創(chuàng)建例程或讀取控制文件之前, 會先讀取 參數(shù)文件,并按期中的參數(shù)進(jìn)行例程的配置。默認(rèn)使用的是SPFILE。 口令文件口令文件是個二進(jìn)制文件,用于驗證特權(quán)用戶。特權(quán)
19、用戶是指具有S YSOPE或SYSDBAO艮的特殊數(shù)據(jù)庫用戶。這些用戶可以啟動例程、 關(guān)閉例程、創(chuàng)建數(shù)據(jù)庫、執(zhí)行備份恢復(fù)等操作。創(chuàng)建ORACL數(shù)據(jù)庫, 默認(rèn)的特權(quán)用戶是 SYS 口令文件的默認(rèn)位置是 %ORACLE_HOME%data base,命令格式為 PWD<SID>.ora 預(yù)警文件預(yù)警文件按時間順序記錄了由服務(wù)器進(jìn)程、后臺進(jìn)程寫入的消息和錯誤。查看預(yù)警文件就可以查看到是否有 ORACL內(nèi)部錯誤、塊損壞 錯誤,以及非默認(rèn)的初始化參數(shù),還可以監(jiān)視特權(quán)用戶的操作,監(jiān) 視數(shù)據(jù)庫的物理結(jié)構(gòu)的變化。預(yù)警文件的位置由初始化參數(shù)background_dump_dest確定。
20、命名格式為 <SID>_alert.log 。 后臺進(jìn)程跟蹤文件后臺進(jìn)程跟蹤文件用來記錄后臺進(jìn)程的警告或錯誤消息。每個后臺 進(jìn)程都有相應(yīng)的跟蹤文件。后臺進(jìn)程跟蹤文件的位置由初始化參數(shù) b ackground_dump_dest 確定。命名格式為 <SID>_<PROCESS>_<SPID>. trc。 服務(wù)器進(jìn)程跟蹤文件該文件用來記錄服務(wù)器進(jìn)行的相關(guān)信息,跟蹤SQL語句,診斷SQL語句性能,做出相應(yīng)的性能調(diào)整規(guī)劃。當(dāng)使用該類型跟蹤文 件來跟蹤SQLg句時,必須先激活SQL!艮蹤。服務(wù)器進(jìn)程跟蹤文 件的位置由初始化參數(shù)u
21、ser_dump_dest來確定。命名格式為<S ID>_ora_<SPID>.trc。激yS SQL跟蹤的辦法是在初始化參數(shù)文件中,或是在啟動會話 時,將參數(shù)sql_trace 設(shè)置成TRUE 歸檔日志文件非活動的重做日志文件的備份。通過使用歸檔日志文件,可以保留 所有歷史重做記錄。只有在歸檔模式下才會生成歸檔日志文件。0 監(jiān)聽程序日志文件、跟蹤文件記錄監(jiān)聽程序的啟動時間、正在監(jiān)聽的端口、正在運(yùn)行在哪臺計算機(jī)上、已經(jīng)建立了哪些連接等信息。其默認(rèn)位置是ORACLE_HOME%N ETWORKlog命名格式為listenerX.log ,其中l(wèi)
22、istenerX 為程序的名稱。2.2 實例(Instance )數(shù)據(jù)庫實例也稱作服務(wù)器,是用來訪問數(shù)據(jù)庫文件集的存儲結(jié)構(gòu) 及后臺進(jìn)程的集合.在更多的情況下,數(shù)據(jù)庫實例也被叫做Oracle服務(wù)(OracleService )。在Oracle服務(wù)沒有被啟動之前,用 戶是無法訪問數(shù)據(jù)庫的。一個數(shù)據(jù)庫可以被多個實例訪問(稱為真正的應(yīng)用群集選項)。決定實例的大小及組成的各種參數(shù)或者存儲在名稱 init.ora 的初 始化文件中,或者隱藏在數(shù)據(jù)庫內(nèi)部的服務(wù)器參數(shù)文件中.通過 spfile 引用該文件,spfile 存儲在spfile.ora 文件中。Oracle體系結(jié)構(gòu)的基本概念實例中實例啟動時讀取初始
23、化文件 , 數(shù)據(jù)庫系統(tǒng)管理員可以修改該文件,對初始化文件的修改只有在 下次啟動時才有效。實例分為兩部分:memory structure(內(nèi)存結(jié)構(gòu))與background process(后臺進(jìn)程);內(nèi)存是用來保存指令代碼和緩存數(shù)據(jù)的。內(nèi)存是用來保存指令代 碼和緩存數(shù)據(jù)的。要運(yùn)行一個軟件程序,必須先要在內(nèi)存中為其 指令代碼和緩存數(shù)據(jù)申請,劃分出一個區(qū)域,再將其從磁盤上讀 入,放置到內(nèi)存,然后才能執(zhí)行。內(nèi)存結(jié)構(gòu)是oracle體系結(jié)構(gòu)中最為重要的一部分,內(nèi)存也是影響數(shù)據(jù)庫性能的第一因素。內(nèi)存 的大小,速度直接影響數(shù)據(jù)庫的運(yùn)行速度。內(nèi)存結(jié)構(gòu)分為兩部分:SGA(System Global Area)區(qū)
24、與PGA(Progra m Global Area)區(qū)。2.2.1 系統(tǒng)全局區(qū)(SGA使用內(nèi)存最多的是sga,同時也是影響數(shù)據(jù)庫性能的最大參數(shù)。sga是是一塊用于加載數(shù)據(jù)、對象并保存運(yùn)行狀態(tài)和數(shù)據(jù)庫控制信息的一塊內(nèi)存區(qū)域,在數(shù)據(jù)庫實例啟動時分配,當(dāng)實例關(guān)閉時釋 放,每個實例都用于自己的sga區(qū)。當(dāng)數(shù)據(jù)庫啟動到nomount狀態(tài)時,sga區(qū)已經(jīng)分配,同時啟動后臺 進(jìn)程。 數(shù)據(jù)高速緩存區(qū)據(jù)高速緩存保存的是最近從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊,其中的數(shù) 據(jù)可以被所有用戶共享.數(shù)據(jù)高速緩存由許多大小相等的緩存塊 組成,這些數(shù)據(jù)可能是被修改過,也可能未經(jīng)修改。(buffer ca che)主要由
25、2 個參數(shù)決定 db_block_buffers 和 db_block_size, 他們相乘就是buffer cache 的數(shù)值。oracle為buffer cache 提供了多緩沖池技術(shù),根據(jù)不同數(shù)據(jù)的同 步訪問方式,將 buffer cache 分為 default , keep, recycle 池 3 部分。對于經(jīng)常使用的數(shù)據(jù),可以在建表時就指定其存在keep池中;對于經(jīng)常一次性讀取使用的數(shù)據(jù),可以將其存放在recycle池中;keep池中的數(shù)據(jù)傾向于一直保存,recycle池中的數(shù)據(jù)傾 向于即時老化,而default池則存放于指定存儲池的數(shù)據(jù),按照l ru算法管理。默認(rèn)情況下,所有表
26、都使用 default池,它的大小 就是數(shù)據(jù)緩存區(qū)buffer cache的大小,由初始化參數(shù)db_cache_size決定。如果在創(chuàng)建數(shù)據(jù)表或修改數(shù)據(jù)表時,指定 storage(bu ffer_pool keep) 或者 stroage(buffer_pool recycle) 語句,就設(shè) 置了這張表使用keep或者recycle緩存區(qū)。這兩個緩沖區(qū)大小參 數(shù)是:db_keep_chche_size 和 db_recycle_cache_size 來決定。各緩沖池的設(shè)置,可以通過查詢v$buffer_pool得到:select id, name,block_size,current_size
27、,target_size from v$buffer_p ool;緩存塊分三種:1、臟緩存塊:臟緩存塊中保存的是已經(jīng)被修改過的緩存塊2、空閑緩存塊:等待被寫入數(shù)據(jù)3、命中緩存塊:保存的是最近正在被訪問的緩存塊。命中緩存塊將 始終被保留的數(shù)據(jù)高速緩存中,不會被寫入數(shù)據(jù)文件。oracle通過兩個列表來管理上述緩存塊:1、dirty列表保存已經(jīng)被修改但還沒有被寫入數(shù)據(jù)文件的臟緩存塊。2、lru (least recently used)列表保存所有空閑緩存塊,命中緩 存塊,以及還沒有被移入dirty列表中的臟緩存塊??梢詫ry列表 看成一個隊列,當(dāng)數(shù)據(jù)高速緩存中某個緩存塊被訪問后,這個緩存塊就會被
28、移動到lru列表的頭部,而其他緩存塊就會向lru列表的尾部 移動。放在尾部的緩存塊最先被移出lru列表?;玖鞒蹋簅racle在將數(shù)據(jù)文件中的數(shù)據(jù)塊復(fù)制到數(shù)據(jù)高速緩存中之前,必須先在數(shù)據(jù)高速緩存中找到空閑緩存塊以便容納該數(shù)據(jù)塊。所以oracle將從lru列表的尾部開始搜索,知道找到所需要的空閑緩存為止。 在 搜索lru列表時,如果先搜索到的時臟緩存塊,就將其移入dirty列 表中,然后繼續(xù)搜索;如果搜索到的時空閑緩存塊,就將數(shù)據(jù)庫寫入 其中,然后再將該緩存塊移動到lru列表的頭部。如果能夠搜索到足 夠的空閑緩存塊,既能將所有數(shù)據(jù)塊都寫入到對應(yīng)的空閑緩存塊中, 則該搜索寫入過程結(jié)束。如果沒有搜索
29、到足夠的空閑緩存塊,即不能 將所有數(shù)據(jù)塊都寫入到對應(yīng)的空閑緩存塊,則 oracle將先停止lru 列表搜索,激活dbwr進(jìn)程,開始將dirty列表中的臟緩存塊寫入數(shù) 據(jù)文件。已經(jīng)被寫入數(shù)據(jù)文件的臟緩存塊將變成空閑緩存塊,并被放入lru列表中。執(zhí)行完這項工作后,再重新開始搜索,這樣就可以找 到足夠的空閑緩存塊了。 重做日志高速緩存區(qū)當(dāng)使用insert等操作時,oracle都會為這些操作寫成重做記錄。重 做日志高速緩存就是用于存儲重做記錄的緩存。 重做日志并不時直接 寫入磁盤的,而是首先被寫入重做日志高速緩存, 當(dāng)重做日志高速緩 存中的重做記錄達(dá)到一定數(shù)量后,再由lgwr寫入重做日志
30、文件中。當(dāng)出現(xiàn)重做日志文件切換時,由 arch將重做日志文件中的數(shù)據(jù)寫入 歸檔日志文件中,以做備份。參數(shù)為log_buffer ,此參數(shù)為靜態(tài)參 數(shù),open后不能設(shè)置。 共享池保存了最近執(zhí)行的sql語句,plsql程序和數(shù)據(jù)字典信息,是堆s ql語句和plsql程序進(jìn)行語法分析,編譯,執(zhí)行的內(nèi)存區(qū)。它主 要由數(shù)據(jù)字典緩存,庫緩存組成,參數(shù)為shared_pool_size。共享池大小由 shared_pool_size 決定,太小,運(yùn)行 sql語句,pl sql程序占用的時間會長,而影響數(shù)據(jù)庫的性能。2.2.1,3.1數(shù)據(jù)字典緩存在oracle數(shù)據(jù)庫的運(yùn)彳f過程中,oracle
31、會頻繁對數(shù)據(jù)字典中的表, 視圖進(jìn)行訪問,以便確定操作的數(shù)據(jù)庫對象是否存在,是否具有合 適的權(quán)限等信息。為了提高訪問的效率,oracle在共享池的數(shù)據(jù)字 典緩存中保存了最常使用的數(shù)據(jù)字典信息,如數(shù)據(jù)庫用戶的帳戶, 數(shù)據(jù)庫的結(jié)構(gòu)信息等。在數(shù)據(jù)字典緩存中保存的是一條一條的記錄, 而其它緩存區(qū)中保存的是數(shù)據(jù)塊。,2 庫緩存oracle dbms在執(zhí)行用戶進(jìn)程提交的各種 sql語句,plsql程序之 前,先要對其進(jìn)行語法上的解析,對象上的確認(rèn),權(quán)限上的判斷, 操作上的優(yōu)化等一系列操作,并生成執(zhí)行計劃。這一系列操作會 占用一定的系統(tǒng)資源。如果多次執(zhí)行相同sql語句,plsql程序代碼,都要進(jìn)
32、行這一系列 操作的話,就會浪費(fèi)系統(tǒng)資源。庫緩存的目的就是用于保存最近 解析過的sql語句和plsql程序。這樣,oracle在執(zhí)行一條sql 語句,一段plsql程序前,首先在庫緩存中進(jìn)行搜索,查看他們 是否已經(jīng)被解析過。如果有,oracle就利用庫緩存中的解析結(jié)構(gòu) 和執(zhí)行計劃來執(zhí)行,而不必再重復(fù)對它們進(jìn)行解析了。這樣就會明顯提高執(zhí)行速度 大池用于需要大那促的操作提供相對應(yīng)的內(nèi)存空間,以便提高這些操作 的性能。大池是一個可選的內(nèi)存結(jié)構(gòu)。dba可以根據(jù)實際需要來決定 是否再sga區(qū)中創(chuàng)建大池。需要大池的操作:數(shù)據(jù)庫備份和恢復(fù), 具有大量排序操作的sql語句。并行化的數(shù)據(jù)庫操作。如果
33、沒有大 池,上述操作所需的內(nèi)存空間將占據(jù)共享池內(nèi)存。由于這些操作所 占據(jù)的內(nèi)存比較多,會導(dǎo)致影響到共享池的使用效率,這時候,就 應(yīng)該考慮在sga區(qū)中創(chuàng)建大池,在大池中為這些操作分配內(nèi)存。 java 池對java語言的支持,用于存放java代碼,java語句的語法分析表 等。2.2.2 程序全局區(qū)(PGA)程序全局區(qū)(PGA ProgramGlobalArea)是存儲區(qū)中的一個區(qū)域。用 戶進(jìn)程連接到數(shù)據(jù)庫,并創(chuàng)建一個對應(yīng)的會話時,由 oracle為服務(wù) 進(jìn)程分配的,專門用于當(dāng)前用戶會話的內(nèi)存區(qū)。這個內(nèi)存區(qū)是非共 享的,只有服務(wù)進(jìn)程本身才能訪問它自己的 pga區(qū),而sga區(qū)則是 所有
34、服務(wù)進(jìn)程都可以共享的內(nèi)存區(qū)。具體又分成四個區(qū):1、排序區(qū):用于存放排序操作所產(chǎn)生的臨時數(shù)據(jù),它是影響pga區(qū)大小的主要因素,其大小由初始化參數(shù) sort_area_size 定義。2、會話區(qū):保存會話所具有的權(quán)限,角色,性能統(tǒng)計信息。3、游標(biāo)區(qū):當(dāng)運(yùn)行使用游標(biāo)語句時,oracle會在共享池中為該語句 分配上下文區(qū),游標(biāo)實際上是指向該上下文區(qū)的指針。 游標(biāo)區(qū)在打開 游標(biāo)時創(chuàng)建,關(guān)閉游標(biāo)時釋放。因此在編寫使用游標(biāo)的程序時,應(yīng)盡 量避免反復(fù)地打開和關(guān)閉游標(biāo)。4、堆棧區(qū):保存會話中的綁定變量,會話變量以及 sql語句運(yùn)行時 的內(nèi)存結(jié)構(gòu)等信息。2.2.3 后臺進(jìn)程系統(tǒng)為了使性能最佳和協(xié)調(diào)多個用戶,在多進(jìn)
35、程系統(tǒng)中使用一些附加 進(jìn)程,稱為后臺進(jìn)程。這些后臺進(jìn)程存在于操作系統(tǒng)中,在實例啟動 時自動啟動,只要數(shù)據(jù)庫還在運(yùn)行,后臺進(jìn)程一直存在。常用后臺進(jìn)程包括: 數(shù)據(jù)庫寫入進(jìn)程DBWR作用:管理數(shù)據(jù)高速緩存區(qū),以便服務(wù)進(jìn)程總能找到空閑緩存塊,用于保存從數(shù)據(jù)文件中讀取的數(shù)據(jù)塊。在滿足一定條件時,將 dirty 列表 中的最近未被訪問的臟緩存塊成批地寫入數(shù)據(jù)文件,以便獲得更多 的空閑緩存塊。使用lru算法將最近正在使用的緩存塊繼續(xù)保留在lru列表中,以免重新讀取數(shù)據(jù)文件才能獲得這些緩存塊中的數(shù)據(jù)。通過延遲寫來優(yōu)化磁盤讀寫操作。啟動條件:當(dāng)dirty列表中的臟緩存塊達(dá)到一定數(shù)量。當(dāng)服務(wù)進(jìn)程在
36、lru列表 中查找了一定數(shù)量的緩存塊,但還沒有查找到空閑緩存塊。 dbwr進(jìn) 程出現(xiàn)超時,即大約3秒未啟動dbwr進(jìn)程。當(dāng)出現(xiàn)檢查點(diǎn),lgwr 進(jìn)程通知dbwr進(jìn)行寫操作。dbwr進(jìn)程的數(shù)目不應(yīng)該超過系統(tǒng) cpu 的數(shù)目,因為每個處理器同時只能運(yùn)行一個 dbwr進(jìn)程。 日志寫入程式LGWR負(fù)責(zé)管理重做日志高速緩存區(qū)的一個后臺進(jìn)稱,用于將重做記錄從 重做日志高速緩沖區(qū)寫入重做日志文件。 每個例程只有一個lgwr進(jìn) 程。啟動lgwr進(jìn)程的條件:用戶通過commit語句提交當(dāng)前事務(wù)。 重做日志高速緩存被寫滿三分之一。dbwr進(jìn)程需要未檢查點(diǎn)清楚臟 緩存塊,即將臟緩存塊寫入數(shù)據(jù)文件。lg
37、wr進(jìn)程出現(xiàn)超時,即大約3秒未啟動lgwr進(jìn)程。 檢查點(diǎn) CKPT檢查點(diǎn)是一個事件。當(dāng)該時間發(fā)生時,數(shù)據(jù)高速緩存中的臟緩存 塊被寫入數(shù)據(jù)文件,同時oracle將對控制文件和數(shù)據(jù)文件的文件 頭的同步序號進(jìn)行修改,記錄下當(dāng)前數(shù)據(jù)庫的結(jié)構(gòu)和狀態(tài),以保 證數(shù)據(jù)的同步。通常情況下,檢查點(diǎn)發(fā)生在重做日志文件切換時。在執(zhí)行了一個檢查點(diǎn)后,oracle知道所有已提交事務(wù)對數(shù)據(jù)庫所 做的更改已經(jīng)全部被寫入到硬盤中了。此時數(shù)據(jù)庫處于一個完整 狀態(tài)。在發(fā)生數(shù)據(jù)庫崩潰后,只需要將數(shù)據(jù)庫恢復(fù)到一個檢查點(diǎn) 執(zhí)行時刻即可。因此,縮短檢查點(diǎn)執(zhí)行的間隔,可以縮短數(shù)據(jù)庫 恢復(fù)時所需要的時間。其作用:更新控制文件與數(shù)
38、據(jù)文件,使其 同步。出發(fā)dbwr進(jìn)程,使其將臟緩存塊寫入數(shù)據(jù)文件。oracle有3種檢查點(diǎn):數(shù)據(jù)庫檢查點(diǎn):在每一次重做日志文件切 換時,執(zhí)行數(shù)據(jù)庫檢查點(diǎn)。此時dbwr進(jìn)程將數(shù)據(jù)高速緩存中所有 的臟緩存塊寫入數(shù)據(jù)文件中。表空間檢查點(diǎn):在將一個表空間設(shè) 置未脫機(jī)狀態(tài)時,執(zhí)行一個表空間檢查點(diǎn)。此時 dbwr進(jìn)程只會把 數(shù)據(jù)高速緩存中的與該表空間相關(guān)的臟緩存塊寫入數(shù)據(jù)文件。時 間檢查點(diǎn):即每間隔多長時間執(zhí)行一次檢查。 系統(tǒng)監(jiān)視SMON在例程啟動時負(fù)責(zé)對數(shù)據(jù)庫進(jìn)行恢復(fù)。清理不再使用的臨時段。將 各個表空間的空閑碎片合并在一起,使之更容易分配。 進(jìn)程監(jiān)視PMON作用:恢復(fù)中斷或
39、失敗的用戶進(jìn)程,服務(wù)進(jìn)程。清除非正常中斷的 進(jìn)程留下的孤兒會話。回退未提交事務(wù)。釋放進(jìn)程所占用的各種資 源。監(jiān)視服務(wù)進(jìn)程和調(diào)度進(jìn)程,如果它們失敗,則自動重新啟動他 們。 歸檔進(jìn)程ARCH負(fù)責(zé)在重做日志文件切換后將已經(jīng)寫滿的重做日志文件復(fù)制到歸檔日志文件中,以防止循環(huán)寫入重做日志文件時將其覆蓋。(只有數(shù)據(jù) 庫運(yùn)行在歸檔模式下archivelog , arch進(jìn)程才被啟用),要啟動ar ch進(jìn)程,需要將初始化參數(shù) archive_log_start 設(shè)置為true。arch 進(jìn)程啟動后,數(shù)據(jù)庫將具有自動歸檔功能。但即使數(shù)據(jù)庫運(yùn)行在歸檔模式下,如果 archive_log_start參
40、數(shù)設(shè)置為false , arch進(jìn)程也就不會被啟動。這時,當(dāng)重做日志文件全部被寫滿后,數(shù)據(jù)庫將 被掛起,等待dba進(jìn)行手工歸檔。當(dāng)arch進(jìn)程正在歸檔一個重做日 志文件時,任何其他進(jìn)程都不能訪問這個重做日志文件。 恢復(fù)進(jìn)程RECO用于解決分布式數(shù)據(jù)庫中的故障問題。RECOS程試圖訪問存在疑問的分布式事務(wù)的數(shù)據(jù)庫并解析這些事務(wù)。只有在平臺支持DistributedOption(分布式選項)中的 DISTRIBUTED_TRANSACTIONS大于 零時才創(chuàng)建這個進(jìn)程。 封鎖進(jìn)程LCKn當(dāng)采用Oracle并行服務(wù)器選項時,多個LCK(鎖定進(jìn)程)后臺進(jìn)程(命名為LCK0L
41、CK潮于解決內(nèi)部實例的鎖定問題。LCKS程的個數(shù)由GC LCK PROCW決定。2.3 數(shù)據(jù)字典數(shù)據(jù)字典是“信息的信息”,是存儲在數(shù)據(jù)庫中的所有對象信息的知識庫,Oracle通過數(shù)據(jù)字典來管理和展現(xiàn)數(shù)據(jù)庫信息。數(shù)據(jù)字典是一組表和視圖結(jié)構(gòu),存放在 SYSTEM1空間中。數(shù)據(jù)字典分為兩大類:一種為基表,另一種為數(shù)據(jù)字典視圖。Oracle服務(wù)器在數(shù)據(jù)庫創(chuàng)建時自動生成基表。由于基表中所存的數(shù)據(jù) 就像天書一樣,幾乎沒什么人能看懂,因此這些基表很少有人直 接訪問。數(shù)據(jù)字典視圖則是把數(shù)據(jù)字典基表中的信息轉(zhuǎn)換為人們較為容易理解的形式,它們包含了用戶名、用戶的權(quán)限、對象名、約束和審計等方面的信息。2.3.1 O
42、racle 數(shù)據(jù)字典內(nèi)容包括:1、數(shù)據(jù)庫中所有模式對象的信息,如表、視圖、簇、及索引等。2、分配多少空間,當(dāng)前使用了多少空間等。3、列的缺省值。4、約束信息的完整性。5、Oracle用戶的名字。6、用戶及角色被授予的權(quán)限。7、用戶訪問或使用的審計信息。8、其它產(chǎn)生的數(shù)據(jù)庫信息。2.3.2 數(shù)據(jù)字典視圖分類主要包括三大類,它們分別用前綴來區(qū)別,其前綴分別為 USER ALL 和DBA1、USER_*:有關(guān)用戶所擁有的對象的信息,即用戶自己創(chuàng)建的對象 的信息。2、ALL_* :有關(guān)用戶可以訪問的對象的信息,即用戶自己創(chuàng)建的對 象的信息及授權(quán)至PUBLIC的帳戶用戶所擁有的對象的信息。3、DBA_*
43、:有關(guān)整個數(shù)據(jù)庫中對象的信息。這里的*可以為 TABLES INDEXES VIEWS OBJECT等。查看這類數(shù)據(jù)字典視圖的結(jié)構(gòu):desc user_tables;desc all_tables;desc dba_tables;可以看出,這三類數(shù)據(jù)字典視圖的列幾乎是相同的,只是以前綴為ALL和DBAFF始的數(shù)據(jù)字典視圖中比 USE時多了一列OWNER其他的字典視圖中主要的是 V烈圖,之所以這樣叫是因為他們都 是以V撇GV鼾頭的。由于當(dāng)數(shù)據(jù)庫運(yùn)行的時候它們會不斷進(jìn)行 更新,所以稱它們?yōu)閯討B(tài)數(shù)據(jù)字典。V喇圖是基于X瞬擬視圖的。V飆圖是SYS用戶所擁有的,在缺 省狀況下,只有SYS用戶和擁有DBA
44、系統(tǒng)權(quán)限的用戶可以看到所 有的視圖,沒有DBA權(quán)限的用戶可以看到USER和ALL郃圖,但不能看到 DBA視圖。2.3.3 使用數(shù)據(jù)字典可以通過查詢數(shù)據(jù)字典dictionary 或v$fixed_table 來得至U Oracl e數(shù)據(jù)庫中所有的數(shù)據(jù)字典視圖。數(shù)據(jù)字典dictionary 中只有兩列: table_name 和 comments, 在 comments歹!J中給出了數(shù)據(jù)字典(系統(tǒng) 表)的簡單解釋。v$fixed_table 只是列出數(shù)據(jù)字典的名和類型等, 并未給出任何解釋。例子:select * from dictionary; -該用戶可使用的所有表,有些表并非 它所擁有。se
45、lect * from dict; - 功能同上。dict M dictionary 的同義詞。select * from user_table; -當(dāng)前用戶擁有的所有的表。select * from user_catalog; -功能同上,但它只顯示所擁有表的 名字和類型,比使用user_tables更簡單。select * from cat; - 功能同上。 cat 是 user_catalog 的另U名。select index_name from user_indexes; - 當(dāng)前用戶擁有哪些索 引。select view_name from user_views; -當(dāng)前用戶擁有哪
46、些視圖。 select object_name from user_objects; -當(dāng)前用戶擁有哪些數(shù) 據(jù)庫對象,對象包括表、視圖、存儲過程、觸發(fā)器、包、索引、序列 等。select * from user_users; -當(dāng)前用戶的基本信息,主要包括當(dāng)前 用戶名、帳戶id、帳戶狀態(tài)、表空間名、創(chuàng)建時間等。select * from v$instance; -描述當(dāng)前數(shù)據(jù)庫下的活動的實例的 信息。select * from v$session; -描述當(dāng)前數(shù)據(jù)庫下存在的會話的詳細(xì) 信息。2.4 Oracle 與 OPEN-300源統(tǒng)Oracle 數(shù)據(jù)庫是OPEN-3000系統(tǒng)用戶數(shù)據(jù)的存儲
47、中心,存儲數(shù)據(jù) 包括:1、采樣數(shù)據(jù):按照采樣周期對遙測、遙信定時存儲數(shù)據(jù)入Oracle ;2、統(tǒng)計數(shù)據(jù):極值統(tǒng)計等報表統(tǒng)計類數(shù)據(jù);3、歷史告警:機(jī)器、設(shè)備、網(wǎng)絡(luò)運(yùn)行告警系統(tǒng),遙測、遙信告警信 息,廠站、RTU通道等裝置告警信息;4、電網(wǎng)模型:數(shù)據(jù)庫定義,三遙,廠站通道信息,公式總加計算等5、文件數(shù)據(jù):制作的畫面(參展圖、潮流圖、曲線畫面等)、報表以 execl或html格式進(jìn)行存儲;6、根據(jù)PD嚅要進(jìn)行前置機(jī)報文的存儲。PS畫面中的貼片、像素圖未存入 Oracle中2.4.1 兩種典型的數(shù)據(jù)庫安裝方式數(shù)據(jù)庫服務(wù)器:至少有兩臺,冗余配置,安裝 Oracle服務(wù)端版本的 服務(wù)器。當(dāng)前兩種主要數(shù)據(jù)庫
48、安裝方式:單機(jī)版、RAOo 單機(jī)版配置兩臺數(shù)據(jù)庫服務(wù)器上分別單獨(dú)安裝一份 Oracle數(shù)據(jù)庫,此方式Ora cle數(shù)據(jù)存放在服務(wù)器硬盤上,1個數(shù)據(jù)庫對應(yīng)1個實例(即1個數(shù) 據(jù)庫只由1個管理、訪問),結(jié)構(gòu)如下:實例2實例1DATABASE1DATABASE2兩臺單機(jī)版數(shù)據(jù)庫,每臺機(jī)器一個數(shù)據(jù)庫,一個實例 RAC 版配置Oracle Real Application Server ,真正應(yīng)用集群,簡稱 Oracle R AC ,是Oracle的并行集群,位于不同服務(wù)器系統(tǒng)的Oracle實例同時 訪問同一個Oracle數(shù)據(jù)庫,節(jié)點(diǎn)之間通過私有網(wǎng)絡(luò)進(jìn)行通信,所有的 控制文件
49、、聯(lián)機(jī)日志和數(shù)據(jù)文件存放在共享的設(shè)備上,能夠被集群 中的所有節(jié)點(diǎn)同時讀寫。結(jié)構(gòu)如下:操作系統(tǒng)(OS)OS patchC/C+卷I譯器HACMP(IBM)/ MC/Service Guard(HP)操作系統(tǒng)雙機(jī)軟件Oracle crs (Oracle雙機(jī)軟件)Oracle軟件Oracle patch三、啟動和關(guān)閉數(shù)據(jù)庫單機(jī)版和RAC數(shù)據(jù)庫的啟動、關(guān)閉有所區(qū)別。3.1 單機(jī)版啟動、關(guān)閉啟動和關(guān)閉數(shù)據(jù)庫一般采用 Oracle的Sql*plus工具。啟動與關(guān)閉應(yīng)當(dāng)分別在數(shù)據(jù)庫服務(wù)器的 兩個腳本啟動、停止數(shù)據(jù)庫。3.1.1 啟動數(shù)據(jù)庫腳本內(nèi)容如下:Isnrctl stopIsnrctl startsql
50、plus /nolog <<EOFconnect / as sysdba用戶”startupEOF3.1.2 關(guān)閉數(shù)據(jù)庫腳本內(nèi)容如下:lsnrctl stopsqlplus /nolog <<EOF connect / as sysdba shutdown immediateEOFshutdown命令具有四種參數(shù)Oracle 用戶下執(zhí)行 startdb 和 stopdb“停止監(jiān)聽”“啟動監(jiān)聽”“只啟動Sql*plus ,不進(jìn)行連接”sys“啟動數(shù)據(jù)庫”“立即關(guān)閉數(shù)據(jù)庫”1、Normal:等待所有已連接的會話 session主動退出之后再關(guān)閉 數(shù)據(jù)庫。2、Immediat
51、e :等待所有已連接的會話執(zhí)行完當(dāng)前的SQL語句之后關(guān)閉數(shù)據(jù)庫。3、Transaction :等待所有已連接會話執(zhí)行完當(dāng)前事務(wù)之后關(guān)閉數(shù) 據(jù)庫。4、Abort :不做任何等待,立刻關(guān)閉數(shù)據(jù)庫。其中Normal參數(shù)一般不用,因為需要等待其他用戶主動退出,因 此何時關(guān)閉數(shù)據(jù)庫是無法預(yù)料的。一般經(jīng)常使用的是immediate和transaction 參數(shù)。對OPEN-300源統(tǒng)來說,因為沒什么用戶 自定義的處理,因此使用immediate參數(shù)來關(guān)閉數(shù)據(jù)庫就可以了。需要特別提醒的是,輕易不要用abort參數(shù)來關(guān)閉數(shù)據(jù)庫,使用a bort參數(shù)時,因為數(shù)據(jù)庫被立刻關(guān)閉,如果此時有用戶正進(jìn)行數(shù) 據(jù)更新操作,
52、數(shù)據(jù)庫中的內(nèi)容將無法預(yù)料。只用當(dāng)數(shù)據(jù)庫已經(jīng)崩 潰,無法正常關(guān)閉時,才使用 abort參數(shù)來強(qiáng)制關(guān)閉數(shù)據(jù)庫,就 像電腦上只用死機(jī)時才按reset鍵一樣。3.2 RAC版啟動、關(guān)閉RACB據(jù)庫啟動、關(guān)閉是與雙機(jī)軟件啟動、停止聯(lián)系在一起的。1、AIX HACMP(IBM)啟動:smitty clstart停止:smitty clstop2、HP-UX MC/Service Guard(HP)啟動:cmruncl停止:cmhaltc四、SQL語言入門結(jié)構(gòu)化查詢語言(Structured Query Language ,簡稱 SQL謔用來訪 問關(guān)系型數(shù)據(jù)庫一種通用語言,屬于第四代語言(4GD,其執(zhí)行特點(diǎn)
53、 是非過程化,即不用指明執(zhí)行的具體方法和途徑, 而是簡單地調(diào)用相 應(yīng)語句來直接取得結(jié)果即可。顯然,這種不關(guān)注任何實現(xiàn)細(xì)節(jié)的語言 對于開發(fā)者來說有著極大的便利。 然而,有些復(fù)雜的業(yè)務(wù)流程要求相 應(yīng)的程序來描述,這種情況下 4GL就有些無能為力了。PL/SQL的出 現(xiàn)正是為了解決這一問題,PL/SQL是一種過程化語言,屬于第三代 語言,它與C、C+、Java等語言一樣關(guān)注于處理細(xì)節(jié),可以用來實 現(xiàn)比較復(fù)雜的業(yè)務(wù)邏輯。4.1 SQL 分類:大致分為三大類:4.1.1 DML (Data Manipulation Language )數(shù)據(jù)操縱語言由DBMSI供,用于讓用戶或程序員使用,實現(xiàn)對數(shù)據(jù)庫中數(shù)
54、據(jù)的操 作。常見的 DML®言中的命令:SELECT DELETE UPDATE INSERT4.1.2 DDL (Data Definition Language)數(shù)據(jù)庫定義語言用于定義數(shù)據(jù)庫的三級結(jié)構(gòu),包括外模式、概念模式、內(nèi)模式及其相互之間的映像,定義數(shù)據(jù)的完整性、安全控制等約束,DDL不需要commit,不可撤銷。常見的DDL語言中的命令:CREATE ALTER DROP TRUNCATE4.1.3 DCI, (Data Control Language )數(shù)據(jù)庫控制語言數(shù)據(jù)控制語言DCL用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán),并控制數(shù)據(jù)庫操縱事務(wù)發(fā)生的時間及效果,對數(shù)據(jù)庫實行
55、監(jiān)視等。如:1)GRANT賦于權(quán)限SQL> GRANT SELECT ON名 TO 用戶名;2) REVOKE回收權(quán)限SQL>REVOKE SELECT ON 名 FROM用戶名;3) ROLLBACK WORK TO SAVEPOINT回退到某一點(diǎn)?;貪L命令使 數(shù)據(jù)庫狀態(tài)回到上次最后提交的狀態(tài)。其格式為:SQL>ROLLBACK;4) COMMIT WORK提交在數(shù)據(jù)庫的插入、刪除和修改操作時,只有當(dāng)事務(wù)在提交到數(shù)據(jù)庫時 才算完成。在事務(wù)提交前,只有操作數(shù)據(jù)庫的這個人才能有權(quán)看到所做的事情,別人只有在最后提交完成后才可以看到。提交數(shù)據(jù)有三種類型:顯式提交、隱式提交及自動提交
56、。下面分別說明這三種類型。(1)顯式提交:用COMMIT令直接完成的提交為顯式提交。其格式為: SQL>COMMIT(2)隱式提交:用SQL命令間接完成的提交為隱式提交。這些命令是: ALTER AUDIT COMMENCONNECTCREATEDISCONNECTDROPEXIT, GRANT NOAUDIT QUIT, REVOKERENAME自動提交若把AUTOCOMM膻為ON則在插入、修改、刪除語句執(zhí)行后,系 統(tǒng)將自動進(jìn)行提交,這就是自動提交。其格式為:SQL>SET AUTOCOMMIT ON4.2 常用數(shù)據(jù)類型:4.2.1 Char(n) 類型存儲固定長度的字符,如果字
57、符長度不夠會在右邊補(bǔ)空格。比如: namechar (10),當(dāng)給name賦值為'zhangsan'時會在右邊補(bǔ)充 2個空格。char類型的容量為12000bytes,沒有指定則默認(rèn) 長度為1。4.2.2 varchar2(n) 類型存儲長度可變的字符,和char類型的不同,它不會自動補(bǔ)充空格, 且定義時必須指定長度。存儲容量為 14000 bytes。4.2.3 Nchar/Nvarchar 類型和Char/Varchar類型類似,不過用于存儲多字節(jié)字符,即UNICODE 字符數(shù)據(jù)。4.2.4 Date 類型用于存儲公元前 4712-1-1至公元4712-12-31 ,存儲長度為 7bytes ,日期格式由nls_date_format 參數(shù)指定,如dd-MM-YY 通過 Oracle 內(nèi)部函數(shù)to_date 進(jìn)行轉(zhuǎn)換,如: t
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙教版數(shù)學(xué)七年級下冊2.1《二元一次方程》(第2課時)聽評課記錄
- 五年級分?jǐn)?shù)乘法口算練習(xí)
- 湘教版數(shù)學(xué)七年級下冊2.1.2《冪的乘方與積的乘方》聽評課記錄1
- 蘇教版小學(xué)四年級上冊數(shù)學(xué)口算題
- 人教版數(shù)學(xué)九年級下冊27.3《位似》聽評課記錄(一)
- 營業(yè)場所租賃合同范本
- 核心員工高層管理人員各崗位保密協(xié)議書范本
- 辦公樓加固改造工程施工合同范本
- 合作開店合同范本
- 三人合伙合作協(xié)議書范本
- 期末 (試題) -2024-2025學(xué)年教科版(廣州)英語四年級上冊
- 解讀國有企業(yè)管理人員處分條例課件
- 湖南省長沙市一中2024-2025學(xué)年高一生物上學(xué)期期末考試試題含解析
- 碳纖維增強(qiáng)復(fù)合材料在海洋工程中的應(yīng)用情況
- 小孩使用手機(jī)協(xié)議書范本
- 公司市場分析管理制度
- 焊接材料制造工-國家職業(yè)標(biāo)準(zhǔn)(2024版)
- 江西省2024年中考數(shù)學(xué)試卷(含答案)
- 榆神礦區(qū)郭家灘煤礦(700 萬噸-年)項目環(huán)評
- 2024年200MW-400MWh電化學(xué)儲能電站設(shè)計方案
- 余土外運(yùn)施工方案
評論
0/150
提交評論