首页 > Oracle > ASM Pocket Reference

ASM Pocket Reference

部分内容参见:http://viskosity.com

1 ASM Diskgroups
Create diskgroup

create diskgroup ARCH_DISK external redundancy disk
'/dev/oracleasm/disks/ASMDISK1' name archdisk1;
create diskgroup DATA_DISK normal redundancy disk
'/dev/oracleasm/disks/ASMDISK2' name datadisk1,
'/dev/oracleasm/disks/ASMDISK3' name datadisk2;


Drop disk groups

drop diskgroup DATA including contents;

Add disks

alter diskgroup data1 add disk '/devices/diska5' NAME diska5;

Drop a disk

alter diskgroup DATA drop disk DATA_0001 REBALANCE POWER 5 WAIT;

Adding and Droping in the same command

ALTER DISKGROUP FRA
ADD DISK 'ORCL:SDE7' NAME 'FRA_DISK5' SIZE 977 M ,
'ORCL:SDE8' NAME 'FRA_DISK6' SIZE 977 M
DROP DISK FRA_DISK1, FRA_DISK2;

Resize all disks in a diskgroup

alter diskgroup DATA resize all size 100G;

UNDROP DISKS

alter diskgroup DATA undrop disks;

Rebalance diskgroup

alter diskgroup DATA rebalance power 5;

Check Diskgroup

alter diskgroup DATA check;
alter diskgroup DATA check norepair;

Diskgroup Metadata Backup

mk_backup -b asm_backup.mdb.txt -g data1,data2

view dg,disks status
DGs:

SELECT NAME,
       ALLOCATION_UNIT_SIZE AU,
       TYPE,
       TOTAL_MB,
       FREE_MB,
       ROUND((1 - (FREE_MB / TOTAL_MB)) * 100, 2) USED_PCT
  FROM V$ASM_DISKGROUP
 ORDER BY NAME;

disks:

SELECT PATH,
       B.NAME,
       MOUNT_STATUS,
       OS_MB,
       A.FREE_MB,
       CREATE_DATE,
       MOUNT_DATE
  FROM V$ASM_DISK A, V$ASM_DISKGROUP B
 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER(+)
 ORDER BY 2,1

disks statistics:

SELECT INSTNAME,
       G.NAME DISKGROUP,
       SUM(READS) READS,
       SUM(BYTES_READ) BYTES_READ,
       SUM(WRITES) WRITES,
       SUM(BYTES_WRITTEN) BYTES_WRITTEN
  FROM V$ASM_DISK_IOSTAT I, V$ASM_DISKGROUP G
 WHERE I.GROUP_NUMBER = G.GROUP_NUMBER
 GROUP BY INSTNAME, G.NAME;

2 ASM Init.ora Parameters

+ASM1.asm_diskgroups='DATA1','DATA2'#Manual Mount
+ASM2.asm_diskgroups='DATA1','DATA2'#Manual Mount
*.asm_diskstring='/dev/rhdisk*'
*.asm_power_limit=1
*.diagnostic_dest='/grid/app/oracle'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'

Initialize ASM for non-RAC

./localconfig add

Manually start CSSD(non-RAC)

/etc/init.d/init.cssd start

Manually stop CSSD(non-RAC)

/etc/init.d/init.cssd stop

Resetting CSS to new Oracle Home

localconfig reset /apps/oracle/product/11.2.0/ASM

3 ASM数据字典
working…
4 srvctl命令
ADD

srvctl add asm -n rac3 -i +ASM3 -o /opt/oracle/app/product/10.2/asm

ENABLE

srvctl enable asm -n rac3 -i +ASM3

DISABLE

srvctl disable asm -n rac3 -i +ASM3

START

srvctl start asm -n rac3

STOP

srvctl stop asm -n rac3

CONFIG

srvctl config asm -n rac1

REMOVE

srvctl remove asm -n rac1

STATUS

srvctl status asm
srvctl status asm -n rac1

MODIFY

srvctl modify asm -o -n rac1

5 asmcmd命令
working…
SYSASM Role

sqlplus / as sysasm

6 Upgrade,Migrate
ASM Rolling Upgrades
START

alter system start rolling migration to 11.2.0.2;

DISABLE

alter system stop rolling migration;

Migrate to ASM using RMAN

run
{
backup as copy database format '+DATA';
switch database to copy;
sql "alter database rename '/data/oracle/VISK/redo1a.rdo' to '+DATA'";
alter database open resetlogs;
#for eache tempfile
sql "alter tablespace TEMP add tempfile";
}

Restore Database to ASM using SET NEWNAME

run
{
allocate channel d1 type disk;
+for eache datafile
set newname for database 1 to '+DATA';
restore database;
switch datafile all;
release channel d1;
}

7 ASM tools
KFOD
KFOD – Kernel Files OSM Disk,KFOD utility is used to simulate the disk discovery from the operating system level and it can be found in $GRID_HOME/bin directory
kfod help=y

