SelectEtoile : Base de connaissance SGBD

Posts Tagged 'oracle'

Tuning des redolog ORACLE

Impossibilité/lenteur du switch des log :

  • archivelog trop lent (LOG_ARCHIVE_MAX_PROCESSES et LOG_ARCHIVE_DEST_n)

  • taille trop petite

  • ajouter groupe

  • environ 30 mins par groupe entre chaque switch


select * from v$system_event :

  • log file parallel write’ : LGWR attend fin ecriture (normal)

  • ‘log file sync’ : attente du user session


Visualisation des log

  • v$logfile : inventaire des fichier de redo log

  • v$log : visualisation de la log courante ainsi que la sequence

  • v$log_history : historique des log avec leur sequence

Articles tagged

Sauvegarde / Restauration ORACLE

Quelques infos utiles :

V$recover_file : détermine les fichier de données à récupérer

V$achived_log : liste des fichiers de journalisation archivés

V$recovery_log : liste de tous les fichiers archivés nécessaires à la restauration

v$backup : liste les fichiers en mode backup

En cas de restauration d’archive log et probleme de place disk, il est possible de changer l’emplacement comme ceci :

Alter system archive log start to <LOCATION> ou set logsource <LOCATION>


Restauration complète :

Recover database : se fait base fermée

Recover tablespace… : se fait base ouverte

Recover datafile ‘nom_du_datafile’ : se fait base ouverte ou fermée (quand les tbs system ou undo sont impactés)

Pour un recover automatique :

Set autorecovery on

Faire un recover datafile…

Entrez ‘auto’ lorsque vous êtes invité à indiquer un redo log archivés

Faire un recover automatic datafile…

Exemple de restauration base fermée (pb sur un fichier du tbs system)

Shutdown abort

Host cp /BACKUP/system.dbf /fsmachine/sgbd/folde/data

Startup mount

Recover database ou recover datafile /fsmachine/sgbd/folde/data/system.dbf

Alter database open

Exemple de récupération base ouverte (défaillance physique sauf SYSTEM)

Vérifier que le datafile problématique est offline (jointure sur v$datafile et v$datafile_header). Sinon, le mettre offline.

Host cp /BACKUP/df2.dbf /fsmachine/sgbd/folde/data

Recover datafile ‘/fsmachine/sgbd/folde/data/ df2.dbf’ ou recover tablespace user_data

Alter database datafile ‘/fsmachine/sgbd/folde/data/ df2.dbf’ online; -- ou alter tablespace user_data online

Exemple de récupération base ouverte initialement fermée

Startup mount

Mettre le fichier offline comme vu au dessus

Alter database open : permet au utilisateurs d’accéder au systeme

Host cp file_save file (si un isk est endommagé, faire la restauration sur un autre disk)

Alter database rename file ‘/disk2/toto.dbf’ to ‘/disk3/toto.dbf’

Recover datafile ‘/disk3/toto.dbf’ ou recover tablespace user_data

Alter database datafile ‘/disk3/toto.dbf’ online;

Exemple de récupération sans sauvegarde

Si la base n’est pas démarrée, la montée, mettre offline le fichier impacté, puis ouvrir la base

Alter tablespace table_data offline immediate ;

Select * from v$recover_file ; -- verifie le statut de la récupération

Alter database create datafile ‘/disk2/df4.dbf’ as ‘/disk1/df4.dbf’

Select * from v$recover_file ; -- verifie le statut de la récupération

Recover tablespace user_data

Alter tablespace user_data online ;

Perte des fichiers de controle (3 solutions)

Utiliser une copie d’un fichier de controle en cours

Créer un nouveau fichier de contrôle

Create controlfile file

Recover database using backup controlfile

NB : alter database backup controlfile to trace


Restauration incomplète:

NB : consulter avant et après le fichier d’alerte. Il contient des infos d’erreurs, des conseils et les SCN

Avant tout chose, avant de démarrer une restauration incomplète

Faire une sauvegarde de la base fermée

Une sauvegarde du controlfile (alter database backup controlfile to /location)

Sauvegarde du redo log courant (alter system archive log current)

