| 
   | Create Database Oracle 10g - John COLIBRI. |   
résumé : création pas à pas d'un base de données ORACLE
mots clé : Oracle 10g - create database - SID - connect nolog - startup - Sql/Plus - create database script
logiciel utilisé : Windows XP personnel, 32 bits
matériel utilisé : Pentium 1.400 Mhz, 256 Meg memoire, 140 G disque
champ d'application : Windows
niveau : développeur base de données
plan :
   
 1 - IntroductionNous allons détailler ici comment créer une base de donnée Oracle 10g. La création d'une base Oracle est traditionnellement reconnue comme une
opération très complexe. En effet la base peu être organisée de multiples façons, et de nombreux paramètres fournis lors de la création permettent de spécifier la configuration. Une parfait maîtrise de la création nécessite donc
avant tout une bonne compréhension de l'architecture du serveur Oracle.   N'ayant pas pour but de reproduire les 700 pages du manuel d'architecture Oracle, nous allons utiliser une autre approche plus directe, en décrivant les
étapes précises que nous avons utilisées pour créer notre base.   
 Rappelons que nous utilisons la configuration suivante:
  Après l'installation du Serveur Oracle, les paramètres de notre Serveur Oracle sont les suivants:Windows XP personnel, 32 bits
  Nous allons créer une base de donnée:le mot de pass pour SYSMAN, SYS et SYSTEM est the_pass
  son identificateur sera the_sid
elle sera placée dans le répertoire c:\oracle\the_path
 
 Pour créer la base, nous allons
  créer une variable d'environnement ORACLE_SID
créer un service
créer le fichier de paramètres
démarrer l'instance et la base
créer la base
créer les tables système
créer une TableSpace
vérifier la création d'une table
 
 
 
 1 - Création de la Base
 
 1.1 - Création d'une variable DOS ORACLE_SIDNous allons utiliser une instance Oracle, qui sera identifiée par son SID
(System IDentifier). Ce SID devra être reconnu au niveau de la ligne de commande DOS, et pour cela nous devons créer une variable d'environnement DOS contenant ce SID. La création de cette variable est effectuée en utilisant la
commande DOS SET. Par conséquent    |   | lancez CMD.EXE   |   |   | la ligne de commande attend vos instructions      |   |   | créez le SID the_sid en tapant       SET ORACLE_SID=the_sid Entrée      |   |   | DOS créé la variable: 
 
 |  
 Nous pouvons vérifier que cette variable a bien été créée en tapant SET:
   |   | tapez      SET  Entrée      |   |   | DOS présente toutes les variables d'environnement, parmi lesquelles the_sid:   
 |  
 
 1.2 - Création d'un ServiceNous devons à présent créer un Service Windows qui gèrera notre instance. Nous créons ce service en utilisant ORADIM.EXE. Donc:    |   | tapez la commande 
     oradim -new -sid the_sid -intpwd mypass -startmode manual  Entrée      |   |   | Oracle crée le service:   
 |  
 Nous vérifions que le service a bien été créé:
  
|   | tapez:      services.msc  Entrée    
(ou utilisez "démarrer | paramètres | panneau de configuration | outils d'administration | services" )    |   |   | Windows affiche les services utilisés par notre système, dont OracleServicethe_sid:   
 |  
 De plus, Oracle a créé un fichier de mots de passe pour ce service (dans "OracleHome"\database):
     
 
 1.3 - Créer le fichier de paramètresL'instruction de création de la base utilisera un fichier de paramètres. Ce fichier est un fichier binaire, appelé SPFILE. Ce fichier binaire est généré à partir d'un fichier ASCII INIT.ORA que nous devons créer.
