在真正的海量數據庫環境中
本文通過vmware安裝RHEL
IBM R
迅馳
WindowsXP Pro SP
這一步就不多說了
<!
這個過程也不多說了
<!
按照如下操作
下一步
下一步
點擊Advanced按鈕
由於Virtual Disk的特點
<!
>uname
RHEL
原因是我們安裝的oracleasmlib是已經編譯好的rpm包
kernel
^I/lib/modules/
從這個報錯信息中我們也可以知道應該安裝的內核版本
注意
下載新內核
kernel
安裝新內核
# rpm –ivh –
安裝完畢以後
# cat /boot/grub/nf
# nf 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
# all kernel and initrd paths are relative to /
# root (hd
# kernel /boot/vmlinuz
# initrd /boot/initrd
#boot=/dev/sda
default=
timeout=
splashimage=(hd
title Red Hat Enterprise Linux AS (
root (hd
kernel /boot/vmlinuz
initrd /boot/initrd
title Red Hat Enterprise Linux AS (
root (hd
kernel /boot/vmlinuz
initrd /boot/initrd
修改完畢以後
# uname –a
Linux LinuxNode
下載ASMLib需要的三個文件
asmlib:
asm
asm
如果是多處理器的版本
asm
安裝
$su –
# rpm
oracleasm
oracleasm
配置ASMLib
# /etc/init
Configuring the Oracle ASM library driver
This will configure the on
driver
loaded on boot and what permissions it will have
will be shown in brackets (
answer will keep that current value
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration [ OK ]
Creating /dev/oracleasm mount point [ OK ]
Loading module
Mounting ASMlib driver filesystem [ OK ]
Scanning system for ASM disks [ OK ]
以上操作將加載oracleasm
# /etc/init
Writing Oracle ASM library driver configuration [ OK ]
Unmounting ASMlib driver filesystem [ OK ]
Unloading module
# /etc/init
Writing Oracle ASM library driver configuration [ OK ]
Loading module
Mounting ASMlib driver filesystem [ OK ]
Scanning system for ASM disks [ OK ]
如果當前操作系統的內核和編譯ASMLib的內核不同
添加init文件使系統啟動時自動加載ASMLib
$ su –
# cd /etc/rc
# ln
# ln
注意
重新啟動系統
#lsmod | grep oracleasm
oracleasm
#dmesg | grep oracleasm
ASM: oracleasmfs mounted with options:
創建ASM磁盤
# /etc/init
Marking disk
# /etc/init
Marking disk
# /etc/init
Marking disk
#/etc/init
Marking disk
# /etc/init
VOL
VOL
VOL
VOL
如果要刪除ASM磁盤通過以下命令
# /etc/init
Removing ASM disk
注意
# /etc/init
Scanning system for ASM disks [ OK ]
詳細的安裝文檔可以通過以下連接查看
現在我們已經完成了創建ASM實例的物理基礎
在RHEL
從以下連接可以得到在RHEL
在安裝Oracle
<!
$ su – oracle
$ cd $ORACLE_HOME/dbs
$ vi init+ASM
創建asm實例的初始化腳本
# ******Below is init script for asm instance******
*
*
re_dump_dest=
*
*
*
*
# ******Above is init script for asm instance******
說明
<!
<!
<!
$ su – oracle
$ cd $ORACLE_HOME/dbs
$ orapwd file=orapw+ASM password=dba
<!
$ 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
<!
$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba
SQL> startup
ASM instance started
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
ORA
因為我們是首次啟動asm實例
如果啟動實例的時候碰到如下報錯
ORA
那麼請檢查/etc/inittab文件
h
如果沒有請添加,如果被注釋了請取消注釋。Tw.WinGwiT.Com
<!--[if !supportLists]-->5. <!--[endif]-->創建spfile,重新啟動
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup;
<!--[if !supportLists]-->6. <!--[endif]-->創建diskgroup
SQL> 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 a10
SQL> select name,state from v$asm_diskgroup;
NAME STATE
---------- ----------------------
DGROUP1 MOUNTED
如果上述命令返回的state是DISMOUNTED,那麼我們需要手工將掛載diskgroup
SQL> ALTER DISKGROUP dgroup1 MOUNT;
Diskgroup altered.
此時檢查數據庫初始化參數,發現asm_diskgroups參數值已經自動設置為DGROUP1,這表明在下次啟動asm實例的時候,這個diskgroup會被自動掛載。
SQL> col name for a10
SQL> col type for a10
SQL> col value for a20
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
asm_diskgroups string DGROUP1
如果要卸載diskgroup,使用下面的命令:
ALTER DISKGROUP ALL DISMOUNT;
用dbca創建數據庫,一直到選擇數據類型的畫面以前都跟創建普通數據庫沒有區別。
下面是dbca創建數據庫的第6步畫面,普通的數據庫我們通常選擇File System,而ASM類型的數據庫我們則要選擇“Automatic Storage Management”。
下一步,oracle將自動檢查出已經加載的Diskgroup,在這個界面我們可以通過Create New按鈕創建新的Diskgroup,也可以通過Add Disks按鈕向當前的磁盤組中添加額外的磁盤,當然這些磁盤必須是先用oracleasm createdisk過的(在第4章節的創建ASM磁盤部分有所敘述)。
在數據文件的位置管理設定界面,通常應該使用OMF,由oracle自己管理數據文件的命名,這樣才算是進一步解放了DBA對於物理存儲方面的繁瑣工作。
繼續往下的步驟,跟創建普通數據庫已經沒有什麼區別了。不再贅述。
由於啟動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數據庫的automatic rebalance功能
添加兩個虛擬硬盤,分別是sdf和sdg,大小
啟動系統,啟動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
------------ ---------- -------- ---------- ---------- ---------- -----------
1 REBAL RUN 416 0 0 0
SQL> /
GROUP_NUMBER
------------ ---------- -------- ---------- ---------- ---------- -----------
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
現在磁盤組空間總共是
登入數據庫實例
創建一個自己的表空間,創建一個用戶,創建一個表
SQL> create tablespace ts_test datafile '+DGROUP1' size
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/pass
Connected.
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
------------ ---------- -------- ---------- ---------- ---------- -----------
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 FGROUP1
VOL2 FGROUP1
VOL3 FGROUP2
VOL5 FGROUP1
VOL6 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數據庫進行更深入的討論。
From:http://tw.wingwit.com/Article/program/Oracle/201311/17190.html