12.10.2008

Changer l'éditeur par défaut de Sql*plus

Lorsque vous utilisez sql*plus comme client, vous ne pouvez pas éditer votre code directement. Vous devez faire la commande "edit" ou "ed" et cette dernière ouvrira notepad (bloc-note) par défaut. Ainsi, vous pourrez modifier votre commande en toute aisance et sauvegarder cette dernière dans le buffer. À votre retour dans sql*plus, vous avez simplement à taper "/" pour exécuter la commande qui se trouve dans le buffer.

Si vous voulez changer votre editeur par défaut, vous devez ajouter le chemin du dossier (path) à la variable d'environnement "path". Lancer sql*plus et entrer la commande define_editor='notepad++'notepad++ est l'éditeur désiré. Et si vous voulez que ce changement soit permanent, modifier le fichier glogin.sql qui se trouve dans le dossier "ora10g\sqlplus\admin" de votre client.

En espérant que ce petit changement saura vous faciliter la vie (ou la rendre plus agréable).

Un nouvel outil de modélisation de données


SQL developer Data Modeling (gratuit) est un logiciel d'Oracle en version beta ayant pour but d'être un successeur à Oracle Designer qui lui est discontinué. Avec cet outil, vous pouvez faire vos modèles conceptuels, vos diagramme entité-relation, votre génération de scripts de création d'objets ainsi que la possibilité de faire du reverse engineering.

Cet outil a un bel avenir et devrait évoluer encore pour permettre entre autre d'importer les projets venant de Designer. Pour le moment, il est en version standalone mais il sera fournit sous forme d'extensino à Sql Developer (gratuit également) prochainement. Il est multiplateforme et supporte les bd Oracle de 9.2.0.1 jusqu'aux plus récentes.

Voici la release note

Sites web inutiles

Connaissez-vous des sites web inutiles? Par cela, j'entends les sites dont on se demande pourquoi les propriétaires payent pour héberger ces pages qui ne leur apportent aucun revenu. Le contenu est si simpliste qu'un simple coup d'oeil nous montre tout ce qu'il y avait à voir. Toutefois, j'ai un sourire à chaque fois que je découvre un de ces sites.

Ces sites ont sensiblement la même interface. Un désign sans image, en noir et blanc et seul quelques mots dans la page. Pourtant, tout le monde en a déjà entendu parler.

Je vous montre des exemples et vous allez comprendre.

Où suis-je?
http://perdu.com

Est-ce mardi aujourd'hui?
http://isittuesday.com/

Est-ce noël?
http://isitchristmas.com

Est-ce que Stephen Harper est encore premier ministre?
http://isharperprimeminister.ca/

En connaissez-vous d'autres?

11.25.2008

Foxit Reader maintenant comme plugin dans Firefox!

Plus besoin d'utiliser Acrobat reader dans firefox pour lire vos pdfs. Désormais, Foxit Reader supporte les pdfs dans Firefox par l'entremise d'un plugin. Je l'ai essayé et ça fonctionne bien. De plus, il a l'air moins lourd que celui d'Acrobat.

Vous pouvez télécharger foxit reader en version 3.0 gratuite

11.20.2008

Faites un don à Wikipedia!

Faites comme moi et donner généreusement à Wikipedia. Wikipedia est un organisme à but non lucratif. Ils sont présentement en pleine campagne de financement. L'objectif est de 6 millions $ et déjà près de 3 millions $ ont été amassé. On peut donner le montant que l'on veut. Ils acceptent Pay Pal, un chèque, carte de crédit...

Wikipedia Affiliate Button

Je ne suis pas un grand acheteur de livre de référence mais j'utilise beaucoup cette merveilleuse encyclopédie où le savoir est gratuit et chacun peut venir à contribution pour l'améliorer. Donc, un petit don peut faire une énorme différence.

11.07.2008

À quand le gouvernement vers linux...

Durant cette période électorale québécoise, j'en profite pour lancer une idée. Dans de nombreux pays, les gouvernements ont déjà remplacé les machines Windows avec MS Office par des machines linux avec Open Office. Quand le gouvernement québécois intégra-t-il Linux et Open Office dans son organisation? Cette migration se traduirait par des économies d'argent pour les contribuables. Cela pourrait être un enjeux électoral pour la présente campagne si les partis veulent bien aborder le sujet. Certes, il faudrait investir dans la formation mais cela est minime par rapport au gain à long terme.

