Configurer SSH entre deux machines

la communication entre les machines se fait naturellement sur un réseau qui sert de canal de communication en utilisant un protocole, la sécurité de cette communication est affectée par la sécurité de ce protocole, passer les anciens protocoles comme Telnet, rlogin et rsh le plus utilisé en ce moment est ssh, certes ca ne garantie pas une sécurité totale de la communication des failles spécifiques à ce protocole existe; mais il reste le plus sécurisé, ce que je présente ici c'est la configuration de ssh entre deux machines linux, les étapes ci-dessous sont à exécuter dans les deux machines (host1 et host2).
1) en premier lieu en va vérifier si ssh est installé généralement il est les packages ssh sont installés par défaut:
$rpm -qa | grep -i ssh

2)maintenant il faut vérifier si le démon ssh (sshd) est démarré :
$service sshd status

S’il n'est pas démarré il faut le lancer avec :
$service sshd start

Configurer aussi le démarrage automatique de sshd avec :
$chkconfig --level 2345 sshd on

3) maintenant on crée un répertoire /home/root/.ssh :
$mkdir /home/root/.sshd

4) on génère les clés de cryptage RSA et DSA :
$/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/root/.ssh/id_rsa):<-- accepte="" chemin="" cl="" d="" faut="" la="" le="" on="" ou="" par="" sera="" span="" stock="" style="color: #cc6600; font-family: verdana; font-style: italic;">Enter passphrase (empty for no passphrase): <-- celui="" de="" diff="" entre="" mot="" on="" passe="" rent="" root="" span="" style="color: #cc6600; font-family: verdana; font-style: italic;" un="">Enter same passphrase again:
Your identification has been saved in /home/root/.ssh/id_rsa.
Your public key has been saved in /home/root/.ssh/id_rsa.pub.
The key fingerprint is:
5c:d9:d8:c5:3d:8d:0b:10:33:42:9c:83:45:a1:d0:61 root@host1.com


$/usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/root/.ssh/id_dsa.
Your public key has been saved in /home/root/.ssh/id_dsa.pub.
The key fingerprint is:
5c:d9:d8:c5:3d:8d:0b:10:33:42:9c:83:45:a1:d0:61 root@host1.com


Si vous lister /home/root/ssh vous aurez quatre fichiers de deux types:
id_dsa et id_rsa : contiennent les clés privées DSA et RSA, il ne faut jamais les distribuer.
id_dsa.pub et id_rsa.pub : contiennent les clés publics DSA et RSA.

5) on copie les clés publics dans un fichier qu'on appel authorized_keys :
$cd /home/root/.ssh
$cat /home/root/.ssh/id_rsa.pub >>/home/root/.ssh/authorized_keys
$cat /home/root/.ssh/id_dsa.pub >>/home/root/.ssh/authorized_keys

7) pour l'échange des clés on copie de host1 vers host2 avec :
$scp authorized_keys host2 /home/root/.ssh/authorized_keys_host1
Enter passphrase for key '/home/root/.ssh/id_dsa':<-- cl="" de="" des="" entrer="" et="" g="" host2="" le="" mot="" n="" passe="" ration="" root="" s="" span="">

Dans host2 maintenant vers host1 :
$cat /home/root/.ssh/authorized_keys_host1 >> /home/root/.ssh/authorized_keys
$scp /home/root/.ssh/authorized_keys host1:/home/root/.ssh/authorized_keys

Maintenant le fichier /home/root/.ssh/authorized_keys est le même, jusqu'ici si vous faites à partir de host1:
$ssh host2 uname -a

Vous devez entrer le mot de passe entrer lors de la génération des clés, pour éviter d'entrer ce mot de passe chaque fois;pour cela il suffit de taper dans chaque machine :
$exec /usr/bin/ssh-agent $SHELL
$/usr/bin/ssh-add


EMCA : Creation de l'OEM repository

