Comment supprimer toutes les archives logs via RMAN ?

Plus d’espace disque disponible ? Comment supprimer toutes les archives logs via RMAN ?

Un filesystem full et c’est la panique. Un collègue vous a dit de supprimer les archives logs car ce sont eux qui remplissent l’espace disque. Ci-dessous l’extrait de l’alerte mail nagios que j’ai reçu.

Vous savez que sur votre serveur c’est RMAN qui gère tout ce qui est archive log. Dans ce cas, vous faîtes une petite recherche sur le net pour savoir comment supprimer ces fichiers.

Voici les commandes, testées ce matin même :

su - oracle

#parser votre fichier d'environnement

#connexion à RMAN 
rman target /

CROSSCHECK ARCHIVELOG ALL;

DELETE ARCHIVELOG ALL;

# vous tapez yes pour confirmer la suppression des fichiers

Et donc après on a ce résultat :

139 objets supprimés !

 

 

De 91% d’espace utilisé je suis passée à 1% !
Sources :




Récupérer un paramètre oracle sur plusieurs serveurs en ksh sous Linux

En mode sysadmin

Etant dans une équipe d’intégration, j’ai besoin de lancer souvent de petits scripts maison, telle une sysadmin. Je ne fais pas de dev à proprement parler, j’ai juste besoin d’un résultat rapide et efficace. Mon script n’a pas besoin d’être générique ou d’avoir un max de contrôles, c’est du « ONE SHOT » en quelque sorte.

Comment je procède ?

Dans un premier temps, comme tout sysadmin, je teste d’abord le script sql en local sur les machines.

Dans un second temps, je lance le script à distance toujours en ligne de commande.

Enfin, je crée un script ksh de quelques lignes qui contiendra tout ce dont j’ai besoin : liste des serveurs, script SQL, résultat affiché sur la console.

Je vous laisse découvrir le script ci-dessous, testé et approuvé sur des bases Oracle 11g :)

#!/usr/bin/ksh

for i in server1 server2 server3 server4 server5
do
ssh -T $i <<EOF
echo $i
#amélioration de l'affichage, 200 caractères par ligne
echo "set linesize 200 " > /tmp/scriptOracle.sql
echo "show parameter parallel_max_servers" >> /tmp/scriptOracle.sql
#se déconnecter de la base
echo "exit" >> /tmp/scriptOracle.sql
#sourcer le ficher d'environnement Oracle, lancer le  script sql créé juste en haut et récupérer uniquement la ligne qui nous intéresse
        su - oracle -c ". /chemin/fichierParamOracle  ; sqlplus / as sysdba @/tmp/scriptOracle.sql" 2>/dev/null | grep parallel_max_servers
EOF
done

Résultat : 
monPrompt> ./scriptOracle.ksh
server1
parallel_max_servers                 integer                          xxx
server2
parallel_max_servers                 integer                          xxx
server3
parallel_max_servers                 integer                          xxx
server4
parallel_max_servers                 integer                          xxx
server5
parallel_max_servers                 integer                          xxx
Petit script de sysadmin

Désactiver le mode archivelog sous Oracle 11g

Souvent on a besoin de trouver rapidement, très rapidement une réponse à notre question. Ma question du jour est : comment désactiver le mode archive log ? Cela peut être utile de le désactiver sur un environnement de développement par exemple ou encore pendant l’import de données. La commande est hyper simple, la voici :

alter database noarchivelog;

Attention, il ne  faut lancer cette commande qu’à l’état MOUNT de votre base de données Oracle. Il faut pour cela stopper votre base, passer à l’état MOUNT, lancer la commande ALTER puis passer à l’état OPEN de la base :

shutdown immediate;

startup mount;

alter database noarchivelog;

alter database open;

Pour vérifier le statut du mode archive log, vous pouvez lancer la commande :

archive log list;

Attention, quand vous faîtes une recherche rapide sur le net, du genre « comment désactiver le mode archivelog pendant l’import », on vous indique une option qui n’est valable qu’en oracle 12c !

transform=disable_archive_logging:y

Quand vous faîtes une recherche sur Oracle, indiquez bien la version : 10g, 11g, 12c… et indiquez aussi si c’est du RAC ou pas.

Source : 

It blogger tips

ORA-31623: aucun travail n’est attaché à cette session via le descripteur indiqué

Erreur lors d’un import DataPump Oracle 11g RAC

UDI-31623: l'opération a généré l'erreur ORACLE 31623
ORA-31623: aucun travail n'est attaché à cette session 
via le descripteur indiqué
ORA-06512: à "SYS.DBMS_DATAPUMP", ligne 3326
ORA-06512: à "SYS.DBMS_DATAPUMP", ligne 4551
ORA-06512: à ligne 1

Je viens d’avoir cette erreur lors d’un import Datapump Oracle via la commande impdp, je n’ai aucune idée du type de correction à apporter. Du coup, j’effectue une recherche sur Google, je tombe sur un forum qui ne m’aide pas beaucoup. Puis je tombe sur un blog qui m’apporte exactement la réponse que je recherche. J’applique aussitôt la correction proposée et cela fonctionne.

SQL> show parameter stream

NAME TYPE  VALUE
------------------------------
streams_pool_size big integer 0

SQL> alter system set streams_pool_size=40M scope=spfile;

Système modifié.

SQL> shutdown immediate
Base de données fermée.
Base de données démontée.
Instance ORACLE arrêtée.
SQL> startup
Instance ORACLE lancée.

Source :

Blog de MZH

Pour en savoir plus :

Ajouter une date à votre fichier de log Oracle

Comment ajouter une date à votre fichier résultat Oracle ?

Ce fichier sera généré suite à une requête lancée sous sqlplus.

Quand vous exécutez une requête ou plusieurs d’ailleurs, vous souhaitez stocker le résultat dans un fichier de log. Vous voulez ajouter une date à votre nom de fichier. J’ai recherché sur le net, j’ai trouvé un script sur le forum developpez.net et je l’ai simplifié. En quelques lignes vous avez :

column log_file new_value log_file
select '/tmp/' || to_char( sysdate , 'DDMMYY_HH24MISS' ) 
||  '_resultats.log' log_file from dual;
spool &log_file

Cela vous donne comme nom de fichier : 041116_083022_resultats.log

N’oubliez pas le spool off à la fin du script bien sûr.

Sources :