国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

The Oracle DBA‘s Guide to NT

2024-08-29 13:40:25
字體:
供稿:網(wǎng)友

  Windows NT平臺(tái)正在迅速占領(lǐng)中低端市場(chǎng),你預(yù)備好了嗎?
  
  在Oracle最早在80年代中期進(jìn)入數(shù)據(jù)庫市場(chǎng)的時(shí)候,Oracle選擇的主要平臺(tái)就是Digital公司的VAX小型機(jī)系統(tǒng),在開發(fā)完VAX上面的VMS版本的Oracle以后,再把Oracle移植到別的平臺(tái)的操作系統(tǒng)上,比如DG-OS, MVS, Unix等。假如你在87年左右就開始使用Oracle,相信你那個(gè)時(shí)候用的應(yīng)該是VMS系統(tǒng)。
  
  在80年代晚期開始,Oracle的主要市場(chǎng)轉(zhuǎn)向了開放系統(tǒng)Unix。在90年代中期到現(xiàn)在,絕大多數(shù)的Oracle系統(tǒng)都運(yùn)行在Unix系統(tǒng)上,很多程序員都不得不艱難的從VMS轉(zhuǎn)向到Unix平臺(tái)。
  
  時(shí)間走向了2000年,我們逐漸看到了另外一個(gè)發(fā)展方向-雖然沒有向當(dāng)時(shí)從VMS轉(zhuǎn)向Unix那么明顯:雖然Unix仍然占據(jù)著高端市場(chǎng),但是越來越多的中低端用戶開始轉(zhuǎn)向Windows系統(tǒng)。我們不應(yīng)該忽視這個(gè)現(xiàn)象的存在,應(yīng)該開始接觸和學(xué)習(xí)Oracle在Windows平臺(tái)上的治理。
  
  在這篇文章里面,我向大家介紹Oracle在Unix平臺(tái)和在Windows平臺(tái)上有哪些區(qū)別,以及在Windows平臺(tái)上治理Oracle的常見問題。我們希望讀者有一定的Unix和Windows操作系統(tǒng)基礎(chǔ)知識(shí)。
  
  Oracle在Windows系統(tǒng)上的體系結(jié)構(gòu)
  
  Oracle一直對(duì)數(shù)據(jù)庫的可移植性非常重視,實(shí)際上它也確實(shí)做的非常好。每個(gè)平臺(tái)上的Oracle都有一致的操作方法和特性。在幾乎所有平臺(tái)上,都可以看到oracle的存在。在各個(gè)不同的平臺(tái)上,從Intel的Windows95上的Oracle,到IBM的S/MVS上的Oracle,Oracle都是同樣的一套通用的體系結(jié)構(gòu):
  
  · 一塊公共內(nèi)存區(qū)域,稱為SGA。里面存放數(shù)據(jù)塊緩沖,SQL緩沖區(qū),字典緩沖區(qū),重做日志緩沖區(qū)等。假如配置成MTS結(jié)構(gòu)的話,還有會(huì)話信息。
  
  · 一些數(shù)據(jù)庫后臺(tái)進(jìn)程,比如dbwr, lgwr, pmon, smon, arc0等。假如有分布式業(yè)務(wù),并行數(shù)據(jù)庫,作業(yè)隊(duì)列等,還有一些別的相關(guān)的后臺(tái)進(jìn)程。
  
  · Oracle數(shù)據(jù)庫用來存放表,索引,回滾段等數(shù)據(jù)的數(shù)據(jù)文件。
  
  · 重做日志文件,記錄在實(shí)例失敗的時(shí)候回滾所需要的信息。
  
  · 一些Server進(jìn)程,用來服務(wù)來自客戶進(jìn)程的請(qǐng)求。假如配置成了共享服務(wù)器,那么就是Dispatcher(調(diào)度進(jìn)程)和一些共享的Server進(jìn)程為客戶請(qǐng)求服務(wù)。
  
  · 一個(gè)Listener,用來監(jiān)聽來自外部客戶機(jī)的請(qǐng)求。
  
  數(shù)據(jù)文件和日志文件一般都是用操作系統(tǒng)的文件系統(tǒng)上的文件或者使用操作系統(tǒng)的裸分區(qū)來實(shí)現(xiàn),在不同操作系統(tǒng)都是一樣的。但是Oracle的內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)在Windows平臺(tái)上和別的平臺(tái)有些區(qū)別。
  
  在Unix下面,每個(gè)Oracle進(jìn)程都是一個(gè)單獨(dú)的Unix進(jìn)程,包括Oracle后臺(tái)進(jìn)程和Oracle Server進(jìn)程。SGA存在于Unix的共享內(nèi)存段里面。
  
  下面這幅圖表現(xiàn)了Unix下面Oracle的體系結(jié)構(gòu):
  
  但是NT平臺(tái)上的Oracle有些區(qū)別。Oracle充分利用了NT對(duì)線程的良好支持。下面的附圖2里,我們可以比較一下Unix上的Oracle和NT上的Oracle的區(qū)別:
  
  在幾乎所有操作系統(tǒng)里面,一個(gè)進(jìn)程是不答應(yīng)操作別的進(jìn)程的內(nèi)存空間的,因此在Unix下面要配置共享內(nèi)存。但是在NT里面,因?yàn)檎麄€(gè)Oracle就是一個(gè)單獨(dú)的進(jìn)程,每個(gè)Oracle的進(jìn)程在OS都表現(xiàn)為Oracle進(jìn)程的線程,因此不同線程答應(yīng)操作共同的內(nèi)存空間。
  
  在NT平臺(tái)上,每個(gè)Oracle實(shí)例都是一個(gè)NT進(jìn)程。在這個(gè)進(jìn)城里面,包括了所有的Oracle進(jìn)程,每個(gè)Oracle進(jìn)程實(shí)際上以線程的形式出現(xiàn)。
  
  NT平臺(tái)上的Oracle采用NT的多個(gè)線程/一個(gè)進(jìn)程地方式來實(shí)現(xiàn)Oracle。但是單個(gè)進(jìn)程的模式?jīng)Q定了一個(gè)Oracle實(shí)例能夠使用內(nèi)存的數(shù)量。在NT4.0里面,每個(gè)進(jìn)程能夠?qū)ぶ?GB的虛擬空間,但是有2G是保留作為操作系統(tǒng)預(yù)留的,Oracle最多也只能夠使用2GB內(nèi)存。
  
  一眼看去,2G內(nèi)存對(duì)于大多數(shù)進(jìn)程應(yīng)該是夠用了,但是記?。哼@里Oracle不但要存放SGA,還要存放所有的會(huì)話信息等。在NT4里面,有兩個(gè)辦法可以考慮:使用NT企業(yè)版,這樣,可以設(shè)置操作系統(tǒng)只保留1GB空間,Oracle可以尋址3Gb,或者使用Alpha版本的NT系統(tǒng)。
  
  Oracle的多線程服務(wù)器模式可以讓很多個(gè)Client進(jìn)程和少數(shù)共享Server進(jìn)程通信,這樣就大大減少了Oracle的服務(wù)器進(jìn)程,從而減少了對(duì)內(nèi)存的需求。NT平臺(tái)的Oracle8開始支持多線程服務(wù)器。假如進(jìn)一步采用Connection Pool和Concentrating技術(shù),可以更加減少對(duì)內(nèi)存的需求。
  
  在Windows2000里面,應(yīng)用程序的可尋址空間達(dá)到了32GB,這對(duì)于絕大多數(shù)的Oracle應(yīng)用,都是足夠了。
  
  啟動(dòng)和關(guān)閉
  
  在Unix環(huán)境下,我們通常使用dbstart/dbshut, svrmgrl 或者sqlplus來啟動(dòng)/關(guān)閉。在Oracle啟動(dòng)的時(shí)候,Oracle啟動(dòng)實(shí)例,Mount數(shù)據(jù)庫,Open數(shù)據(jù)庫,然后Oracle會(huì)自動(dòng)daemonize ,成為后臺(tái)進(jìn)程,和登陸會(huì)話脫離,這樣,當(dāng)用戶注銷掉之后,Oracle仍然繼續(xù)運(yùn)行。
  
  但是在Windows平臺(tái)下,需要用戶注銷之后,Oracle仍然能夠運(yùn)行,Oracle必須注冊(cè)成為NT的一個(gè)服務(wù)。