Dernièrement, l'Allemagne embarque officiellement: http://techno.branchez-vous.com/actualite/2008/11/linux_lallemagne_migre.html

10.22.2008

L'évolution des centres de données de Google

Saviez-vous que chaque recherche sur Google est traitée par 700 à 1000 serveurs en moyenne et s'exécute en moins de 0.25 secondes? Effectivement, la demande est traitée dans différents centres de données (datacenter) dans le monde. Google utilise principalement 3 technologies créées par la compagnie elle-même: GFS (Google File System), BigTable (entité de stockage des données) et MapReduce (algorithme de calcul effectué en parallèle sur des ensembles gigantesques de données). De plus, lors du MapReduce, si un ou plusieurs serveurs tombent dû à un bris de matériel, le "maître" transmettra le travail à un autre serveur qui prendre la relève.


Plus de détail sur le site de James Hamilton, un architecte de la plateforme Microsoft Windows Live.

http://news.cnet.com/8301-10784_3-9955184-7.html?tag=blog.1
http://labs.google.com/papers/mapreduce-osdi04-slides/index.html

Open Office 3 est disponible!


Une semaine après sa sortie, déjà 3 millions de téléchargement ont eu lieu. Pour ceux qui ne le savent pas, Open Office est une alternative open source gratuite à MS Office. Avec un gestionnaire d'extension à la firefox, OpenOffice 3 est capable de combattre PowerPoint, Excel, Access et Word.

Je vous reviendrai un peu plus tard pour vous parler de merveilleuses extensions dont PdfImport, Sun Presenter Console et Data Form.

9.03.2008

Remplacer une suite de nombre avec des expressions régulières et UltraEdit

J'ai passé trop de temps aujourd'hui à vouloir remplacer une suite de nombre dans un fichier contenant des centaines de lignes de la forme

insert into SBU.SBU_UNIT_ADM (UNIT_ADM, NM, NM_ABRG, DT_EFFE, DT_FIN_EFFE, UNIT_ADM_PARN)
values (0000002, 'Direction générale', 'DG', TO_DATE('2008-07-01','YYYY-MM-DD'), TO_DATE('2099-12-31','YYYY-MM-DD'), 0000001);


pour la forme avec apostrophes

insert into SBU.SBU_UNIT_ADM (UNIT_ADM, NM, NM_ABRG, DT_EFFE, DT_FIN_EFFE, UNIT_ADM_PARN)
values ('0000002', 'Direction générale auxiliaire', 'DGA', TO_DATE('2008-07-01','YYYY-MM-DD'), TO_DATE('2099-12-31','YYYY-MM-DD'), '0000001');

Avec UltraEdit, on peut utiliser les expressions régulières pour rechercher et remplacer des expressions.

Voici la solution à mon problème:
  • rechercher : "values (^([0-9]+^)"
  • remplacer : "values ('^1'"
* Les guillemets entoure la chaine recherché pour notre exemple.

Un autre exemple pour formater et faire du code html.

7.10.2008

Lire des très gros fichiers (>1 Go)

Il vous est peut-être déjà arriver de vouloir lire des très gros fichiers (logs, fichiers plats, csv) avec un éditeur de texte tel que notepad, UltraEdit ou un autre. Toutefois, notepad ne gère pas les gros fichiers. UltraEdit le gère mais c'est très long charger un fichier de 1 Go et plus.

Cette semaine, ayant comme devoir de charger un fichier plat dans une base de données, j'ai voulu l'ouvrir pour l'examiner. Malheur! Aucun éditeur ne le supportait ou presque (UltraEdit réussissait après quelques minutes). J'ai donc googler "large text file read" et j'ai trouvé Large Text File Viewer. C'est un freeware et ça fait le travail comme on dit. Il charge un fichier de 1.5 Go en 2-3 secondes (il doit remplir un petit buffer). L'outil affiche le texte, possède des fonctionnalités de recherche, affiche les positions du curseur (ligne:colonne), etc. Toutefois, pour les flasheux, il n'est pas une très belle interface.

