Astuce : Créér une DB avec ASM sur windows avec un fichier au lieu d’un disque. by albanlepunk

ASM pas de Commentaire »    

Sous windows (ici avec une version 10.2.0.4).

Avec le DBCA lancer la création d’une base, au moment de choisir la destination des fichiers de la db , choisir ASM.

Il faut à ce moment là lui présenter un disque ou une volume non formaté.

Vous n’avez pas de partition libre et non formaté sous la main.

On peut avec asmtool -create Nom_Fichier taille en mégas

EX : D:\>asmtool -create D:\oracle\product\10.2.0\oradata\ASM\asmdb_setra.asm 5000

Après ce “disque” est vu comme éligible pour ASM.

Ensuite Créer une instance ASM avec oradim sans oublier de créer les répertoires qui vont bien.

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
oradim -new -asmsid +ASM -syspwd change_on_install -pfile C:\oracle\product\10.1.0\admin\+ASM\pfile\initASM.ora -spfile
    -startmode auto -shutmode immediate

D:\>set ORACLE_SID=+ASM

D:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Mer. Juin 10 16:28:11 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ConnectÚ Ó :
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create pfile=’D:\oracle\product\10.2.0\db_1\database\initASM.ora’ from spfi
le;

Fichier créé.
SQL> shutdown immediate
ORA-15100: nom de groupe de disques non valide ou absent
Instance ASM arrétée

Modifier le initASM.ora créé précédemment.

_asm_allow_only_raw_disks=false
asm_diskgroups='DATADG'

SQL> startup pfile=D:\oracle\product\10.2.0\db_1\database\initASM.ora
Instance ASM démarrée

Total System Global Area   83886080 bytes
Fixed Size                  1295152 bytes
Variable Size              57425104 bytes
ASM Cache                  25165824 bytes
ORA-15110: aucun groupe de disques n’est monte

SQL> create diskgroup DATADG external redundancy disk ‘D:\oracle\product\10.2.0\
oradata\ASM\asmdb_setra.asm’;

Groupe de disques crÚÚ.

SQL>

Démarrer le dbca et lancer la création d’une base de données sur ASM, votre diskgroup sera vu dans dbca.

On peut procéder de même en créant un deuxième fichier puis diskgroup FRADG pour la Flash Recovery Area .

Et le tour est joué.

Vider ASM de ses fichiers avec Alter diskgroup drop file! by albanlepunk

ASM pas de Commentaire »    

Il est possible de “rentrer” dans ASM et de naviguer dedans en utilisant l’exécutable asmcmd.

C:\oracle\product\10.2.0\db_1\BIN>asmcmd -p
ASMCMD [+] > ls
DATADG/
FRADG/
ASMCMD [+] > cd DATADG
ASMCMD [+DATADG] > ls
ASMCMD [+DATADG] > ls
ASMCMD [+DATADG] > cd ..
ASMCMD [+] > cd FRADG
ASMCMD [+FRADG] > ls
TEST/

la commande rm ayant cours, on peut donc supprimer des fichiers manuellement

Comment automatiser cette tache, par exemple avant de faire un Rman Duplicate sur un serveur de restauration?

Il est possible de supprimer des fichiers dans ASM en étant connecté sys  (cad ORACLE_SID=+ASM) avec l’instruction :  alter diskgroup “XXXXX” drop file ‘yyyyyyyy’;

Toute la difficulté consiste à récupérer les bons noms de fichiers tels qu’ils sont dans ASM.

Voilà un script qui permet de le faire.

set long 20000
set line 200
set pagesize 10000
set heading off
set verify off
set feedback off
set echo off

spool c:\temp\00_nettoie_file_asm.sql

select ‘alter diskgroup ‘||g.name||’ drop file ‘||”’+'|| g.name||’.'||f.file_number||’.'||f.incarnation||”’;’
FROM v$asm_diskgroup g,
v$asm_file f,
v$asm_alias a
where g.name in (’DATADG’,'FRADG’)
and g.group_number = f.group_number
and g.group_number = a.group_number
and f.file_number = a.file_number
order by f.file_number;

spool off

@c:\temp\00_nettoie_file_asm.sql

set heading on
set verify on
set feedback on
set echo on
exit

Penser à renseigner le diskgroup in (’   ‘,’   ‘).

Votre instance ASM est vide et prête à accueuillir de nouveaux fichiers.