[第138期] DBA大討論:數(shù)據(jù)庫應(yīng)用與故障排除
不知不覺中,人們已經(jīng)進入了一個數(shù)據(jù)爆炸的時代,曾經(jīng),我們買一個32MB的U盤就需要幾百元,如今,600元就可以買到1.5TB的移動硬盤了。這種數(shù)據(jù)量的大幅增加,給數(shù)據(jù)的存儲帶來了前所未有的壓力。數(shù)據(jù)的交換越來越頻繁,而數(shù)據(jù)作為新的企業(yè)資產(chǎn),企業(yè)的決策者同樣希望這些新的資產(chǎn)能夠給企業(yè)帶來新的利潤和增長空間。于是,對于數(shù)據(jù)的管理成為企業(yè)信息化關(guān)注的焦點,目前,數(shù)據(jù)庫的種類繁多,而牽扯到數(shù)據(jù)庫應(yīng)用和部署的技術(shù)也紛繁復雜。在這種情況下,數(shù)據(jù)庫管理與故障排除的重要性日益重要。
技術(shù)門診是51CTO社區(qū)品牌欄目,每周邀請一位客座專家,為廣大技術(shù)網(wǎng)友解答疑問。從熱門技術(shù)到前沿知識,從技術(shù)答疑到職業(yè)規(guī)劃。每期一個主題,站在最新最熱的技術(shù)前沿為你引航!
本期門診邀請了資深DBA李濤與我們一起討論數(shù)據(jù)庫在企業(yè)中的應(yīng)用與故障排除。
專家介紹:
姓 名:李濤
擅長領(lǐng)域:數(shù)據(jù)庫、項目管理
BEC企業(yè)全球化及本地化工程師,微軟資深講師,企業(yè)信息化與解決方案專家。主要從事企業(yè)信息化產(chǎn)品研發(fā)、實施與管理,企業(yè)高端IT培訓。專注數(shù)據(jù)庫、信息系統(tǒng)、EIP和.NET平臺等技術(shù)。多年來為政府和企業(yè)開發(fā)部署了多種信息化平臺,近千名學生遍布政府機關(guān)、中小企業(yè)和世界500強。
查看本期門診精彩實錄:http://doctor.51cto.com/develop-151.html
參與最新技術(shù)門診:http://doctor.51cto.com/
精選本期網(wǎng)友提問與專家解答,以供網(wǎng)友學習參考。
Q:李老師你好,我們公司的informix數(shù)據(jù)庫每天早上都要手動登錄,使用onstat - oncheck -pr 等命令進行數(shù)據(jù)庫運行及備份狀態(tài)的監(jiān)控,并發(fā)送報告郵件。雖說工作量不大,但這樣下來每天都是重復性的操作。我想使用自動化工具來實現(xiàn)informix數(shù)據(jù)庫的監(jiān)控及發(fā)送報告。我想了解一下,是否有這樣的工具,效果怎么樣?謝謝!
A: 你好,數(shù)據(jù)庫的自動化管理一直都是信息工作者煩惱的事情。針對你這個問題,解決辦法有多種,其一可以設(shè)計一個定時器來解決問題。定時器負責處理監(jiān)控狀態(tài)、生成LOG、備份等業(yè)務(wù)邏輯,在Linux環(huán)境下可以讓開發(fā)人員設(shè)計一個Linux守護進程來實現(xiàn)定時器,如果在Windows環(huán)境下則可以開發(fā)一個 Windows服務(wù)實現(xiàn),Windows服務(wù)也屬于守護進程,就像是一個機器人幫助你做事情一樣。另外也有一些共享軟件可以使用,像 DBRichTool,Aqua Data Studio等
Q:老師你好,我想當一個網(wǎng)絡(luò)工程師,要不要學習數(shù)據(jù)庫,如果學習需要學習到什么程度?
A: 你好,網(wǎng)絡(luò)工程師可以先學習下系統(tǒng),比如Windows,Linux等,因為網(wǎng)絡(luò)和系統(tǒng)結(jié)合的更緊密些,其次可以學習數(shù)據(jù)庫等。最好的選擇是先專精后專多,可以根據(jù)自己興趣和實際工作需求來決定。一般學習數(shù)據(jù)庫可以先從開發(fā)入手,然后學習管理,周期一般都在6個月到1年才能熟練,而實際經(jīng)驗只能從工作中慢慢摸索了。
Q:李老師,您好!我一直存在一個困惑就是 oracle stream在實例化數(shù)據(jù)庫的時候,采取那一種方式呢?export/import,rman,hot/cold backup,因為在一次實施過程中失敗了。報錯與是未能提供實例化SCN。我當時用的是exp /imp,數(shù)據(jù)量是200G,錯誤信息為未能提供實例化的SCN,我很郁悶,難道EXP后數(shù)據(jù)的sCN還會一致,不可能,既然不可能,那為什么會報"未能提供實例化的SCN"呢?希望專家?guī)臀疫@只菜鳥解決這個問題。謝謝!
A: advanced replication和stream實現(xiàn)的機制不同,再挖局日志時需要SCN的輔助,可以過一遍DBMS_APPLY_ADM.SET_INSTANTIATION_SCN。
Q:專家您好!mysql備份通常都是使用mysqldump,生成的sql文件這個文件直接放到別的數(shù)據(jù)庫產(chǎn)品里面執(zhí)行嗎?
A: 雖然各種數(shù)據(jù)庫廠商都說自己遵從了ANSI的SQL標準,但事實上每個數(shù)據(jù)庫系統(tǒng)都已有不同的標準。所以這種方法基本沒戲,但可以在這個基礎(chǔ)上修改,省不少時間。不過每個數(shù)據(jù)庫都提供了一些數(shù)據(jù)源驅(qū)動程序,比如你可以利用ODBC通過導入導出向?qū)О袽ySqL的數(shù)據(jù)導入到SQLServer中。
Q:專家您好!我問個很菜的問題。我用本地企業(yè)管理器為何無法遠程連接數(shù)據(jù)庫?
A: 遠程數(shù)據(jù)庫在那里?如果是在托管商那里,是獨立主機的話,基本不會有問題,如果是虛擬主機,一般需要在托管商的網(wǎng)站配置你的自己的IP地址。如果你的遠程數(shù)據(jù)庫是在局域網(wǎng)里面這種問題可有很多,信任的問題,安全的問題,都有可能,一般不會出現(xiàn)這種情況,連接的時候選擇具體實例就可以了。你參考如下步驟看看:
1、先保證ping通
2、在dos下寫入telnet ip 1433不會報錯
3、用ip連如企業(yè)管理器:
企業(yè)管理器-->右鍵SQlserver組-->新建sqlserver注冊-->下一步-->寫入遠程實例名(IP,機器名)-->下一步-->選Sqlserver登陸-->下一步-->寫入登錄名與密碼(sa,password)-->下一步-->下一步-->完成
4、如果還不行:
sqlserver服務(wù)器-->開始菜單-->SQLserver-->服務(wù)器網(wǎng)絡(luò)實用工具-->啟用 WinSock代理-->代理地址:(sqlserver服務(wù)器IP)-->代理端口-->1433-->OK了
5、如果還不行:
sqlserver客戶端-->開始菜單-->SQLserver-->客戶端網(wǎng)絡(luò)實用工具-->別名-->添加 -->寫入別名如"51CTO"-->"網(wǎng)絡(luò)庫"選tcp/ip-->服務(wù)器名稱寫入遠程ip或?qū)嵗?->OK了
Q:李老師你好,我想問一下,面向?qū)ο蟮臄?shù)據(jù)庫現(xiàn)在具體運用在哪些方面,廣泛嗎?還有,又沒有versant的學習資料,嘿嘿
A: 從關(guān)系模型到面向?qū)ο竽P?,是?shù)據(jù)庫發(fā)展的一個過程,本質(zhì)上是數(shù)據(jù)庫系統(tǒng)設(shè)計時使用的算法有了改變,目前數(shù)據(jù)庫的大部分應(yīng)用都在關(guān)系算法這一塊上,實際的開發(fā)中,可以利用ORM映射設(shè)計處更容易理解和控制模型。對象的好處在于,它具有屬性,方法等,對表示事物更容易理解,可以隨時變化,可以更好的控制。面向?qū)ο駭?shù)據(jù)庫這幾年發(fā)展的也很火,主要由于計算機輔助,人工智能等高密集型數(shù)據(jù)存儲的技術(shù)領(lǐng)域,需要面向?qū)ο蟮臄?shù)據(jù)庫來更好的理解對象的定義和存儲。
Q:專家你好,我想請問一下DBA在linux方面的應(yīng)用有哪些。Linux掌握到什么時候開始學習DBA比較好。謝謝專家指點。
A: 數(shù)據(jù)庫系統(tǒng)本身就屬于系統(tǒng)軟件,如果你對操作系統(tǒng)原理,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫原理等比較熟悉,就奠定了成為DBA的扎實基礎(chǔ)。如果你的數(shù)據(jù)庫開發(fā)和管理工作是在 Linux上完成的,那么Linux系統(tǒng)本身對你很重要,像對Linux系統(tǒng)的理解,管理等,Shell編程,都算是比較基礎(chǔ)的東西。DBA在Linux 下主要工作就是管理數(shù)據(jù)庫,包裹I/O,性能優(yōu)化,安全,監(jiān)控,高可用性,災難恢復等等。
Q:我想問一下學習數(shù)據(jù)庫應(yīng)該如何入手,ACCESS 還可以,SQL懂點網(wǎng)站設(shè)計用的簡單語句,不知道想學的高深點應(yīng)該 學些什么?入手選擇MySql 還是 MsSql好?
A: 可以根據(jù)自身情趣和具體工作,比如你們上的項目用到了MySQL數(shù)據(jù)庫,可以先學習MySQL,如果是SQL Server,就可以先學習SQL Server。從入門到熟練開發(fā)的學習周期二者都不長,但后期的深度提高就靠實際經(jīng)驗來不斷磨合了。如果數(shù)據(jù)庫理論扎實,ANSI SQL語法很熟悉,二者都學習也可以,甚至DB2,Oracel等都可以學習,關(guān)鍵是看你的職業(yè)規(guī)劃,和你所處的團隊是什么情況,一般在一個團隊里面學習一個產(chǎn)品的用法,通過實際的項目經(jīng)驗,很快就能熟悉。其實就用一個數(shù)據(jù)庫而言,不需要太長的時間就上手了,MySQL比較小巧,上手非???,直接去 MySQL的官方下載個5.0的,相關(guān)的工具也很多,MySQL官方也提供了一套。而SQL Server從開發(fā)到管理,再到BI提供了一整套的功能,適合企業(yè)級的應(yīng)用,可以先學習開發(fā),基本3個月的周期,然后學習SQL Server的管理,基本也是3各月的周期,正所謂入門容易提高難,后期的需要自己多研究,多在實際工作中積累經(jīng)驗。
Access實際上是一個不錯的數(shù)據(jù)庫,在企業(yè)應(yīng)用中也很普遍,總之針對不同的項目,不同的客戶,選擇合適的數(shù)據(jù)庫才是硬道理。
真正想成為數(shù)據(jù)庫設(shè)計的專家,我的建議,一開始最重要的是學習數(shù)據(jù)庫理論,數(shù)據(jù)庫建模等,具體的數(shù)據(jù)庫系統(tǒng)是次要的。
#p#
Q:請問一下,DBA主要學習的內(nèi)容有哪些?初級應(yīng)該掌握哪些?中級應(yīng)該掌握哪些?什么樣的水平才能叫高級DBA?
偶現(xiàn)在管單位的一個小數(shù)據(jù)庫,是一個軟件開發(fā)公司給偶們單位開發(fā)的,平時基本不需要維護,所以不知道DBA的職責有哪些?DBA的工作是干嘛?要什么樣的水平才能叫合格?
A: 一個有優(yōu)秀的DBA首先是職業(yè)素養(yǎng),其次是興趣。從技術(shù)層面講,DBA要學習一條線的知識,比如相關(guān)的系統(tǒng)平臺,其次是基于這個平臺的信息系統(tǒng)領(lǐng)域,最后才是數(shù)據(jù)庫系統(tǒng)。一般來講,一個優(yōu)秀的DBA也必須是數(shù)據(jù)庫開發(fā)的高手,中級DBA要達到對這個數(shù)據(jù)庫系統(tǒng)及其相關(guān)平臺,以及工具有很好的認識和使用熟練過程,有相當經(jīng)驗的數(shù)據(jù)庫實際維護工作。高級DBA必須是一個系統(tǒng)方面的高手,說到底數(shù)據(jù)庫就是一個系統(tǒng)級別的產(chǎn)品,如果你對系統(tǒng)原理,系統(tǒng)實現(xiàn)研究很深,那么DBA后期的路子走起來會順的多。
從軟件開發(fā)角度講,DBA的知識可有可無,就用一個數(shù)據(jù)庫產(chǎn)品做開發(fā)講而言,現(xiàn)在主流的數(shù)據(jù)庫你只需要一到兩周,都可以上手,只是時間問題。但要做一個優(yōu)秀的開發(fā)者,DBA的知識必須要具備的。
Q:李老師,對于一個數(shù)據(jù)庫初學者來說,我對于品類繁多的數(shù)據(jù)庫軟件中選擇一款適合的數(shù)據(jù)庫還是有一定的困難,我現(xiàn)在正在學習linux,但是聽人說只會 linux是沒用的,要學習linux上的應(yīng)用,比如集群,中間件,數(shù)據(jù)庫應(yīng)用等等。所以想選擇一款數(shù)據(jù)庫,你覺得在linux上面哪一種數(shù)據(jù)庫應(yīng)用最廣泛呢,最有發(fā)展前景呢。
之前聽到一位年薪217萬的專家分析,"根據(jù)我對數(shù)據(jù)庫的理解,目前市場上雖然有Oracle,DB2,Informix,Sybase和SQL Server數(shù)據(jù)庫,但Informix數(shù)據(jù)庫已經(jīng)被IBM收購,而Sybase數(shù)據(jù)庫在技術(shù)和市場上正走向沒落,占據(jù)市場主要份額的就是 Oracle,DB2和SQL Server數(shù)據(jù)庫。SQL Server數(shù)據(jù)庫非常好,但是很遺憾的是只能在Windows平臺使用。所以如果你深入研究SQL Server數(shù)據(jù)庫,我只能說獲取高薪的概率稍低,而且坦白的說,使用SQL Sever數(shù)據(jù)庫的企業(yè)一般是中小企業(yè)居多。而國內(nèi)做Oracle數(shù)據(jù)庫的人太多,如果你想在Oracle領(lǐng)域出人頭地,難度極大。但是,做DB2數(shù)據(jù)庫的人反而不太多,物以稀為貴。況且,DB2數(shù)據(jù)庫廣泛應(yīng)用在銀行、電信、制造行業(yè)、零售行業(yè)、保險行業(yè)等"高薪"領(lǐng)域中,所以我強烈建議學習DB2數(shù)據(jù)庫 "而在這其中也沒有提到mysql,你可以就其分析一下嗎?
非常感謝李濤老師,原諒一個初學者的諸多疑問。
A: 根據(jù)你的情況,可以從Oracel,DB2中選一個作為職業(yè)發(fā)展的技術(shù)方向,努力學精。DB2在國內(nèi)不溫不火,但市場占有率也沒想象的那么差,Oracel 的市場份額最高,MySQL使用的公司也很多,從每年招聘的數(shù)量來看,這三個中可以選擇Oracel和MySQL搭配學習,或者DB2和MySQL學習,任意一個組合學好了,高薪都不是問題(但高薪和技術(shù)的關(guān)系不是成正比的)。當然SQL Server也是一樣,大小公司都在用,因為你選擇了Linux,所以不推薦你學習SQL Server。在開發(fā)平臺中,比如.NET平臺,JAVA平臺上,ORACEL,SQL Server,DB2,MySQL,Sybase,Informix等等中的任何數(shù)據(jù)庫都可以被用到,ORACEL,SQL Server在國內(nèi)應(yīng)該是最多的。DB2在電信,金融方面用的比較多,尤其是配合IBM的OS。
選擇一個路子,自己認真的走下去,就是對的。祝你好遠。
Q:SQL Server 2008 相比2005有什么新特性?謝謝!
A: 從開發(fā),管理,高可用性,性能優(yōu)化等方面都有一些新東西加入,而且加入了很多比較新穎的東西。google一下吧
Q:老師:你好!我對安全工程師感興趣! 不知道得學習什么知識?
A: 安全是個很大的話題,看你對那方面感性趣了,比如網(wǎng)絡(luò) ,系統(tǒng),分層架構(gòu)等。
Q:老師你好,我是做弱電工程的,裝考勤機的時候經(jīng)常需要連數(shù)據(jù)庫,但是有的時候,老是提示我違反唯一性原則,連不上數(shù)據(jù)庫,老師,這是為什么?
A: 唯一性原則?應(yīng)該是考勤軟件本身報的異常,開發(fā)人員在開發(fā)這個軟件的時候,會有異常判斷,如果代碼或者不合理的操作產(chǎn)生異常時,就會拋出這個異常,給最終用戶友好的提示。仔細的分析下這個軟件的運行條件,合理的配置,最終會解決問題的。
Q:你好,李老師,能不能講下SQL SERVER高級的開發(fā)功能,尤其是存儲過程,觸發(fā)器和自定義函數(shù)。謝謝了!
A: 你好,由于篇幅的問題,你的問題在這里不做深入的回答了,活動結(jié)束后,通過博文來解答你這個問題吧。
Q:李老師你好,今天早上我在公司需要修改一些數(shù)據(jù)的時候,右鍵點擊表open table->return all rows 出現(xiàn)查詢設(shè)計器遇到查詢錯誤 未指定的錯誤 所有的表都這樣,但是用select * from 可以查詢數(shù)據(jù),數(shù)據(jù)庫是SQL Server 7,請問如何解決,只能重裝嗎?
A: 不用,重啟一下你的服務(wù)器,釋放下內(nèi)存。應(yīng)該就沒問題了
Q:李老師你好,我以前遇到一個很奇怪的問題,現(xiàn)在都想不出怎樣解決。在一間有5臺電腦的公司里裝了一套C/S的系統(tǒng),其中有一臺電腦是作數(shù)據(jù)庫(SQL SERVER2000)的,其它電腦就連那臺的數(shù)據(jù)庫。但是有一臺電腦就是連不上。PING那臺數(shù)據(jù)庫的PC是通的,在那連不上數(shù)據(jù)庫的電腦上裝SQL SERVER客戶端還是連不上。但過一個小時后它又可以連上,用了不久還是會斷。網(wǎng)絡(luò)一直是通的。為什么呢?
A: 數(shù)據(jù)庫服務(wù)器可能存在負載的問題,對服務(wù)器性能進行性能測試,如果不是性能的問題,那么可以按最初的軟件配置方法,對數(shù)據(jù)庫連接重新配置。
Q:李老師!你好看到你的樣子太親切了!呵呵~-~在此我想問做為一個網(wǎng)絡(luò)工程師來說!對于數(shù)據(jù)庫的學習從那些方面入手!同時關(guān)于數(shù)據(jù)庫與WEB開發(fā)之間的關(guān)系!謝謝你。
A: 先學習SQL的開發(fā)吧。選一個你感興趣的數(shù)據(jù)庫,比如SQL Server ,Oracel等,堅持一個月基本就上手了,然后學習該數(shù)據(jù)庫的管理特性,工具等等,勤實踐,多動手。數(shù)據(jù)庫是存儲數(shù)據(jù)的地方,WEB開發(fā)的后端一般都會用數(shù)據(jù)庫存儲數(shù)據(jù),另外也可以用XML,特定文件來存儲數(shù)據(jù),不一定非要用數(shù)據(jù)庫。
Q:李老師,您好。我企業(yè)有一ERP系統(tǒng),SAP BUSINESS ONE。其數(shù)據(jù)庫有一張表的記錄達到近三百萬條,而且,每次在ERP系統(tǒng)中執(zhí)行相關(guān)查詢操作時,系統(tǒng)就會變慢甚至死機。請問,對于這種比較大的表,有什么好辦法增加查詢效率嗎?謝謝!
A: 從2個方面進行優(yōu)化,第一,針對ERP系統(tǒng)本身,如果是你們自主開發(fā)的,那么在編寫查詢語句的代碼時,可以對SQL語句進行優(yōu)化,最好使用存儲過程,啟用相關(guān)開發(fā)平臺的緩存功能。第二,對數(shù)據(jù)庫本身優(yōu)化,可以嘗試使用分區(qū)表,分割數(shù)據(jù)庫文件,維護索引等方面進行優(yōu)化。
Q:老師,你好!我想了解一下 數(shù)據(jù)庫安全方面的問題! 我是學網(wǎng)絡(luò)安全的!對于管理網(wǎng)絡(luò)安全 或者網(wǎng)站后臺安全 應(yīng)學習哪方面的知識!還有能給我推薦寫資源嗎?比如網(wǎng)站 或者電子書之類的!
A: 網(wǎng)絡(luò)安全這個概念太大了,網(wǎng)絡(luò)安全理論,網(wǎng)絡(luò)安全產(chǎn)品,相關(guān)系統(tǒng)平臺,和網(wǎng)絡(luò)有關(guān)的組件要非常熟悉,網(wǎng)站后臺安全包裹系統(tǒng)和網(wǎng)路配置的安全,數(shù)據(jù)庫安全,WEB程序的代碼安全等。建議你選擇一個平臺,做某個平臺的網(wǎng)絡(luò)安全專家,先專后全面發(fā)展?;竟ψ钪匾?,可以閱讀下TCP/IP協(xié)議,共三冊。
Q:李老師您好!我想問一下,關(guān)于企業(yè)級的網(wǎng)絡(luò)管理員對于數(shù)據(jù)庫的理解級別應(yīng)為?如果現(xiàn)在工作當中去學習應(yīng)該多學習哪些關(guān)于數(shù)據(jù)庫方面的問題?謝謝!
A: 網(wǎng)路管理員,可以偏重系統(tǒng)一些,數(shù)據(jù)庫可以作為了解,如果你是偏重系統(tǒng)管理的網(wǎng)絡(luò)管理員,數(shù)據(jù)庫也可以學習下,先學習SQL語句,然后學習下它的基本管理,像數(shù)據(jù)庫安全,備份和還原等,基本2個月就熟悉了。
【編輯推薦】