_asm_a/llow_only_raw_disks              KFOD allow only raw devices [_asm_allow_only_raw_disks=TRUE/(FALSE)]
_asm_l/ibraries         ASM Libraries[_asm_libraries=lib1,lib2,...]
_asms/id                ASM Instance[_asmsid=sid]
a/sm_diskstring         ASM Diskstring [asm_diskstring=discoverystring, discoverystring ...]
c/luster                KFOD cluster [cluster=TRUE/(FALSE)]
db/_unique_name         db_unique_name for ASM instance[db_unique_name=dbname]
di/sks          Disks to discover [disks=raw,asm,badsize,all]
ds/cvgroup              Include group name [dscvgroup=TRUE/(FALSE)]
g/roup          Disks in diskgroup [group=diskgroup]
h/ostlist               hostlist[hostlist=host1,host2,...]
metadata_a/usize                AU Size for Metadata Size Calculation
metadata_c/lients               Client Count for Metadata Size Calculation
metadata_d/isks         Disk Count for Metadata Size Calculation
metadata_n/odes         Node Count for Metadata Size Calculation
metadata_r/edundancy            Redundancy for Metadata Size Calculation
n/ohdr          KFOD header suppression [nohdr=TRUE/(FALSE)]
o/p             KFOD options type [OP=DISKS/CANDIDATES/MISSING/GROUPS/INSTS/VERSION/CLIENTS/RM/RMVERS/DFLTDSTR/GPNPDSTR/METADATA/ALL]
p/file          ASM parameter file [pfile=parameterfile]
s/tatus         Include disk header status [status=TRUE/(FALSE)]
v/erbose                KFOD verbose errors [verbose=TRUE/(FALSE)]

举例:

kfod disks=all status=true dscvgroup=true
--------------------------------------------------------------------------------
 Disk          Size Header    Path                                     Disk Group   User     Group
================================================================================
   1:     103065 Mb MEMBER    /dev/rhdisk10                            DATA2        grid     asmadmin
   2:     103065 Mb MEMBER    /dev/rhdisk11                            DATA2        grid     asmadmin
   3:     103065 Mb MEMBER    /dev/rhdisk12                            DATA2        grid     asmadmin
   4:     103065 Mb MEMBER    /dev/rhdisk13                            DATA1        grid     asmadmin
   5:     103065 Mb MEMBER    /dev/rhdisk14                            DATA1        grid     asmadmin
   6:     103065 Mb MEMBER    /dev/rhdisk15                            DATA2        grid     asmadmin
   7:     103065 Mb MEMBER    /dev/rhdisk16                            DATA2        grid     asmadmin
   8:     103065 Mb CANDIDATE /dev/rhdisk17                            #            grid     asmadmin
   9:     103065 Mb CANDIDATE /dev/rhdisk18                            #            grid     asmadmin
  10:     103065 Mb CANDIDATE /dev/rhdisk19                            #            grid     asmadmin
  11:     103065 Mb CANDIDATE /dev/rhdisk20                            #            grid     asmadmin
  12:     103065 Mb CANDIDATE /dev/rhdisk21                            #            grid     asmadmin
  13:     103065 Mb CANDIDATE /dev/rhdisk22                            #            grid     asmadmin
  14:     103065 Mb CANDIDATE /dev/rhdisk23                            #            grid     asmadmin
  15:     103065 Mb CANDIDATE /dev/rhdisk24                            #            grid     asmadmin
  16:     103065 Mb CANDIDATE /dev/rhdisk25                            #            grid     asmadmin
  17:     103065 Mb CANDIDATE /dev/rhdisk26                            #            grid     asmadmin
  18:     103065 Mb CANDIDATE /dev/rhdisk27                            #            grid     asmadmin
  19:     103065 Mb CANDIDATE /dev/rhdisk28                            #            grid     asmadmin
  20:     103065 Mb MEMBER    /dev/rhdisk4                             DATA         grid     asmadmin
  21:     103065 Mb MEMBER    /dev/rhdisk5                             DATA1        grid     asmadmin
  22:     103065 Mb MEMBER    /dev/rhdisk6                             DATA1        grid     asmadmin
  23:     103065 Mb MEMBER    /dev/rhdisk7                             DATA1        grid     asmadmin
  24:     103065 Mb MEMBER    /dev/rhdisk8                             DATA1        grid     asmadmin
  25:     103065 Mb MEMBER    /dev/rhdisk9                             DATA2        grid     asmadmin
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME
================================================================================
     +ASM2 /grid/app/11.2.0/grid
     +ASM1 /grid/app/11.2.0/grid

8 ASM磁盘头及metadata备份与恢复

1)直接做dd来备份磁盘的前4K,磁盘头信息丢失时,dd回来
  备份:dd if=/dev/raw/raw1         of=/yangbq/asmheader.dd   bs=4096 count=1
  恢复:dd if=/yangbq/asmheader.dd  of=/dev/raw/raw1

2)利用oracle的kfed工具来备份,将磁盘头信息转换成文本明文形式记录下来,恢复时使用kfed merge进去
  备份:kfed read  /dev/raw/raw1      aunum=0 blknum=0 text=raw1.txt
  恢复:kfed write /dev/raw/raw1      aunum=0 blknum=0 text=raw1.txt

3)11G及以上asmcmd里面增加了md_backup,md_restore备份指令,但这个只是备份DG的meta结构信息,他的恢复必须是DG已经mount,然后导入结构信息,类似于exp/imp,这种方式对于DG损坏是不起作用的
  备份:asmcmd md_backup -b /yangbq/asmheader.20200730.txt
  恢复:asmcmd md_restore -t full -g dg2 -i -b /gyj/asmheader.20200730.txt
分类: Oracle 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.