NT下面的Oracle主要包含下面這些要害服務(wù):
  
  · OracleServicesid. 這個(gè)服務(wù)定義了NT機(jī)器上的一個(gè)Oracle實(shí)例。一般格式是OracleService%SID%。比如我的SID是ABC,那么相應(yīng)的服務(wù)名字就是OracleServiceABC。只有啟動(dòng)這個(gè)服務(wù),才能夠進(jìn)一步啟動(dòng)Oracle實(shí)例,Mount和Open數(shù)據(jù)庫。但是也可以設(shè)置成實(shí)例自動(dòng)Open數(shù)據(jù)庫。
  
  · OracleStartsid. 這個(gè)只是在Oracle8版本里面才出現(xiàn)的。在Oracle8i里面,這個(gè)服務(wù)和OracleServiceSid合并了。啟動(dòng)這個(gè)服務(wù)相當(dāng)于就是執(zhí)行了一個(gè)啟動(dòng)數(shù)據(jù)庫的腳本。
  
  · OracleTNSListener.這個(gè)時(shí)Oracle的監(jiān)聽進(jìn)程。一般一個(gè)默認(rèn)Listener就夠用了。假如設(shè)置了別的listener 名字,就會(huì)產(chǎn)生相應(yīng)的服務(wù)。
  
  假如希望Oracle能夠自動(dòng)啟動(dòng),可以設(shè)置相應(yīng)服務(wù)屬性為Auto。
  
  net start OracleServiceGDB1
  
  net start OracleStartGDB1
  
  net start OracleTNSListener80
  
  我們可以通過oradim這個(gè)工具來創(chuàng)建,刪除,編輯,啟動(dòng)和停止OracleService服務(wù)。
  
  但是我們一般建議使用svrmgrl或者sqlplus來關(guān)閉相應(yīng)的服務(wù)。這是因?yàn)樵诘桶姹镜腛racle里面,在NT一個(gè)級(jí)別停止Oracle服務(wù),相當(dāng)于在Oracle里面執(zhí)行了shutdown abort,這是很不規(guī)范的操作。雖然絕大多數(shù)情況下,Oracle也都是能夠自動(dòng)恢復(fù)的,但是這個(gè)不是Oracle推薦的關(guān)閉數(shù)據(jù)庫的方法。
  
  從Oracle8和8i開始,Oracle添加了注冊(cè)表參數(shù):ora_shutdown或者ora_<sid>_shutdown,Ora_shutdown_type, Ora_shutdown_timeout等參數(shù)來控制從NT級(jí)別關(guān)閉數(shù)據(jù)庫默認(rèn)采取得方式。比如我們?cè)O(shè)定了ora_<sid>_shutdowntype=I, ora_<sid>_shutdow_timeout=30,那么Oracle會(huì)先使用shutdown immediate來關(guān)閉 ,假如過了30秒還沒有關(guān)閉成功,NT使用shutdown abort來關(guān)閉數(shù)據(jù)庫。
  
  多個(gè)Oracle版本共存時(shí)候的考慮
  
  在Unix下面治理多個(gè)版本的Oracle相對(duì)輕易,我們只需要把不同的Oracle軟件安裝到不同的Oracle_HOME下面,然后切換的時(shí)候,指定環(huán)境變量$ORACLE_HOME就可以了。
  
  在NT下面,其實(shí)也差不多。不同的是NT默認(rèn)使用注冊(cè)表下面的鍵值:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ORACLE_HOME來記錄信息。
  
  如何進(jìn)行備份
  
  和Unix上面的Oracle備份一樣,我們同樣有很多種可選的備份方案:冷備份,OS 熱備份,eXP備份,Rman備份等。對(duì)于exp和冷備份,在Unix和NT上沒有什么區(qū)別。
  
  NT的備份工具可以備份到磁帶,Oracle的ocopy只能夠備份到磁盤。因此假如使用OS備份,一般都需要有個(gè)中轉(zhuǎn)地,讓Oracle先備份到磁盤另外一個(gè)空間,再通過NT只待得備份工具拷貝到磁帶上去。
  
  或者可以用Rman和相應(yīng)的備份軟件(如Oracle捆綁的Legato)等實(shí)現(xiàn)直接備份到磁帶。
  
  定期實(shí)行備份
  
  在Unix下面,我們通過crontab來實(shí)現(xiàn)定期的作業(yè)治理,同樣,在Windows下面,我們也可以實(shí)現(xiàn),通過AT或者計(jì)劃任務(wù)。我們可以決定是只執(zhí)行一次,還是一直執(zhí)行等。
  
  At的基本命令格式是:
  
  At 時(shí)間 [/every:date] [/next:date] 時(shí)間是24小時(shí)格式的,date可以是每個(gè)月的1-31或者每星期的M,T,W,TH,F,S,SU。
  
  例如,我們希望系統(tǒng)能夠在天天下午三點(diǎn)進(jìn)行歸檔:
  
  at 15:00 /every:m,t,w,th,f,s,su cmd /c
  
  c:/bin/archive.bat >c:/logs/archive.log
  
  當(dāng)然,要實(shí)現(xiàn)定期執(zhí)行程序,我們必須把Windows的Schedule Service服務(wù)啟動(dòng)。
  
  進(jìn)行性能檢查
  
  監(jiān)視數(shù)據(jù)庫的性能,診斷性能問題和性能上的瓶頸,從而對(duì)數(shù)據(jù)庫進(jìn)行性能優(yōu)化,這是DBA的主要職責(zé)之一。雖然理論上來講,在NT上和Unix上面進(jìn)行性能調(diào)優(yōu)的方法一樣,但是實(shí)際使用的工具還是不一樣的。
  
  在Unix下面,我們一般通過vmstat, sar, top等工具來檢查系統(tǒng)的整體性能和單獨(dú)進(jìn)程的情況。在NT下面,我們一般通過NT自帶的進(jìn)程治理器合性能監(jiān)視器來檢查服務(wù)器的整體性能。
  
  NT的性能監(jiān)視器可以檢查系統(tǒng)范圍內(nèi)很多的總體情況,比如總體的CPU使用,內(nèi)存使用,網(wǎng)絡(luò)使用,磁盤等信息。也可以檢查某個(gè)單獨(dú)線程的信息。
  
  作為NT平臺(tái)上的Oracle DBA,必須對(duì)進(jìn)程治理器和性能監(jiān)視器非常熟悉。
  
  Oracle還自己提供了接口,利用NT的性能監(jiān)視器來治理和監(jiān)視Oracle數(shù)據(jù)庫的性能。
  
  監(jiān)控每個(gè)線程使用的CPU資源
  
  雖然在NT的進(jìn)程治理器里面可以看到究竟哪些進(jìn)程占用了過多的資源,但是無法深入進(jìn)程,看究竟是那個(gè)線程占用了過多的資源。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 无极县| 伊宁市| 乌审旗| 梅河口市| 山阳县| 霞浦县| 淳安县| 师宗县| 无棣县| 仪陇县| 玉山县| 邛崃市| 普陀区| 报价| 河间市| 东光县| 丰原市| 柳州市| 合水县| 临泽县| 太湖县| 明溪县| 江油市| 南康市| 易门县| 保靖县| 西昌市| 大化| 尼玛县| 庐江县| 高邮市| 无极县| 水城县| 郴州市| 淮南市| 老河口市| 偏关县| 镇赉县| 滨海县| 阿克| 灵武市|