ASM Queries
Check ASM Rebalance operation
--------------------------------
select INST_ID, OPERATION, STATE, POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from GV$ASM_OPERATION;
SELECT name, free_mb, total_mb,
total_mb-free_mb "USED_MB", free_mb/total_mb*100 "%FREE"
FROM v$asm_diskgroup;
SELECT name, free_mb, total_mb,
total_mb-free_mb "USED_MB" FROM v$asm_diskgroup;
set lines 150
column path format a40
column name format a30
select
name,path,mount_status,header_status,mode_status,state,total_mb,free_mb from
v$asm_disk order by 2;
Run in ASM environment(ASM_HOME)
set lines 132
set pages 50
column path format a20
select name,path, group_number group_#,
disk_number disk_#, mount_status,header_status, state, total_mb, free_mb from
v$asm_disk order by group_number;
alter diskgroup DATA add disk
'ORCL:ASM114P1';
alter diskgroup DATA add disk
'ORCL:ASM113P1','ORCL:ASM115P1','ORCL:ASM116P1' REBALANCE POWER 8;
ALTER DISKGROUP PSF92DEV_DATA ADD DISK
'/dev/oracleasm/disks/PSF92_DATA08'
NAME PSF92D_DATA_0008,
'/dev/oracleasm/disks/PSF92_DATA09'
NAME PSF92_DATA_0009 REBALANCE POWER 8;
alter diskgroup TSPROD_LTR_DATA add
disk 'ORCL:TSPROD_LTRDATA07' REBALANCE POWER 8;
or
SQL> ALTER DISKGROUP PSF92DEV_DATA
REBALANCE POWER 8;
SQL> select INST_ID, OPERATION,
STATE, POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from GV$ASM_OPERATION;
> select INST_ID, OPERATION, STATE,
POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from GV$ASM_OPERATION where
GROUP_NUMBER=1;
set lines 150
column path format a30
column DiskGroup format a15
column DiskName format a30
col free_mb for 999,999,999
compute sum of total_mb on DiskGroup
compute sum of free_mb on DiskGroup
break on DiskGroup skip 1 on report
set pages 255
select a.name DiskGroup,
b.disk_number Disk#,
b.name DiskName,
b.total_mb,
b.free_mb,
b.path,
b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+)
=b.group_number
and b.header_status != 'FOREIGN'
order by b.group_number, b.disk_number,
b.name;
SQL> SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY off
COLUMN group_name FORMAT a20 HEAD 'Disk
Group|Name'
COLUMN sector_size FORMAT 99,999 HEAD
'Sector|Size'
COLUMN block_size FORMAT 99,999 HEAD
'Block|Size'
COLUMN allocation_unit_size FORMAT
999,999,999 HEAD 'Allocation|Unit Size'
COLUMN state FORMAT a11 HEAD 'State'
COLUMN type FORMAT a6 HEAD 'Type'
COLUMN total_mb FORMAT 999,999,999 HEAD
'Total Size (MB)'
COLUMN used_mb FORMAT 999,999,999 HEAD
'Used Size (MB)'
COLUMN pct_used FORMAT 999.99 HEAD
'Pct. Used'
break on report on disk_group_name skip
1
compute sum label "Grand Total:
" of total_mb used_mb on report
SELECT
name group_name
, sector_size sector_size
,
block_size block_size
, allocation_unit_size allocation_unit_size
, state state
, type type
, total_mb total_mb
, (total_mb - free_mb) used_mb
, ROUND((1- (free_mb / total_mb))*100, 2)
pct_used
FROM
v$asm_diskgroup
ORDER BY
name
/
SELECT
name group_name
, sector_size sector_size
, block_size block_size
, allocation_unit_size allocation_unit_size
, state state
, type type
, total_mb total_mb
FROM
v$asm_diskgroup
ORDER BY
name
/
**********************************
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY off
COLUMN disk_group_name FORMAT a20 HEAD
'Disk Group Name'
COLUMN file_name FORMAT a30 HEAD 'File
Name'
COLUMN bytes FORMAT 9,999,999,999,999
HEAD 'Bytes'
COLUMN space FORMAT 9,999,999,999,999
HEAD 'Space'
COLUMN type FORMAT a18 HEAD 'File Type'
COLUMN redundancy FORMAT a12 HEAD
'Redundancy'
COLUMN striped FORMAT a8 HEAD 'Striped'
COLUMN creation_date FORMAT a20 HEAD
'Creation Date'
break on report on disk_group_name skip
1
compute sum label "" of bytes
space on disk_group_name
compute sum label "Grand Total:
" of bytes space on report
SELECT
g.name disk_group_name
, a.name file_name
, f.bytes bytes
, f.space space
, f.type type
, TO_CHAR(f.creation_date, 'DD-MON-YYYY
HH24:MI:SS') creation_date
FROM
v$asm_file
f JOIN v$asm_alias a USING (group_number, file_number)
JOIN v$asm_diskgroup g USING (group_number)
WHERE
system_created = 'Y'
ORDER BY
g.name
, file_number
/
#### useful cmd #######
asmcmd lsdsk -p
asmcmd lsdsk --candidate -p
-- if you use ASMLib
/usr/sbin/oracleasm listdisks
/usr/sbin/oracleasm querydisk {DISKNAME
| devicename} --check all disk
2. parameters
show parameters asm
3. permission of asmdisk --from all
nodes
ll <value_of_asm_diskstring>
4. from live node2
crsctl query css votedisk
ocrcheck
crsctl stat res -t
sudo /etc/init.d/oracleasm querydisk
/dev/sd* |grep OEM|awk -F" " '{print $2, $11}'
sudo /etc/init.d/oracleasm querydisk
/dev/dm* | grep MOB | awk -F" " '{print $2, $11}'
Ensure that the allocated devices can
be seen in /dev/mpath
cd /dev/mpath
ls -l /dev/mpath
Ensure that the devices can be seen in
/dev/mapper:
ls -l /dev/mapper
ll /dev/oracleasm/disks
## lun id using Multipath
sudo /sbin/multipath -l
sudo /etc/init.d/oracleasm configure
sudo /etc/init.d/oracleasm scandisks
sudo /etc/init.d/oracleasm start
sudo /etc/init.d/oracleasm listdisks
sudo /etc/init.d/oracleasm status
+ASM 09:19 PM
:/opt/app/oracle/product/10.2.0/db_1/bin
> kfod status=TRUE
asm_diskstring='/dev/oracleasm/disks/*' disk=all
--------------------------------------------------------------------------------
Disk Size Header Path
================================================================================
1: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_DATA01
2: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_DATA02
3: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_DATA03
4: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_DATA04
5: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_FLASH01
6: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_FLASH02
7: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_FLASH03
8: 102400 Mb CANDIDATE
/dev/oracleasm/disks/TSOLTP_HTC_FLASH04
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME
================================================================================
+ASM /opt/app/oracle/product/10.2.0/db_1
############ DROP DISK from DISKGROUP
in CMD mode #############
--add new disk MOB10G_DATA_VSP_DISK01
to disk group PRIME_DATA:
ALTER DISKGROUP PRIME_FRA ADD DISK
'ORCL:MOB10G_DATA_VSP_DISK01' SIZE 5115 M REBALANCE POWER 8
-- the above cmd will rebalce 1/2 of
data from current disk MOB10G_DATA_DISK01 to new disk
--Now drop the old disk
(MOB10G_DATA_DISK01) using below command:
ALTER DISKGROUP PRIME_DATA DROP DISK
MOB10G_DATA_DISK01 REBALANCE POWER 8
--after this cmd all data will be moved
from old disk (MOB10G_DATA_DISK01) to new disk (MOB10G_DATA_VSP_DISK01)
-- you can also do it using Grid
Control GUI.
ALTER DISKGROUP PRIME_FRA ADD DISK
'ORCL:MOB10G_FRA_VSP_DISK01' SIZE 5115 M REBALANCE POWER 8
ALTER DISKGROUP PRIME_FRA DROP DISK
MOB10G_FRA_DISK01 REBALANCE POWER 8
ALTER DISKGROUP OCR_DG2 DROP DISK
OCR_VSP_DISK2;
ALTER DISKGROUP OCR_DG1 DROP DISK
OCR_VSP_DISK1;
alter diskgroup VOTING_DG drop disk
'VOTE_VSP_DISK1','VOTE_VSP_DISK2','VOTE_VSP_DISK3';
--or you can use like below (optional -
if not mention it will take the refault rebalance power )
alter diskgroup VOTING_DG drop disk
'VOTE_VSP_DISK1','VOTE_VSP_DISK2','VOTE_VSP_DISK3' REBALANCE POWER 5;
-- check lun id:
>sudo /etc/init.d/oracleasm
querydisk /dev/dm*
Device "/dev/dm-0" is not
marked as an ASM disk
Device "/dev/dm-1" is not
marked as an ASM disk
Device "/dev/dm-10" is marked
an ASM disk with the label "MOB_HTC_FLASH01"
Device "/dev/dm-11" is not
marked as an ASM disk
Device "/dev/dm-12" is marked
an ASM disk with the label "PROD_LTRDATA01"
Device "/dev/dm-13" is marked
an ASM disk with the label "PROD_LTRDATA02"
Device "/dev/dm-14" is marked
an ASM disk with the label "PROD_LTRDATA03"
Device "/dev/dm-15" is marked
an ASM disk with the label "PROD_LTRDATA04"
$ ls -ltr /dev/mpath/ | grep dm-12
lrwxrwxrwx 1 root root 8
Nov 3 2012 360060e8016013300000101330000111b -> ../dm-12
[oracle@pdorclts001 ~]$ sudo
/sbin/multipath -l | grep 360060e8016013300000101330000111b -A 4
360060e8016013300000101330000111b
[size=300 GB][features="1
queue_if_no_path"][hwhandler="0"]
\_ round-robin 0 [active]
\_ 4:0:0:39 sdah 66:16 [active]
\_ 3:0:0:39 sdk 8:160
[active]
#################### for 11g or 12c lun
id on physical:
ls -la /dev/disk/by-id/
############ Standalone
/dev/oracleasm/disks disk naming ##########
ALTER DISKGROUP PSF92DEV_DATA ADD DISK
'/dev/oracleasm/disks/PSF92_DATA08'
NAME PSF92DEV_DATA_0008,
'/dev/oracleasm/disks/PSF92_DATA09'
NAME PSF92DEV_DATA_0009 REBALANCE POWER 8;
ALTER DISKGROUP PSF92DEV_DATA ADD DISK
'/dev/oracleasm/disks/PSF92_DATA06'
NAME PSF92DEV_DATA_0006,
'/dev/oracleasm/disks/PSF92_DATA07'
NAME PSF92DEV_DATA_0007;
ALTER DISKGROUP DATA ADD DISK '/dev/rdsk/c1d30s0','/dev/rdsk/c1d31s0','/dev/rdsk/c1d29s0';
select INST_ID, OPERATION, STATE,
POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from GV$ASM_OPERATION;
########### create disk group with name
disks #########
CREATE DISKGROUP dgroup1 EXTERNAL
REDUNDANCY
FAILGROUP controller1 DISK
'/devices/diska1' NAME diska1,
'/devices/diska2' NAME diska2,
'/devices/diska3' NAME diska3,
'/devices/diska4' NAME diska4
ATTRIBUTE 'au_size'='1M',
'compatible.asm' = '12.1',
'compatible.rdbms' = '11.2';
########## rename asm disk lables
#############
sudo /etc/init.d/oracleasm
force-renamedisk FLMRMAN_DATA_VSP_DISK1 FLMRMAN_FRM_VSP_DISK2
sudo /etc/init.d/oracleasm
force-renamedisk HYPDEV_FLASH FLMRMAN_DATA_VSP_DISK1
############# 12c
12c
SQL> alter diskgroup data2 dismount;
Diskgroup altered.
SQL> alter diskgroup data2 mount
restricted;
Diskgroup altered.
Then use the following SQL to rename
the disks.
SQL> alter diskgroup data2 rename
disk 'DATA2_0001' to 'DATA2_VMAX_0001', 'DATA2_0000' to 'DATA2_VMAX_0000';
Diskgroup altered.
################ ASM DB growth from OEM
12c/13c ############
with pivot_data AS (
select key_value2, rollup_timestamp, average
from mgmt$metric_daily
where target_name = '+ASM_pdabcdb-scan' and
key_value = 'ABC_DATA' and column_label = 'Total Bytes'
)
select * from pivot_data
pivot
( sum(average/1024/1024/1024)
for key_value2
in ( 'ABC' )
)
order by rollup_timestamp desc;
select target_name, column_label,
key_value, key_value2, average, rollup_timestamp
from mgmt$metric_daily
where
target_name = '+ASM_pdabcdb-scan' and key_value = 'ABC_DATA'
and column_label = 'Total Bytes' and
trunc(rollup_timestamp) = trunc(sysdate)-1;