<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇開發語言培訓專區Oracle數據庫 → oracle高可靠性的一些討論和想法


      共有6648人關注過本帖樹形打印

    主題:oracle高可靠性的一些討論和想法

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    oracle高可靠性的一些討論和想法  發帖心情 Post By:2010-12-11 10:46:58

    有關oracle高可靠性的一些討論和想法
    http://skyhorse.blogbus.com/logs/2004/03/106569.html
    有關RAC的工作日志:
    12月16日到12月23日做RAC的試驗。12月24日把服務器交給QYC做DataGuard.
    QYC做完DataGuard試驗之后,1月4日我重新開始做RAC的試驗。
    當初說是要做XX集團的雙機熱備,因為我應用oracle的時間非常短,對oracle并不熟悉,所以我這段時間就搜集了
    一些相關的信息和資料,以供大家參考。
    XX集團的應用我分析了一下,應該是不要求24*7連續工作的,只要能夠及時恢復訪問即可,而且數據量不是太大

    而且我原來讓XX方面做了NAT, 我們在這里就可以進行遠端的控制,控制到XX集團內部的Intranet的個別服務器。
    我在網上所能搜到的信息是高可用性解決方案分為4種,
    一種是oracle提供的被用方法,Standby (=9i DataGuard)
    一種是AR (高級復制Advanced Replication,在以前版本叫快照snapshot)
    一種是oracle 并行服務器8i的OPS (9i RAC,Real Application Cluster)
    一種是第三方HA解決方案 (如Rose HA,故障切換時間是幾分鐘)
    oracle公司的牛人著的里也是
    把這4種方法做為高可用方案的組成。
    這幾種方案從原理上來講都很容易理解,但是實際上有相當多的細節和問題。
    另外還有一種是大家都不太熟悉的是oracle 的 failsafe。
    failsafe 采用的是SHARE NOTHING結構,即采用若干臺服務器組成集群,共同連接到一個共享磁盤系統,
    在同一時刻,只有一臺服務器能夠訪問共享磁盤,能夠對外提供服務.這與第3方HA方案的概念基本一樣。
    但是 failsafe系統局限于WINDOWS(winnt,win2k...)平臺,必須配合MSCS(microsoft cluster server).
    我在網上找到現成的雙機熱備的文檔 就是講在 oracle8i上如何做standby. 其保證了始終有一臺備用的
    數據庫能夠在很短時間內通過人工,恢復正常的訪問,并保證數據一致。這是不要求24*7連續工作時所考慮的方
    案。
    我們所能做試驗的就是前三種方案,因為人手有限,所以就做了9i的DataGuard 和RAC 兩種方案的試驗。
    高級復制據說lwd在很久以前做過。我打電話問oracle公司,他說AR對數據庫的性能影響太大。
    高級復制也分為兩種情況
    1.主動/被動策略: node1處于主動模式,數據庫可讀寫,node2處于被動模式,數據庫只讀。
    2.主動/主動策略: node1和node2 都處于主動模式,數據庫都可讀寫。這種對數據庫的性能影響特別大。
    在講述DataGuard和RAC這兩種方案之前,我先補充一點關于oracle Client 如何能夠不修改本機配置就能
    訪問兩臺oracles數據庫的方法。
    也就是修改本機的tnsname.ora
    一個通常的tnsname.ora 如下:
    RACDB =
    (DESCRIPTION =
    (LOAD_BALANCE = off)
    (failover = on)
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 211.68.29.61)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 211.68.29.62)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = racdb)
    )
    )
    在 ADDRESS_LIST 中 寫了兩個地址,client 通過oracle net 在訪問時,如果訪問不通第一個ip,就會訪問第2個
    ip.
    這個特性是早就有了的。load_balance 特性也是有的。但是在兩臺數據庫內容不一致的情況下是沒有任何意義的

    不過,在oracle9i 的官方pdf中,load_balance 特性是不推薦使用的。
    RAC 的試驗我昨天已經做成了,雖然遇到了一些不大不小的Bug和不穩定現象。
    環境是oracle9.2.0.1.0 , 2* RedHatAdvanceServer 2.1 和一個磁盤陣列, 采用的是裸設備。
    RAC 是share everything 模式,兩個數據庫實例同時共享同一套數據文件,控制文件,日志文件。
    客戶端可以同時訪問這兩臺數據庫得到的數據都是一致的,它的重點是高性能,可擴展性。但是可靠性是不如Data
    Guard的。
    因為首先在物理上是連接在一起的,是沒法容災的。
    其次,instance1 死掉的話,可能可能影響instance2。
    (Oracle 公司的電話支持說的, 以及網上的論壇中有相關的例子,一個實例down機拖累另一臺不能正常工作,
    我在做RAC試驗的時候,也出現了node1 重起,造成node2也重起的個別現象)
    當然了,與單機的oracle相比,可用性肯定是高的。
    另外網上我所能找得到的RAC成功案例(論壇oracle版主之類實施),無一例外都是oracle經過認證的服務器硬件和
    軟件.
    例如HP,DELL PowerEdge服務器。DELL/EMC fiber-channel storage array 等等。
    另外,因為沒有多余交換機,4塊網卡中的進行內部通信用的兩塊網卡我采用的是直接級聯
    (新聚思公司的oracle支持說這樣不穩定,但是為什么不穩定也沒有說原因)
    有關共享文件系統的一些問題:
    采用裸設備無法進行日常管理,也沒有辦法進行文件系統級的備份。
    開始我第一次在Mandrake8.1的時候,對陣列進行分區,而fdisk在linux下只能分16個分區,我只好采用
    lvm(logical volume manager,支持256個)對裸設備進行管理。后來在dbca創建數據庫的最后階段無法創建,只
    好作罷。
    第二次用RedHat AS2.1,oracle網站新推出了針對ocfs,我將其2003-1-3 更新的有關ocfs的所有rpm包(只適用
    于AS2.1)安裝上,但是卻發現無法正常加載ocfs module, 我查了好久,估計這與我們所用的世紀曙光硬件有關

    采用的AMD雙Athlon MP 1800+ 以及相關主機硬件,RedHat AS 2.1 無法正常認出,從而造成ocfs modules也無法
    正常加載,因為ocfs modules與kernel是相關的。或許換成intel 的雙cpu, 或換成單cpu ,然后重裝系統就可以
    解決。
    因為rhAS2.1的內核不支持 lvm, 需要重新編譯內核才能支持,我只好 將磁盤陣列分成2個drive,分別進行了
    分區,跳過了fdisk分區數量限制,給oracle提供了足夠多的裸分區。
    當初做方案時買的vertris 的冷備份軟件(大概10萬元)是只能在oracle停機時通過smb來copy 文件進行備份到磁
    帶里的。
    而裸設備是沒有辦法copy 的。
    客戶端在tnsname.ora配好address_list后,
    當nodeA 停機時,是可以不用修改配置訪問到nodeB 的。
    但是這也分很多種情況
    nodeA down,
    listenerA down,
    InstanceA down,
    InstanceA in indeterminate state,
    session die等等。
    并非每種情況都能實現自動轉到node2上。
    第三方HA軟件是靠自己的agent軟件檢測模塊按照自己的故障判斷標準進行強制轉換的。第一臺肯定不會被訪問到

    在幾分鐘之后所有的訪問都會訪問到第二臺剛剛起來的數據庫上。
    oracle 要想實現與第三方HA軟件一樣的功能,只能與microsoft cluster server一起 在windows平臺
    上實現failover.
    除此之外,oracle本身的幾種High Available 方案是不提供與此類似的自動failover功能的。
    RAC提供并行;
    standby/dataguard提供熱備份服務器(需要人工維護切換);
    AR 可以基本實時提供兩臺數據一致的數據庫,但是數據庫性能受影響。而且客戶端能否在各種各樣的情況下都自

    切換到第二臺數據庫上我也不知道。(例如listener running, instance down時無法切換到第二臺)
    主數據庫發生災難,無法訪問的情況下應該是能夠切換的,但是有些情況下,只需要修改
    tnsname.ora或者停掉node1的listener即可。
    以前曾經有人在職成網做過 RoseHA+oracle817+Turbolinux的集成方案, 據說效果也非常差。我所看到我們這里
    的人去職成網
    進行維護N多次。(N非常大) 所以在集成方案中如果用到了oracle數據庫,就準備好有人長期進行維護,主數據庫
    在萬一情況下發生災難,只要有一臺熱的備用數據庫能夠在比較短(電話通知之后1天之內)的時間內繼續投入使用
    就達到了可用性的目的,不至于主數據庫損壞,重新進行安裝恢復占用星期級的時間。
    要想達到failover自動切換,無需人的參予是一種理想化狀態,在unix平臺上無法實現,windows平臺上的oracle
    failover
    我不太清楚,應該是能實現這個想法的。
    standby備用數據庫 是在oracle7.x才開始提供的一項功能,到了oracle8i才能提供read only模式,
    到了9i 才使日志應用等實現了自動化,但是這個自動化不是故障切換自動化,而是只為了實現熱備份數據庫的功
    能完善而
    增加的一些自動化。 歸根到底,oracle公司開發這么久,還沒有開發完善這些高可用方案,只是一直處于完善階
    段。
    RAC的并行提供服務我從一些oracle技術支持那里聽來的說法也是最好一臺用來做讀寫,另一臺專門提供只讀操作
    的查詢,
    不然仍然影響性能。用來做我們這種failover應用的倒不多。
    很容易理解的一些稍微復雜的原理,要想在實際中應用是需要大量時間的,里面所涉及到的眾多細節如日志增量
    等等很麻煩。
    就連oracle9.0.0.1在linux下的OUI(oracle univesal installer)
    安裝程序在它認證的linux上運行也是一堆Bug.
    也就是它的jre有毛病,所以我當初在mandrake8.1上創建數據庫出現了問題,無法進行下去。
    特定的環境,特定的問題,很多都是沒有解釋的。這是網上的一個DBA的原話。
    網上也有oracle81700升級到81740就出故障的案例。

    使用DataGuard(standby) 是不能實現故障的自動切換的,因為據oracle公司的人說無從判斷究竟算什么樣的故障
    才開始進行轉移,
    這個已經超出oracle軟件本身的范圍了。或許可以通過自己編寫程序來按照自己的標準來進行判斷和轉移。
    但是DataGuard做到了始終有一臺數據庫與主數據庫保持一致。在加上客戶端的tnsname.ora的addresslist在一定
    程度上
    是可以實現部分的故障切換的。
    備數據庫平時只能處于read only或 recovery manage 模式。
    read only 不能應用主數據庫傳來的重作日志,recovery manage 可以進行數據恢復,但是不能被客戶端訪問。
    備用數據庫經常處于修復狀態,因此不能被終端用戶使用,這從管理角度是一種浪費(所以8i開始提供了read
    only模式)。
    我的想法是
    1. 主數據庫發生災難,被迫關閉,XX方面打電話通知過來,我們通過遠程由人工激活備用的數據庫即可。也就是
    敲幾行sql命令即可。
    完全可以寫成腳本,隨便找一個人執行一下即可。
    2. 備數據庫白天處于read only 模式,可供webserver(也就是客戶端)查詢,晚上12點到1點通過cron
    運行在recover managed模式,
    將白天主數據庫的更改應用到備數據庫上。
    3. 通過cron將備數據庫白天處于 primary 模式,可讀可寫,晚上通過腳本改回standby模式,并且應用主數據庫
    的更新。
    這樣當主數據庫down機,客戶端會立刻連到第二臺數據庫上,同時也能夠進行讀寫。數據分歧只有一天,并且達
    到了無人
    切換狀態。
    這3種方法,第1種是最好的。
    第2種是可行的,是oracle官方認可的,有數據分歧,和只讀的局限性。
    第3種有數據分歧并且有或大或小的細節問題沒有考慮,只是我的一個臨時想法。
    在RAC 和 DataGuard 這兩種方案中,
    RAC對硬件和操作系統要求都比較高,維護也非常復雜,我們買的vertas 備份軟件也沒有辦法使用冷備的文件。
    對人員的素質要求也很高。
    隨便舉個例子,RedHat AS 2.1 如果認不出SCSI driver,就沒法做了。因為oracle9.2i只能用這個操作系統。
    ( webmail沒有用mandrake8.1而是用mandrake8.2就是這個原因)
    不確定因素太多。
    在做系統集成方案和買硬件時都要仔細考慮,買什么樣的服務器,陣列,網卡,幾個交換機,linuxAS21能否裝上
    等等。
    而不是隨便寫個雙機熱備,買兩個服務器,一個交換機就行了。
    不過這個方案可以用在我們自己的機房里,提供高性能的oracle數據庫服務。(但是需要比較多的時間來準備和調
    試)。
    我現在只能做到把oracle92i裝起來,具體平時的管理還要靠有數據庫使用經驗的其他同事來做。
    安裝文檔我放在附件里了。

    支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

    返回版面帖子列表

    oracle高可靠性的一些討論和想法








    簽名
    主站蜘蛛池模板: 久久久久国产精品免费免费搜索| 欧美又大粗又爽又黄大片视频 | 波多野结衣全部系列在线观看| 污片在线观看网站| 欧美一区二区激情三区| 日韩伦理片电影在线免费观看| 成人看免费一级毛片| 天天射天天干天天| 国产手机精品一区二区| 国产2021中文天码字幕| 亚洲综合久久综合激情久久| 亚洲精品蜜桃久久久久久| 亚洲国产91在线| 久久99精品免费视频| aaa一级最新毛片| 色一情一乱一伦一区二区三区日本 | 太粗太长岳受不了了| 国产看午夜精品理论片| 又粗又长又爽又大硬又黄 | 农村乱人伦一区二区| 亚洲国产成人久久三区| 中文字幕精品视频在线观| 97精品国产一区二区三区| 色噜噜狠狠一区二区| 欧美精品黑人粗大| 新97人人模人人爽人人喊| 国产精品视频一区二区三区四| 国产一区韩国女主播| 亚洲成a人一区二区三区| 中文天堂在线最新版在线www| 2019中文字幕在线| 特黄大片aaaaa毛片| 日本无卡码一区二区三区 | 中文字幕无码无码专区| 337p色噜噜人体大胆欧美| 老子影院dy888午夜| 欧美成人猛男性色生活| 成人18网址在线观看| 国产孕妇孕交大片孕| 人人妻人人澡人人爽人人精品| 久久一区二区三区99|