À partir de la version 10g la base de données Oracle s'est dirigé vers le WEB pour fournir une nouvelle version d'Entreprise Manager à la place de celui de la 9i basé sur java; ainsi que des variantes selon l'utilisation Dbcontrol pour une seule Bd ou grid control pour centraliser la gestion de plusieurs cibles.
La plupart du temps l'installation d'entreprise manager se fait lors de la création de la base (si vous n'opter pas pour le gride control), mais vous pouvez toujours laisser l'installation d'entreprise manager après la création de la base.
Pour l'installer il y de méthodes soit l'outil graphique DBCA, soit un programme en ligne de commande EMCA (pour Entreprise Manager Configuration Assistant) c'est celui dont nous allons parler.
Sans parler de tous les arguments d’EMCA sacher que la syntaxe générale est :
Emca operation mode flag parameters
Et si vous pouvez voire la liste complète en tapant :
>emca -h
Alors pour créer votre console d'administration rien de plus simple après la création de la base tapez :
$ emca -config dbcontrol db -repos create

STARTED EMCA at jun 06, 2010 9:21:39 PM
EM Configuration Assistant, Version 10.2.0.1.0 Production
Copyright (c) 2003, 2005, Oracle. All rights reserved.

Enter the following information:
Database SID: db10
Listener port number: 1521
Password for SYS user: change_on_install
Password for DBSNMP user: manager
Password for SYSMAN user: manager
Email address for notifications (optional):
Outgoing Mail (SMTP) server for notifications (optional):
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1

Database hostname ................ dbserver
Listener port number ................ 1521
Database SID ................ db10
Email address for notifications ...............
Outgoing Mail (SMTP) server for notifications ...............

-----------------------------------------------------------------
Do you wish to continue? [yes(Y)/no(N)]: Y
jun 06, 2010 10:00:12 PM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/db10/emca_2010-01-06_09-21-39-PM.log.
jun 06, 2010 10:00:15 PM oracle.sysman.emcp.EMReposConfig createRepository
INFO: Creating the EM repository (this may take a while) ...
jun 06, 2010 10:05:51 PM oracle.sysman.emcp.EMReposConfig invoke
INFO: Repository successfully created
jun 06, 2010 10:06:01 PM oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Starting Database Control (this may take a while) ...
jun 06, 2010 10:07:49 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control started successfully
jun 06, 2010 10:07:49 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> The Database Control URL is http://dbserver:1158/em <<<<<<<<<<<
Enterprise Manager configuration completed successfully
FINISHED EMCA at jun 06, 2010 10:07:49 PM


Vous devez fournir quelques informations comme le SID le port listner.., cela prends quelques minutes et vous pouvez suivre les étapes de création, une fois le programme terminé noter l'adresse à la fin (sous forme de http(s)://nommachine:port/em) est lancer la avec votre navigateur
Pour le recréer il suffit de changer create avec recreate dans la commande précédente mais si vous êtes amené à désinstaller entreprise manager la commande suivante suffira :
$ emca -deconfig dbcontrol db -repos drop

STARTED EMCA at jun 06, 2006 9:53:55 PM
EM Configuration Assistant, Version 10.2.0.1.0 Production
Copyright (c) 2003, 2005, Oracle. All rights reserved.

Enter the following information:
Database SID: db10
Listener port number: 1521
Password for SYS user: change_on_install
Password for SYSMAN user: manager

Do you wish to continue? [yes(Y)/no(N)]: Y
jun 06, 2006 9:54:15 PM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/db10/emca_2006-01-06_09-53-55-PM.log.
jun 06, 2006 9:54:16 PM oracle.sysman.emcp.util.DBControlUtil stopOMS
INFO: Stopping Database Control (this may take a while) ...
jun 06, 2006 9:54:35 PM oracle.sysman.emcp.EMReposConfig dropRepository
INFO: Dropping the EM repository (this may take a while) ...
jun 06, 2006 9:56:48 PM oracle.sysman.emcp.EMReposConfig invoke
INFO: Repository successfully dropped
Enterprise Manager configuration completed successfully
FINISHED EMCA at jun 06, 2006 9:56:48 PM

Il y une autre commande utile pour vérifier le statut d'entreprise manager c'est :
>emctl status dbconsole --qui fournit le statut de la console web.

Et :
>emctl status agent --pour le status de l'agent d'entreprise manager

Vous pouvez arrêter la console avec :
>emctl stop dbconsole

Ou la démarrer avec :
>emctl start dbconsole

SQL : Fonctions LAG et LEAD

Les fonctions LAG et LEAD sont deux fonctions analytiques qui permettent d'accéder à une ligne avant ou après la ligne courante, la syntaxe de ces fonctions est simple :
LAG|lead(colonne, nombre de ligne avant|après la ligne courante, valeur par default pour la première|dérniere ligne).

La valeur par défaut n'est pas obligatoire si vous l'omettez Oracle renvoie NULL à la place, un petit exemple :
SQL> select empno,sal,deptno,sal-lag(sal,1)
2 over (order by empno) as trou
3 from emp order by empno;

EMPNO SAL DEPTNO TROU
7369 800 20
7499 1600 30 800
7521 1250 30 -350
7566 2975 20 1725
7654 1250 30 -1725
7698 2850 30 1600
7782 2450 10 -400
7788 3000 20 550
7839 5000 10 2000
7844 1500 30 -3500
7876 1100 20 -400
7900 950 30 -150
7902 3000 20 2050
7934 1300 10 -1700

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

L’exemple précédent calcul la différence de salaire entre un employé et celui qui le précède directement dans empno, le suivant calcule l'inverse :

SQL> select empno,sal,deptno,sal-lead(sal,1)
2 over (order by empno) as trou
3 from emp order by empno;

EMPNO SAL DEPTNO TROU
7369 800 20 -800
7499 1600 30 350
7521 1250 30 -1725
7566 2975 20 1725
7654 1250 30 -1600
7698 2850 30 400
7782 2450 10 -550
7788 3000 20 -2000
7839 5000 10 3500
7844 1500 30 400
7876 1100 20 150
7900 950 30 -2050
7902 3000 20 1700
7934 1300 10

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

voire le post fonctions analytiques

L'utilitaire Oerr

Oerr est un utilitaire pratique qui permet de donner la cause des erreurs oracle et les solutions possibles, l'utilisation est facile :
>oerr module_erreur num_erreur

exemples des erreurs ORA:

oracle@host:~> oerr ORA 257
00257, 00000, "archiver error. Connect internal only, until freed."
// *Cause: The archiver process received an error while trying to archive
// a redo log. If the problem is not resolved soon, the database
// will stop executing transactions. The most likely cause of this
// message is the destination device is out of space to store the
// redo log file.
// *Action: Check archiver trace file for a detailed description
// of the problem. Also verify that the
// device specified in the initialization parameter
// ARCHIVE_LOG_DEST is set up properly for archiving.


des erreurs du listner :
oracle@host:~> oerr TNS 201
00201, 00000, "Unable to read answer connection data :%s:\n"
// *Cause: Improperly formed connect data sent to the Interchange listener.
// *Action: If problem persists, check the application using the
// Interchange (it may be closing down or crashing). Call Oracle Customer
// Support if the problem cannot be located.

Hints PARALLEL et APPEND

Pour charger des données d'une table à une autre on utilise généralement :
Insert into table1
select * from table2;

Mais cette forme de chargement peut prendre du temps si les données à chargé sont trop volumineux, pour accélérer le chargement on utilise deux choses :
1) le hint APPEND qui permet d'insérer les données au delà du High-water mark ce qui évite de chercher des blocs de données libérés après utilisation :
Insert /*+ APPEND */ into grande_table1
NOLOGGING
select * from grande_table2;

