Wednesday, December 21, 2005

Gestion et partage en ligne des bookmarks/favoris/signets internet

(Lu pour vous dans la livraison du lundi 19 décembre 2005 du journal gratuit 20 Minutes)

Avec la généralisation du haut débit illimité, du P2P et des blogs, non seulement la gestion des bookmarks devient un must mais leur volume augmente de façon quasi-exponentielle. Résultat : les bookmarks avec plusieurs centaines d’entrées sont légions et leur gestion devient problématique d’autant plus que l’on emporte rarement avec soi ces fameux bookmarks
Et c’est là que le nouvel outil devient intéressant.
Il permet en effet de stocker ses favoris en ligne, de les organiser, et de les partager avec les autres internautes.
Pour exploiter le nouvel outil/service, il suffit d’ouvrir un compte gratuit sur le site qui offre le service (http://del.icio.us ou http://yahoo.icio.us car Yahoo vient d’acquérir la petite société del.icio.us pour un montant non dévoilé).

Il est même possible de poster des favoris. Pour cela, il faut taper http://del.icio.us/post dans son navigateur, puis entrer l’adresse du site à bookmarker. Une nouvelle page apparaît où on peut saisir une courte description de la nouvelle entrée ainsi qu’une liste de tags qui lui seront associés.
Il semble que ce genre de service commence à se répandre très vite. Aussi, alors que del.icio.us est en anglais, il a déjà fait de petits enfants (ou petits frères) dans beaucoup de langues. C’est le cas par exemple de plpage.net (http://www.plpage.net et http://www.plpage.net/savoir_plus.php)

Pour en savoir plus,
http://del.icio.us
http://www.plpage.net/savoir_plus.php

Tuesday, December 20, 2005

BIEN COMPRENDRE LA NOTION DE « NOM DE SERVICE »
POUR EVITER LES ERREURS
« ORA-12154 :TNS :Could not resolve service name »

Introduction
Cet article fait le point sur une erreur commune fréquemment rencontrée par les nouveaux administrateurs Oracle et concernant Oracle net Services. Il constitue une traduction/adaptation d'un article apparue le 23 octobre 2003 sur le site Database Journal et dont l’auteur est Steve Callan et le titre : Avoiding the « ORA-12154 :TNS :culd not resolve service name error. »

Il est important de savoir configurer les fichiers tnsnames.ora et sqlnet.ora. Une mauvaise configuration de ces deux fichiers entraine une impossibilité de se connecter à la base de données. Et l’une des erreurs souvent rencontrées dans ce cas est « ORA-12154 :TNS :could not resolve service name. » Il n’est pas rare que les nouveaux utilisateurs d’Oracle passent des heures et des heures à essayer de comprendre cette erreur.
Généralités et contexte
Commençons par voir ce qui se passe lorsque l’utilisateur oracle tape nom_utilisateur/mot_de_passe@SID. Nous allons utiliser une connexion ordinaire scott/tiger et le nom de notre base de données sera dbaspt.
Après la saisie de nom_utilisateur/mot_de_passe@SID, Oracle va s’arrêter au fichier sqlnet.ora pour récupérer la valeur de la variable d’environnement NAMES.DEFAULT_DOMAIN, si elle existe. C’est le lieu de rappeler que lors de l’installation du logiciel Oracle et de la création de la base de données, l’utilisateur avait été invité à saisir le nom de dommaine de sa base.
Supposons qu’il avait entré « company.com » comme nom de domaine. Oracle va alors ajouter la valeur de la variable NAMES.DEFAULT_DOMAIN (ici company.com) à dbaspt, ce qui aboutit à la chaîne dbaspt.company.com.
Le fichier tnsnames.ora
Ensuite Oracle va s’arrêter au fichier tnsnames.ora. Typiquement ce fichier se présente comme ci-après :
# TNSNAMES.ORA Network Configuration File : D:\Oracle\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA.COMPANY.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
DBASPT.COMPANY.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yourpc)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbaspt)
)
)

# SQLNET.ORA Network Configuration File : D:\Oracle\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DEFAULT_DOMAIN = company.com
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)

