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

首頁 > 數據庫 > Oracle > 正文

創建Oracle10g ASM數據庫

2024-08-29 13:37:03
字體:
來源:轉載
供稿:網友

概述

在真正的海量數據庫環境中, DBA可能會花費很多的時間來作磁盤治理,比如一個表空間將占滿整個磁盤,DBA就需要再添加一塊磁盤到操作系統中,然后再在新的磁盤上創建新的數據文件,假如是單個磁盤這倒不是很繁瑣,問題是假如原先我們使用的是RAID或者說是LVM,那么現在大量的數據仍然是分布在以前的那些磁盤上,假如我們想讓這些數據均勻地分布在以前的磁盤和新增加的磁盤上,我們可能就要耗費一天甚至幾天的時間來作原先數據的導出導入。那么假如有一種方法,能實現我們就把一塊磁盤加到系統里,然后告訴Oracle我們要用這塊盤了,剩下的工作全部由Oracle來完成,該是多好的一件事情!幸運的是,Oracle10g已經提供了這個功能,這就是ASM(Automatic Storage Management)。我們稱為“自動存儲治理”。Oracle10g的ASM不但幫助DBA從繁瑣的磁盤空間治理中解脫出來,而且更值得關注的是ASM同時提供了條帶和鏡像的功能,而這些功能原先需要通過單獨地配置RAID來實現。本文通過vmware安裝RHEL3 + Oracle10g,來體驗ASM數據庫的強大功能,為什么要使用vmware?因為在vmware中我們可以隨意地添加或者刪除虛擬磁盤(Virtual Disk),這樣可以更方便地測試ASM數據庫,我想不是誰都可以順手抓出五六塊硬盤來作這樣的測試的J 

硬件配置

IBM R50 5GC迅馳1.5G1G內存,40G硬盤 

軟件配置

WindowsXP PRo SP1,VMware GSX Server 2.5.1,RHEL3,Oracle10g for linux 

安裝VMware

這一步就不多說了,我安裝的是VMware GSX Server,沒有測試過VMware Workstation,所以不保證可以實現本文中的步驟。 

在VMware中安裝RHEL3

