Oracle Web數(shù)據(jù)庫的開發(fā)_第1頁
Oracle Web數(shù)據(jù)庫的開發(fā)_第2頁
Oracle Web數(shù)據(jù)庫的開發(fā)_第3頁
Oracle Web數(shù)據(jù)庫的開發(fā)_第4頁
Oracle Web數(shù)據(jù)庫的開發(fā)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Oracle Web數(shù)據(jù)庫的開發(fā)數(shù)據(jù)庫技術(shù)概述 Oracle DBMS在信息系統(tǒng)市場占據(jù)了很大的份額,并且具有較高的可靠性和可恢復(fù)性。 本章介紹 Oracle WebServer的體系結(jié)構(gòu)及一些使用技術(shù),使讀者對于Oracle Web數(shù)據(jù)庫開發(fā)有個基本的了解。 1. Oracle WebServer體系結(jié)構(gòu)基本的WebServer體系結(jié)構(gòu) 三種版本的WebServer體系結(jié)構(gòu) WebServer的基本成分解釋 1. 基本的WebServer體系結(jié)構(gòu)Oracle Webserver由以下幾個部分組成:Web監(jiān)聽器(Listener)公共網(wǎng)關(guān)接口(CGI)Web請求代理(Request Broke

2、r)(WRB)PL/SQL代理(即OWA)和Web工具箱(WebToolkit)Java CartridgeLiveHTML Cartridge1.2 三種WebServer體系結(jié)構(gòu)1Oracle WebServer 12Oracle WebServer 23Oracle WebServer 31Oracle WebServer 1體系結(jié)構(gòu) 2Oracle WebServer 2體系結(jié)構(gòu) 3Oracle WebServer 3體系結(jié)構(gòu) Oracle WebServer 3與Oracle WebServer 2在體系結(jié)構(gòu)上相同,但其功能上有所增強(qiáng)。最大、最有效的增強(qiáng)是新的Web事務(wù)管理器。允許事

3、務(wù)生成復(fù)雜的HTTP請求(如插入、刪除、提交、更新和回滾) 使分布事務(wù)針對Oracle或非Oracle數(shù)據(jù)庫進(jìn)行可靠的處理。 1.3 WebServer的基本成分解釋 1WEB監(jiān)聽器 2Web請求代理器(WRB)3WRB分配器、執(zhí)行引擎、cartridge和API 之間的關(guān)系4PL/SQL代理和Web工具箱5Java解釋器cartridge6LiveHTML Cartridge1.2 WebServer的htp和OWA實(shí)用工具1.WebServer的htp實(shí)用工具2WebServer的OWA實(shí)用工具1.3 WebServer的PL/SQL和存儲過程PL/SQL是過程語言/結(jié)構(gòu)化查詢語言(Pro

4、ceduralLanguage/Structured Query Language)的縮寫,它是Oracle為了與Oracle數(shù)據(jù)庫一起使用而創(chuàng)建的專用語言。PL/SQL的語法結(jié)構(gòu)PL/SQL和存儲過程1.3.1 PL/SQL的語法結(jié)構(gòu)1申明部分2開始部分3PL/SQL中的循環(huán) 1.3.2 PL/SQL和存儲過程1.存儲過程的優(yōu)點(diǎn) 良好的性能 數(shù)據(jù)與行為的結(jié)合 代碼的隔離 封裝性 更大的靈活性2.PL/SQL存儲過程和軟件包3.由Web向Oracle存儲過程傳遞函數(shù)4.存儲過程之間傳遞函數(shù) 1.4 WebServer和Java之間的聯(lián)系1.Oracle WebServer的Java實(shí)現(xiàn)2. P

5、L/SQL在Java中的使用 3. Oracle WebServer的Java解釋器 4.從Java存取Oracle數(shù)據(jù)庫5.使用PL/SQL軟件包裝(package wrapper)1.5WebServer和LiveHTML之間的聯(lián)系 LiveHTML是一個在Oracle WebServer中非常有用的工具。本質(zhì)上,LiveHTML為將非Oracle的信息嵌入到一個Oracle Web頁面中提供一種機(jī)制。 Oracle通過LiveHTML構(gòu)件及LiveHTML解釋器已經(jīng)實(shí)現(xiàn)了WebServer體系結(jié)構(gòu)中的SSI概念。SSI能通過不同的方法實(shí)現(xiàn)動態(tài)Web文檔的創(chuàng)建,包括:將其它LiveHTML