Ce n'est pas le genre d'outil qui peut remplacer un UltraEdit (payant) ou encore un Notepad++ (gratuit et libre) mais à l'occasion c'est utile. Il fait seulement ~500 ko et est portable sur une clé USB.

6.18.2008

Sortie de Firefox 3


Comme vous le savez sans doute, c'est hier le 17 juin à 13h (heure de l'est) que le célèbre navigateur web devenait disponible en téléchargement. Je vous invite à lire cet article de Marie-Ève Morasse de Cyberpresse.

Sommairement, on apprend que le nombre de téléchargement a déjà franchis le cap du 8 millions en 24 heures.

Voir le compteur de mozilla Firefox 3

6.11.2008

Goosh ou le shell non-officiel de Google

Développé en Ajax par Stefan Grothkopp, Goosh est un mini shell à la Linux vous permet de rapidement faire vos recherches. Taper help pour avoir la liste des commandes. Simplement le fait de pouvoir utiliser les flèches haut et bas pour revoir ses dernières commandes est génial!

Un exemple: tapez trans pour tomber en mode traduction. Ensuite, tapez en fr welcome pour traduire le mot welcome en français. Merci à Slashdot de m'avoir fait découvrir ce bijou.

5.29.2008

Effacer ses fichiers en double sur son disque

Êtes-vous du genre à enregistrer plein de fichiers sur votre ordinateur et à ne pas vous soucier s'ils sont déjà là sur le disque sous un autre nom (ou un autre répertoire)? C'est mon cas et j'ai voulu "scanner" mon PC avec un outil qui comparer non pas seulement les noms des fichiers (ce qui serait stupide) mais leur contenu octet par octet.

J'ai googlé "duplicate file" et j'ai trouvé un freeware nommé Easy Duplicate Finder. Graphiquement, il est très jolie et il possède des fonctions avancées de recherche. On peut écarter les fichiers de taille 0, protéger les dossiers systèmes et les autres fichiers systèmes. On peut spécifier une taille minimale des fichiers à trouver (exemple 100 ko) ainsi qu'une taille maximale. On peut faire des masques (exemple *.mp3) pour trouver notre musique seulement.

Lors de la suppression des fichiers sélectionnés, il est possible d'effacer définitivement (comme le Shitf+Del) ou encore de les envoyer à la corbeille.















Voir les screenshots du logiciel Easy Duplicate Finder

5.28.2008

TNS_ADMIN et tnsnames.ora

Pour vous connecter à une bd oracle via un alias tns, vous devez pointer vers un fichier tnsnames.ora local ou distant (réseau). La deuxième approche est préférable puisqu'elle centralise vos connexions. Mais d'abord, qu'est-ce qu'un fichier tnsnames.ora? Il s'agit d'un fichier de configuration de type Sql*Net qui définit les adresses des bases de données afin que vous puissiez vous connecter.

Voici le format d'adresse que vous allez rencontrer dans ce fichier:
 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = )(Port = ))
)
(CONNECT_DATA =
(SERVICE_NAME = )
)
)
Et un exemple concret:
UNI1.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = uni1)
)
)
Sur un poste client, vous allez retrouver tnsnames.ora dans le dossier $ORACLE_HOME/network/admin/tnsnames.ora

Pour pointer vers un TNS centralisé (réseau), vous devez soit ajouter une variable d'environnement TNS_ADMIN ou une clé TNS_ADMIN dans le registre HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{ORACLE_HOME} et lui donner la valeur de l'emplacement du répertoire contenant le tnsnames.ora réseau.