<!--[if !supportLists]-->1.   <!--[endif]-->安裝RHEL3這個過程也不多說了,跟實際環境中安裝RHEL3一樣。值得注重的是,由于通過Vmware所以可能在安裝時無法正常啟動Xwindow,那么在字符界面下安裝就可以了。安裝完畢重新啟動系統,Xwindow會自動啟動的。記住安裝所有的開發包即可,這將會盡量避免以后可能出現的link錯誤。我的測試環境中給了RHEL3總共384M的內存。 <!--[if !supportLists]-->2.   <!--[endif]-->添加4塊虛擬磁盤按照如下操作,在虛擬機的屬性中選擇添加硬件,然后添加一個Virtual Disk創建Oracle10g ASM數據庫(圖一)下一步,由于我們創建的虛擬磁盤只是用來放置Oracle的數據文件,而且我們將使用ASM中的failgroup的條帶功能,所以設置最大size是1G就足夠了。創建Oracle10g ASM數據庫(圖二)下一步,指定虛擬磁盤文件的名稱和存放位置,默認存放在虛擬機的相同目錄下。這里我們指定文件名為physical1創建Oracle10g ASM數據庫(圖三)點擊Advanced按鈕,設置虛擬磁盤的物理掛載點,通常我們選擇和虛擬機已有的系統盤在不同的SCSI端口上,比如我們虛擬機的系統盤是SCSI0:0,那么就設置這個磁盤為SCSI1:0。即將添加的另外三塊磁盤依次為SCSI1:1、SCSI1:2和SCSI1:3創建Oracle10g ASM數據庫(圖四)
由于Virtual Disk的特點,在新創建這個磁盤文件的時候, 并不會用到最大的size,所以即使整個分區的空閑容量沒有4G(我們要創建4個最大size是1G的虛擬磁盤),也不會有問題,虛擬磁盤文件的大小是隨著需要而持續增加的,最大增加到指定的max size。當然這種特性也就導致了使用Virtual Disk比使用Plain Disk(創建時即占用max size大小的磁盤空間)的I/O效率要低,所以假如有足夠的磁盤空間,那么建議使用Plain Disk,創建Plain Disk的方法是在上面的第二步時,在“Allocate all disk space now”的復選框前面打勾,這樣將會創建一個以pln和dat為擴展名的虛擬磁盤文件。Plain Disk的好處還在于可以模擬RAC環境中的共享磁盤,這是Virtual Disk無法作到的。模擬RAC不在本文敘述的范圍內。 <!--[if !supportLists]-->3.   <!--[endif]-->更新內核>uname -aRHEL3默認安裝的linux內核版本是2.4.21-4,為了能夠正確的地安裝oracleasm lib,我們需要將內核升級到2.4.21-15.EL,否則將無法正常啟用oracleasm。原因是我們安裝的oracleasmlib是已經編譯好的rpm包,而我們當前操作系統的內核必須和編譯時候的系統內核版本一樣,否則即使看上去安裝正常,但是在啟動oracleasm時候會在/var/log/messages文件中發現類似如下的報錯信息:kernel-module version mismatch^I/lib/modules/2.4.21-EL-ABI/oracleasm/oracleasm.o was compiled for kernel version 2.4.21-15.EL ^Iwhile this kernel is version 2.4.21-4.EL. 從這個報錯信息中我們也可以知道應該安裝的內核版本,為了更確切地知道下載的oracleasm包需要哪個版本的內核,我們也可以先下載oracleasm,安裝,啟動然后查看這個報錯信息,之后再升級內核到相應的版本。 注重:本文中提到的2.4.21-15.EL內核是本文編寫時oracleasm編譯使用的內核,隨著oracle不斷地推出asmlib的新版本,需要的內核版本可能也在不斷變化。 下載新內核:kernel-2.4.21-15.EL.i686: http://public.planetmirror.com/pub/pmstuff/patches/kernel-2.4.21-15.EL.i686.rpm 安裝新內核:# rpm –ivh –-nodeps kernel-2.4.21-15.EL.i686.rpm 安裝完畢以后,修改/boot/grub/grub.conf,rpm安裝完畢以后,應該已經自動在grub.conf文件中添加了新版kernel啟動的段落,我們需要將default=1修改為default=0,這樣保證每次啟動都用新的內核啟動,當測試沒有問題之后,我們也可以直接刪除grub.conf文件中的title Red Hat Enterprise Linux AS (2.4.21-4.EL)部分,防止因錯誤操作而使用了原有的系統內核啟動系統。 # cat /boot/grub/grub.conf# grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE:  You do not have a /boot partition.  This means that#          all kernel and initrd paths are relative to /, eg.#          root (hd0,0)#          kernel /boot/vmlinuz-version ro root=/dev/sda1#          initrd /boot/initrd-version.img#boot=/dev/sdadefault=0timeout=10splashimage=(hd0,0)/boot/grub/splash.xpm.gztitle Red Hat Enterprise Linux AS (2.4.21-15.EL)        root (hd0,0)        kernel /boot/vmlinuz-2.4.21-15.EL ro root=LABEL=/        initrd /boot/initrd-2.4.21-15.EL.imgtitle Red Hat Enterprise Linux AS (2.4.21-4.EL)        root (hd0,0)        kernel /boot/vmlinuz-2.4.21-4.EL ro root=LABEL=/        initrd /boot/initrd-2.4.21-4.EL.img 修改完畢以后,重新啟動系統,保證使用了新內核# uname –aLinux LinuxNode1 2.4.21-15.EL #1 Thu Apr 22 00:27:41 EDT 2004 i686 i686 i386 GNU/Linux

