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.