La clause NOLOGGING permet d'éviter de générer des données de journalisation en masse lors du chargement.

2) le hint PARALLEL qui permet d'activer le chargement en parallèle, le parallélisme peut être activé lors de l'insertion ou l'affecter comme attribut à la table :
Insert /*+ PARALLEL (grande_table2,5)*/ into grande_table1
NOLOGGING
select * from grande_table2;

Ou :
ALTER TABLE grande_table2 (DGREE 5);

Oracle : les fonctions analytiques

Les fonctions analytiques disponible dans ORACLE depuis 8.1 pour répondre à certains problèmes qu'il est difficile d'aborder avec SQL, comme les requêtes pour trouver les n premiers enregistrements dans un group; ou faire un calcul par rapport à la nième ligne, leurs utilisation est plus facile et plus performante que de faire des petites fonctions en PL/SQL, la syntaxe générale :
>fonction_analytique(argument) OVER ()

La clause partition :
Comme son nom l'indique permet de partitionner (pas au sens des tables partitionnées) un résultat en un ensemble de groups selon une valeur.

Exemple:
SQL> select ename,sal,deptno,avg(sal)
over(partition by deptno) from emp ;
ENAME SAL DEPTNO AVG(SAL)OVER(PARTITIONBYDEPTNO)
CLARK 2450 10 2916,66667
KING 5000 10 2916,66667
MILLER 1300 10 2916,66667
SMITH 800 20 2175
ADAMS 1100 20 2175
FORD 3000 20 2175
SCOTT 3000 20 2175
JONES 2975 20 2175
ALLEN 1600 30 1566,66667
BLAKE 2850 30 1566,66667
MARTIN 1250 30 1566,66667
JAMES 950 30 1566,66667
TURNER 1500 30 1566,66667
WARD 1250 30 1566,66667