Procédure générale de restauration incomplète :

Sauvegarde à froid

Restaurez tous les fichiers de données (sauf controlfile, redolog, passwdfile, fichier de paramtres) pour ramener la base à un état antérieur.

Alter database mount et vérifier que les datafiles sont online

Récupérer la base jusqu’à l’état voulu (voir méthode ci-dessous)

Ouvrir la base avec resetlogs

Faire une sauvegarde full de la base fermée

 

 

Récupération jusqu’à un point dans le temps

Recover database until time `2001-03-04 :14 :22 :03`

Récupération jusqu’à annulation (cas d’un fichier de journalisation perdu ou corrompu nécessaire à une récupération)

Recover database until cancel

Récupération basée sur le SCN

Récupération à l’aide d’une sauvegarde de fichier de contrôle

Mettre la base en mode resteint : alter system enable restricted session ;

Comparer l’heure trouvée dans le fichier alerte (d’un drop par exemple) et dans la vue v$log

Shutdown

Save controlfile

Restaurer physiquement les fichiers de données et controlfile de la base

Alter database open (desmessages d’erreur apparaissent disant qu’il existe une désybnchronisation – sequence doesn’t match)

Mettre les datafile offline online si nécessaire

Recover database until time `2001-03-04 :14 :22 :03` using backup controlfile

Alter database open resetlogs

Save db full close

 


Une fois la restauration incomplète terminée

Faire une sauvegarde de la base fermée

Sauvegarder tous les fichiers d’archive_log et les supprimer pour éviter de mélanger les différents états de la base.


 

 

 

 

Exemple de scripts sql de sauvegarde à chaud :

 -- sauvegarde_complete_a_chaud.bat

-- genere et execute le fichier homonyme (.sql)

-- remplacer disque_temp: et disque_sauvegarde: par des valeurs !

--

-- on supprime toutes les infos parasites sur la sortie standard

@disque_temp:\nettoie_spool.sql

spool sauvegarde_complete_a_chaud.sql

select 'ALTER TABLESPACE '||tablespace_name||' BEGIN BACKUP;'

from dba_tablespaces;

select 'host copy '||file_name||' disque_sauvegarde:\'||substr(file_name, instr( file_name,'\',-1)+1)

from dba_data_files;

select 'ALTER TABLESPACE '||tablespace_name||' END BACKUP;'

from dba_tablespaces;

spool off

@sauvegarde_complete_a_chaud.sql

 

 

Import / Export ORACLE

Export ORACLE

 


 

Exp user/passwd log=logfile file=exportname consistence=yes

full=y

owner=user

tables=(user.table1,user.table2…)

tablespace=kdsj

ex : exp user/userpwd file=tt.exp tables=ta_tttt rows=y

 

 

 

Import ORACLE


Imp user/passwd parfile=filename

Ex de parfile

 

LOG=$EXPORTDIR/import.log

FILE=$EXPORTDIR/expfull20050614-073934.dump

FROMUSER=CDCSPEC,OPS$BRU,UBXADMIN,UBXREF,UDSPECIF,USERBO,USERCLI,USERDB,USERMON

TOUSER=CDCSPEC,OPS$BRU,UBXADMIN,UBXREF,UDSPECIF,USERBO,USERCLI,USERDB,USERMON

On peut rajouter le parameters ‘TABLES=(*)’ qui ne va importer que les tables, trigger, index d’un shema.
Ex : imp scriptor/scriptor4recon file=tt.exp tables=MQMT950 rows=y ignore=y constraints=n indexes=n


Remarques

Import avec un pipe nommé

Créer un pipe nommé : mknod pipename p

Créer le fichier parfile avec comme parametre file le nom du pipe nommé

Lancer les commandes suivantes :
  •  
    • gzip –d nom_du_fichier_import.gz > pipename &

    • imp parfile=import.txt


 

Exemples export et import ORACLE

exp / OWNER=user_a file=$EXPORTDIR/exp_ORACLESID_user_a.dmp log=$LOGDIR/exp_ORACLESID_user_a..log consistent=y direct=y