Enfin, il existe également le mode EZConnect qui vous permet de vous connecter directement à la bd sous la forme username/password@[//]host[:port][/service_name].

5.26.2008

Glogin pour SQL*Plus

Vous aimeriez savoir dans quel instance oracle et sous quel usager vous êtes connecté? C'est possible et ce rapidement avec un script de démarrage glogin pour sql plus. Ce fichier est situé dans le répertoire /admin de votre client sql plus. Évidemment, vous pouvez aussi faire ces 2 commandes:
  • select * from v$instance; (savoir le nom de votre instance)
  • sho user (savoir le nom d'usager)
Essentiellement, dans le fichier glogin, vous pouvez paramétrer l'affichage des résultats dans sql plus. Par exemple:
  • set linesize 200
  • set define off
Une fois connecté, vous pouvez aussi envoyer des commandes sql et afficher dans votre prompt (le fameux sql> ) votre identifiant et votre instance courante (identifiant:instance> ).

Voici le bout de code à ajouté à la fin de votre fichier glogin:
-- Section to build a new prompt like USERNAME:INSTANCE>
SET TERMOUT OFF
COLUMN setprompt NEW_VALUE setprompt

-- With HOSTNAME (Need "select any dictionary" grant to the user otherwise: no prompt at all)
-- SELECT '(' || HOST_NAME || ') ' || USER || ':' || SUBSTR(SUBSTR(global_name, 1, 30), 1, DECODE(INSTR(SUBSTR(global_name, 1, 30), '.') - 1, -1, 30, INSTR(SUBSTR(global_name, 1, 30), '.') - 1) ) || '> ' setprompt FROM global_name, v$instance;
-- Without HOSTNAME SELECT USER || ':' || SUBSTR(SUBSTR(global_name, 1, 30), 1, DECODE(INSTR(SUBSTR(global_name, 1, 30), '.') - 1, -1, 30, INSTR(SUBSTR(global_name, 1, 30), '.') - 1) ) || '> ' setprompt FROM global_name;

SET SQLPROMPT "&setprompt"
SET TERMOUT ON


Nouveauté avec Oracle 10g:

Tout simplement ajoutez ces 2 lignes à la fin du fichier
set time on
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER _PRIVILEGE> "

et vous aurez un prompt similaire à ceci:
20:13:44 SYSTEM@orcl>



3.25.2008

Sécuriser les listeners sur les bds Oracle 8i,9i et 10g

Est-ce que vous savez qu'on peut arrêter le listener d'une bd oracle à partir d'un client Listener Control Utility (lsnrctl.exe) à distance? On peut le faire lorsque le listener n'est pas protégé par un mot de passe. Cela est d'autant plus critique en 8i et 9i puisqu'en 10g, il y a une authentification OS sur le serveur qui permet seulement l'exécution locale du programme. Le listener est un programme qui permet à la BD d'écouter sur certains ports pour savoir quelles commandes exécuter.

Ce document de 27 pages sur la sécurité des listeners pour Oracle vous montre l'ampleur des dégâts possibles lorsqu'on sait exploiter la brèche.

Voici comment mettre un mot de passe en 9i:

$ lsnrctl
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
LSNRCTL> set password
Password:
LSNRCTL> save_config

* lsnrctl est un programme qu'on lance dans l'invite de commandes (cmd)

et pour 10g:

$ lsnrctl
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
LSNRCTL> save_config


La seule différence entre 9 et 10 est qu'il faut s'authentifier avec le mot de passe choisi avant de sauvegarder la configuration. De plus, il existe un outil gratuit pouvant tester la sécurité de vos listeners Oracle.

Références:

3.24.2008

Redimensionner/resizer un tablespace temporaire pour oracle

Cette semaine, dans le cadre d'une opération de maintenance d'une BD de production, j'ai dû redimensionner le tablespace temporaire par défaut (default temporary tablespace). Il avait un datafile de 15go alors qu'un petit datafile de 1go auto fait très bien l'affaire. Ce tablespace s'est sans doute agrandi dû à une requête SQL mal construite retournant un flot de données énorme devant être trié.

Toutefois, comme ce tablespace est utilisé par tous les utilisateurs de la BD et qu'il est celui par défaut pour les opérations temporaires (telles un tri), j'ai procédé de la façon suivante:
- J'ai créé un 2e tablespace temporaire (TEMP2);
- J'ai assigné ce tablespace comme tablespace temporaire par défaut;
- J'ai attribué TEMP2 aux utilisateurs;
- J'ai effacé le tablespace TEMP et son datafile de 15go;
- J'ai recréé TEMP avec une taille de 100 mo auto extensible;
- J'ai attribué TEMP aux utilisateurs;
- J'ai effacé TEMP2

Voici ce que cela donne en script SQL. Il est à noté que j'ai roulé ce script hors des heures de production pour éviter les problèmes.


create temporary tablespace TEMP2
tempfile 'YOURPATH\TEMP02.dbf'
size 100M
autoextend on
next 100M maxsize 4096M
extent management local UNIFORM SIZE 5M;


ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2;

-- On donne aux utilisateurs le tablespace temporaire TEMP2
set heading off
spool c:\travail\alter_user_temp.sql
select 'alter user ' || username || ' TEMPORARY TABLESPACE TEMP2;' from all_users order by username;
spool off
@c:\travail\alter_user_temp.sql

DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;


CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'YOURPATH\TEMP01.dbf' SIZE 100M REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE 8192M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;


ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

-- On redonne aux utilisateurs le tablespace temporaire TEMP
spool c:\travail\alter_user_temp.sql
select 'alter user ' || username || ' TEMPORARY TABLESPACE TEMP;' from all_users order by username;
spool off
@c:\travail\alter_user_temp.sql


DROP TABLESPACE TEMP2 INCLUDING CONTENTS AND DATAFILES;

2.28.2008

Les 25 commandements du SQL

La semaine dernière j'ai trouvé en fouillant dans les archives de digg.com un article portant sur les 25 commandements du SQL pour tout les développeurs ou DBAs qui ont à jouer avec ce langage à tous les jours. L'article date quelque peu (1997) mais demeure à jour dans la plupart des cas.

On y parle principalement de la façon d'utiliser un index versus un full scan d'une table; comprendre l'optimiseur de requêtes du SGBD (à savoir basé sur les règles ou sur les coûts); écrire des requêtes simples et efficaces au lieu d'utiliser des requêtes complexes (avec des tonnes de OR par exemple). Un article à conserver et à garder près de soi.

2.26.2008

Keypass gère et chiffre vos mots de passe

Pour poursuivre ma lancé sur les logiciels de chiffrement open source, KeyPass est un gestionnaire de mot de passe (un peu à la manière du gestionnaire de Firefox). Il enregistre vos mots de passe dans une base de données encryptés avec AES et Twofish et le tout est accessible à l'aide d'un mot de passe principal. On voit alors l'utilité d'avoir un mot de passe principal très sécuritaire. Voyez la liste des fonctionnalités de KeyPass et quelques impressions d'écrans.



Encore une fois, il existe une version portable pour aller sur une clé USB (pouquoi pas le faire cohabiter avec TrueCrypt?!)). Cette application est tout à fait gratuite mais n'est disponible que sur la plateforme Windows pour le moment.

Et si vous êtes un peu parano, vous pouvez mettre votre base de données de keypass dans votre fichier/disque encrypter avec TrueCrypt (double protection contre les fuites).

Encryption de ses données personnelles/confidentielles avec TrueCrypt

Vous voulez protéger vos données d'une façon simple et efficace? Vous savez qu'on peut cacher des dossiers et des fichiers dans windows mais vous savez aussi qu'il est facile pour un habitué de les afficher. Il existe des solutions d'encryptage payantes. Le problème avec ces dernières, c'est lorsque votre période d'essai est terminée, vous risquer de perdre le contrôle sur vos données.

Ainsi, une solution de chiffrement efficace, open source et gratuite s'est révélée à moi. Il s'agit de TrueCrypt. TrueCrypt encrypte vos données en temps réel (on-the-fly). On peut permettre l'accès aux données en lecture seule ou complet. Le tout est protégé par un mot de passe qui permet de "monter" et de "démonter" le fichier ou le disque/clé. Car avec TrueCrypt, on peut décider d'encrypter un fichier d'une taille X ou une clé USB au complet. Une fois le support monté, TrueCrypt lui assigne une lettre d'un lecteur logique dans notre poste de travail. Après ça, on peut joueur avec notre lecteur logique tout comme s'il s'agissait d'un disque normal. TrueCrypt encrypte et décrypte à la volé avec AES par défaut.



TrueCrypt est disponible pour Windows, Mac et Linux. Un tutoriel très complet est disponible sur le site. De plus, il existe une version portable de l'application ce qui permet de l'exécuter sur une clé USB de façon autonome. C'est d'ailleurs ce que je fais avec mon fichier de données chiffrés sur une autre clé USB.

Bon chiffrement!

Mes items partagés de Google Reader