6、文檔嵌入到Web頁面中嵌入靜態(tài)Web頁面引用系統(tǒng)變量在服務(wù)器上執(zhí)行一個腳本,它產(chǎn)生HTML使用CGI執(zhí)行PL/SQL過程1.6 WebServer的并發(fā)管理WebServer更新和并發(fā)性 Oracle數(shù)據(jù)庫封鎖 為WebServer選擇完整性 1.6.1 WebServer更新和并發(fā)性 會話和偽會話 1.6.2 Oracle數(shù)據(jù)庫封鎖在Oracle中提供了兩種類型的封鎖:共享和互斥 。許多客戶可能都有對同一資源的共享鎖,但共享鎖不能和互斥鎖共存。 然而共享封鎖有一個不良的后果,會導(dǎo)致DB-KEY死鎖 1.7 安全性問題WebServer的安全性O(shè)racle的安全性 1.7.1 WebServe

7、r的安全性為了保障Oracle的安全性,有以下十條人們總結(jié)出來的安全性指導(dǎo)方針:(1) DBA對于Oracle安全性負(fù)有最大的責(zé)任。所以,DBA有責(zé)任創(chuàng)建和維護(hù)所有的Oracle角色。(2) 所有的特權(quán)(對象特權(quán)和系統(tǒng)特權(quán))將被放置在角色中。特權(quán)永遠(yuǎn)不會直接授予最終用戶。注意,除了UNLIMITED TABLESPACE,因?yàn)閁NLIMITED TABLESPACE不能授予一個角色。(3) 所有的角色將用一個口令保護(hù),并且角色口令將被包含在應(yīng)用程序中,使最終的用戶永遠(yuǎn)不會知道被授予的角色的口令。(4) 永不使用ADMIN OPTION授予任何的系統(tǒng)特權(quán),永不使用GRANT OPTION授予任何

8、表特權(quán)。(5) 只有一個最終用戶是角色管理員(RA),RA有責(zé)任將角色授予最終用戶,并且將對它所管理的每一個角色授予ADMIN OPTION。叫做”RA”的一個特定角色應(yīng)用CREATE ANY USER特權(quán)創(chuàng)建,并且將給RA授權(quán)。(6) RA沒有DROP ANY USER特權(quán),又沒有ALTER ANY USER特權(quán)。DBA將有責(zé)任取消最終用戶標(biāo)識,并且每一個最終用戶有責(zé)任維護(hù)他們自己的Oracle口令,它將經(jīng)過MS-Query,SQL*Plus或經(jīng)過一個應(yīng)用程序屏幕來維護(hù)。(7) 只有SYS和SYSTEM用戶可以被授予DBA角色。(8) 只有三個角色可以給IS人員:CONTENT、RESOUR

9、CE和DBA。這些角色在所有的Oracle數(shù)據(jù)庫中包含相同的特權(quán)。(9) 當(dāng)不需要考慮安全性問題時,可以授予表public。(10)Oracle安全性每年應(yīng)該審核兩次來保證這些規(guī)則被遵守。1.7.2 Oracle的安全性O(shè)racle數(shù)據(jù)庫的安全性由SQL的grant語句授權(quán)并且由revoke語句來收回。可以授權(quán)的特權(quán)有兩大類:表特權(quán),對一個特定表的特定的操作被授予一個特定的用戶(如,grant select on customer_table to Fred;);系統(tǒng)特權(quán),將一個特權(quán)范圍授予一個特定的用戶(如,grant select any table to Fred;)。 系統(tǒng)特權(quán)系統(tǒng)特權(quán)

10、是執(zhí)行一種操作,或在一個特定的對象類型的所有實(shí)例上執(zhí)行一種操作的權(quán)利(如,grant select any table to black-joke)。系統(tǒng)特權(quán)被表示成三部分:操作、全局的(any)和對象類型?;谶@個分類方法,系統(tǒng)特權(quán)用操作和與操作相關(guān)的對象類型來表示:操作(action)有以下幾種:createdropaltergrantselectaudit (any)manage (tablespace) backup (table) force (transaction) become (user)對象類型有以下幾種:cluster procedure database databas

