文章詳情頁
Oracle中自動(dòng)存儲(chǔ)管理技術(shù)原理及應(yīng)用
瀏覽:2日期:2023-11-24 18:13:03
數(shù)據(jù)庫治理員終于可以將自己從單調(diào)而常用的增加、移動(dòng)和刪除存儲(chǔ)磁盤的任務(wù)中解脫出來了 — 并且無需增加額外的成本。 假設(shè)您剛得到一個(gè)新的 Oracle 數(shù)據(jù)庫的全新的服務(wù)器和存儲(chǔ)子系統(tǒng)。除操作系統(tǒng)配置之外,在您能夠創(chuàng)建數(shù)據(jù)庫之前,最重要的工作是什么?很明顯,就是創(chuàng)建存儲(chǔ)系統(tǒng)布局 — 或更具體地說,選擇一種保護(hù)級(jí)別,然后構(gòu)建必需的冗余磁盤陣列 (RAID) 組。 在大多數(shù)數(shù)據(jù)庫安裝中安裝存儲(chǔ)器要花費(fèi)大量的時(shí)間。從多種可能中選擇一種特定的磁盤配置需要仔細(xì)的規(guī)劃和分析,并且最重要的是,需要具體了解存儲(chǔ)技術(shù)、卷治理器和文件系統(tǒng)。在這個(gè)階段的設(shè)計(jì)任務(wù)可以大致說明如下(注重這個(gè)列表只是代表性的,任務(wù)將隨配置而變化): ● 確認(rèn)存儲(chǔ)器在操作系統(tǒng)級(jí)通過了認(rèn)證,并確定冗余保護(hù)的級(jí)別,該級(jí)別可能已經(jīng)提供(硬件 RAID)。 ● 集中和構(gòu)建邏輯卷組,并確定分段或鏡像是否也是必需的。 ● 在邏輯卷治理器創(chuàng)建的邏輯卷上構(gòu)建文件系統(tǒng)。 ● 設(shè)定所有權(quán)和權(quán)限,以便 Oracle 進(jìn)程可以對(duì)設(shè)備進(jìn)行打開、讀和寫操作。 ● 在文件系統(tǒng)上創(chuàng)建數(shù)據(jù)庫,假如可能的話務(wù)必在非 RAID 的位置上創(chuàng)建非凡文件,例如重做日志、臨時(shí)表空間和重做表空間之類的非凡文件。 在大多數(shù)公司中,這些步驟大部分是由對(duì)存儲(chǔ)系統(tǒng)非常了解的某些人來執(zhí)行的。這里的“某些人”通常不是數(shù)據(jù)庫治理員。 不過,請(qǐng)注重所有這些任務(wù) — 分段、鏡像、邏輯文件系統(tǒng)構(gòu)建 — 的執(zhí)行都只支持一種類型的服務(wù)器,Oracle 數(shù)據(jù)庫。因此,Oracle 自己提供一些技巧來簡(jiǎn)化或改進(jìn)這個(gè)過程不是很有意義嗎? Oracle Database 10g 正是這么做的。一個(gè)新的和激動(dòng)人心的特性 — 自動(dòng)存儲(chǔ)治理 (ASM) — 使 DBA 能夠完全在 Oracle 框架內(nèi)執(zhí)行上述的許多任務(wù)。利用 ASM,您可以僅利用 Oracle Database 10g 軟件自帶的功能(無需額外的成本)來將一組磁盤轉(zhuǎn)換成一個(gè)高可伸縮的(重點(diǎn)是在“可伸縮”上)和高性能的文件系統(tǒng)/卷治理器。并且您不需要是一個(gè)磁盤、卷治理器或文件系統(tǒng)治理方面的專家。 在本文中,您將了解到關(guān)于 ASM 大量的基礎(chǔ)知識(shí),以開始在實(shí)際的應(yīng)用程序中使用它。正如您的猜測(cè),這個(gè)強(qiáng)大的特性無疑將引發(fā)全面的討論,篇幅所限,我們不能在此作過多介紹,假如您想了解更多的內(nèi)容,在結(jié)論部分列出了一些極好的信息來源。 ASM 是什么? 假設(shè)您要在數(shù)據(jù)庫中使用 10 個(gè)磁盤。利用 ASM,您不需要在 OS 端創(chuàng)建任何東西,該特性將把一組物理磁盤集合成一個(gè)邏輯實(shí)體(稱為磁盤組)。磁盤組類似于一個(gè)分段(和可選鏡像)文件系統(tǒng),但具有重要的差異:它不是一個(gè)用于存儲(chǔ)用戶文件的通用文件系統(tǒng),并且它不進(jìn)行緩沖。由于后面的原因,磁盤組提供了直接作為原始設(shè)備來訪問這個(gè)空間,并仍提供文件系統(tǒng)的便利性和靈活性的好處。 邏輯卷治理器一般使用一個(gè)函數(shù)(如散列函數(shù))來將塊的邏輯地址映射到物理塊。計(jì)算使用 CPU 周期。此外,當(dāng)增加一個(gè)新的磁盤(或 RAID-5 磁盤組)時(shí),這種典型的分段函數(shù)需要重新定位整個(gè)數(shù)據(jù)集中的每一位。 相比而言,ASM 使用一個(gè)非凡的 Oracle 例程來解決從文件區(qū)到物理磁盤塊的映射問題。這種設(shè)計(jì)除了定位文件區(qū)非常快速之外,還在增加或刪除磁盤時(shí)有所幫助,因?yàn)槲募^(qū)的位置不需要調(diào)整。這個(gè)非凡的 ASM 例程類似于其它的文件系統(tǒng),必須運(yùn)行此例程,ASM 才能工作,并且用戶不能進(jìn)行修改。一個(gè) ASM 例程可以在同一臺(tái)服務(wù)器上支持許多 Oracle 數(shù)據(jù)庫例程。 這個(gè)非凡的例程只是一個(gè)例程,不是用戶可以在其中創(chuàng)建對(duì)象的數(shù)據(jù)庫。所有關(guān)于磁盤的元數(shù)據(jù)都存儲(chǔ)在磁盤組本身中,使得它們能夠盡可能地自我描述。 那么概括地說,ASM 的優(yōu)點(diǎn)是什么? ● 磁盤增加 — 增加磁盤變得非常輕易。無需停機(jī)時(shí)間,并且文件區(qū)域自動(dòng)重新分配。 ● I/O 分配 — I/O 自動(dòng)分布在所有可用的磁盤上,無需人工干預(yù),從而減少了熱點(diǎn)出現(xiàn)的可能性。 ● 帶區(qū)寬度 — 在重做日志文件中分段可以細(xì)分(128K,以獲得更快的傳輸速率),對(duì)于數(shù)據(jù)文件,帶區(qū)則略大一些(1MB,以一次性傳輸大量的數(shù)據(jù)塊)。 ● 緩沖 — ASM 文件系統(tǒng)不進(jìn)行緩沖,直接進(jìn)行輸入/輸出。 ● 核心化的異步 I/O — 實(shí)現(xiàn)核心化的異步 I/O 無需非凡的設(shè)置,并且無需使用原始或第三方的文件系統(tǒng)(如 Veritas Quick I/O)。 ● 鏡像 — 假如硬件鏡像不可用,則可以輕易地建立軟件鏡像。逐步創(chuàng)建一個(gè)基于 ASM 的數(shù)據(jù)庫 下面是如何創(chuàng)建一個(gè)基于 ASM 的數(shù)據(jù)庫的具體的示例: 1. 創(chuàng)建一個(gè) ASM 例程 通過指定下列初始化參數(shù),您可以利用數(shù)據(jù)庫創(chuàng)建助手來創(chuàng)建一個(gè) ASM 例程: INSTANCE_TYPE = ASM 當(dāng)服務(wù)器啟動(dòng)時(shí),您應(yīng)當(dāng)啟動(dòng)該例程,而當(dāng)服務(wù)器關(guān)閉時(shí),應(yīng)當(dāng)最后關(guān)閉該例程。這個(gè)參數(shù)的默認(rèn)值是 RDBMS,適用于常見的數(shù)據(jù)庫。 2. 創(chuàng)建磁盤組 在啟動(dòng) ASM 例程后,利用可用的磁盤創(chuàng)建一個(gè)磁盤組。 CREATE DISKGROUP dskgrp1EXTERNAL REDUNDANCYDISK'/dev/d1','/dev/d2','/dev/d3','/dev/d4',... and so on for all the specific disks ...; 在上述命令中,我們使數(shù)據(jù)庫利用名稱為 /dev/d1、/dev/d2 等的磁盤創(chuàng)建了一個(gè)名稱為 dksgrp1 的磁盤組。您還可以在 DISK 子句中用通配符指定磁盤名稱,而不是分別給定磁盤。 DISK '/dev/d*' 在上述命令中,我們指定了一個(gè)子句 EXTERNAL REDUNDANCY,它指示一個(gè)磁盤出現(xiàn)故障將使磁盤組停止工作。這通常是由硬件提供冗余(如鏡像)的情況。假如沒有基于硬件的冗余,則可以設(shè)置 ASM 來在磁盤組中創(chuàng)建一組非凡的磁盤(稱為 failgroup),以提供這種冗余。 CREATE DISKGROUP dskgrp1NORMAL REDUNDANCYFAILGROUP failgrp1 DISK'/dev/d1','/dev/d2',FAILGROUP failgrp2 DISK'/dev/d3','/dev/d4';d3 和 d4 不是 d1 和 d2 的鏡像,雖然看起來似乎是那樣。相反,ASM 使用所有的磁盤來創(chuàng)建一個(gè)容錯(cuò)系統(tǒng)。例如,可能利用在 d4 上保留的一個(gè)備份來在 d1 中創(chuàng)建磁盤組上的一個(gè)文件。另一個(gè)文件可以利用 d2 上的備份在 d3 上創(chuàng)建。一個(gè)特定的磁盤出現(xiàn)故障,則答應(yīng)使用另一個(gè)磁盤上的備份,以使操作可以繼續(xù)。例如,您可能丟失了磁盤 d1 和 d2 的控制器,ASM 將為全部故障磁盤組的區(qū)塊的拷貝建立鏡像,以保持?jǐn)?shù)據(jù)完整性。 3. 創(chuàng)建表空間 現(xiàn)在利用基于 ASM 的存儲(chǔ)器中的一個(gè)數(shù)據(jù)文件來在主數(shù)據(jù)庫中創(chuàng)建一個(gè)表空間。 CREATE TABLESPACE USER_DATA DATAFILE '+dskgrp1/user_data_01' SIZE 1024M/ 就這樣!創(chuàng)建過程完成了。注重磁盤組是如何作為一個(gè)虛擬文件系統(tǒng)使用的。這種方法不僅在數(shù)據(jù)文件中有用,在其它類型的 Oracle 文件中也有用。例如,您可以按以下方式創(chuàng)建在線重做日志文件 LOGFILE GROUP 1 ('+dskgrp1/redo/group_1.258.3','+dskgrp2/redo/group_1.258.3') SIZE 50M,... 更多的資源 正如之前所提到的,本文的目的不是為了提供關(guān)于 AMS 特性的所有知識(shí),使您變成一個(gè)專家,原因很簡(jiǎn)單,相關(guān)的信息量太大了。不過,別失望,在 Oracle 技術(shù)網(wǎng)上提供了許多的幫助: “自動(dòng)存儲(chǔ)”(作者:Lannes Morris-Murphy)是關(guān)于 ASM 的一篇極好的介紹性文章。 ASMLib — 為 Linux 提供的一個(gè) ASM 特性的資料庫 — 擴(kuò)展了 ASM 功能。本頁面還鏈接了技術(shù)參考文獻(xiàn)和資料庫模塊的源代碼。 Oracle 數(shù)據(jù)庫治理員指南 10g Release 1 (10.1) 的第 12 章完整說明了 ASM 背后的概念。 甚至存檔日志目標(biāo)也可以設(shè)為一個(gè)磁盤組。與 Oracle 數(shù)據(jù)庫相關(guān)的全部?jī)?nèi)容都可以在一個(gè)基于 ASM 的磁盤組中創(chuàng)建。例如,備份是 ASM 的另一大用途。您可以設(shè)置一組廉價(jià)的磁盤來創(chuàng)建一個(gè)數(shù)據(jù)庫的恢復(fù)區(qū),RMAN 可以使用這個(gè)恢復(fù)區(qū)來創(chuàng)建備份數(shù)據(jù)庫文件和存檔日志文件。(在下一個(gè)關(guān)于 Oracle Database 10g 中的 RMAN 的部分中,您將具體了解如何使用這種功能來為您帶來好處。) 請(qǐng)記住,無論 ASM 如何支持僅由 Oracle 數(shù)據(jù)庫創(chuàng)建和讀取的文件;它也不能替代一個(gè)通用的文件系統(tǒng),并且不能存儲(chǔ)二進(jìn)制文件和純文本文件。 維護(hù) 讓我們看看維護(hù)磁盤組所需的一些典型任務(wù)。您可能必須經(jīng)常在磁盤組 dskgrp1 中增加額外的磁盤來適應(yīng)不斷增長(zhǎng)的需求。可以執(zhí)行下面的語句: alter diskgroup dskgrp1 add disk '/dev/d5'; 要查明哪個(gè)磁盤在哪個(gè)磁盤組中,可以執(zhí)行下面的語句: select * from v$asm_disk; 該命令顯示了 ASM 例程為所有客戶機(jī)數(shù)據(jù)庫治理的所有磁盤。在這些磁盤中,您可能決定利用以下命令來刪除一個(gè)磁盤: alter diskgroup dskgrp1 drop disk diskb23; 結(jié)論 ASM 的引進(jìn)提供了顯著的價(jià)值,它使得在 Oracle 數(shù)據(jù)庫中治理文件變得非常輕易。利用這個(gè)捆綁的特性,您可以從一組磁盤中輕易地創(chuàng)建一個(gè)高可伸縮和高性能的存儲(chǔ)解決方案。任何動(dòng)態(tài)的數(shù)據(jù)庫環(huán)境都需要添加、移動(dòng)和刪除磁盤,ASM 提供了必需的工具集,使 DBA 從那些單調(diào)的任務(wù)中解脫出來。
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
