–Tuer un process session sous oracle
sql>Select inst_id, sid, serial# from v$session
where username=’toto’;
SID SERIAL# INST_ID
——– ————— —————-
450 9404 2
sql>Alter system kill session ’450, 9404,@2’;
-Modifier la taille de la memoire utilisée liée à sid=rad1:
sql>show parameter;
sql>Alter system set memory_target=500m scope=spfile sid=’rac1’;
-Modifier la taille de la memoire reservée pour le sga:
SQL>show parameter sga_target;
SQL> alter system set sga_target=1024m;
-Modifier un parametre static(voir exemple ci dessous):
SQL> alter system set sga_max_size=850m scope=spfile;
SQL> startup force
SQL> show parameter sga_max_size
-Chercher les instances configurées:
select instance_name, status, database_status from v$instance;
-Vider le cache(au sein de la sga):
sql>ALTER SYSTEM FLUSH BUFFER_CACHE;
PL/SQL>execute immediate ‘ALTER SYSTEM FLUSH BUFFER_CACHE’;
-Créer une historique du résultat de vos requêtes sql dans un fichier log:
SQL> spool pre_upgrade.log;
ici vos sql…
SQL>spool off;
-Installer patch oracle dba(version 10g…):
a)Sauvegarder (pour le rollback) vos instances(export dump de vos bases etc) ,
b)Arrêter les outils de ctl comme le listener(lsnrctl stop), EM(emctl stop dbconsole) et ISQLPLUS(isqlplusctl stop)
c)Arrêter la base:
sql>shutdown immediate
d)Sauvegarder aussi le répertoire oradata(tar czf) et db_1 et aussi dbhome, oraenv et coraenv qui sont dans /usr/local/bin sous unix/linux
e)Lancer le programme d’installation de patch oracle et le script root.sh
f)Positionner votre ORACLE_SID, se connecter en sysdba, se positionner mode upgrade(sql>startup upgrade) puis lancer le scripts de mise à jour d’une instance:…db_1\rdbms\admin\catupgrd.sql et se connecter en mode normal(sql>startup) lancer le script db_1\rdbms\admin\utlrp.sql(récompilation des objets invalides)
SQL> select * from v$version;
Le script de diagnostic de pre-migration:utlu102i.sql
Le script de diagnostic de post-migration:utlu102s.sql
Relancer le listener (et les outils de contrôles EM et ISQLPLUS)
Retour en arrière(ROLLBACK) en cas de problème:
a)Arrêter la base de données(shutdown immediate), le listener et les outils ctl
b)Restaurer les répertoires oradata et db_1:
$echo $ORACLE_HOME
/u01/apps/oracle/product/10.2.0/db_1
On restaure ORACLE_HOME comme suit:
$ cd /u01/apps/oracle/product/10.2.0/
$ mv db_1 db_1-ko
$ tar xzf /home/oracle/ora-db_1.tar.gz *
On restaure les fichiers datafiles,controlfiles,redo log comme suit:
$ cd /u01/apps/oracle/oradata/
$ mv ora10g ora10g-ko
$ tar xzf /home/oracle/ora10g.tar.gz *
c)Démarrer la base
d)Relancer le listener (et les outils de contrôles EM et ISQLPLUS)
-Démarrer la base en mode upgrade(par exemple) avec votre spfile/pfile
SQL> startup upgrade pfile=’/u01/app/oracle/product/11.1.0/db_1/dbs/initora10g.ora’
-Analyser le statistique sur une table(optimisation)
sql>analyze table ma_table compute statistics;
-Chercher les verous de la base:
SQL>select
oracle_username
os_user_name,
locked_mode,
object_name,
object_type
from
v$locked_object a,dba_objects b
where
a.object_id = b.object_id
-Chercher la requête sql utilisée(joindre avec v$session):
sql>select sql_text from v$sqlarea
-Chercher le process avec v$process avec v$session
-Chercher les requetes consommatrices de ressources:
select s.sid, s.serial#, a.sql_text
from v$session s
join v$sqlarea a on a.hash_value = s.sql_hash_value;
Select sql_text
from v$sqlarea
where (address, hash_value) in
(select sql_address, sql_hash_value
from v$session
where username like '&username')
-Chercher le programme/process/user
col "SID/SERIAL" format a10 col username format a15 col osuser format a15 col program format a40 select s.sid || ',' || s.serial# "SID/SERIAL" , s.username , s.osuser , p.spid "OS PID" , s.program from v$session s , v$process p Where s.paddr = p.addr order by to_number(p.spid)
-Installer/configurer le « PLAN »:
@...rdbms/admin/utlxplan.sql
-Evaluer la taille de la base:
col "Database Size" format a20 col "Free space" format a20 col "Used space" format a20 select round(sum(used.bytes) / 1024 / 1024 / 1024 ) || ' GB' "Database Size" , round(sum(used.bytes) / 1024 / 1024 / 1024 ) - round(free.p / 1024 / 1024 / 1024) || ' GB' "Used space" , round(free.p / 1024 / 1024 / 1024) || ' GB' "Free space" from (select bytes from v$datafile union all select bytes from v$tempfile union all select bytes from v$log) used , (select sum(bytes) as p from dba_free_space) free group by free.p
-Corriger une erreur de lancement de la base(voir pb de paramétrage):
- create pfile from spfile
- edit the pfile
- startup nomount
- create spfile from pfile
- shutdown
- startup
- remove the pfile
Chercher les OBJETS INVALIDES:
sql>select distinct owner from all_objects where status != ‘VALID’;
Re-compiler les OBJETS INVALIDES d’un schéma de la base
sql> .dbms_utility.compile_schema(‘CIRIL’)
Chercher les droits de l’utilisateur courant:
sql>select * from user_sys_privs;
Donner le droit « CREATE SESSION »(ouverture/création de session oracle)(REVOKE SESSION pour annuler, DROP SESSION pour supprimer) à l’utilisateur « TOTO »
sql>GRANT CREATE SESSION TO TOTO;
Le droit peut être:
-CREATE SESSION
-CREATE TABLE
-CREATE VIEW
-DROP ANY TABLE
…
On peut donner le droit depuis un role(ex: sysdba etc):
sql>GRANT SYSDBA TO TOTO;
Afficher les roles et ses privileges:
SQL> select * from role_sys_privs;
Chercher les chemins des donnees de l’utilisateur courant:
SQL> select name from v$datafile;
Afficher les stats en écriture/lectures I/O physiques:
SQL> SELECT f.phyrds « Lectures Physiques« ,
f.phywrts « Ecritures Physiques« ,
d.name
FROM v$filestat f,
v$datafile d
WHERE d.file#=f.file#
ORDER BY f.phyrds DESC;