L'installation d'Oracle place un fichier INIT.ORA type "OracleHome"\admin:      Ce fichier de 8K comporte de nombreux commentaires:      | 
 
          # Use the following table to approximate the SGA size needed for the 
          # three scenarious provided in this file: 
          # 
          #                     -------Installation/Database Size------ 
          #                      SMALL           MEDIUM           LARGE 
          #  Block         2K    4500K            6800K           17000K 
          #  Size          4K    5500K            8800K           21000K 
           |   et pour les principaux paramètres plusieurs choix (un choix par défaut et, en commentaire, d'autres possibilités)      | 
 
          db_files = 80              # INITIAL 
          # db_files = 80            # SMALL 
          # db_files = 400           # MEDIUM 
          # db_files = 1500          # LARGE 
           |   
 En utilisant les valeurs par défaut du fichier type, nous avons eu quelques erreurs. Après quelques tâtonnements, nous avons finalement réussi en utilisant un fichier minimal, que nous allons utiliser.
 
Donc:    |   | créez le répertoire c:\Oracle\the_path avec les sous-répertoires pour placer le fichier d'initialisation, les scripts, les traces, les écho DOS: 
    |   |   | démarrez NotePad, tapez le texte du fichier de paramètres:     |   db_name = the_base
   db_block_size = 2048  
 # trace (log) filesbackground_dump_dest = C:\ORACLE\the_path\the_trace
 user_dump_dest =        C:\ORACLE\the_path\the_trace
 
 control_files =        C:\ORACLE\the_path\control01_the_sid.ora    # add if undo in create databaseundo_management = auto
 |    |   |   | Sauvegardez ce fichier dans:      c:\Oracle\the_path\the_init\init_the_sid.ora
 |  
 
 1.4 - Démarer l'instanceL'instance va être démarée en utilisant Sql/Plus. Comme aucune instance n'existe, nous devons utiliser des paramètres spéciaux pour que Sql/Plus accepte nos commandes:
Le lancement de Sql/Plus doit être manuel. Mais une fois que nous sommes dans
Sql/Plus, dont l'éditeur est à peine plus malin que celui de DOS, le plus efficace est d'utiliser des scripts:il faut lancer Sql/Plus avec l'option /nolog (nolog= NO LOGin= lancement sans fournir User/password)
une fois sous Sql/Plus
  nous nous connectons en tant que SYS/mon_mot_de_passe AS SYSDBA
nous exécutons CREATE DATABASE avec les paramètres de création
nous créons les fichiers système, puis éventuellement nos tables
 
 Par conséquent:
   |   | lancez votre éditeur préféré (NotePad, par exemple) et tapez le script
suivant:     |   Set Echo Off
 Spool 'c:\oracle\the_path\the_echo\echo_create_database.txt'
   CREATE DATABASE the_baseCHARACTER SET WE8ISO8859P1
 LogFile
 group 1 'c:\oracle\the_path\redo1.log' size 10M reuse,
 group 2 'c:\oracle\the_path\redo2.log' Size 10M reuse
 DataFile 'c:\oracle\the_path\system.dbf' Size 50M
 autoextend on
 next 10M maxsize unlimited
 extent management local
 sysaux datafile 'c:\oracle\the_path\sysaux.dbf' Size 10M
 autoextend on
 next 10M
 maxsize unlimited
 undo tablespace the_undo
 datafile 'c:\oracle\the_path\the_undo.dbf'
 Size 10M
 default temporary tablespace the_temp
 tempfile 'c:\oracle\the_path\the_temp.dbf'
 Size 10M
 ;
   Shutdown Spool Off
 |  
   |   |   | sauvegardez ce texte sous:      c:\Oracle\the_path\the_script\create_database.txt    |   |   | retournez dans la ligne de commande DOS et lancez Sql/Plus en tapant:      sqlplus /nolog  Entrée    
 |   |   | Sql/Plus affiche son invite:      |   |   | connectez-vous en tant que SYS      connect sys/ the_pass as sysdba      |  
|   | Sql/Plus effectue la connexion:      |   |   | démarrez l'instance en tapant:   Startup Nomount pFile= c:\oracle\the_path\the_init\init_the_sid.ora    |   |   | Sql/Plus démarre l'instance:      |   |   | lancez le script de création en tapant      @ c:\oracle\the_path\the_script\create_database.txt Entrée      |   |   | Sql/Plus crée la base     Et le dossier contient les fichiers suivants:  
 
 |  
 Notez que
  l'utilisation d'un script pour la connexion, le chargement et CREATE TABLE
n'est pas obligatoire. Vous pouvez taper les commandes à la main
en cas de problème, le fichier de log créé par SPOOL permet de vérifier calmement ce qui s'est passé. De façon similaire, les traces (fichiers .TRC)
qui seront déposés dans THE_TRACE peut fournir les codes des erreurs
il aurait été possible de placer CONNECT, STARTUP et CREATE TABLE dans le même script
nous avons fermé la base après la création, mais il serait possible de
placer dans le même script les étapes que nous allons présenter maintenant
 
 
 1.5 - Création des tables systèmeLa base créée est vide, et il faut exécuter des scripts qui installent des
tables et programmes systèmes dans la base: Catalog.sql fait 820 K (sic). Il vaut donc mieux lancer ce script en mode ECHO
OFF. L'exécution dure une bonne vingtaine de minutes.catalog.sql crée le dictionnaire de données
catproc.sql créé les structures pour PL/SQL.
  Donc:    |   | lancez Notepad et tapez le script suivant:     |   Set Echo Off
 Spool 'c:\oracle\the_path\the_echo\echo_catalogs.txt'
   connect sys/ the_pass as sysdba    
 Startup pFile= c:\oracle\the_path\the_init\init_the_sid.ora    @? \rdbms\admin\catalog.sql@? \rdbms\admin\catproc.sql
 
 ShutdownSpool Off
 |  
   |   |   | sauvegardez ce texte sous:      c:\Oracle\the_path\the_script\create_catalogs.txt    |   |   | retournez dans Sql/Plus et lancez ce script: 
    @ c:\oracle\the_path\the_script\create_catalogs.txt Entrée      |   |   | Sql/Plus lance ces deux scripts (20 minutes) 
 |  
 
 1.6 - Création de TableSpaceNous créons à présent un fichier pour nos données (TableSpace):  |   | lancez Notepad et tapez le script suivant:     |   Set Echo Off
 Spool 'c:\oracle\the_path\the_echo\echo_tablespace.txt'
   connect sys/ the_pass as sysdba    
 Startup pFile= c:\oracle\the_path\the_init\init_the_sid.ora    grant connect to system identified by  the_manager;  
 connect system/ the_manager    create tablespace the_tablesdatafile  'c:\oracle\the_path\the_tables.dbf'
 size 10m extent management local uniform size 128k;
  -- si nous souhaitons bloquer Sql Plus-- @?\sqlplus\admin\pupbld
 
 ShutdownSpool Off
 |  
   |   |   | sauvegardez ce texte sous:      c:\Oracle\the_path\the_script\create_tablespace.txt    |   |   | retournez dans Sql/Plus et lancez ce script: 
    @ c:\oracle\the_path\the_script\create_tablespace.txt Entrée      |   |   | Sql/Plus crée le fichier de données   
 |  
 
 1.7 - Creation de Table de DémonstrationA titre de vérification, nous allons créer une table utilisateur, et vérifier son fonctionnement. Pour cela, nous utilisons le script demobld qu'Oracle a fourni pour créer une table DEPT et EMP  |   | lancez Notepad et tapez le script suivant:     |   Set Echo Off
 Spool 'c:\oracle\the_path\the_echo\echo_demo_table.txt'
   connect sys/ the_pass as sysdba    
 grant connect, resource to my_useridentified by my_pass;
 alter user my_user
 default tablespace the_tables;
   connect my_user/my_pass@? \ODP.NET\samples\DataSet\RelationalData\Setup\demobld
   select * from dept;    Spool Off  |  
   |   |   | sauvegardez ce texte sous:      c:\Oracle\the_path\the_script\create_demo_tables.txt    |  
|   | retournez dans Sql/Plus et lancez ce script:      @ c:\oracle\the_path\the_script\create_demo_tables.txt
Entrée      |   |   | Sql/Plus crée le fichier de données   
 |  
 
 
 2 - AutomatisationAu cours de la création de la base, nous avons rencontré quelques problèmes. Mentionnons les rapidement:
De façon générale, la nécessité de recommencer plusieurs essais nous a poussé à utiliser:la création de la variable d'environnement ORACLE_SID ne semble pas obligatoire. En certaines circonstances, le chargement de la base a provoqué des erreurs TNS-12580. La suppression de SET a alors supprimé cette erreur
après des tentatives infructueuses, il se peut que le serveur considère qu'une base est ouverte ou montée (ORA-01081). L'exécution brutale de SHUTDOWN ABORT résoud le problème.
  un fichier ASCII contenant les commandes à taper dans CMD.EXE. Au lieu de taper les lignes, il suffit alors de couper la commande désirée de ce
fichier ASCII et les coller (clic droit souris | coller) après le ">" de CMD.EXE
pour les commandes Sql/Plus complexes (CREATE TABLE), nous avons placé cette suite de commandes dans un fichier de script, et le script a été lancé
pour les traitements impliquant plusieurs commandes DOS (suppression de service et effacement de fichier de mot de passe), nous avons utilisé des fichiers .BAT
 
 Nous avons placé ces textes ASCII dans un fichier .ZIP que vous pouvez
télécharger:
 
 Nous proposons aussi:
 
Installation Oracle : comment installer le Serveur et le Client
Oracle Tutorial : comment créer des application Client (comptabilité, facturation, pages Web, gestion de production etc)
Formations Oracle : réalisation d'applications Oracle (création de table, d'index, écriture / lecture / modification,
transactions, états), en tenant compte des spécificités Oracle (types de données, séquences, procédures cataloguées, transactions).
nous avons aussi compilé une liste de liens Oracle destinée tout particulièrement aux dévelopeurs.
 
 Comme d'habitude:
 
nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections
qui en résulteront pourront aider les prochains lecteurs
tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même
les bienvenus à jcolibri@jcolibri.com.
plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en
cliquant "envoyer" :   et si vous avez apprécié cet article, faites connaître notre site,
ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.
 
 3 - L'auteurJohn COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets  (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le
conseil (composants, architecture, test) et la
formation. Son site contient des articles
avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et
UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
 |