11、e link privilege profile rolesession sequence snapshot system synonym table tablespacetrigger user對象特權(quán) 對象特權(quán)表視圖序列快照AllxxxxAlterxxDeletexxIndexxInsertxxReferencesxSelectxxxxUpdatexx對象特權(quán) 對象特權(quán)是在一個指定的、命名的對象上執(zhí)行的一種操作的權(quán)利(如,grant update on cat.food to sarah_tytler)。它通常表示成操作-對象名的形式。 函數(shù)、存儲過程和軟件包 WebServer安全性的一

12、個重要特點(diǎn)是通過函數(shù)、存儲過程和軟件包的使用來增強(qiáng)訪問一個表的能力。(1)一個函數(shù)是一個代碼段,它可以包含接收輸入變量并且給函數(shù)的調(diào)用者返回值的SQL語句。(2)一個存儲過程是一段代碼,在它內(nèi)部已經(jīng)嵌入了SQL命令。(3)一個軟件包是一個Oracle函數(shù)的集合或Oracle存儲過程,它將存儲過程合理的包裝成一個單一的單元。 實(shí)現(xiàn)基于角色的安全性為WebServer推薦的安全性選項(xiàng)是將角色分配給為WebServer創(chuàng)建PL/SQL存儲過程的關(guān)鍵開發(fā)者。WebServer應(yīng)用程序的實(shí)現(xiàn)需要下列步驟:(1)創(chuàng)建空的角色/口令。(2)標(biāo)識與角色相關(guān)的特權(quán)。(3)為角色分配表特權(quán)。(4)標(biāo)識講屬于每個角

13、色的關(guān)鍵開發(fā)者。(5)將這些角色授予將創(chuàng)建Oracle存儲過程的關(guān)鍵開發(fā)這。(6)取消所有已存在的表級對象特權(quán)并授予public。(7)使關(guān)鍵開發(fā)者創(chuàng)建WebServer存儲過程。(8)將對這些存儲過程的execute特權(quán)授予最終用戶團(tuán)體。WebServer的角色分配策略 一個Oracle角色層次的例子 1.8 使用Net8進(jìn)行WebServer通信Net8的前生是SQL*Net 。在過去的幾年中,SQL*Net逐漸發(fā)展壯大。現(xiàn)在它已改名為Net8。Net8是Oracle家族網(wǎng)絡(luò)產(chǎn)品的基礎(chǔ),它的主要功能是建立網(wǎng)絡(luò)會話,并在一臺客戶機(jī)和一臺服務(wù)器或兩臺服務(wù)器之間傳遞數(shù)據(jù),它允許服務(wù)及其應(yīng)用駐留在

14、不同的計(jì)算機(jī)上,并作為對等應(yīng)用進(jìn)行通信。Net8和他的前輩SQL*Net都是獨(dú)立于平臺的。事實(shí)上,Net8所支持的網(wǎng)絡(luò)協(xié)議的數(shù)量只受特定節(jié)點(diǎn)的硬件、內(nèi)存和操作系統(tǒng)所強(qiáng)加的限制的影響 10.8.1 Oracle部件的層次Oracle部件的層次很像一個洋蔥圖(圖11-11),有一個很大的中心圓,周圍有很多圓圈繞著。Oracle洋蔥的中心是RDBMS 。在核與其它層之間是網(wǎng)絡(luò)協(xié)議。為了讓Oracle與其它產(chǎn)品相聯(lián)系,必須有第二層。1. Oracle協(xié)議Oracle使用Transparent Network Substrate (TNS)和一組行業(yè)標(biāo)準(zhǔn)的協(xié)議作為它的基本技術(shù)。TNS建在Oracle的網(wǎng)

