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 - Introduction Nous 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: - Windows XP personnel, 32 bits
Après l'installation du Serveur Oracle, les paramètres de notre Serveur Oracle sont les suivants: - le mot de pass pour SYSMAN, SYS et SYSTEM est the_pass
Nous allons créer une base de donnée: - 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_SID Nous 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 Service
Nous 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ètres
L'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) files background_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 database undo_management = auto |
| | Sauvegardez ce fichier dans: c:\Oracle\the_path\the_init\init_the_sid.ora |
1.4 - Démarer l'instance L'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:
- 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
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:
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_base
CHARACTER 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ème La 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 crée le dictionnaire de données
- catproc.sql créé les structures pour PL/SQL.
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. 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
Shutdown Spool 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 TableSpace Nous 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_tables datafile 'c:\oracle\the_path\the_tables.dbf'
size 10m extent management local uniform size 128k; -- si nous souhaitons bloquer Sql Plus -- @?\sqlplus\admin\pupbld
Shutdown Spool 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émonstration
A 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_user identified 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 - Automatisation Au cours de la création de la base, nous avons rencontré quelques problèmes. Mentionnons les rapidement:
- 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.
De façon générale, la nécessité de recommencer plusieurs essais nous a poussé à utiliser: - 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'auteur John 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. |