Optimización SQL en Oracle

Etiquetado de discos para ASM en Solaris.

2011-05-04 · Blog

* Con la ayuda de Sergio Ramírez en la parte de Solaris. Muchísimas gracias, compañero!.

Cuando he tenido que etiquetar discos en linux para que el ASM los reconozca para candidatos, la librería asmlib me lo ha puesto muy fácil, pues solamente era necesario marcar los discos de la siguiente forma.

[root@host Server]# /etc/init.d/oracleasm createdisk ASMDISK1_DATA /dev/mapper/racdb_asm1

Marking disk «ASMDISK1_DATA» as an ASM disk:               [  OK  ]

[root@host Server]# /etc/init.d/oracleasm createdisk ASMDISK1_FRA  /dev/mapper/racdb_asm2

Marking disk «ASMDISK1_FRA» as an ASM disk:                [  OK  ]

[root@cun0401 Server]# /etc/init.d/oracleasm listdisks

ASMDISK1_DATA

ASMDISK1_FRA

Pero esta librería no está disponible para Solaris y el proceso de etiquetar los discos para que ASM los vea como candidatos no resulta tan evidente como se describe en la documentación de instalación de grid en Solaris.

En concreto, una vez los discos están visibles y los dispositivos son del propietario grid:dba , en el comando format hay que modificar los volúmenes tal como se muestra.

root@host:~$ format

Searching for disks…done

AVAILABLE DISK SELECTIONS:

  1. c0t0d0

/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0

  1. c0t1d0 Solaris

/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0

  1. c2t600A0B800029B03400001B474BE28D9Bd0

/scsi_vhci/ssd@g600a0b800029b03400001b474be28d9b

3. c2t600A0B800029B034000022A64DB65A53d0

/scsi_vhci/ssd@g600a0b800029b034000022a64db65a53 –> Este es el disco a añadir

  1. c2t600A0B800029B034000020104C43B3C1d0

/scsi_vhci/ssd@g600a0b800029b034000020104c43b3c1

  1. c2t600A0B800029B034000021104C612E6Dd0

/scsi_vhci/ssd@g600a0b800029b034000021104c612e6d

  1. c2t600A0B8000269A3200007F3F4BE25284d0

/scsi_vhci/ssd@g600a0b8000269a3200007f3f4be25284

  1. c2t600A0B8000269A32000084B24CC8D1D5d0

/scsi_vhci/ssd@g600a0b8000269a32000084b24cc8d1d5

  1. c2t600A0B8000269A32000084C74CD0F3D2d0

/scsi_vhci/ssd@g600a0b8000269a32000084c74cd0f3d2

  1. c2t600A0B8000269A320000802A4BF3820Ad0

/scsi_vhci/ssd@g600a0b8000269a320000802a4bf3820a

  1. c2t600A0B8000269A320000834C4C439596d0

/scsi_vhci/ssd@g600a0b8000269a320000834c4c439596

  1. c2t600A0B8000269A320000834F4C43960Fd0

/scsi_vhci/ssd@g600a0b8000269a320000834f4c43960f

Specify disk (enter its number): 3 –> corresponde al identificador del disco a añadir

Select partitioning base:

  1. Current partition table (original)

  2. All Free Hog

Choose base (enter number) [0]? 1   –> para modificarlas todas las particiones

Part      Tag    Flag     Cylinders         Size            Blocks

0       root    wm       0                0         (0/0/0)             0

1       swap    wu       0                0         (0/0/0)             0

2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008

3 unassigned    wm       0                0         (0/0/0)             0

4 unassigned    wm       0                0         (0/0/0)             0

5 unassigned    wm       0                0         (0/0/0)             0

6        usr    wm       0                0         (0/0/0)             0

7 unassigned    wm       0                0         (0/0/0)             0

Do you wish to continue creating a new partition

table based on above table[yes]? Yes  -> Confirmamos que deseamos crear nuestras particiones.

Free Hog partition[6]? 7  -> Determina que partición es la que almacena el espacio libre

Enter size of partition ‘0’ [0b, 0c, 0.00mb, 0.00gb]: 500mb  -> En la partición 0 definimos un tamaño de 500mb la que necesita ASM para su gestión.

Enter size of partition ‘1’ [0b, 0c, 0.00mb, 0.00gb]:

Enter size of partition ‘3’ [0b, 0c, 0.00mb, 0.00gb]:

Enter size of partition ‘4’ [0b, 0c, 0.00mb, 0.00gb]:

Enter size of partition ‘5’ [0b, 0c, 0.00mb, 0.00gb]:

Enter size of partition ‘6’ [0b, 0c, 0.00mb, 0.00gb]: 99.50gb  -> Configuramos el resto del tamaño en una de las particiones

Part      Tag    Flag     Cylinders         Size            Blocks

0       root    wm       0 –   249      500.00MB    (250/0/0)     1024000

1       swap    wu       0                0         (0/0/0)             0

2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008

3 unassigned    wm       0                0         (0/0/0)             0

4 unassigned    wm       0                0         (0/0/0)             0

5 unassigned    wm       0                0         (0/0/0)             0

6        usr    wm     250 – 51193       99.50GB    (50944/0/0) 208666624

7 unassigned    wm   51194 – 51197        8.00MB    (4/0/0)         16384

Okay to make this the current partition table[yes]? Yes  -> Confirmamos que esta correcto tal cual la hemos definido

Enter table name (remember quotes): «asm»  -> Le ponemos un nombre al modelo de configuración de la tabla, para posteriores discos para la ASM del mismo tamaño.

Ready to label disk, continue? yes

partition> q –> salimos del menú de partición

FORMAT MENU:

disk       – select a disk

type       – select (define) a disk type

partition  – select (define) a partition table

current    – describe the current disk

format     – format and analyze the disk

repair     – repair a defective sector

label      – write label to the disk

analyze    – surface analysis

defect     – defect list management

backup     – search for backup labels

verify     – read and display labels

save       – save new disk/partition definitions

inquiry    – show vendor, product and revision

volname    – set 8-character volume name

!     – execute , then return

quit

format> verify  -> Mediante el comando verify comprobamos que esta correcto.

Primary label contents:

Volume name = <        >

ascii name  =

pcyl        = 51200

ncyl        = 51198

acyl        =    2

nhead       =   64

nsect       =   64

Part      Tag    Flag     Cylinders         Size            Blocks

0       root    wm       0 –   249      500.00MB    (250/0/0)     1024000

1       swap    wu       0                0         (0/0/0)             0

2     backup    wu       0 – 51197      100.00GB    (51198/0/0) 209707008

3 unassigned    wm       0                0         (0/0/0)             0

4 unassigned    wm       0                0         (0/0/0)             0

5 unassigned    wm       0                0         (0/0/0)             0

6        usr    wm     250 – 51193       99.50GB    (50944/0/0) 208666624

7 unassigned    wm   51194 – 51197        8.00MB    (4/0/0)         16384

format> q

Ahora, desde la interfaz gráfica (asmca) o desde sqlplus, Oracle es capaz de identificar los discos como candidatos para añadirlos al diskgroup ASM que corresponda.

-bash-3.00$ sqlplus / as sysasm

SQL> select path, name from v$asm_disk;

PATH                                               NAME
————————————————– ——————————
/dev/did/rdsk/d9s6
/dev/did/rdsk/d9s7
/dev/did/rdsk/d9
/dev/did/rdsk/d4s6                                 RECOVERY_0000
/dev/did/rdsk/d22s6                                DATOS_0001
/dev/did/rdsk/d18s6                                OCRVOTING_0000
/dev/did/rdsk/d19s6                                OCRVOTING_0001

Al aparecer los tres nuevos volúmenes como candidatos, ya es posible añadir el disco al diskgroup desde sqlplus conectado como SYSASM.

SQL> alter diskgroup DATOS add disk ‘/dev/did/rdsk/d9s6’;

SQL> select path, name from v$asm_disk;
PATH                                               NAME
————————————————– ——————————
/dev/did/rdsk/d9s7
/dev/did/rdsk/d9
/dev/did/rdsk/d4s6                                 RECOVERY_0000
/dev/did/rdsk/d9s6                                 DATOS_0000
/dev/did/rdsk/d22s6                                DATOS_0001
/dev/did/rdsk/d18s6                                OCRVOTING_0000
/dev/did/rdsk/d19s6                                OCRVOTING_0001

← Volver al blog