15、絡(luò)中,允許它與基本的計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議進(jìn)行通信。Net8是建立在網(wǎng)絡(luò)協(xié)議上的一個層次堆棧。與數(shù)據(jù)庫通信的每臺機(jī)器都必須安裝Net8。堆棧層:說明:Oracle-side Programmatic Interface(OPI)負(fù)責(zé)響應(yīng)由客戶機(jī)端Oracle Call Interface(OCI)發(fā)送的每個可能的報文。例如,一個提取25行的OCI請求,一旦被提取可能有一個返回25行的OPI響應(yīng)。Two-task Common(兩任務(wù)共用層)解決發(fā)送端和接收端之間字符集的區(qū)別Net8(由三層組成)Network Interface(NI)隱藏基本網(wǎng)絡(luò)協(xié)議和客戶機(jī)應(yīng)用的介質(zhì)Network Routing(

16、NR)/Network Naming(NN)/Network Authentication(NA)負(fù)責(zé)將數(shù)據(jù)路由到最終目標(biāo)Transparent Network Substrate(TNS)負(fù)責(zé)常規(guī)通信,如發(fā)送和接收數(shù)據(jù)Oracle Protocol Adapter(Oracle 協(xié)議適配器)將Net8與基本網(wǎng)絡(luò)協(xié)議項(xiàng)隔離的弱層Network-Specific Protocol(專用網(wǎng)絡(luò)協(xié)議)將SQL語句轉(zhuǎn)換成可通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包的層次堆棧應(yīng)用于Oracle服務(wù)器的Net8的層次 在客戶機(jī)端,所用的堆棧幾乎與服務(wù)器是相同的,他們的區(qū)別在于最頂層。代替Oracle-side Programma

17、tic Interface (Oracle 端程序接口,OPI),在客戶機(jī)端,有一個內(nèi)建了Oracle Call Interface (Oracle調(diào)用接口,OCI)的應(yīng)用層。通過該應(yīng)用層,用戶產(chǎn)生一個要在服務(wù)器端進(jìn)行處理的請求。響應(yīng)通過堆棧從服務(wù)器發(fā)送到客戶機(jī)中。 客戶機(jī)/服務(wù)器之間的請求與響應(yīng) 2. Net8層 Net8的工作是提供會話層的功能。通過它的三個部件,Net8 建立并管理客戶機(jī)和服務(wù)器之間的連接,并允許信息在它們之間進(jìn)行交換。這三個部件為NI,組合部件NN/NR/NA以及TNS。Network Interface (NI)處理對連接的“斷開”和“重置”請求。Network Ro

18、uting (NR)提供網(wǎng)絡(luò)會話到目標(biāo)的路由。這可能包括任何中間目標(biāo)或到服務(wù)器目標(biāo)路由中的“躍距”。Network Naming (NN)解析對Net8目標(biāo)地址的網(wǎng)絡(luò)服務(wù)名。Network Authentication (NA)通過對目標(biāo)的驗(yàn)證請求。Transparent network Substrate (TNS) 提供對行業(yè)標(biāo)準(zhǔn)協(xié)議的一個命令接口,以打開、關(guān)閉、發(fā)送和接收來自Net8的請求,并澄清常規(guī)的機(jī)器級連接性問題。在服務(wù)器-服務(wù)器通信中,活動是相同的。3. Oracle使用的通信堆棧IIOP通信堆棧Java數(shù)據(jù)庫連接堆棧IIOP通信堆棧 堆棧層:說明:客戶機(jī)應(yīng)用在Net8堆棧中出現(xiàn)

19、的相同的應(yīng)用層GIOP表示層Oracle TCP/IP或帶SSL的TCP/IP用來傳輸從一臺機(jī)器到另一臺機(jī)器的請求和相應(yīng)的網(wǎng)絡(luò)協(xié)議堆棧堆棧層:說明:Oracle服務(wù)器執(zhí)行該請求處理的層TNSTransparent Network SubstrateOracle TCP/IP協(xié)議(有或沒有SSL)帶或不帶有安全套接層的傳輸協(xié)議層的Oracle的實(shí)現(xiàn)TCP/IP專用網(wǎng)絡(luò)協(xié)議在機(jī)器間傳輸請求和響應(yīng)的傳輸協(xié)議的網(wǎng)絡(luò)實(shí)現(xiàn)服務(wù)器端的IIOP通信堆??蛻魴C(jī)端的IIOP通信堆棧 Java數(shù)據(jù)庫連接堆棧 有兩種JDBC驅(qū)動程序可供您選擇:使用Java Web服務(wù)器或Java應(yīng)用程序編寫一個基于客戶機(jī)/服務(wù)器或瘦

