D R D A = Distributed Relationnel Database Architecture. Mise en oeuvre sur AS/400 en utilisant APPC : Tout d'abord définir le connexion avec le système distant. - ligne - contrôleur - unité (DEV APPC) cette dernière définie le nom de lieu local et le nom de lieu distant (RMTLOCNAME) Ensuite définir la base de donnée locale RMTLOCNAME = *LOCAL et la ou les base(s) de données éloignée(s). Par la commande ADDRBDDIRE |
CMDRDB Commandes RDB Choisissez une des options : Commandes 1. Ajouter poste répertoire RDB >>> ADDRDBDIRE 2. Modifier poste répertoire RDB CHGRDBDIRE 3. Afficher postes répertoire RDB DSPRDBDIRE 4. Arrêter une demande RDB ENDRDBRQS 5. Enlever poste répertoire RDB RMVRDBDIRE 6. Gérer postes répertoire RDB WRKRDBDIRE Menus des commandes associées 7. Commandes base de données CMDDB Fin Option ou commande ===> 1 F3=Exit F4=Invite F9=Rappel F12=Annuler F16=Menu général |
Ajouter poste répertoire RDB (ADDRDBDIRE) Indiquez vos choix, puis appuyez sur ENTREE. Base de données relationnelle . RDB AUTRERDB Lieu éloigné . . . . . . . . . . RMTLOCNAME AUTREAS Texte . . . . . . . . . . . . . TEXT Base de données xxxxxxxxx ############################################### # # # Le lien entre Remote Data Base et moyens # # d'accès(unité APPC) est normalement fait # # avec le paramètre RMTLOCNAME. # # # ############################################### Fin F3=Exit F4=Invite F5=Réafficher F10=Autres paramètres F12=Annuler F13=Mode d'emploi invite F24=Autres touches |
Ajouter poste répertoire RDB (ADDRDBDIRE) Indiquez vos choix, puis appuyez sur ENTREE. Base de données relationnelle . RDB ######################### Lieu éloigné . . . . . . . . . . RMTLOCNAME ######## Texte . . . . . . . . . . . . . TEXT *BLANK Pilote demandeur d application: ARDPGM Programme . . . . . . . . . . *DRDA Bibliothèque . . . . . . . . *LIBL ############### Autres paramètres # # # Mais il # Unité: DEV # est # Description d'unité APPC . . . *LOC # possible # Lieu local . . . . . . . . . . . LCLLOCNAME *LOC # de préciser # ID éloigné du réseau . . . . . . RMTNETID *LOC # l'unité # Mode . . . . . . . . . . . . . . MODE *NETATR # et/ou de # Programme de transaction . . . . TNSPGM *DRDA # renseigner # # ces para- # # mètres. # ############### Fin |
Le nouveau paramètre ARDPGM (V3R10) permet de définir le pilote, c'est à dire le programme sachant dialoguer avec cette base s'il ne s'agit pas d'une base IBM. ainsi ORACLE livre un produit permettant de considérer comme une base DRDA une base ORACLE sur machine UNIX, reliée à l'AS/400 par TCP/IP c'est exactement le principe du driver (pilote) ODBC, d'ailleur il y a interaction complète entre DRDA et ODBC : si vous avez un micro connecté à l'AS/400 avec une source de donnée ODBC configurée, cette source de donnée peut vous servir de "passerelle" pour manipuler toutes les bases DRDA connues de l'AS/400. |
Entrée d'instructions SQL Saisissez l'instruction SQL, puis appuyez sur Entrée. ===> CONNECT ############################## # # # Il est possible maintenant # # d'utiliser une base de # # données éloignée,comme # # si elle était locale # # après l'ordre CONNECT. # # valide sous : # # - SQL interactif # # - QM (query manager) # # - pgm XXXSQL (RPG,CBL..) # ############################## Fin F3=Exit F4=Invite F6=Insérer ligne F9=Rappel F10=Copier ligne F12=Annuler F13=Services F24=Autres touches |
Définition d'une instruction CONNECT Indiquez vos choix, puis appuyez sur ENTREE. Connexion . . . . . . . . . . . 1 1=Eloignée 2=Locale(RESET) 3=Etat TO base de données relationnelle Nom USER . . . . . . . . . . . . . . ID utilisateur USING . . . . . . . . . . . . . ############ Mot de passe ####################################################################### # L'option 1 permet de se connecter à une base éloignée. # # 2 permet de revenir à la base locale # # 3 (en pgm) permet de recevoir un code statut. # # # ####################################################################### F3=Exit F5=Réafficher F12=Annuler F21=Instruction |
Définition d'une instruction CONNECT Indiquez vos choix, puis appuyez sur ENTREE. Connexion . . . . . . . . . . . 1 1=Eloignée 2=Locale (RESET) 3=Etat TO base de données relationnelle Nom USER . . . . . . . . . . . . . . ID utilisateur USING . . . . . . . . . . . . . ############ Mot de passe ####################################################################### # Pour l'option 1 vous pouvez indiquer un utilisateur désignant sous # # quel profil le pgm distant va être exécuté (ctl des autorisations) # # la notion de mot de passe peut être facultative. # # en résumé : # ####################################################################### F3=Exit F5=Réafficher F12=Annuler F21=Instruction |
Définition d'une instruction CONNECT Indiquez vos choix, puis appuyez sur ENTREE. Connexion . . . . . . . . . . . 1 1=Eloignée 2=Locale (RESET) 3=Etat TO base de données relationnelle Nom USER . . . . . . . . . . . . . . ID utilisateur USING . . . . . . . . . . . . . ############ Mot de passe ####################################################################### # Si le lieu distant a indiqué sur l'entrée ADDCMNE # # un profil par défaut -> la notion de profil est facultative. # # pas de profil/défaut -> vous devez indiquer un profil. # # # ####################################################################### F3=Exit F5=Réafficher F12=Annuler F21=Instruction |
Définition d'une instruction CONNECT Indiquez vos choix, puis appuyez sur ENTREE. Connexion . . . . . . . . . . . 1 1=Eloignée 2=Locale (RESET) 3=Etat TO base de données relationnelle Nom USER . . . . . . . . . . . . . . ID utilisateur USING . . . . . . . . . . . . . ############ Mot de passe ####################################################################### # Si le lieu distant a indiqué sur l'unité APPC # # SECURE(*YES) votre site est considére comme "sérieux" et le pgm # # distant s'exécutera sous votre profil sans indiquer de mot de passe # # Sinon un mot de passe est obligatoire,si vous indiquez un profil. # ####################################################################### F3=Exit F5=Réafficher F12=Annuler F21=Instruction |
SQL/400 et Two Phases Commit : - SQL/400 supporte la validation à deux phases et a été modifié en conséquence. + nouveau paramètre CRTSQLxxx RDBCNNMTH (RDB connexion method) admet : *DUW (dft) Distributed Unit of Work = validation à deux phases *RUW Remote Unit of Work = validation simple (comme V2R30) > Si vous indiquez *RUW (la doc parle de connexion type 1) Comme avant vous ne pouvez être connecté qu'à une seule base à la fois. Vous devez terminer la transaction avant de changer de base. > Si vous indiquez *DUW, (connexion type 2) Vous pouvez vous connecter à plusieurs bases(même syntaxe pour CONNECT) |
Il existe alors trois nouveaux ordres (valides uniquement en type 2) SET CONNECTION nom-du-serveur utilisation: EXEC SQL CONNECT TO as1 (manipulation des données sur as1) EXEC SQL CONNECT TO as2 (manipulation des données sur as2, as1 est toujours connecté) EXEC SQL SET CONNECTION as1 (retour sur as1) RELEASE ---nom-serveur--- |-CURRENT----| |ALL/ALL SQL-| Libère le serveur indiqué, les ressources sont encore verrouillées. (ce serveur ne fera pas partie de la prochaine transaction) DISCONNECT (même syntaxe que RELEASE) déconnecte le serveur après un COMMIT |
DDM et DRDA sont disponibles sur TCP/IP, depuis la V4R20. Validation à UNE phase uniquement (en V4) ! pour se connecter à un serveur DRDA en IP il y a deux possibilités : 1/ envoyer le profil (USER) seulement (comme SECURITY(SAME) en APPC) 2/ envoyer profil (USER) et mot de passe (USING) (comme SECURITY(PGM) en APPC) le mot de passe pouvant être indiqué à chaque utilisation ou pré-enregistré (et caché) sur le client |
Pour envoyer le profil uniquement sur le client CONNECT to nom-drda (utilisation du profil en cours) CONNECT TO nom-drda USER nom-profil sur le serveur CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO) la valeur par défaut est PWDRDQ(*YES). |
Pour envoyer le profil et le mot de passe Solution 1. sur le client CONNECT to nom-drda USER nom-profil USING mot-de-passe Solution 2. sur le client on enregistre à l'avance le mot de passe associé à ce profil a/ pour avoir le droit de stocker des mots de passe CHGSYSVAL QRETSVRSEC '1' (c'est 0 par défaut) b/ on enregistre le profil et son mot de passe |
par : ADDSVRAUTE USRPRF(profil-local ou *CURRENT ) SERVER(nom-DRDA) USERID(profil à envoyer) ou *USRPRF ) PASSWORD(mot de passe à envoyer) vous trouverez également les commandes CHGSVRAUTE et RMVSVRAUTE |
le serveur DDM/DRDA est représenté par deux principaux jobs : QRWTLSTN le listner (à l'écoute sur un le port TCP 446) QRWTSRVR le job serveur (pré-start job) QRMTSRVR la commande ADDRDBDIRE est modifiée en conséquence : ADDRDBDIRE RDB(nom-drda) RMTLOCNAME(accepte maintenant les noms longs comme S44xxxxx.ENTREPRISE.COM) TYPE(*IP | *SNA) PORT(*DRDA) [= 446] |
Procédures cataloguées & DRDA : [STORED PROCEDURES] Rappel : SQL permet maintenant de demander l'exécution d'un programme sur un serveur distant (normalement devant réaliser une action sur la base de ce serveur) la Syntaxwe est CALL procedure (paramètres) PROCEDURES CATALOGUEES et DRDA : la procédure est recherchée et invoquée sur la base de données DRDA à laquelle vous êtes connecté (tout simplement), quelque soit le protocole utilisé. |
Les pgms xxxSQL peuvent utiliser l'ordre CONNECT, mais il est aussi possible de définir une fois pour toute avec quelle base de données éloignée ils doivent travailler. Il faut renseigner le paramètre RDB de la cde CRTxxxSQL. Si la ligne est ouverte,votre système va créer en plus du pgm, un plan d'accès (SQL PACKAGE) sur le système distant. Si la connexion n'est pas ouverte,il faudra passer la cde CRTSQLPKG quand la connexion sera établie, afin de préparer la requête (et donc améliorer les performances) sur le site distant. Créer un module SQL (CRTSQLPKG) Programme . . . . . . . . . . . PGM ########## Bibliothèque . . . . . . . . . *LIBL Base de données relationnelle . RDB *PGM Utilisateur RDB . . . . . . . . USER *CURRENT Mot de passe utilisateur RDB . . PASSWORD ########## Collection par défaut . . . . . DFTRDBCOL *PGM Texte 'descriptif' . . . . . . . TEXT *PGMTXT |