310 likes | 539 Views
Oracle. Alexandre Facchin Ingénieurs2000 10/11/2000. Oracle. Présentation & Principe Administration et Outils Oracle et le langage C/C++ Oracle et Java Oracle vs MySql/Postgres. Présentation d’Oracle. Historique. 1970
E N D
Oracle Alexandre Facchin Ingénieurs2000 10/11/2000
Oracle • Présentation & Principe • Administration et Outils • Oracle et le langage C/C++ • Oracle et Java • Oracle vs MySql/Postgres
Historique • 1970 • Début de l'ère des bases de données par un article rédigé par B. Codd, "A Relational Model of Data for Large Shared Data Banks". Cet article fournit une base mathématique et théorique solide (ce qui est toujours une bonne chose) au concept de bases de données relationnelles. Les concepts de Codd ne seront implémentés que progressivement. • 1977 • Lawrence Ellison, Bob Miner et Ed Oates fondent la société "Relational Software Incorporated (RSI)". Ils conçoivent un RDBMS appelé Oracle, le premier système commercial relationnel disponible sur le marché. • 1979 • Commercialisation du premier prototype (RDBMS - RSI 1). Séparation des espaces d'adressage entre les programmes utilisateurs et le noyau Oracle. Cette version a été entièrement développée en assembleur !
Historique(2) • 1988 • Sortie de Oracle 6. Beaucoup d'améliorations : performances accrues, davantage de fonctionnalités, une gestion du verrouillage bas-niveau et de mise-à-jour en différé. Le système peut également être utilisé sur un plus grand nombre de plate formes. • 1992 • Sortie de Oracle 7 pour UNIX. Beaucoup de changements dans l'architecture au niveau de la gestion de la mémoire, du CPU et des E/S. Oracle7 est la version actuellement la plus répandue. Son exploitation est facilitée par les outils SQL*DBA (Data base Administration). • 1996 • Oracle 8 est la première version orientée objet du système (bêta test).
Les Processus Système • 4 Processus par Base • Data base WRiter (DBWR) • LoG Writer (LGWR) • System MONitor (SMON) • Process MONitor (PMON) • 1 Processus pour les accès réseau • Listener
Fichiers d'Oracle • fichiers de données • fichiers de contrôle • journaux • Autres fichiers (options)
Caractéristiques (++) • Performance • Fiabilité • Disponibilité sur toute les plate forme • Capacités d’extension (cluster,…) • Connexion et Sécurité • Portabilité • Fonctionnalité étendu
Caractéristiques (--) • Prix • Complexité de mise en œuvre • Gourmandise système
Installation • Acheter les CD « 8.1.5.x » • Télécharger & Installer le jre 1.1.6 • Lancer l’installeur (java) • Sélectionner l’installation par défaut • Créer une base de démonstration • Configurer les fichiers (voir site web) Plutôt Facile!!!
Démarrage d’Oracle • Pour un démarrage automatique : • Dans /etc/rc.d/init.d/ créer un lien symbolique oracle vers oracle_start ou oracle_stop: su – oracle –c svrmgrl <<EOF connect internal « startup ou shutdown » EOF • Dans /etc/rc.d/rc3.d et rc0.d (rc6.d) créer un lien symbolique S90oracle vers /etc/rc.d/init.d/oracle_start et K90oracle vers oracle_stop. • Pour un démarrage manuel lancer le script!
Démarrage du Listener (SQL+) • Pour un démarrage automatique : • Dans /etc/rc.d/init.d/ créer un lien symbolique oracle vers oracle_lstart ou oracle_lstop: su – oracle –c lsncrtl <<EOF « start ou stop » EOF • Dans /etc/rc.d/rc3.d et rc0.d (rc6.d) créer un lien symbolique S90oraclel vers /etc/rc.d/init.d/oracle_lstart et K90oraclel vers oraclel_stop. • Pour un démarrage manuel lancer le script!
Le Pro*C/C++ • Les Différents PRO*… • Comment ça marche? • L’Interface Réseau • Le But • Boucle • Test Conditionnel
Exemple EXEC SQL INCLUDE sqlca ; EXEC SQL INCLUDE oraca ; int dbConnect(void){ EXEC SQL BEGIN DECLARE SECTION ; EXEC SQL END DECLARE SECTION ; strcpy( (char*) &sqlLogin.arr[0],"scott") ; sqlLogin.len = strlen("scott") ; strcpy( (char*) &sqlPassword.arr[0],"tiger") ; sqlPassword.len = strlen("tiger") ; strcpy( (char*) &db_string.arr[0],"myDB") ; db_string.len = strlen("myDB") ; EXEC SQL WHENEVER SQLERROR GOTO dbconnect_error ; exec sql connect :sqlLogin identified by :sqlPassword USING :db_string; return 1; dbconnect_error: printf("dbconnect error\n"); return -1 ; }
int dbDisconnect(void){ EXEC SQL WHENEVER SQLERROR GOTO dbconnect_error ; EXEC SQL COMMIT WORK RELEASE; return 1; dbconnect_error: printf("dbdisconnect error\n"); return -1 ; } int dbSelect(void){ EXEC SQL BEGIN DECLARE SECTION ; varchar prenom[32] ; EXEC SQL END DECLARE SECTION ; EXEC SQL WHENEVER SQLERROR GOTO dbtest_error ; EXEC SQL SELECT prenom into :prenom FROM EMP WHERE nom='ADMIN'; prenom.arr[ prenom.len ] = '\0' ; printf("%s",prenom.arr); return 0; dbtest_error: printf("dbselect error\n"); return -1 ; }
Compilation • Pré compilation: • proc $(PROC_FLAGS) INAME=dbtools.pc ONAME=dbtools.c • Compilation • $(CC) $(CC_FLAGS) -c dbtools.c • $(CC) $(CC_FLAGS) myClient.c -o myClient $(ORACLE_LIBS) dbtools.o
API Java • package oracle.jdbc.driver • OracleConnection • OracleDriver • package oracle.sql • …
Exemple • Chargement du driver DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); • Connexion à notre base Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:test", "scott", "tiger"); • Création de objet Statement qui permet l’exécution d’une requête Statement stmt = conn.createStatement (); • Récupération du résultat ResultSet rset = stmt.executeQuery ("select * from cat"); • Exploitation du résultat while (rset.next ()) System.out.println (rset.getString (1)); • Fermeture du Résultat, du Statement et de la Connexion rset.close(); stmt.close(); conn.close();
Compilation et Exécution • Compilation Javac LeTest.java –classpath=$ORA_HOME/lib/classes.jar • Exécution java LeTest
Questions www.alexandre.facchin.tm.fm