Le deuxième paragraphe dans le fichier tnsnames.ora commence par DBASPT.COMPANY.COM. Si DBASPT.COMPANY.COM n’apparaît pas comme mentionné, Scott va recevoir l’erreur ORA-12154.
Si la première ligne avait seulement "DBASPT" (pas de nom de domaine par défaut), Scott va de nouveau recevoir la même erreur.
Au cas où la valeur de la variable NAMES.DEFAULT_DOMAIN n’existe pas et que le contenu du fichier tnsnames.ora reste inchangé, Scott va recevoir l’erreur ORA-12154 dans la mesure où Oracle recherche DBASPT et non DBASPT.COMPANY.COM.
Au cas où il n’existe pas de nom de domaine par défaut et que le fichier tnsnames.ora contient DBASPT.COMPANY.COM, Scott pourra se connecter à la base de données en utilisant le nom de service réseau pleinement qualifié. La chaîne de caractères représentée par NAMES.DEFAULT_DOMAIN concatené au SID est ce que l’on appelle le nom de service réseau pleinement qualifié. Scott pourra se connecter à la base de données en utilisant scott/tiger@dbaspt.company.com. Si Scott avait la valeur de NAMES.DEFAULT_DOMAIN positionné à internet.com, pourrait-il se connecter à la base de données à l’aider de scott/tiger@dbaspt.company.com ? La réponse est oui. Chaque fois que scott utilise une chaîne de nom de service avec un point (« . ») à l’intérieur, Oracle considère cette chaîne comme étant un nom de service réseau pleinement qualifié. Si un nom de service réseau pleinement qualifié est utilisé, Oracle contourne le fichier sqlnet.ora et va directement au fichier tnsnames.ora pour résoudre le nom de service.
Le fichier sqlnet.ora
Dans un environnement générique, on n’a même pas besoin d’utiliser le fichier sqlnet.ora. Pas d’exigence d’utiliser NAMES.DEFAULT_DOMAIN.
La variable NAMES.DIRECTORY_PATH montrée dans le fichier exemple reflète l’ordre par défaut d’utilisation des méthodes de résolution de noms. Aussi, si on utilise cet ordre par défaut, il n’y a pas besoin de le lister.
Dans la mesure où le fichier sqlnet.ora donné en exemple était basé sur un environnement Windows, Oracle a inclus le paramètre SQLNET.AUTHENTICATION_SERVICES et là encore même s’il n’est pas exigé.
Si vous utilisez une et une seule base de données et pas d’appels de procédure externe, tout ce dont vous pourriez avoir besoin dans le fichier tnsnames.ora est ceci :
DBASPT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yourpc)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbaspt)
)
)

Scott et les autres utilisateurs auront besoin uniquement d’utiliser nom_utilisateur/mot_de_passe@dbaspt pour se connecter à la base de données. L’entrée « SERVICE_NAME pourrait être changée en « SID » parce que l’utilisation de "SID=votre_nom_de_base" est encore supporté, mais le standard recommendé par Net8 et au-dessus est "SERVICE_NAME = votre_nom_de_base".

Comme pour beaucoup de choses sous Oracle, il y a plus d’une méthode pour accomplir ce que vous souhaitez accomplir. Et La configuration de Oracle Net n’est pas une exception. Hormis les pare-feux et autres outils sophistiqués de réseautage, Oracle fournit une méthode sécurisée de fixation des erreurs dans les fichiers de configuration d’Oracle net (et Net8). Cette méthode repose sur l’utilisation de l’assistant graphique et l’un des bénéfices d’utilisation de cet assistant est que vous obtiendrez exactement la même sortie si vous entrez la même information. N’ayez pas peur d’expérimenter ces fichiers dans une base de données de test. Vous n’endommagerez pas vos données et vous pourrez toujours recommencer.
Bon courage donc

INSTALLATION D’ORACLE9i SOUS SUN SOLARIS EN SEPT ETAPES

Introduction
Cette installation, nous la ferons dans le respect des règles OFA (Optimal Flexible Architecture) avec une pointe d’astuce pour contourner le fait que nous n’avons pas assez d’espace sur la partition root alors qu’il y en a beaucoup sur la partition hébergéant /export/home.

Etape 1 : Création du point de montage de notre installation
Il s’agit de créer le point de montage /u01 sous lequel sera installé notre distribution ainsi que les bases de données de test.. Ce répertoire est nommé point de montage durant l’installation bien qu’il ne correspond pas forcément à un point de montage au sens Unix. Il contient deux sous répertoires oradata et app. Dans le premier nous trouverons tous les fichiers associés à chaque instance supportée par le serveur. Dans le second, nous trouvons les logiciels associés à cette nouvelle version et quelques fichiers de données des instances.
Dans notre cas, nous créons un répertoire /export/home/u01 et /u01, ce dernier pointant sur le premier.
# mkdir /export/home/u01 /export/home/u01/app
# mkdir /export/home/u01/app/oracle /export/home/u01/oradata
# ln –s /export/home/u01 /u01

Etape 2 : Création des groupes Unix dba et oinstall
Le gid du groupe importe peu mais son nom est imposé par Oracle ; il doit se nommer dba.
# groupadd dba
# groupadd oinstall

Etape 3 : Création de l’utilisateur oracle
Avec les caractéristiques suivantes :
- Nom : oracle
- Répertoire personnel : /u01
- Uid : 1000
- Shell par défaut : bourne shell
- Mot de passe : M0racle
- Groupe unix par défaut : dba
- Groupe unix supplémentaire : oinstall
# useradd –d /u01 –u 1000 –g dba –G oinstall oracle
# passwd oracle


