{"id":256,"date":"2016-02-19T13:47:57","date_gmt":"2016-02-19T11:47:57","guid":{"rendered":"http:\/\/alexandre-mesle.com\/?p=256"},"modified":"2016-09-08T00:49:30","modified_gmt":"2016-09-07T22:49:30","slug":"oracle-sous-linux","status":"publish","type":"post","link":"https:\/\/www.alexandre-mesle.com\/index.php\/2016\/02\/19\/oracle-sous-linux\/","title":{"rendered":"Oracle sous Linux"},"content":{"rendered":"<p>L&rsquo;absence de documentation et le non-respect des normes sont souvent la source d&rsquo;une inutile perte de temps. L&rsquo;installation d&rsquo;Oracle sous Linux (Mandriva en particulier), une fois que l&rsquo;on connait la proc\u00e9dure \u00e0 suivre est un jeu d&rsquo;enfant (si tout se passe comme pr\u00e9vu bient entendu). La perte de temps est occasionn\u00e9 par le fait que contrairement \u00e0 la plupart des logiciels, Oracle ne propose pas de d\u00e9p\u00f4t (alors que m\u00eame Google le fait !). Il est donc n\u00e9cessaire de tout installer manuellement, y compris les d\u00e9pendances. La documentation \u00e9tant inexistante, et le logiciel \u00e0 installer monstrueusement complexe, il est presque impossible de trouver tout seul la proc\u00e9dure (\u00e0 moins d&rsquo;\u00eatre le dieu du syst\u00e8me).<\/p>\n<p>J&rsquo;ai pour ma part pass\u00e9 un temps consid\u00e9rable sur cette installation, et force est de constater que j&rsquo;ai perdu beaucoup de temps parce que les informations dont j&rsquo;avais besoin \u00e9taient difficiles \u00e0 trouver, parce qu&rsquo;il n&rsquo;existe qu&rsquo;un seul tutoriel d\u00e9crivant de fa\u00e7on propre la proc\u00e9dure \u00e0 suivre, et que j&rsquo;ai mis beaucoup de temps \u00e0 le trouver. Avant de vous d\u00e9crire les \u00e9tapes de l&rsquo;installation, je vais vous d\u00e9crire les sympt\u00f4mes que j&rsquo;ai rencontr\u00e9.<\/p>\n<p>L&rsquo;installation du rpm oracle-xe-10.2.0.1-1.0.i386.rpm se fait fort ais\u00e9ment avec la commande (ne le faites pas tout de suite, il y a des \u00e9tapes \u00e0 ex\u00e9cuter au pr\u00e9alable)<\/p>\n<pre>rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm<\/pre>\n<p>C&rsquo;est cependant loin d&rsquo;\u00eatre suffisant pour qu&rsquo;Oracle fonctionne. Si vous essayez de vous connecter sur <a href=\"http:\/\/127.0.0.1:8080\/apex\">http:\/\/127.0.0.1:8080\/apex<\/a>, vous avez un magnifique <strong>connexion refus\u00e9e<\/strong>. Et si vous arrivez \u00e0 lancer <strong>sqlplus<\/strong> en ligne de commande, vous aurez droit \u00e0 :<\/p>\n<pre>ERROR:\r\nORA-01034: ORACLE not available\r\nORA-27101: shared memory realm does not exist\r\nLinux Error: 2: No such file or directory<\/pre>\n<p>Le tutoriel que j&rsquo;avais utilis\u00e9 dans un premier temps \u00e9tait totalement muet sur cette erreur, j&rsquo;en suis venu \u00e0 me demander si je n&rsquo;\u00e9tais pas le seul \u00e0 avoir ce probl\u00e8me. J&rsquo;ai alors scrut\u00e9 le net \u00e0 la recherche d&rsquo;une solution. Et cela en vain. On me d\u00e9crivait sur les forums des sympt\u00f4mes proches, mais r\u00e9sultant malheureusement d&rsquo;erreurs diff\u00e9rentes.<\/p>\n<p>J&rsquo;ai fini par trouver une partie de la solution sur le site (site aujourd&rsquo;hui disparu) de Gilles Briard. Il y a ensuite diverses bidouilles \u00e0 faire pour que le tout fonctionne. Avant de lire la suite, vous devriez d\u00e9sinstaller oracle :<\/p>\n<pre>urpme oracle-xe<\/pre>\n<h3>Installation du rpm<\/h3>\n<p>Pour fonctionner, Oracle n\u00e9cessite quelques rpms. Si Oracle, comme tout le monde utilisait des d\u00e9p\u00f4ts et g\u00e9rait les d\u00e9pendances, \u00e7a nous simplifierait grandement la vie. Comme ce n&rsquo;est pas le cas, il est n\u00e9cessaire d&rsquo;installer manuellement les deux packages<strong>libaio<\/strong> et <strong>bc<\/strong>, en root :<\/p>\n<pre>urpmi libaio bc<\/pre>\n<p>Il faut ensuite d&rsquo;ajouter les lignes suivantes \u00e0 la fin du fichier <strong>\/etc\/sysctl.conf<\/strong> :<\/p>\n<pre>###########\r\n# Valeurs pour Oracle XE\r\n###########\r\nkernel.shmall = 2097152\r\nkernel.shmmax = 536870912\r\nkernel.shmmni = 4096\r\nfs.file-max = 65536\r\nnet.ipv4.ip_local_port_range = 1024 65000<\/pre>\n<p>Puis lancer la commande<\/p>\n<pre>sysctl -p<\/pre>\n<p>Vous pouvez ensuite lancer l&rsquo;installation d&rsquo;Oracle avec la commande :<\/p>\n<pre>rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm<\/pre>\n<p>Vous pouvez conserver tous les param\u00e8tres par d\u00e9faut.<\/p>\n<p>Si tout se passe comme pr\u00e9vu, il est possible pour vous d&rsquo;utiliser oracle en passant par<a href=\"http:\/\/127.0.0.1:8080\/apex\/\">http:\/\/127.0.0.1:8080\/apex\/<\/a>. Si vous souhaitez utiliser <strong>sqlplus<\/strong> en ligne de commande, il y a quelques manipulations suppl\u00e9mentaires \u00e0 effectuer. Elles sont d\u00e9crites dans la page suivante de l&rsquo;article.<\/p>\n<h3>Utilisation de sqlplus en ligne de commande<\/h3>\n<p>Certaines personnes, ont tout comme moi un go\u00fbt prononc\u00e9 pour la ligne de commande. Grande doit \u00eatre leur frustration lorsqu&rsquo;on les force \u00e0 utiliser Oracle via un navigateur. Les \u00e9tapes suivantes vous permettront d&rsquo;utiliser <strong>sqlplus<\/strong> depuis la console.<\/p>\n<p>Tout d&rsquo;abord, il vous faut localiser <strong>sqlplus<\/strong> dans votre arborescence. Sur mon syst\u00e8me, il se trouve ici :<\/p>\n<pre>\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\/bin<\/pre>\n<p>Il est possible que cela diff\u00e8re l\u00e9g\u00e8rement sur votre syst\u00e8me, vous ne devriez n\u00e9anmoins pas avoir trop de difficult\u00e9s \u00e0 le localiser. Si une fois cela fait, vous lancez <strong>sqlplus<\/strong>, vous obtenez ce magnifique message d&rsquo;erreur :<\/p>\n<pre>[klaus@localhost bin]$ .\/sqlplus\r\nError 6 initializing SQL*Plus\r\nMessage file sp1.msb not found\r\nSP2-0750: You may need to set ORACLE_HOME to your Oracle software directory<\/pre>\n<p>A moins que vous souhaitiez perdre autant de temps que j&rsquo;en ai perdu, ne vous conformez pas au message que vous lisez. Il existe dans le m\u00eame r\u00e9pertoire un script appel\u00e9 <strong>oracle_env.sh<\/strong> et contenant les instructions suivantes :<\/p>\n<pre>[klaus@localhost bin]$ more oracle_env.sh\r\nORACLE_HOME=\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\r\nexport ORACLE_HOME\r\nORACLE_SID=XE\r\nexport ORACLE_SID\r\nNLS_LANG=`$ORACLE_HOME\/bin\/nls_lang.sh`\r\nexport NLS_LANG\r\nPATH=$ORACLE_HOME\/bin:$PATH\r\nexport PATH\r\nif [ $?LD_LIBRARY_PATH ]\r\nthen\r\n        LD_LIBRARY_PATH=$ORACLE_HOME\/lib:$LD_LIBRARY_PATH\r\nelse\r\n        LD_LIBRARY_PATH=$ORACLE_HOME\/lib\r\nfi\r\nexport LD_LIBRARY_PATH<\/pre>\n<p>Il s&rsquo;agit d&rsquo;un script qui positionne correctement toutes les variables d&rsquo;environnement n\u00e9cessaires au bon fonctionnement d&rsquo;Oracle. Ex\u00e9cutez le script :<\/p>\n<pre>[klaus@localhost bin]$ ORACLE_HOME=\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\r\n[klaus@localhost bin]$ export ORACLE_HOME\r\n[klaus@localhost bin]$ ORACLE_SID=XE\r\n[klaus@localhost bin]$ export ORACLE_SID\r\n[klaus@localhost bin]$ NLS_LANG=`$ORACLE_HOME\/bin\/nls_lang.sh`\r\n[klaus@localhost bin]$ export NLS_LANG\r\n[klaus@localhost bin]$ PATH=$ORACLE_HOME\/bin:$PATH\r\n[klaus@localhost bin]$ export PATH\r\n[klaus@localhost bin]$ if [ $?LD_LIBRARY_PATH ]\r\n&gt; then\r\n&gt;         LD_LIBRARY_PATH=$ORACLE_HOME\/lib:$LD_LIBRARY_PATH\r\n&gt; else\r\n&gt;         LD_LIBRARY_PATH=$ORACLE_HOME\/lib\r\n&gt; fi\r\n[klaus@localhost bin]$ export LD_LIBRARY_PATH<\/pre>\n<p>Je l&rsquo;ai pour ma part ex\u00e9cut\u00e9 comme un boucher : en copiant-collant dans la console le contenu du script. Libre \u00e0 vous d&rsquo;utiliser des m\u00e9thodes plus fines. Il est ais\u00e9 de v\u00e9rifier si \u00e7a a fonctionn\u00e9, il suffit pour ce faire d&rsquo;afficher le contenu de la variable d&rsquo;environnement $PATH :<\/p>\n<pre>[klaus@localhost bin]$ echo $PATH\r\n\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\/bin:\/usr\/bin:\/bin:\/usr\/local\/bin:\/usr\/X11R6\/bin\/:\/usr\/games:\/usr\/lib\/qt4\/bin:\/usr\/bin:\/opt\/kde3\/bin:\/home\/klaus\/bin<\/pre>\n<p>Pour que vos variables d&rsquo;environnement soit toujours bien positionn\u00e9es. Il faut \u00e9diter le fichier <strong>~\/.bashrc<\/strong> et ajouter dedans soit le contenu du fichier <strong>oracle_env.sh<\/strong>, soit une commande qui va ex\u00e9cuter les intructions de ce fichier. Une fois cela fait vous pouvez ex\u00e9cuter :<\/p>\n<pre>[klaus@localhost bin]$ cd\r\n[klaus@localhost ~]$ sqlplus\r\n\r\nSQL*Plus: Release 10.2.0.1.0 - Production on Dim. Avr. 26 05:15:51 2009\r\n\r\nCopyright (c) 1982, 2005, Oracle.  All rights reserved.\r\n\r\nEntrez le nom utilisateur : system\r\nEntrez le mot de passe :\r\n\r\nConnect\u00e9 \u00e0 :\r\nOracle Database 10g Express Edition Release 10.2.0.1.0 - Production\r\n\r\nSQL&gt;<\/pre>\n<div id=\"art-pages-list\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;absence de documentation et le non-respect des normes sont souvent la source d&rsquo;une inutile perte de temps. L&rsquo;installation d&rsquo;Oracle sous Linux (Mandriva en particulier), une fois que l&rsquo;on connait la proc\u00e9dure \u00e0 suivre est un jeu d&rsquo;enfant (si tout se&#8230; <a class=\"more-link\" href=\"https:\/\/www.alexandre-mesle.com\/index.php\/2016\/02\/19\/oracle-sous-linux\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[17],"tags":[],"class_list":["post-256","post","type-post","status-publish","format-standard","hentry","category-deboires"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8i9jg-48","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/comments?post=256"}],"version-history":[{"count":2,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/256\/revisions"}],"predecessor-version":[{"id":280,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/256\/revisions\/280"}],"wp:attachment":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/media?parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/categories?post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/tags?post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}