جابجایی ASM Spfile به diskgroup دیگر
from ASMCMD: [grid@racp1vm1 ~]$ asmcmd spget +DATA/mas/ASMPARAMETERFILE/registry.253.905527691
from SQLPLUS: [grid@racp1vm1 ~]$ sqlplus -s / as sysasm show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/mas/ASMPARAMETERFILE/reg istry.253.905527691
from ASMCMD all spfiles: [grid@racp1vm1 ~]$ asmcmd find --type PARAMETERFILE '*' '*' +DATA/mas/ASMPARAMETERFILE/registry.253.905527691 +DATA/RACDB/PARAMETERFILE/spfile.269.906247759 +DATA/RACDB/spfileRACDB.ora
و همچنین فرض بعدی این هست که asm مشکل دارد و بالا نیست ( به هر دلیلی asm spfile مشکل دار شده است) توجه توجه خیلی راحت چنین مشکلی ممکن هست ایجاد شود. مثلا اگر یک پارامتری که deprecated هست در spfile نویشته شود asm spfile مشکل دار میشود.
from gpnptoll: [grid@racp1vm1 ~]$ gpnptool get -o- | xmllint --format - | grep SPFile Success. <orcl:ASM-Profile id="asm" DiscoveryString="" SPFile="+DATA/mas/ASMPARAMETERFILE/registry.253.905527691" Mode="remote"/>
هر نود در OCW به gpnp نیازمند است و در اینجا آدرس vote disks و asm spfile را میخواند اگر این آدرس ها درست نباشند OCW بالا نمیاید. در اینجا فرض بر این هست که در gpnp به asm spfile درست اشاره میشود.
روش دیگر استفاده از kfed میباشد. در این حالت شما باید ببنید asm spfile در کدام دیسک هست و با offset اشاره شده از شروع block دیسک آن را بخوانید:
ls /dev/oracleasm/disks/* /dev/oracleasm/disks/DATA1 /dev/oracleasm/disks/DATA2 # $GRID_HOME/bin/kfed read /dev/oracleasm/disks/DATA1 | egrep 'spf|ausize' kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 0 ; 0x0f4: 0x00000000 kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000 spfflg=0 --> No spfile # $GRID_HOME/bin/kfed read /dev/oracleasm/disks/DATA2 | egrep 'spf|ausize' kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.spfile: 59 ; 0x0f4: 0x0000003b kfdhdb.spfflg: 1 ; 0x0f8: 0x00000001 spfflg=1 --> SPfile at offset 59 # dd if=/dev/oracleasm/disks/DATA2 of=SPFile_ASM.dat bs=1M count=1 skip=59 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.00882297 s, 119 MB/s # strings SPFile_ASM.dat +ASM1.asm_diskgroups='OCR','ACFS'#Manual Mount +ASM2.asm_diskgroups='ACFS'#Manual Mount *.asm_diskstring='/dev/oracleasm/disks/*' *.asm_power_limit=1 *.diagnostic_dest='/u01/app/grid' *.instance_type='asm' *.large_pool_size=12M *.remote_login_passwordfile='EXCLUSIVE'
البته که بهتره همیشه یه بکاپی از asm spfile داشته باشیم:
from ASMCMD: [grid@racp1vm1 ~]$ asmcmd spbackup +DATA/mas/ASMPARAMETERFILE/registry.253.905527691 /tmp/asmspfile.bak
from SQLPLUS: [grid@racp1vm1 ~]$ sqlplus / as sysasm crate pfile='/tmp/asmspfile.bak' from spfile; File created.
حالا برویم سر اصل قضیه، جابجایی asm spfile به diskgroup دیگر:
راستش برای این کار هم چند راه کار هست که یکی از ساده ترین ها را خواهم گفت که تمام OCW را متاثر میکند ( مثلا gpnp را نیز آپدیت میکند و ...):
ساده ترین کار ساخت pfile از spfile و دباره ساخت spfile از pfile هست.
from SQLPLUS: [grid@racp1vm1 ~]$ sqlplus / as sysasm crate spfie='+DATA2' from pfile='/tmp/asmspfile.bak'; File created.
این دستور هم خیلی عالی هست به کلید -u توجه کنید معنی آن این هست که در OCW کانفیگ جدید را broadcast کن.
[grid@racp1vm1 ~]$ asmcmd spcopy -u +DATA/mas/ASMPARAMETERFILE/registry.253.905527691 '+DATA2'
حالا چک میکنیم ببنیم واقعا فایل جابجا شده است ؟ و همچنین pgnp فایل و OCR فایل هم بروز شده است یا خیر ؟!
from gpnptoll: [grid@racp1vm1 ~]$ gpnptool get -o- | xmllint --format - | grep SPFile Success. <orcl:ASM-Profile id="asm" DiscoveryString="" SPFile="+DATA2/mas/ASMPARAMETERFILE/registry.259.905527691" Mode="remote"/>
[grid@racp1vm1 ~]$ asmcmd spget +DATA2/mas/ASMPARAMETERFILE/registry.259.905527691
در نهایت باید یک بار Cluster را پایین و بالا کنید که از روی spfile جدید کار را دنبال کند.
دوستان عزیز امیدوارم مطلب کاربردی بوده باشد.
شاد و پیروز باشید.