ORACLE: Nulls first et Nulls last

par défaut lorsque vous triez une colonne dans une table et que cette colonne contient des valeurs nulles, le trie par defaut est ascendant,et les valeurs nulls sont placé à la fin de la colonne triée exemple :

SQL> select * from test;
ID DESCRIPTION
---------- ----------------------
1 article n°1
2 article n°2
3 article n°3
4
5 article n°5
6 article n°6
7
8
9 article n°9

9 ligne(s) sélectionnée(s).

avec un order by :

SQL> select * from test order by description;

ID DESCRIPTION
---------- -----------------------------------
1 article n°1
2 article n°2
3 article n°3
5 article n°5
6 article n°6
9 article n°9
4
7
8

9 ligne(s) sélectionnée(s).

mais comment faire pour avoir les valeurs nulls en premier en conservant le meme tri ascendant? c'est la ou vient la clause nulls first ( ou nulls last pour les placer à la fin ) exemple :

SQL> select * from test order by description nulls first;

ID DESCRIPTION
---------- --------------------------------------------------
4
7
8
1 article n°1
2 article n°2
3 article n°3
5 article n°5
6 article n°6
9 article n°9

9 ligne(s) sélectionnée(s).

SQL> select * from test order by description nulls last --ce qui est le comportement par défaut;

ID DESCRIPTION
---------- -------------------------------------------------
1 article n°1
2 article n°2
3 article n°3
5 article n°5
6 article n°6
9 article n°9
4
7
8

9 ligne(s) sélectionnée(s).

Oracle: protéger le listener par un mot de passer

Le listener est le point essentiel pour établir une connexion vers la base de données et sa sécurité est la plupart du temps négligé, depuis la version 10g d'oracle l'option de sécurité par défaut est l'authentification système, mais qu'on est il des versions antérieurs, Oracle recommande de mettre un mot de passe pour le listener sinon n'importe qui pourrait se connecter est arrêter votre listener même à distance!
Voila un extrait de ce que donne un lsnrctl status pour la 10g:
...
STATUT du MODULE D'ECOUTE
---------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
Date de départ 02-JAN-2010 11:03:23
Durée d'activité 0 jours 2 heures 0 min. 47 sec
Niveau de trace off
Sécurité ON: Local OS Authentification <-- d="" faut="" par="" span="">
SNMP OFF
...

Voila un extrait de ce que donne un lsnrctl status pour la 9i:
...
STATUT du MODULE D'ECOUTE
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
Date de départ 02-JAN-2010 11:03:58
Durée d'activité 0 jours 2 heures 0 min. 47 sec
Niveau de trace off
Sécurité OFF <-- acc="" d="" faut="" par="" risqu="" s="" span="" un="">
SNMP OFF
...

L’attribut sécurité montre que pour la 9i est par défaut aucun authentification n'est requis; pour mettre un mot de passe pour le listener on entre lsnrctl :
LSNRCTL> change_password
Old password: <-- laisser="" le="" span="" vide="">
New password: <-- de="" le="" mot="" passe="" que="" span="" voulez="" vous="">
Reenter new password:
Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
Mot de passe modifié en LISTENER
La commande a réussi

Dorénavant toute configuration nécessite le mot de passe, si on essaye de sauvegarder la configuration ca échouera :
LSNRCTL> save_config
Connexion Ó (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-01169: Le module d'écoute (listener) n'a pas reconnu le mot de passe

alors on affecte le password et ca marche cette fois :
LSNRCTL> set password
Password:
La commande a réussi
LSNRCTL> save_config
Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
Paramètres de configuration LISTENER enregistrés.
Fichier de paramètres du module d'écoute (listener) C:\oracle\ora92\network\admin\listener.ora
Ancien fichier de paramètres C:\oracle\ora92\network\admin\listener.bak
La commande a réussi
LSNRCTL> reload <--on configuration="" de="" la="" listener.ora="" partir="" recharge="" span="">
Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
La commande a réussi
LSNRCTL> status
...
STATUT du MODULE D'ECOUTE
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
Date de départ 02-JAN-2010 14:37:56
Durée d'activité 0 jours 0 heures 34 min. 44 sec
Niveau de trace off
Sécurité ON <-- c="" est="" maintenant="" on="" span="">
SNMP OFF
...

Mais le mot de passe est stocké ou? Dans listener.ora sous format hachée :
....
#----ADDED BY TNSLSNR 02-JAN-2010 14:38:54---
PASSWORDS_LISTENER = F24871B0F3E610AC
#--------------------------------------------
....
Alors sécuriser aussi l'accès à ce fichier.

ORACLE : lsnrctl

Le listener est un service qui tourne cote serveur et qui permet d'établir une session avec une base de données oracle, en dehors de la manipulation directe des fichiers la commande LSNRCTL permet de configurer ce service; soit vous tapez lsnrctl suivi de la commande soit lsnrctl tout court pour entrer dans son prompt :

C:\>lsnrctl
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 01-JAN-2010 15:25:39
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Bienvenue à LSNRCTL, tapez "aide" pour plus d'informations.
LSNRCTL> help
Les opérations suivantes sont disponibles
Un astérisque(*) représente un modificateur ou une commande étendue :

start stop status
services version reload
save_config trace change_password
quit exit set*
show*

LSNRCTL> help set --pour voire les options en détails de 'set'
Les opérations suivantes sont disponibles après set
Un astérisque(*) représente un modificateur ou une commande étendue :

password rawmode displaymode
trc_file trc_directory trc_level
log_file log_directory log_status
current_listener startup_waittime save_config_on_stop

par exemple pour la commande status :


C:\>lsnrctl status
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 01-JAN-2010 15:21:11
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
STATUT du MODULE D'ECOUTE
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
Date de départ 01-JAN-2010 08:58:33
Durée d'activité 0 jours 6 heures 22 min. 40 sec
Niveau de trace off
Sécurité OFF
SNMP OFF
Fichier de paramétres du module d'écoute (listener) C:\oracle\ora92\network\admin\listener.ora
Fichier journal du module d'écoute (listener) C:\oracle\ora92\network\log\listener.log
Récapitilatif d'écoute des points d'extrémité...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wac)(PORT=1521)))
Récapitulatif services...
Le service "DB9I" comporte 2 instance(s).
L'instance "DB9I", statut UNKNOWN, comporte 1 gestionnaire(s) pour ce service...
L'instance "DB9I", statut READY, comporte 1 gestionnaire(s) pour ce service...
Le service "DB9IXDB" comporte 1 instance(s).
L'instance "DB9I", statut READY, comporte 1 gestionnaire(s) pour ce service...
Le service "PLSExtProc" comporte 1 instance(s).
L'instance "PLSExtProc", statut UNKNOWN, comporte 1 gestionnaire(s) pour ce service...
La commande a réussi

La commande status affiche plusieurs informations sur le listener on peut les subdiviser en catégories :
La première sur le listener comme son alias (si vous avez plusieurs vous devez spécifier lequel après status), sa version, la date de démarrage la durée d'activité, le niveau de trace si vous désirer avoir une trace plus détaillée sur les connexions, la sécurité, le SNMP si vous voulez une gestion par snmp.
Ensuite vient la partie des fichiers de paramètres et de log et par quel moyen le listener permet la connexion à la base de données dans notre cas deux méthodes en TCP sur le port 1521 (en fait c'est des paquets TNS encapsulé en TCP) ou en IPC généralement utilisé pour l'appel aux procédures externes.
La dernière partie c'est la partie services se sont les instances gérer par le listener.