mercredi 8 décembre 2010

Bréviaire Oracle

Démarrer Oracle

su - oracle
cd $ORACLE_HOME/bin
./lsnrctl start --> démarrage du TNS
export ORACLE_SID=
sqlplus '/ as sysdba'
startup
quit

Se connecter en tant que sysdba

Se connecter en avec l'utilisateur oracle (utilisateur unix) sur la machine hébergeant l'instance, puis :
sqlplus / as sysdba

sometimes it could be
sqlplus system/monpasswd as sysdba

Sous windows:

sqlplus "/ as sysdba"


Voir les logs

SELECT object_name, session_id , oracle_username , os_user_name, VLO.object_id, PROCESS
FROM v$locked_object VLO INNER JOIN dba_objects DO ON VLO.object_id = DO.object_id;


Unlocker une table
select sid, serial# from v$session where sid in (SELECT session_id FROM v$locked_object);
alter system kill session 'sid, serial';

USER

Lister

select USERNAME, PASSWORD from DBA_USERS order by USERNAME;

Créer

CREATE USER PHARERHCSD IDENTIFIED BY PHARERHCSD
DEFAULT tablespace PHARERHCSD;

GRANT CONNECT,RESOURCE,DBA to PHARERHCSD;

connect PHARERHCSD/PHARERHCSD

Modifier

Changer le password

ALTER USER  IDENTIFIED BY 

ALTER USER  IDENTIFIED BY ;

Lister toutes les tables

Lister toutes les tables de l'utilisateur
select * from user_tables

Lister toutes les tables
select * from all_tables

Tablespace

Lister

select * from USER_TABLESPACES

Créer


create tablespace PHARERHCSD datafile '/data/ora/D59A001/u03/dta_PHARERHCSD.dbf'
size 10M
autoextend on maxsize 200M
extent management local uniform size 64K;

Supprimer


DROP TABLESPACE DTA_ELECTION_ISOPROD_20081216
INCLUDING CONTENTS CASCADE CONSTRAINTS;
DROP TABLESPACE tbs_02 INCLUDING CONTENTS AND DATAFILES;

Libérer de l'espace disque


ALTER DATABASE DATAFILE '/data/ora/D59A001/u03/dta_ELECT_isoprod_20081216.dbf' offline DROP;
conn / as sysdba
shutdown immediate;
startup mount
host
$ cp /u01/oradata/tools01.dbf /u06/oradata/tools01.dbf
$ exit
alter database rename file '/u01/oradata/tools01.dbf' to '/u06/oradata/tools01.dbf';
alter database open
host
$ rm /u01/oradata/tools.01.dbf
$ exit


Si le message est :
ORA-01034: ORACLE not available, cela signifie que l'instance n'est pas démarrée. Et pour démarrer l'instance oracle :
export ORACLE_SID
sqlplus /nolog
connect as sysdba
startup

Pour créer un tablespace


sqlplus system/pwd
CREATE TABLESPACE MYTABLESPACE DATAFILE  '/export/oradata/mynamespace.dbf' size 5M MINIMUM EXTENT 65536 DEFAULT STORAGE (initial 1M next 1M MAXEXTENTS 500 PCTINCREASE 0);

Pour contrôler le listener :

lsnrctl stop
lsnrctl start
lsnrctl services


Voici un exemple de fichier listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER_MYDB =
 (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.mycompany.com)(PORT = 1521))
   )
 )

Voici un exemple de fichier TNSNAMES.ORA

MYDB =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.mycompany.com)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = mydb.mycompany.com)
   )
 )

Si le message est no services started il y a une erreur d'écriture dans le fichier listener.ora

Exporter des données, créer des dumps oracle : 

 Dump binaire

Il existe deux manière pour exporter les donnée. La première consiste à faire un dump binaire, le dump binaire peut uniquement s'importer à l'aide de la commande imp.

exp userid=MYUSERFROM@MYSID file=D:\export_full.dump log=d:\export_full.log

Sur oracle 11 préferer la commande

create directory dump_dir as '/home/oracle/dump';
GRANT CREATE ANY DIRECTORY TO myuser;
expdp SILAADD/SILAADD DUMPFILE=my_dump.dmp DIRECTORY=dump_dir SCHEMAS=SILAADD

Dump SQL oracle

En utilisant SQL developer il est également possible de faire des dumps SQL, lesquels peuvent être chargé par SQL*PLUS. Aller dans le menu Outils --> Export de données.


Puis renseigner les options :

Importer des données, insérer des dumps oracles :



imp system/mymdp@mydb file=/local/schemas/mydbdump.dmp FULL=Y ROWS=Y Ignore=Y FROMUSER=MYSRCTABLESPACE TOUSER=MYDSTTABLESPACE

ou


imp system/ouch  ROWS=Y Ignore=Y  file=D:\export_full.dump TOUSER=MYUSERFROM FROMUSER=MYUSERFROM

Sur oracle 11 préférer la commande


create directory import_dir as '/home/oracle/import';
GRANT CREATE ANY DIRECTORY TO silaadd;
impdp MYSCHEMA/MYSCHEMA remap_schema=MYSCHEMA_PROD:MYSCHEMA DUMPFILE=mysqchema_prod_20092013.dmp directory=import_dir log=myschema.log

Créer un user



create user myuser identified by myuser_pwd default tablespace MYTABLESPACE temporary tablespace TEMP;


Affecter les droits à cet utilisateur :



grant connect,resource to mydb;
Grant succeeded.


Vérifier que l'on peut se connecter avec cet utilisateur

connect myuser/mypwd

Affecter à cet utilisateur le namespace par défauts




ALTER USER myuser  QUOTA UNLIMITED ON MYTABLESPACE;



Créer une instance ORACLE

Plusieurs instances peuvent tourner sur un même numéro de port. Le SID permet de faire la distinction. Dans le plupart des cas, il vaut mieux éviter de créer de nouvelles instances.
Il est suffisant de créer un nouvel utilisateur, l'utilisateur est une notion confondue avec celle du schéma.

Copier le fichier
dbca.rsp et l'éditer

dbca -progress_only -responseFile dbca.rsp

L'instance est créee