14 ligne(s) sélectionné(s).
SQL>

La clause d'ordre :
Cette clause sert pour spécifier l'ordre dans lequel le groupe sera traité, attention ici l'ordre by à un comportement spécial il ajoute une fenêtre par défaut qui définit par la ligne en cours est tous les lignes précédentes dans le groupe.
Exemple:
SQL> select ename,sal,deptno,avg(sal)
over(partition by deptno order by ename) as avg_an from emp ;

ENAME SAL DEPTNO AVG_AN
CLARK 2450 10 2450
KING 5000 10 3725
MILLER 1300 10 2916,66667
ADAMS 1100 20 1100
FORD 3000 20 2050
JONES 2975 20 2358,33333
SCOTT 3000 20 2518,75
SMITH 800 20 2175
ALLEN 1600 30 1600
BLAKE 2850 30 2225
JAMES 950 30 1800
MARTIN 1250 30 1662,5
TURNER 1500 30 1630
WARD 1250 30 1566,66667

14 ligne(s) sélectionné(s).

Ici comme vous le constater le résultat est partitionné par deptno est le tri par ENAME dans chaque département, mais la moyenne du salaire est calculé par rapport aux lignes précédentes en même département, mais si vous ne spécifiez pas PARTITION BY alors le groupe pris est toute la table.

SQL> select ename,sal,deptno,avg(sal) over(order by ename) as avg_an from emp ;

ENAME SAL DEPTNO AVG_AN
ADAMS 1100 20 1100
ALLEN 1600 30 1350
BLAKE 2850 30 1850
CLARK 2450 10 2000
FORD 3000 20 2200
JAMES 950 30 1991,66667
JONES 2975 20 2132,14286
KING 5000 10 2490,625
MARTIN 1250 30 2352,77778
MILLER 1300 10 2247,5
SCOTT 3000 20 2315,90909
SMITH 800 20 2189,58333
TURNER 1500 30 2136,53846
WARD 1250 30 2073,21429

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

La clause de fenêtrage :
La clause de fenêtrage sert à définir une fenêtre dans le même groupe à lequel sera appliquée la fonction, exemple:

SQL> select ename,sal,deptno,avg(sal)
2 over(partition by deptno order by ename rows 2 preceding) as avg_an
3 from emp ;

ENAME SAL DEPTNO AVG_AN
CLARK 2450 10 2450
KING 5000 10 3725
MILLER 1300 10 2916,66667
ADAMS 1100 20 1100
FORD 3000 20 2050
JONES 2975 20 2358,33333
SCOTT 3000 20 2991,66667
SMITH 800 20 2258,33333
ALLEN 1600 30 1600
BLAKE 2850 30 2225
JAMES 950 30 1800
MARTIN 1250 30 1683,33333
TURNER 1500 30 1233,33333
WARD 1250 30 1333,33333

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

Ici la fenêtre est de 3 lignes et la moyenne est calculée à partir de la ligne courante et les deux lignes précédente (ex: scott (3000+2975+3000)/3 = 2991,6667), il y a autres spécificateurs de fenetrage pour la list complète consulter la reference SQL.

Si vous omettez toutes les clauses alors la pas de notion d'ordre mais la fenêtre est la partition ne font qu'un toute la table :

SQL> select ename,sal,deptno,avg(sal) over() as avg_an from emp;

ENAME SAL DEPTNO AVG_AN
SMITH 800 20 2073,21429
ALLEN 1600 30 2073,21429
WARD 1250 30 2073,21429
JONES 2975 20 2073,21429
MARTIN 1250 30 2073,21429
BLAKE 2850 30 2073,21429
CLARK 2450 10 2073,21429
SCOTT 3000 20 2073,21429
KING 5000 10 2073,21429
TURNER 1500 30 2073,21429
ADAMS 1100 20 2073,21429
JAMES 950 30 2073,21429
FORD 3000 20 2073,21429
MILLER 1300 10 2073,21429

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