Sidebar

Buenas tardes,

Existen muchas ocasiones en nuestra empresa, cuando se va a montar una nueva aplicación muy poderosa, de prioridad uno y altamente transaccional.Para esto se nos ocurre montar ASM, pero... ¿dónde practicarlo, antes de montarlo en un sistema real?

Supongamos que el servidor productivo, donde apuntará nuestra nueva app, será completamente diferente, con respecto a los recursos físicos de las cajas de QA (Quality Assurance) o Pre-producción... es casi siempre lo que ocurre en todos lados, no??. Bueno... en resumen, el servidor de Producción será lo único que cuente con ASM.

Por obvias razones, quisiéramos practicarlo un poco, antes de montarlo en producción. El problema es que a veces es difícil hacerlo, cuando tenemos nuestro portátil o PC, con 1 ó dos discos solamente. Y dados los gastos de la empresa, no permiten adquirir un servidor real de pruebas, con algunos discos medianamente buenos, exclusivos para estos tests.

A continuación les voy a dar los pasos esenciales para montar ASM, en su base de datos creada localmente (su PC, portátil, etc).

 

 Pasos:

 Configurando Oracle Cluster Synchronization Services (CSS).

$ORACLE_HOME/bin/localconfig all

 Creando directorios:

mkdir %ORACLE_BASE%\admin\+ASM\bdump
mkdir %ORACLE_BASE%\admin\+ASM\cdump
mkdir %ORACLE_BASE%\admin\+ASM\hdump
mkdir %ORACLE_BASE%\admin\+ASM\pfile
mkdir %ORACLE_BASE%\admin\+ASM\udump

 Crear PFILE (parametros mínimos requeridos):

_asm_allow_only_raw_disks=FALSE
asm_diskstring='E:\oracle\product\10.2.0\oradata\ASMDISKS\disk*'
background_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\bdump
core_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\cdump
user_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\udump
instance_type=asm
compatible=10.1.0.4.0
large_pool_size=12M
remote_login_passwordfile=exclusive

Se crea servicio e instancia:

oradim -new -asmsid +ASM -syspwd change_on_install
    -pfile C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora -spfile
    -startmode manual -shutmode immediate

Instance created.

C:\> oradim -edit -asmsid +ASM -startmode a

C:\> set oracle_sid=+ASM
C:\> sqlplus "/ as sysdba"

SQL> startup pfile='C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
ASM instance started

Total System Global Area    125829120 bytes
Fixed Size                    769268 bytes
Variable Size               125059852 bytes
Database Buffers                   0 bytes
Redo Buffers                       0 bytes
ORA-15110: no diskgroups mounted 

SQL> create spfile from pfile='C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
File created.

SQL> shutdown
ASM instance shutdown

SQL> startup
ASM instance started

Puede que recibas el siguiente error:

ORA-15110: no diskgroups mounted

 

Se crean discos simulados:

E:\>cd %ORACLE_HOME%

E:\oracle\product\10.2.0\db_1>cd bin

E:\oracle\product\10.2.0\db_1\bin>asmtool -create E:\oracle\product\10.2.0\oradata\ASMDISKS\disk1 512
E:\oracle\product\10.2.0\db_1\bin>asmtool -create E:\oracle\product\10.2.0\oradata\ASMDISKS\disk2 512
E:\oracle\product\10.2.0\db_1\bin>asmtool -create E:\oracle\product\10.2.0\oradata\ASMDISKS\disk3 512
E:\oracle\product\10.2.0\db_1\bin>asmtool -create E:\oracle\product\10.2.0\oradata\ASMDISKS\disk4 512
 

Verifica la nueva configuración:

ORACLE_SID=+ASM; export ORACLE_SID
sqlplus "/ as sysdba"

SQL> SELECT group_number, disk_number, mount_status, header_status, state, path
  2  FROM   v$asm_disk;

SQL> select group_number, disk_number, mount_status, header_status, state, path, failgroup
  2  from v$asm_disk where rownum < 2;

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU STATE PATH FAILGROUP
1           0 CACHED  MEMBER       NORMAL E:\ORACLE\PRODUCT\10.2.0\ORADATA\ASMDISKS\DISK1 CONTROLLER1

Creando Grupos de discos:

  1  CREATE DISKGROUP ASM_DATA1 NORMAL REDUNDANCY
  2  FAILGROUP controller1
  3  DISK 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ASMDISKS\DISK1','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ASMDISKS\DISK3'
  4  FAILGROUP controller2
  5  DISK 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ASMDISKS\DISK2','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ASMDISKS\DISK4'

Grupo de discos creado.

Conectándose a la segunda instancia (BD normal).

Ahora, usaando el nuevo ASM Group:

SQL> create tablespace users_mirror datafile '+ASM_DATA1' size 100m;

Tablespace creado.

SQL> select FILE_NAME, BYTES/1024/1024 as mb, TABLESPACE_NAME from dba_data_files order by 1;

FILE_NAME MB TABLESPACE_NAME
+ASM_DATA1/dba/datafile/users_mirror.256.663681233     100   USERS_MIRROR

Alterando un Grupo de Discos (diskgroup) para después añadir un alias...

SQL> alter diskgroup 'ASM_DATA1' add directory '+ASM_DATA1/dba/asm_alias/';

Grupo de discos modificado.

SQL> alter diskgroup ASM_DATA1
  2  add alias '+ASM_DATA1/dba/asm_alias/users_alias.dbf'
  3  for '+ASM_DATA1/dba/datafile/users_mirror.256.663681233';

Grupo de discos modificado.

 

Saludos,
Carlos Isaac Contreras.
DBASupport Europa.
{mosimage} 

 


Tips BD