Etape 4 : Modification des droits des répertoires créés
# chown oracle /u01
# chgrp dba /u01

# chown oracle /u01/app/oracle
# chgrp dba /u01/app/oracle

# chown oracle /u01/oradata
# chgrp dba /u01/oradata

# ls –l /u01/app
# ls –l /

Etape 5 : Création de l’environnement de l’utilisateur oracle
Il s’agit de se connecter sous le compte oracle et de :
- créer les répertoires /u01/app/oracle/product et /u01/app/oracle/product/9.2.1
- créer le fichier .profile avec les données suivantes. Le contenu du fichier se présente comme ci-dessous :
# !/bin/sh
# .profile cree le 01/01/2005 par Rigo

# Positionnement des droits de lecture et d’exécution
umask 022

# Positionnement de la variable DISPLAY utilise par OUI
DISPLAY=ultra10 :0.0 ; export DISPLAY

# Definition des variables d’environnement oracle
ORACLE_BASE=/u01/app/oracle ; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.1 ; export ORACLE_HOME
NLS_LANG=french_France.WE8DEC ; export NLS_LANG

# ORA_NL33 permet à OUI de créer une base autre que US7ASCII
ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data ; export ORA_NL33
# LD_LIBRARY_PATH est defini pourv les produits qui utilisent des librairies partagees, comme Pro*C
LD_LIBRARY_PATH=${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
PATH=/usr/bin:/usr/sbin :${ORACLE_HOME}/bin:/usr/ccs/bin :$PATH :. ; export PATH

#ORACLE_TERM=xsun5 ; export ORACLE_TERM

# Definition de l instance par defaut : test
ORACLE_SID=test ; export ORACLE_SID

# Verification des valeurs pour l’utilisateur oracle
echo « ORACLE_SID= »$ORACLE_SID
echo « ORACLE_HOME= »$ORACLE_HOME



Etape 6 : Programmation des nouvelles limites pour les IPC
La principale modification porte sur la programmation des IPC (Inter-Process Communication). Ils servent de base de travail pour la SGA et les processus Oracle.
Ces mécanismes sont au nombre de trois : les sémaphores, la file d’attente de messages et la mémoire partagée. Par principe, ils sont sous-dimensionnés sur les noyaux Unix et il est donc impératif de changer leur taille avant de valider la Base.
Pour cela il faut modifier le fichier /etc/system et rebooter la machine après cette modification.
Les paramètres à modifier sont :
· SEMMNI : nombre de familles de sémaphores dans le système
· SEMMNS : nombre total de sémaphores sur le système
· SEMMSL : nombre de sémaphores par famille
· SHMMAX : taille maximum d’un segment de mémoire
· SHMMIN : taille minimum d’un segment de mémoire
· SHMMNI : nombre d’identificateurs de zone partagées

Le contenu de /etc/system peut se présenter comme suit :
forceload : misc/ipc
forceload : sys/shmsys
forceload : sys/semsys
set shmsys:shminfo_shmmax=83886080 (ou 33554432)
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmns=200
set semsys:seminfo_semmni=70

Le redémarrage du système se fait par la commande init 6.
La vérification de la prise en compte des modifications apporte se fait par la commande sysdef –i.
L’administrateur peut vérifier le chargement des modules avec la commande modinfo. L’administrateur dispose des commandes ipcs (ipc status) et ipcrm (remove des ipc) pour surveiller l’activité de ces ressources internes ou pour les libérer suite à un crash de la machine.
Pour libérer une ressource, il suffit d’utiliser la commande ipcrm.


Etape 7 : Procéder à l’installation proprement dite
Il s’agit de :
- se connecter sous le compte oracle
- monter le premier cdrom d’installation,
- aller dans le répertoire contenant l’exécutable runInstaller,
- lancer ce dernier
- enfin se laisser guider.
$ mount –F hsfs –o ro /dev/dsk/c0t6d0s2 /cdrom0
$ cd /cdrom0
$ ./runInstaller
Si le message suivant se présente dès le lancement de runInstaller « Xlib : connection to « ultra10 :0.0 refused by server », il faut taper la commande ci-après :
# xhost ultra10
Pour finir, voici une liste non-exhaustive d’exécutables utiles lors de l’exploitation d’oracle sous Solaris et que nous vous invitons à découvrir en les lançant (ils sont tous dans le répertoire $ORACLE_HOME/bin) :
- dbca (database configuration assitant)
- dbua
- dbv (database verify)
- oemapp (Oracle enterprise manager application)
- emca (Enterprise manager configuration assistant)
- esm
- ela