安裝Oracle ASMLib

下載ASMLib需要的三個文件:asmlib:http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel3/x86/oracleasmlib-1.0.0-1.i386.rpmasm-support:http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel3/x86/oracleasm-support-1.0.2-1.i386.rpmasm-kernel:http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel3/x86/oracleasm-2.4.21-EL-1.0.0-1.i686.rpm 假如是多處理器的版本,那么可以下載下面這個文件替換上面的第三個文件:asm-smp-kernel:http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel3/x86/oracleasm-2.4.21-EL-smp-1.0.0-1.i686.rpm 安裝:$su –# rpm -Uvh oracleasm-support-1.0.2-1.i386.rpm /    oracleasm-lib-1.0.0-1.i386.rpm /oracleasm-2.4.21-EL-1.0.0-1.i686.rpm           配置ASMLib:# /etc/init.d/oracleasm configureConfiguring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM librarydriver.  The following questions will determine whether the driver isloaded on boot and what permissions it will have.  The current valueswill be shown in brackets ('[]').  Hitting  without typing ananswer will keep that current value.  Ctrl-C will abort. Default user to own the driver interface []: oracleDefault group to own the driver interface []: dbaStart Oracle ASM library driver on boot (y/n) [n]: yFix permissions of Oracle ASM disks on boot (y/n) [y]: yWriting Oracle ASM library driver configuration               [  OK  ]Creating /dev/oracleasm mount point                       [  OK  ]Loading module "oracleasm"                                [  OK  ]Mounting ASMlib driver filesystem                           [  OK  ]Scanning system for ASM disks                             [  OK  ] 以上操作將加載oracleasm.o驅動,并且mount上ASM文件系統,同時我們可以通過以下命令來手工的卸載和加載ASMLib# /etc/init.d/oracleasm disableWriting Oracle ASM library driver configuration              [  OK  ]Unmounting ASMlib driver filesystem                       [  OK  ]Unloading module "oracleasm"                             [  OK  ] # /etc/init.d/oracleasm enableWriting Oracle ASM library driver configuration              [  OK  ]Loading module "oracleasm"                                [  OK  ]Mounting ASMlib driver filesystem                           [  OK  ]Scanning system for ASM disks                             [  OK  ] 假如當前操作系統的內核和編譯ASMLib的內核不同,那么上面的操作將會出錯,請檢查/var/log/messages文件,確認需要更新的系統內核版本。 添加init文件使系統啟動時自動加載ASMLib$ su –# cd /etc/rc3.d# ln -s ../init.d/oracleasm S99oracleasm# ln -s ../init.d/oracleasm K01oracleasm 注重:假如系統啟動是自動進入圖形界面,也就是系統的init level是5,那么上面生成鏈接的命令應該在/etc/rc5.d目錄中操作。 重新啟動系統,確認ASMLib已經可以自動加載#lsmod grep oracleasmoracleasm              14224   1 #dmesg grep oracleasmASM: oracleasmfs mounted with options:  創建ASM磁盤# /etc/init.d/oracleasm createdisk VOL1 /dev/sdbMarking disk "/dev/sdb" as an ASM disk [  OK  ]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdcMarking disk "/dev/sdc" as an ASM disk [  OK  ]# /etc/init.d/oracleasm createdisk VOL3 /dev/sddMarking disk "/dev/sdd" as an ASM disk [  OK  ]#/etc/init.d/oracleasm createdisk VOL4 /dev/sdeMarking disk "/dev/sde" as an ASM disk [  OK  ] # /etc/init.d/oracleasm listdisksVOL1VOL2VOL3VOL4 假如要刪除ASM磁盤通過以下命令:# /etc/init.d/oracleasm deletedisk VOL4Removing ASM disk "VOL4" [  OK  ] 注重:假如是在RAC環境中的某一個節點中添加了ASM磁盤,那么需要在其它的節點上運行scandisk來獲取這種變化。# /etc/init.d/oracleasm scandisksScanning system for ASM disks [  OK  ] 具體的安裝文檔可以通過以下連接查看:http://otn.oracle.com/tech/linux/asmlib/install.Html 現在我們已經完成了創建ASM實例的物理基礎,下面開始安裝數據庫。 