20、客戶機(jī)應(yīng)用的應(yīng)用程序。使用Java Applet編寫應(yīng)用程序。使用第種方法時,您將要使用JDBC/OCI驅(qū)動程序。該驅(qū)動程序?qū)DBC代碼轉(zhuǎn)換為對Oracle調(diào)用接口的調(diào)用。一旦JDBC調(diào)用轉(zhuǎn)換為OCI,Net8發(fā)送轉(zhuǎn)換了的調(diào)用到Oracle數(shù)庫服務(wù)器中。使用第種方法(即使用Java Applet)時,瘦JDBC(JDBC Thin)驅(qū)動程序用來建立在Java套階層上對Oracle數(shù)據(jù)庫服務(wù)的直接連接。 4客戶機(jī)端 使用Java連接數(shù)據(jù)庫時所用的堆棧非常類似與標(biāo)準(zhǔn)的Oracle通信堆棧,它們的唯一區(qū)別在于客戶機(jī)的接口。在標(biāo)準(zhǔn)的Oracle堆棧中,頂層為客戶機(jī)應(yīng)用層。對于Java數(shù)據(jù)庫連接堆棧,

21、頂層實(shí)際有三層,這些層次實(shí)現(xiàn)的方法不同取決于應(yīng)用是用JDBC/OCI編寫,還是用Java小程序瘦JDBC代碼調(diào)用編寫。 堆棧層說明JDBC客戶機(jī)Java應(yīng)用代碼JDBC驅(qū)動程序JDBC/OCI驅(qū)動程序或瘦JDBC驅(qū)動程序DBAccess接口用來啟動SQL會話的機(jī)制(很像OCI接口)堆棧層說明JavaTTC由兩任務(wù)共用層的一個子集組成,能進(jìn)行Java客戶機(jī)和數(shù)據(jù)庫之間的信息交換JavaNet由三層組成:通信接口、尋址、以及Java Network Substrate網(wǎng)絡(luò)協(xié)議層由兩層組成:Java接插層和TCP/IPJDBC客戶機(jī)應(yīng)用堆棧層次 瘦JDBC通信堆棧的層次 5服務(wù)器端在服務(wù)器端所用的堆

22、棧和標(biāo)準(zhǔn)的Oracle通信堆棧是一致的。當(dāng)一個請求通過瘦JDBC通信堆棧進(jìn)行處理時,它看起來就像由服務(wù)器通過Net8所接受的其它請求一樣。6Oracle兼容的協(xié)議協(xié)議:說明:TCP/IP允許客戶機(jī)/服務(wù)器使用TCP/IP在網(wǎng)絡(luò)上的會話帶SSL的TCP/IP允許客戶機(jī)/服務(wù)器使用TCP/IP和安全接插層(SSL)在網(wǎng)絡(luò)上的會話。SSL在一個Oracle Wallet中存儲驗(yàn)證數(shù)據(jù),如信用證書和私有密匙。SPX允許客戶機(jī)/服務(wù)器使用SPX/IPX在網(wǎng)絡(luò)上會話。該協(xié)議主要在Novell NetWare環(huán)境中使用。Named Pipes(命名管道)提供客戶機(jī)和服務(wù)器之間的內(nèi)部進(jìn)程通信的高級接口(分布式應(yīng)用)。一個進(jìn)程(應(yīng)用的服務(wù)器端)建立管道,另一個進(jìn)程(客戶機(jī)端)通過名字打開該管道。一端寫什么,另一端就可以讀什么,反之亦然。Logical Unit Type6.2(LU6.2)IBM Advanced Program-to-Program Communication(APPC)體系結(jié)構(gòu)的一部分,允許客戶機(jī)和主機(jī)在SNA網(wǎng)絡(luò)上的通信,而不強(qiáng)迫客戶機(jī)模擬一個

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論