oracle¶
tnsnames.ora¶
définie le nom de connexion à une base
exemple :
- nom de connexion PRESTO
- SID de l’instance PRESTOT sur le serveur localhost port d’écoute 1521
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
PRESTO =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SID = PRESTOT)
)
)
listener.ora¶
définie les ports d’écoute
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SRVPZSQL03.Proplast.fr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
liste des utilisateurs connectés¶
SELECT username,
osuser,
machine,
schemaname,
PROGRAM,
status
FROM v$session
WHERE type = 'USER'
info sur la base¶
SELECT instance_name,
host_name,
version,
status,
archiver
FROM v$instance;
liste des tables¶
SELECT table_name FROM dba_tables;
deblocage d’un utilisateur¶
exemple avec le compte system
>sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Lun. Juin 24 16:57:20 2013
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn presto/prestop@PRESTO
Connecté
SQL> ALTER USER system ACCOUNT UNLOCK;
Utilisateur modifié.
SQL> commit;
Validation effectuée.
SQL> disconn
pour modifier le mot de passe d’un user
ALTER USER name_user IDENTIFIED BY motdepasse ;
Taille de la base¶
SELECT sum(bytes)/1024/1024 "Tailletbs en MO",
tablespace_name
FROM dba_data_files
GROUP BY tablespace_name
Calcul de statistique¶
exec DBMS_STATS.gather_schema_stats( ownname => 'PRESTO' , cascade => TRUE)
Dernière calcul de statistique¶
SELECT TABLE_NAME, LAST_ANALYZED
FROM DBA_TABLES
WHERE OWNER='PRESTO'
Sauvegarde d’une base oracle¶
Un exemple très simple de script de sauvegarde à froid des fichiers de données, des redolog, des fichiers de contrôles, et temporary tablespace d’une base de données.
Très utile et rapide en terrain inconnu, où les fichiers sont un peu dispersés à droite et à gauche.
(Ne pas tester en environnement de Production, mais en test d’abord !!!!)
1 Construction dynamiques des ordres de host copy par interrogations des tables
- v$datafile
- v$logfile
- v$controlfile
- v$tempfile
2 Insertion de ces lignes dans un fichier backup.bat dans c:save
3 Creation backup control files pour re-création des control files si besoin
4 Arrêt de la base
5 Auto exécution de la copie à froid (backup.bat)
6 Redémarrage de la base
Lancer ce script directement en mode console sans vous connecter à SQL*PLUS par
Copier/Coller.
Prenez le soin de changer la chaine de connexion et vérifiez la présence du répertoire C:cold_backup et C:save pour ce test.
Si vous avez peur du script !! Vous pouvez mettre en commentaire les 4 dernières lignes, il y aura uniquement la construction du fichier .bat dans c:save sans shutdown immediate etc.
sqlplus -s "sys/mdp@NomTNS as sysdba"
SET pagesize 0
SET linesize 500
SET verify off
define folder ='c:\cold_backup'
define batch='c:\save\backup.bat'
spool &batch;
select 'host copy '|| name|| ' &folder' from v$datafile order by 1 ;
select 'host copy '|| member || ' &folder' from v$logfile order by 1 ;
select 'host copy '|| name || ' &folder' from v$controlfile order by 1 ;
select 'host copy '|| name || ' &folder' from v$tempfile order by 1 ;
spool off
alter database backup controlfile to trace as 'C:\cold_backup\BckCtl.sql' REUSE;
shutdown immediate;
@&batch;
startup;
exit;
Contenu du fichier C:savebackup.bat en sortie qui sera exécuté en auto
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSAUX01.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSTEM01.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\UNDOTBS01.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\USERS01.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA_01.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA_02.DBF c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\CONTROL01.CTL c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\CONTROL02.CTL c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\CONTROL03.CTL c:\cold_backup
host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\TEMP01.DBF c:\cold_backup
Export / import d’une base oracle¶
Pré-requis pour utiliser DataPump¶
Avant de pouvoir utiliser DataPump, vous devez créer une Directory Oracle où vous allez stocker vos exports. Pour ceci, ouvrez une commande SQL*Plus et exécutez cette commande :
CREATE DIRECTORY exports as '/home/exports/' ;
Ici, nous avons créé un répertoire appelé « Exports » qui sera bindé au répertoire système /home/exports . Bien sûr, vous pouvez choisir le nom de répertoire et le répertoire bindé que vous voulez ;-)
Ensuite, il vous faudra donner les droits d’écriture et de lecture à l’utilisateur que vous allez utiliser pour faire vos exports/imports sur le répertoire précédemment créé.
GRANT read,write ON DIRECTORY exports TO scott ;
Export¶
L’export le plus simple que vous pouvez faire, c’est l’export de toute votre base de données. Pour ceci, vous pouvez lancer cette ligne de commande :
$ORACLE_HOME/bin/expdp scott/tiger DIRECTORY=exports DUMPFILE=exportfull.dmp FULL=y LOGFILE=exportfull.log
Vous remarquerez l’utilisation de notre utilisateur Scott à qui on a donné les droits précédemment sur la directory exports utilisée ci-dessus aussi. Cette commande va créer un dump qui s’appellera exportfull.dmp et un log exportfull.log dans le répertoire /home/exports de votre serveur.
Il est possible d’exporter seulement un schéma ou un object
$ORACLE_HOME/bin/expdp scott/tiger DIRECTORY=exports DUMPFILE=exportschemascott.dmp SCHEMAS=scott
$ORACLE_HOME/bin/expdp scott/tiger DIRECTORY=exports DUMPFILE=exportschemascott.dmp SCHEMAS=scott,hr,sh
Import¶
Ce n’est pas le tout d’exporter votre base de données, il vous faudra aussi l’importer Cette fois-ci, au lieu d’utiliser l’exécutable expdp , nous allons utiliser l’exécutable impdp pour Import DataPump. 3 Il s’utilise quasiment de la même façon que expdp. Voici un exemple d’utilisation pour importer toute sa base :
$ORACLE_HOME/bin/impdp scott/tiger DIRECTORY=exports DUMPFILE=exportfull.dmp FULL=y LOGFILE=exportfull.log
il est parfois utile d’ajouter en paramètre
TABLE_EXISTS_ACTION=REPLACE
pour que les tables soient remplacés si elles existent
Attention
si une séquence existe déjà il faut la mettre à jour
Methode complète export avec création d’un utilisateur¶
exemple de méthode complète avec création d’un utilisateur forbkp ayant pour mot de passe forbkp
> sqlplus system/manager@PRESTO
create user forbkp identified by forbkp;
grant connect,resource to forbkp;
grant exp_full_database to forbkp;
grant imp_full_database to forbkp;
create directory datapump as 'E:/SVG/SGBD';
grant read, write on directory datapump to forbkp;
la sauvegarde
D:\oracle\product\10.2.0\db_1\BIN\expdp forbkp/forbkp@PRESTO DIRECTORY=datapump DUMPFILE=exportfull.dmp FULL=y LOGFILE=exportfull.log
Suppression d’une base¶
Nous allons supprimer une base et enlever sous windows les services liés
C:\Documents and Settings\Administrateur>set ORACLE_SID=PRESTODEV
C:\Documents and Settings\Administrateur>sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Mer. Juil. 17 13:59:50 2013
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> connect / as sysdba
Connecté.
SQL> shutdown abort
Instance ORACLE arrêtée.
SQL> drop database
2
SQL> exit
DÚconnectÚ de Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
C:\Documents and Settings\Administrateur>sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Mer. Juil. 17 14:00:22 2013
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> connect / as sysdba
Connecté à une instance inactive.
SQL> disconnect
Déconnecté
SQL> ^Z
C:\Documents and Settings\Administrateur>oradim -delete -sid PRESTODEV
Instance supprimée.
Etat des tables spaces¶
select
a.TABLESPACE_NAME,
a.CONTENTS,
a.EXTENT_MANAGEMENT,
a.ALLOCATION_TYPE,
a.SEGMENT_SPACE_MANAGEMENT,
a.BIGFILE,
a.STATUS,
nvl(sum(b.count_files),0) FILES,
nvl(sum(b.bytes),0) "SIZE",
nvl(sum(b.maxbytes),0) MAX_SIZE,
nvl(sum(b.bytes),0)-nvl(sum(c.free_bytes),0) "USED"
from DBA_TABLESPACES a,
(
select TABLESPACE_NAME,
sum(BYTES) bytes,
count(*) count_files,
sum(greatest(MAXBYTES,BYTES)) maxbytes
from DBA_DATA_FILES
group by TABLESPACE_NAME
union all
select TABLESPACE_NAME,
sum(BYTES),
count(*),
sum(greatest(MAXBYTES,BYTES)) maxbytes
from DBA_TEMP_FILES
group by TABLESPACE_NAME
) b,
(
select TABLESPACE_NAME,
sum(BYTES) free_bytes
from DBA_FREE_SPACE
group by TABLESPACE_NAME
union all
select TABLESPACE_NAME,
sum(BYTES_FREE) free_bytes
from V$TEMP_SPACE_HEADER
group by TABLESPACE_NAME
) c
where a.TABLESPACE_NAME = b.TABLESPACE_NAME (+)
and a.TABLESPACE_NAME = c.TABLESPACE_NAME (+)
group by
a.TABLESPACE_NAME,
a.CONTENTS,
a.EXTENT_MANAGEMENT,
a.ALLOCATION_TYPE,
a.SEGMENT_SPACE_MANAGEMENT,
a.BIGFILE,
a.STATUS
order by a.TABLESPACE_NAME;
TABLESPA CONTENTS EXTENT_MAN ALLOCATIO SEGMEN BIG STATUS FILES SIZE MAX_SIZE USED
-------- --------- ---------- --------- ------ --- ------ ----- --------- ---------- ---------
SYSAUX PERMANENT LOCAL SYSTEM AUTO NO ONLINE 3 397410304 6442450944 395771904
SYSTEM PERMANENT LOCAL SYSTEM MANUAL NO ONLINE 1 471859200 2147483648 470548480
TEMP TEMPORARY LOCAL UNIFORM MANUAL NO ONLINE 1 20971520 2147483648 17039360
UNDOTBS1 UNDO LOCAL SYSTEM MANUAL NO ONLINE 1 182452224 2147483648 13041664
USERS PERMANENT LOCAL SYSTEM MANUAL NO ONLINE 1 26214400 2147483648 524288