安裝Oracle10g

在RHEL3上安裝Oracle10g已經是非常簡單的操作了,只要系統內核參數設置正確,幾乎不會碰到任何問題。從以下連接可以得到在RHEL3上安裝Oracle10g的具體步驟,本文不再贅述。http://www.puschitz.com/InstallingOracle10g.shtml 在安裝Oracle10g的時候,我們選擇不創建數據庫,只安裝軟件的方式,在軟件安裝結束以后再通過dbca來創建ASM實例和數據庫。 

創建ASM實例

<!--[if !supportLists]-->1.  <!--[endif]-->創建初始化文件$ su – oracle$ cd $ORACLE_HOME/dbs$ vi init+ASM.ora創建asm實例的初始化腳本,腳本內容如下所示:# ******Below is init script for asm instance*******.asm_diskstring='ORCL:VOL*'*.background_dump_dest='/oracle/admin/+ASM/bdump'*.core_dump_dest='/oracle/admin/+ASM/cdump'*.instance_type='asm'*.large_pool_size=12M*.remote_login_passWordfile='SHARED'*.user_dump_dest='/oracle/admin/+ASM/udump'# ******Above is init script for asm instance****** 說明:<!--[if !supportLists]-->1.   <!--[endif]-->dump目錄指向$ORACLE_BASE/,本文中ASM實例的SID是+ASM。最好不要修改這個實例名,否則在下一步用dbca創建數據庫的時候,dbca將找不到可用的磁盤組,我想這應該是dbca的一個bug,手工創建ASM類型的數據庫就應該沒有這個限制了。<!--[if !supportLists]-->2.   <!--[endif]-->asm_diskstring用于實例啟動的時候檢查可用的ASM磁盤,由于我們前面創建ASM磁盤的名稱是VOL1到VOL4,所以我們此處使用*通配符,前面的’ORCL:’不可以省略,否則ASM實例將無法檢查到磁盤。 <!--[if !supportLists]-->2.  <!--[endif]-->創建密碼文件$ su – oracle$ cd $ORACLE_HOME/dbs$ orapwd file=orapw+ASM password=dba <!--[if !supportLists]-->3.  <!--[endif]-->創建目錄結構$ su – oracle$ cd $ORACLE_HOME/dbs$ mkdir –p $ORALCE_BASE/admin/+ASM/udump$ mkdir –p $ORALCE_BASE/admin/+ASM/bdump$ mkdir –p $ORALCE_BASE/admin/+ASM/cdump <!--[if !supportLists]-->4.  <!--[endif]-->啟動實例$ export ORACLE_SID=+ASM$ sqlplus / as sysdbaSQL> startupASM instance started Total System Global Area  100663296 bytesFixed Size                   777616 bytesVariable Size              99885680 bytesDatabase Buffers                  0 bytesRedo Buffers                      0 bytesORA-15110: no diskgroups mounted 因為我們是首次啟動asm實例,還沒有創建diskgroup,所以顯示15110錯誤是正常的。 假如啟動實例的時候碰到如下報錯:ORA-29701: unable to connect to Cluster Manager那么請檢查/etc/inittab文件,看看是否有下面這行h1:35:respawn:/etc/init.d/init.CSSd run >/dev/null 2>&1 假如沒有請添加,假如被注釋了請取消注釋。 <!--[if !supportLists]-->5.  <!--[endif]-->創建spfile,重新啟動SQL> create spfile from pfile;SQL> shutdown immediate;SQL> startup; <!--[if !supportLists]-->6.  <!--[endif]-->創建diskgroupSQL> create diskgroup dgroup1 normal redundancy  2  failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'  3  failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4'; Diskgroup created. SQL> col name for a10SQL> select name,state from v$asm_diskgroup; NAME       STATE---------- ----------------------DGROUP1    MOUNTED 假如上述命令返回的state是DISMOUNTED,那么我們需要手工將掛載diskgroupSQL> ALTER DISKGROUP dgroup1 MOUNT; Diskgroup altered. 此時檢查數據庫初始化參數,發現asm_diskgroups參數值已經自動設置為DGROUP1,這表明在下次啟動asm實例的時候,這個diskgroup會被自動掛載。SQL> col name for a10SQL> col type for a10SQL> col value for a20SQL> show parameter asm_diskgroups NAME                                 TYPE       VALUE------------------------------------ ---------- ------------------------------asm_diskgroups                       string     DGROUP1 假如要卸載diskgroup,使用下面的命令:ALTER DISKGROUP ALL DISMOUNT;   

