11.2刪除第一個ASM磁碟組

yangtingkun發表於2011-08-17

在客戶的11.2.0.2環境中,刪除第一個磁碟組碰到了錯誤。

 

 

對於RAC環境而言,第一個建立的磁碟組中包含OCRVOTASM的啟動引數檔案SPFILE,因此先要刪除第一個磁碟組,意味著需要遷移OCRVOTSPFILE檔案。不過這裡碰到的情況沒有那麼複雜,因為當前環境並非RAC,而是單機上啟動的ASM例項。

當刪除第一個磁碟組上所有的表空間後,嘗試刪除磁碟組報錯:

[grid@dbserver1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 16 10:16:23 2011

Copyright (c) 1982, 2010, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Automatic Storage Management option

SQL> set lines 120 pages 100
SQL> drop diskgroup DATA_AU1M;
drop diskgroup DATA_AU1M
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15053: diskgroup "DATA_AU1M" contains existing files


SQL> drop diskgroup DATA_AU4M;

Diskgroup dropped.

另一個磁碟組則在刪掉所有的表空間後順利刪除。

檢查發現ASM啟動的SPFILE檔案還儲存在DATA_AU1M磁碟組中,如果強制刪除,則會導致ASM例項無法啟動。

SQL> show parameter spfile

NAME           TYPE      VALUE
-------------- --------- ------------------------------
spfile         string    +DATA_AU1M/asm/asmparameterfile/registry.253.758304963

利用CREATE PFILE FROM SPFILE建立一個文字的初始化引數:

SQL> create pfile from spfile;

File created.

SQL> host
[grid@dbserver1 ~]$ cd $ORACLE_HOME/dbs
[grid@dbserver1 dbs]$ ls
ab_+ASM.dat hc_+ASM.dat init+ASM.ora init.ora orapw+ASM
[grid@dbserver1 dbs]$ more init+ASM.ora
+ASM.__large_pool_size=25165824
+ASM.asm_diskgroups='DATA_AU2M','DATA','DATA_AU8M'#Manual Dismount
*.asm_diskstring='/dev/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.local_listener='LISTENER_+ASM'
*.remote_login_passwordfile='EXCLUSIVE'

初始化引數中ASM_DISKGROUPS中並沒有包含第一個磁碟組DATA_AU1M,而嘗試利用這個PFILE啟動也會發現,DATA_AU1M並沒有載入:

[grid@dbserver1 dbs]$ exit
exit

SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup pfile=?/dbs/init+ASM.ora
ASM instance started

Total System Global Area 283930624 bytes
Fixed Size 2225792 bytes
Variable Size 256539008 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> select group_number, name from v$asm_diskgroup;

GROUP_NUMBER NAME
------------ ------------------------------
           1 DATA_AU2M
           2 DATA_AU8M
           3 DATA
           0 DATA_AU1M

SQL> show parameter spfile

NAME           TYPE      VALUE
-------------- --------- ------------------------------
spfile         string

下面編輯PFILE,新增DATA_AU1M磁碟組到初始化引數ASM_DISKGROUPS中,再次啟動ASM例項:

SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup pfile=?/dbs/init+ASM.ora
ASM instance started

Total System Global Area 283930624 bytes
Fixed Size 2225792 bytes
Variable Size 256539008 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> select group_number, name from v$asm_diskgroup;

GROUP_NUMBER NAME
------------ ------------------------------
           1 DATA_AU1M
           2 DATA_AU2M
           3 DATA_AU8M
           4 DATA

下面建立SPFILE,指定其他的磁碟組存放:

SQL> create spfile='+DATA' from pfile='/u01/app/grid/product/11.2.0/gridhome_1/dbs/init+ASM.ora';

File created.

SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup
ASM instance started

Total System Global Area 283930624 bytes
Fixed Size 2225792 bytes
Variable Size 256539008 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> show parameter spfile

NAME           TYPE      VALUE
-------------- --------- ------------------------------
spfile         string    +DATA/asm/asmparameterfile/registry.253.759323107
SQL> select group_number, name from v$asm_diskgroup;

GROUP_NUMBER NAME
------------ ------------------------------
           1 DATA_AU1M
           2 DATA_AU2M
           3 DATA_AU8M
           4 DATA

對於ASM磁碟組而言,最後一個提供給它的SPFILE會自動作為ASM啟動的SPFILE,不需要在檔案系統中透過PFILE來指定,這是11.2ASM自啟動的機制。

下面可以強制刪除磁碟組了,不過最好的辦法是先刪除問題,透過ASMCMD可以輕鬆的實現,而在ASM例項中也可以透過DROP FILE的方式實現:

SQL> drop diskgroup data_au1m;
drop diskgroup data_au1m
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15053: diskgroup "DATA_AU1M" contains existing files

SQL> select a.name, type
2 from v$asm_alias a, v$asm_file b
3 where a.group_number = 1
4 and b.group_number = 1
5 and a.file_number = b.file_number;

NAME                           TYPE
------------------------------ --------------------
REGISTRY.253.758304963         ASMPARAMETERFILE

SQL> alter diskgroup data_au1m drop file '+DATA_AU1M/asm/asmparameterfile/registry.253.758304963';

Diskgroup altered.

SQL> drop diskgroup data_au1m;

Diskgroup dropped.

 

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

相關文章