Retrieving the number of sessions used for each client :
select
username, osuser, machine, count(*) as sessions
from
v$session
group
by username, osuser, machine
order
by sessions desc
Affichage des articles dont le libellé est oracle. Afficher tous les articles
Affichage des articles dont le libellé est oracle. Afficher tous les articles
jeudi 25 avril 2013
Oracle : deleting multiple sessions with certain conditions (like machine=...)
Generate queries for deleting all sessions with certain conditions (like machine=...) :
SELECT
'ALTER SYSTEM DISCONNECT SESSION '''||s.sid||','||s.serial#||''' IMMEDIATE;'
FROM
gv$session s
JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE
s.type != 'BACKGROUND' and s.status='INACTIVE' ;
Other interesting conditions :
SELECT
'ALTER SYSTEM DISCONNECT SESSION '''||s.sid||','||s.serial#||''' IMMEDIATE;'
FROM
gv$session s
JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE
s.type != 'BACKGROUND' and s.status='INACTIVE' ;
Other interesting conditions :
- s.username : the username used to connect to the DB
- s.schemaname : the name of the schema
- s.status : ACTIVE/INACTIVE
- s.osuser : the Windows/Linux/... username on the remote computer (the client)
- s.machine : the name of the remote computer (the client)
vendredi 25 janvier 2013
Oracle : order by, different results [problem]
When you execute a SELECT .... ORDER BY query from a sql client (like SQuirreL), you may have a result with an order that is not the same when you execute your query with another sql client or inside your Java application.
It's depending on some locale parameters (country and language) on the client side.
For a Java application, you can update your locale by adding parameters to your jvm.
For example : -Duser.country=en -Duser.language=en
There are more solutions here (adding a NLSSORT() to your ORDER BY clause, etc...).
FYI, you can check the NLS_LANGUAGE and the NLS_SORT on the Oracle server side :
Query:
select parameter,value from NLS_DATABASE_PARAMETERS where parameter in('NLS_LANGUAGE','NLS_SORT');
Result:
NLS_LANGUAGE AMERICAN
NLS_SORT BINARY
Source : http://stackoverflow.com/questions/8818201/oracle-order-by-different
lundi 7 janvier 2013
SQL : Trier dans l'ordre des valeurs présentes dans la clause IN()
Si vous avez une requête SQL avec une clause IN(<valeurs>), et que vous souhaitez récupérer les rows dans un ordre bien précis (par exemple dans l'ordre des valeurs présentes dans le IN()), il existe une solution :
Sous MySQL:
SELECT id FROM table1 WHERE id IN(1, 20, 45) ORDER BY FIELD(id, 1, 20, 45)
Sous Oracle:
SELECT id FROM table1 WHERE id IN(1, 20, 45) ORDER BY INSTR('1, 20, 45', id);
Source : http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause
N'hésitez pas à me laisser un petit commentaire :)
jeudi 13 septembre 2012
Utiliser SQL pour connaitre l'IP et le hostname d'un serveur Oracle
Une fois connecté avec un client SQL sur un serveur Oracle,
- pour récupérer le hostname du serveur Oracle:
SELECT UTL_INADDR.get_host_name FROM dual;
- pour récupérer l'IP du serveur Oracle:
SELECT UTL_INADDR.get_host_address from dual;
- pour récupérer le hostname du serveur Oracle:
SELECT UTL_INADDR.get_host_name FROM dual;
- pour récupérer l'IP du serveur Oracle:
SELECT UTL_INADDR.get_host_address from dual;
jeudi 7 avril 2011
Lister les contraintes sous Oracle
Lister les contraintes de l'utilisateur en cours :
SELECT count(*) FROM USER_CONSTRAINTS
Lister les contraintes d'un autre utilisateur :
SELECT count(*) FROM ALL_CONSTRAINTS WHERE OWNER='<THE_USER>';
Connaitre la version d'Oracle via SQL
select * from v$version;
select * from product_component_version;
select * from product_component_version;
mardi 5 avril 2011
jeudi 31 mars 2011
Arrêter une requête sous Oracle
ALTER SYSTEM KILL SESSION 'sid,serial#';
Pour savoir à quoi correspondent le sid et le serial# :
http://nabilbenyoussef.blogspot.com/2011/02/afficher-les-requetes-en-cours.html
Source :
http://www.oracle-base.com/articles/misc/KillingOracleSessions.php
vendredi 18 mars 2011
Trouver les tables Oracle contenant une colonne s'appelant 'XXX'
select table_name from user_tab_columns where column_name='NOM_DE_LA_COLONNE'
vendredi 25 février 2011
Les propriétés des mots de passe Oracle
Pour connaitre les propriétés des mots de passe Oracle (comme par exemple la durée de validité d'un mot de passe, le nombre de tentatives d'identifications autorisées) :
select profile,resource_name ,limit from dba_profiles
Les propriétés des mots de passe sont les suivantes :
FAILED_LOGIN_ATTEMPTS
PASSWORD_LIFE_TIME
PASSWORD_REUSE_TIME
PASSWORD_REUSE_MAX
PASSWORD_VERIFY_FUNCTION
PASSWORD_LOCK_TIME
PASSWORD_GRACE_TIME
Elles sont décrites ici :
FAILED_LOGIN_ATTEMPTS
PASSWORD_LIFE_TIME
PASSWORD_REUSE_TIME
PASSWORD_REUSE_MAX
PASSWORD_VERIFY_FUNCTION
PASSWORD_LOCK_TIME
PASSWORD_GRACE_TIME
Elles sont décrites ici :
lundi 21 février 2011
Flashback Oracle
Un chef de projet est venu me voir un soir (juste avant de rentrer chez lui) en me disant "tiens, il faudrait que tu lances cet UPDATE sur la base de prod pour mettre à jour les emails de la table CONTACT.
Il resta derrière moi, attendant que je le lance en production (et histoire de me mettre la pression). Et moi, j'ai eu la maladresse de ne pas verifier sa requête et je l'ai lancée en production...
Ce qui devait arriver arriva : la requête n'était pas bonne du tout, et au lieu de mettre à jour les emails ils furent tous supprimés :o(
"Bon je rentre chez moi" me dit le chef de projet (on sent l'esprit d'équipe).
Deux solutions se presentaient alors à moi :
"Bon je rentre chez moi" me dit le chef de projet (on sent l'esprit d'équipe).
Deux solutions se presentaient alors à moi :
- reprendre une base de backup pour recuperer les emails (et pour ca je devais galérer pour contacter l'hébergeur, infogérance oblige...)
- ou utiliser la fonctionnalité magique d'Oracle, le FLASHBACK !
Grossomodo, cette deuxième solution consiste à afficher la table CONTACT telle qu'elle etait à T-X minutes.
Donc:
- je commence par créer une vue permettant d'accéder à la table telle qu'elle était il y a 1 heure :
Grossomodo, cette deuxième solution consiste à afficher la table CONTACT telle qu'elle etait à T-X minutes.
Donc:
- je commence par créer une vue permettant d'accéder à la table telle qu'elle était il y a 1 heure :
create view hour_ago as (select * from contact as of TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE));
=>Du coup, lorsque je fais select * from hour_ago where id=246 par exemple, j'affiche les données du contact (ayant pour id 246) telles qu'elles étaient il y a une heure
- je fais l'update de la dernière chance :
update contact set contact.email=(select hour_ago.email from hour_ago where hour_ago.id=contact.id);
=> cet update :
- a donc pris les emails de la table CONTACT tels qu'ils etaient avant la gaffe (grace à la vue hour_ago, avec son intervalle à "60 minutes")
- a mis à jour la table CONTACT à partir de ces emails
=>Du coup, lorsque je fais select * from hour_ago where id=246 par exemple, j'affiche les données du contact (ayant pour id 246) telles qu'elles étaient il y a une heure
- je fais l'update de la dernière chance :
update contact set contact.email=(select hour_ago.email from hour_ago where hour_ago.id=contact.id);
=> cet update :
- a donc pris les emails de la table CONTACT tels qu'ils etaient avant la gaffe (grace à la vue hour_ago, avec son intervalle à "60 minutes")
- a mis à jour la table CONTACT à partir de ces emails
C'est maaaaaagique :o)
vendredi 4 février 2011
Afficher les requêtes en cours d'execution sous Oracle
select sesion.sid, sesion.username, optimizer_mode, hash_value, address, cpu_time, elapsed_time, sql_text, serial# from v$sqlarea sqlarea, v$session sesion where sesion.sql_hash_value = sqlarea.hash_value and sesion.sql_address = sqlarea.address and sesion.username is not null
Si
jamais il y a des requêtes qui font plus de 1000 caractères, elles
seront tronqués. Dans ce cas, pour afficher l'integralité :
select sesion.sid,
sql_text
from v$sqltext sqltext, v$session sesion
where sesion.sql_hash_value = sqltext.hash_value
and sesion.sql_address = sqltext.address
and sesion.username is not null
order by sqltext.piece
Source: http://www.squaredba.com/finding-currently-running-sql-135.html
mercredi 2 février 2011
Afficher les locks sous Oracle
SELECT
o.owner, o.object_name, o.object_type,
o.last_ddl_time, o.status, l.session_id,
l.oracle_username, l.locked_mode
FROM
FROM
dba_objects o, gv$locked_object l
WHERE
WHERE
o.object_id = l.object_id;
vendredi 28 janvier 2011
Inscription à :
Articles (Atom)
Categories
- /etc/hosts (1)
- 443 (1)
- 80 (1)
- a2dp (1)
- addsubview (1)
- affix (1)
- amazon (1)
- android (6)
- angularjs (1)
- angularjs cross domain json post (1)
- angularjs ionic ng-click twice (1)
- animate (1)
- ansible (2)
- antlr (1)
- apache2 processes (1)
- app (1)
- app store (1)
- apple (1)
- appstore (1)
- avis (2)
- baignoire (1)
- basics (1)
- bitbucket (1)
- blackberry (1)
- bluetooth (1)
- booster (1)
- bootstrap (3)
- bottle (4)
- browsers (1)
- buffer (1)
- cherrypy (3)
- chromebook real life (1)
- coder (2)
- communicator (1)
- config.txt (1)
- creme chocolat (1)
- crepes bretonnes (1)
- crlf (1)
- css (2)
- cuisine (1)
- database (4)
- datatables (1)
- datetime (1)
- delete (1)
- disconnect (1)
- distributing (1)
- english (2)
- flask (1)
- fontawesome (1)
- francais (51)
- futuristic (1)
- game (1)
- gil (1)
- git (9)
- github (1)
- gratuit (2)
- hadopi (1)
- header (1)
- height zero (1)
- hibernate (1)
- hotel (2)
- http (1)
- https (2)
- ionic (2)
- ios (2)
- ios7 (1)
- iOS8 (1)
- iphone (1)
- jaune (1)
- java (7)
- javamelody (1)
- javascript (1)
- json (3)
- kindle (1)
- knockout (3)
- leaflet (1)
- legere (1)
- lf (1)
- life cycle (1)
- linkedin resume builder profile (1)
- linux (9)
- log (1)
- luxembourg (1)
- machine (1)
- maizena (1)
- minecraft (1)
- mobile (1)
- mongo (1)
- mongodb (3)
- mongodb mongo linux (1)
- multiple (1)
- myspace (1)
- mysql (1)
- netbeans cordova android cordova-plugin-file (1)
- nginx (2)
- nintendo (1)
- number (1)
- opensolaris (1)
- openstreetmap (1)
- oracle (15)
- order by (1)
- output (1)
- overclocking (1)
- packaging (1)
- parameters (1)
- personnaliser bootstrap (1)
- photos (1)
- pip (2)
- pipewire (1)
- prime (1)
- problem (2)
- project (1)
- publish (1)
- python (26)
- raspberry pi (2)
- raspi-config (1)
- recette (1)
- redirect (1)
- restful (2)
- schema (1)
- screen (1)
- screencast (1)
- script (1)
- scrollspy (1)
- serialization (1)
- sessions (2)
- shell (1)
- shutdown reboot linux reinstall apt-get (1)
- smartgwt (1)
- sncf (1)
- software (1)
- spring (1)
- sql (1)
- sticky footer (1)
- supervisor (1)
- systeme (1)
- tile (1)
- timestamp (1)
- title (1)
- tornado (3)
- turbo (1)
- ubuntu (2)
- uialertview (1)
- video capture (1)
- viewdidappear (1)
- viewdidload (1)
- viewwillappear (1)
- weasyprint (1)
- web (1)
- web2py (1)
- windows (5)
- worker (1)
- xbox wireless headset (1)
- xdk barcode scanner intel.xdk.device.barcode.scan (1)
- XDK rename project (1)
- xeno galaxies (1)