創建ASM數據庫

用dbca創建數據庫,一直到選擇數據類型的畫面以前都跟創建普通數據庫沒有區別。
下面是dbca創建數據庫的第6步畫面,普通的數據庫我們通常選擇File System,而ASM類型的數據庫我們則要選擇“Automatic Storage Management”。     創建Oracle10g ASM數據庫(圖五)
下一步,oracle將自動檢查出已經加載的Diskgroup,在這個界面我們可以通過Create New按鈕創建新的Diskgroup,也可以通過Add Disks按鈕向當前的磁盤組中添加額外的磁盤,當然這些磁盤必須是先用oracleasm createdisk過的(在第4章節的創建ASM磁盤部分有所敘述)。

創建Oracle10g ASM數據庫(圖六)

在數據文件的位置治理設定界面,通常應該使用OMF,由oracle自己治理數據文件的命名,這樣才算是進一步解放了DBA對于物理存儲方面的繁瑣工作。

創建Oracle10g ASM數據庫(圖七)

繼續往下的步驟,跟創建普通數據庫已經沒有什么區別了。不再贅述。 

啟動ASM數據庫的步驟

由于啟動ASM數據庫必須要先啟動ASM實例,所以基本上啟動步驟如下。<!--[if !supportLists]-->1.             <!--[endif]-->以oracle用戶進入操作系統<!--[if !supportLists]-->2.             <!--[endif]-->$ export ORACLE_SID=+ASM<!--[if !supportLists]-->3.             <!--[endif]-->SQL> sqlplus / as sysdba<!--[if !supportLists]-->4.             <!--[endif]-->SQL> startup<!--[if !supportLists]-->5.             <!--[endif]-->SQL> exit<!--[if !supportLists]-->6.             <!--[endif]-->$ export ORACLE_SID=<!--[if !supportLists]-->7.             <!--[endif]-->SQL> sqlplus / as sysdba<!--[if !supportLists]-->8.             <!--[endif]-->SQL> startup 

ASM數據庫的簡單測試

