一些ASM 資料庫的測試和管理

bomei發表於2007-10-09
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.[@more@]檢查資料庫的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/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 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 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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7272495/viewspace-975436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章