Oracle ASM Diskgroups verwalten
Diskgroups verwalten
Eine Diskgroup mit externen Spiegel anlegen.
SQL> create DISKGROUP DB_DATA_GRP EXTERNAL REDUNDANCY DISK '/dev/rdsk/c2t0d0s6';
Eine Diskgroup mit einem Spiegel
SQL> create DISKGROUP DB_DATA_GRP01
normal REDUNDANCY
FAILGROUP data_fg1 DISK '/dev/rdsk/c2t3d0s6' name data_fg1_disk3
FAILGROUP data_fg2 DISK '/dev/rdsk/c2t4d0s6' name data_fg1_disk4;
Eine Diskgroup mit einem Spiegel und mehreren Disk
SQL> create DISKGROUP DB_DATA_GRP02
normal REDUNDANCY
FAILGROUP controller1 DISK '/dev/rdsk/c3t0d0s6' name c3t0d0s6,'/dev/rdsk/c3t1d0s6' name c3t1d0s6,'/dev/rdsk/c3t2d0s6' name c3t2d0s6,'/dev/rdsk/c3t3d0s6' name c3t3d0s6
FAILGROUP controller2 DISK '/dev/rdsk/c4t0d0s6' name c4t0d0s6,'/dev/rdsk/c4t1d0s6' name c4t1d0s6,'/dev/rdsk/c4t2d0s6' name c4t2d0s6,'/dev/rdsk/c4t3d0s6' name c4t3d0s6;
SQL> create DISKGROUP OCR01
normal REDUNDANCY
FAILGROUP controller1 DISK '/dev/raw/raw11' name raw11,'/dev/raw/raw12' name raw12
FAILGROUP controller2 DISK '/dev/raw/raw21' name raw21,'/dev/raw/raw22' name raw22;
Eine Diskgroup mit neuen Platten erweitern
SQL> alter DISKGROUP DB_DATA_GRP02 add FAILGROUP data_fg22 DISK '/dev/rdsk/c4t4d0s6' name c4t4d0s6,'/dev/rdsk/c4t5d0s6' name c4t5d0s6,'/dev/rdsk/c4t6d0s6' name c4t6d0s6;
alter DISKGROUP DB_DATA_GRP02 add FAILGROUP data_fg21 DISK '/dev/rdsk/c3t4d0s6' name c3t4d0s6,'/dev/rdsk/c3t5d0s6' name c3t5d0s6,'/dev/rdsk/c3t6d0s6' name c3t6d0s6;
Platten aus einer Diskgroup entfernen
SQL> alter DISKGROUP DB_DATA_GRP02 drop disk C4T4D0S6,C4T5D0S6,C4T6D0S6;
Status der Diskgoup Operation
SQL> select group_number,operation,state, est_minutes from v$asm_operation;
GROUP_NUMBER OPERA STAT EST_MINUTES
------------ ----- ---- -----------
2 REBAL RUN 0
Diskgoup Informationen
SQL> select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME TYPE TOTAL_MB FREE_MB
------------ ------------------------------ ------ ---------- ----------
0 DB_DATA_GRP 0 0
Diskgoup mount / umounten
SQL> ALTER DISKGROUP DB_DATA_GRP MOUNT;
Diskgoup löschen
SQL> drop DISKGROUP DB_DATA_GRP;
Diskgoup Übersicht Platten und Diskgroup
SQL> set pagesize 200 linesize 400 long 1000
col DISK_PATH format a30
select dg.name as dg_name,
d.name as disk_name,
d.path as disk_path,
d.failgroup as disk_failgroup,
d.FREE_MB as free,
d.mount_status as status
from v$asm_disk d, v$asm_diskgroup dg
where d.group_number = dg.group_number(+);
oder ein änliches Ergebnis mit asmcmd
ASMCMD> lsdsk -p -k --discovery
DG_NAME DISK_NAME DISK_PATH DISK_FAILGROUP STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ -------
DB_DATA /dev/rdsk/c2t0d0s6 CLOSED
DB_DATA /dev/rdsk/c2t1d0s6 CLOSED
DB_DATA_GRP DB_DATA_GRP_0000 /dev/rdsk/c2t2d0s6 DB_DATA_GRP_0000 CACHED
mount der Diskgroup
SQL> ALTER DISKGROUP DB_DATA_GRP01 MOUNT;
Änderung vom asm_diskstring
SQL> alter system set asm_diskstring='/dev/rdsk/c2t*d*s6','/dev/rdsk/c3t*d*s6','/dev/rdsk/c4t*d*s6' scope=both
Auslessen asm_diskstring
SQL> show parameter asm_diskstring;
Platten auflisten
SQL> set pagesize 200 linesize 400 long 1000
col disk_path format a30
select PATH as disk_path,MOUNT_STATUS as status,TOTAL_MB as Total_Disk_Space from v$asm_disk order by PATH;
Dump ASM disk header
Wenn Sie den ASM Disk-Header ausgeben möchten, können Sie das Oracle-interne Tool "kfed" (Kernel Datei-Editor) verwenden, um Informationen über Ihre Festplatte, diskgroup etc. zu erhalten, auch wenn die Festplatte offline ist.
Es ist standardmäßig mit einer Oracle 11g Installation vorhanden
Wenn Sie Informationen über den gespeicherten ASM Disk-Header lesen möchten, können Sie es wie folgt Befehl verwenden:
kfed read /devASM3 dsk1.dump
Nun haben Sie in der Datei dsk1.dump den ASM-Disk-Header . Diese Datei kann einfach mit einem Texteditor gelesen werden
Wenn Sie den "diskgroup Namen" die der Platte angehört umbenennen möchten, können Sie den dumpfile benutzen und mit den "Merge"-Befehl von KFED die Änderungen wieder zurück schreiben.
kfed merge /dev/ASM3 text=dsk1.dump
Achtung, Es scheint so, das der "diskgroup Name" oder "disk Name "mit einer festen Länge kodiert wird. Wenn Sie den Namen zu ändern, und dieser basiert auf einer Basis von 4 Byte Wort, benennen Sie sie in ein 4 Byte Wort um.
Löschen ASM Disk Header
ls /dev/Ora*|while read d;do dd if=/dev/zero of=$d bs=4096 count=5000 ;done
Aktuelle Diskgroup Konfiguration
SET pages 3000;
set line 1000
col DISK_FILE_PATH format a40
SELECT
NVL(a.name, '[CANDIDATE]') disk_group_name
, b.path disk_file_path
, b.name disk_file_name
, b.failgroup disk_file_fail_group
FROM
v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (group_number)
ORDER BY a.name;
DISK_GROUP_NAME DISK_FILE_PATH DISK_FILE_NAME DISK_FILE_FAIL_GROUP
------------------------------ ---------------------------------------- ------------------------------ ------------------------------
DATA /dev/raw/raw4 DATA_0000 DATA_0000
OCR /dev/raw/raw2 OCR_0001 OCR_0001
OCR /dev/raw/raw3 OCR_0002 OCR_0002
OCR /dev/raw/raw1 OCR_0000 OCR_0000
REDO /dev/raw/raw5 REDO_0000 REDO_0000
[CANDIDATE] /dev/raw/raw6
[CANDIDATE] /dev/raw/raw21
[CANDIDATE] /dev/raw/raw22
[CANDIDATE] /dev/raw/raw11
[CANDIDATE] /dev/raw/raw12
[CANDIDATE] /dev/raw/raw7
Artikelaktionen