測試ASM數據庫的automatic rebalance功能 
添加兩個虛擬硬盤,分別是sdf和sdg,大小500M啟動系統,啟動ASM實例,啟動數據庫實例 創建ASM磁盤#/etc/init.d/oracleasm createdisk VOL5 /dev/sdf#/etc/init.d/oracleasm createdisk VOL6 /dev/sdg 登入ASM實例檢查v$asm_disk視圖,發現這兩個新加的硬盤已經找到了將硬盤添加到磁盤組中SQL> ALTER DISKGROUP DGROUP1 ADD FAILGROUP FGROUP1 DISK 'ORCL:VOL5' FAILGROUP FGROUP2 DISK 'ORCL:VOL6'; Diskgroup altered. 檢查數據庫的auto rebalance工作進度,數據庫正在將原來分布在兩個磁盤上的數據平均分配到三個磁盤上 SQL> SELECT group_number, Operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation; GROUP_NUMBER OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES------------ ---------- -------- ---------- ---------- ---------- -----------           1 REBAL      RUN             416          0          0           0           SQL> /  GROUP_NUMBER OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES------------ ---------- -------- ---------- ---------- ---------- -----------           1 REBAL      RUN             275         39        148           1
 SQL> / 以上表示數據重新分配的工作已經成功完成 SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup; NAME                           ALLOCATION_UNIT_SIZE   TOTAL_MB------------------------------ -------------------- ----------DGROUP1                                     1048576       5120 現在磁盤組空間總共是5120M 登入數據庫實例創建一個自己的表空間,創建一個用戶,創建一個表 SQL> create tablespace ts_test datafile '+DGROUP1' size 200M; Tablespace created. SQL> create user kamus identified by pass default tablespace ts_test; User created. SQL> grant dba to kamus; Grant sUCceeded. SQL> conn kamus/passConnected.SQL> create table t_test as select * from dba_objects; Table created. SQL> select count(*) from t_test;   COUNT(*)----------     10319
 登入ASM實例,將磁盤從磁盤組中刪除 SQL> alter diskgroup dgroup1 drop disk VOL4; Diskgroup altered. SQL> SELECT group_number, operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation; GROUP_NUMBER OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES------------ ---------- -------- ---------- ---------- ---------- -----------           1 REBAL      RUN             566         46        151           3 SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup; NAME                           ALLOCATION_UNIT_SIZE   TOTAL_MB------------------------------ -------------------- ----------DGROUP1                                     1048576       4096 Executed in 0.13 seconds SQL> select label,failgroup from v$asm_disk; LABEL                           FAILGROUP------------------------------- ------------------------------VOL1                            FGROUP1VOL2                            FGROUP1
VOL3                            FGROUP2VOL5                            FGROUP1VOL6                            FGROUP2 可以看到磁盤組的總容量已經減少了,磁盤數目也減少了有些文檔上說刪除了磁盤之后要執行:ALTER DISKGROUP REBALANCE但是發現不需要手動執行,整個REBALANCE的工作確實是自動的,當刪除磁盤以后,數據庫自動開始作REBALANCE了 為了兩個FAILGROUP的大小相同,再刪除一個磁盤 SQL> alter diskgroup dgroup1 drop disk VOL2; Diskgroup altered. 我們可以從下面的SQL知道在ASM實例中可以查詢到所有可以用的磁盤,而在數據庫實例中只可以查詢到讓自己使用的磁盤ASM實例:SQL> SELECT disk_number, label FROM V$asm_disk; DISK_NUMBER LABEL----------- --------------------------------------------------------------          0 VOL4          1 VOL2          0 VOL1          2 VOL3          4 VOL5          5 VOL6 數據庫實例:SQL> SELECT disk_number, label FROM V$asm_disk; DISK_NUMBER LABEL----------- -------------------------------          0 VOL1          2 VOL3          4 VOL5          5 VOL6 

總結

通過上面簡單的測試,我們已經可以基本領略到ASM數據庫在數據文件存儲方面的強大功能,歡迎大家對于ASM數據庫進行更深入的討論。假如有任何問題,可以到www.itpub.net的Oracle10g和新技術板塊進行討論,也可以給我發郵件,郵件地址: kamus@itpub.net。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡南县| 曲沃县| 郴州市| 福海县| 银川市| 会昌县| 博湖县| 绥芬河市| 长寿区| 榕江县| 绥江县| 攀枝花市| 肇州县| 姚安县| 鄂托克旗| 且末县| 福建省| 静宁县| 仁化县| 固安县| 吴川市| 绥阳县| 榆林市| 马鞍山市| 沂源县| 开平市| 济南市| 恩平市| 西华县| 竹山县| 鄢陵县| 邹平县| 黄梅县| 太康县| 灯塔市| 松桃| 神池县| 拉萨市| 门头沟区| 文昌市| 北票市|