Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
29 janvier 2009 4 29 /01 /janvier /2009 15:56
Bonjour,

Aujourd'hui, je vais aborder le thème de la création d'une base de données.
Et pour être plus précis, je vais surtout créer une base de façon manuelle. C'est à dire sans utiliser l'assistant de base de données (dbca=> DataBase Configuration Assistant).

Pour cela, je vais utiliser une machine virtuelle (Windows XP) sur laquelle j'ai déjà installé un noyau Oracle (10.2.0.1) patché en 10.2.0.3.

Mon noyau Oracle est installé dans le répertoire E:\oracle\product\10.2.0\
L'instance et la base se nommeront DB1. On peut nommer la base de façon différente de l'instance.

Avant toute chose il faut créer les répertoires nécessaire à la création de la base:


MKDIR E:\oracle\product\10.2.0\admin
MKDIR E:\oracle\product\10.2.0\oradata

MKDIR E:\oracle\product\10.2.0\admin\DB1
MKDIR E:\oracle\product\10.2.0\oradata\DB1

MKDIR E:\oracle\product\10.2.0\admin\DB1\bdump
MKDIR E:\oracle\product\10.2.0\admin\DB1\cdump
MKDIR E:\oracle\product\10.2.0\admin\DB1\pfile
MKDIR E:\oracle\product\10.2.0\admin\DB1\udump

Une fois l'arborescence crée nous allons avoir besoin d'un fichier d'initialisation (pfile) courramment nommé init.ora. Ce fichier sera placé dans le répertoire E:\oracle\product\10.2.0\admin\DB1\pfile

exemple de fichier init.ora
Attention, si votre emplacement diffère, il faut prendre soin de modifier les chemins. De même ceci est un exemple qui doit être adapté en fonction du résultat voulu. L'objet n'étant pas de passer en revu tous les paramètres d'une instance oracle, je ne commenterai pas le fichier ci-dessous. 




##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
 
###########################################
# Cache and I/O
###########################################
db_block_size=8192
db_file_multiblock_read_count=16
 
###########################################
# File Configuration
###########################################
control_files=("E:\oracle\product\10.2.0\ORADATA\DB1\control01.ctl", "E:\oracle\product\10.2.0\ORADATA\DB1\control02.ctl", "E:\oracle\product\10.2.0\ORADATA\DB1\control03.ctl")
 
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
 
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=E:\oracle\product\10.2.0\admin\DB1\bdump
core_dump_dest=E:\oracle\product\10.2.0\admin\DB1\cdump
user_dump_dest=E:\oracle\product\10.2.0\admin\DB1\udump
 
###########################################
# Miscellaneous
###########################################
compatible=10.2.0.1.0
 
###########################################
# Job Queues
###########################################
job_queue_processes=10
 
###########################################
# Database Identification
###########################################
db_domain=""
db_name=DB1
db_unique_name=DB1
 
###########################################
# SGA Memory
###########################################
sga_target=256M
 
###########################################
# Processes and Sessions
###########################################
processes=150
 
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_tablespace=UNDOTBS1
 
###########################################
# Shared Server
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=ORADBXDB)"
 
###########################################
# Security and Auditing
###########################################
audit_file_dest=E:\oracle\product\10.2.0\admin\DB1\adump
remote_login_passwordfile=EXCLUSIVE
 
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=20M


Puisque nous sommes sous windows, je vais également devoir créer mon instance Oracle qui sera représenté par un Windows Service. 

Dans une console DOS, tapez la commande suivante.



oradim -new -sid DB1


Une fois l'instance crée, nous allons nous connecter à cette instance via l'utilitaire SQL+


SET ORACLE_SID=DB1
SQLPLUS /nolog
CONNECT / as sysdba

STARTUP NOMOUNT pfile='E:\oracle\product\10.2.0\admin\db1\pfile\init.ora'



Une fois la base en mode nomount, il ne reste plus qu'a lancer le script de création de base.

Exemple de script de création de base:

On constate, que l'instruction de la commande CREATE DATABASE, va entre autre permetre la création du fichier Control File. Modifier les chemins et options en fonction de votre configuration et résultat voulu (Character Set, Archivelog ou pas,nombre et taille des redo,...)




Create DATABASE DB1
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
MAXDATAFILES 200
MAXINSTANCES 1
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET UTF8
LOGFILE 
GROUP 1 ('E:\oracle\product\10.2.0\oradata\DB1\redo01.rdo') SIZE 50M,
GROUP 2 ('E:\oracle\product\10.2.0\oradata\DB1\redo02.rdo') SIZE 50M,
GROUP 3 ('E:\oracle\product\10.2.0\oradata\DB1\redo03.rdo') SIZE 50M
MAXLOGFILES 20
MAXLOGMEMBERS 5
NOARCHIVELOG
EXTENT MANAGEMENT LOCAL
DATAFILE 'E:\oracle\product\10.2.0\oradata\DB1\system.dbf' SIZE 500M
SYSAUX DATAFILE 'E:\oracle\product\10.2.0\oradata\DB1\sysaux.dbf' SIZE 500M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE 'E:\oracle\product\10.2.0\oradata\DB1\temp.dbf' SIZE 250M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
UNDO TABLESPACE UNDOTBS1
DATAFILE 'E:\oracle\product\10.2.0\oradata\DB1\UNDOTBS1.dbf' SIZE 250M;


Maintenant que la base de donnée est crée, il ne reste plus (cette fois c'est la bonne) qu'à executer deux scripts oracles.

Toujours en SYS.


@?\rdbms\admin\catalog.sql
@?\rdbms\admin\catproc.sql



Et cette fois c'est terminé. Votre base de donnée est crée sans options particulières.
Les avantages sont à mon avis:
  • La possibilité de créer des bases de facon uniforme (uniquement les chemins, et nom de base à modifier)
  • On sait ce qui  a été installé, alors qu'avec l'assistant, on peut avoir tendance à choisir des options dont on ne sais pas vraiment si l'on en a l'utilité.
  • Pratique pour créer des bases à distance (essayer de lancer un dbca en telnet !)
  • Le jour ou DBCA est en rade, on n'est pas totalement à rue.

Laurent

Partager cet article
Repost0

commentaires

E
<br /> <br /> Bonjour,<br /> <br /> <br /> SVP j'ai crée le fichier init.ora sous pfile<br /> <br /> <br /> et j'ai lancer crée l'instance<br /> <br /> <br /> mais lorsque je lance <br /> <br /> <br /> <br />
Répondre
F
<br /> Il est en mode NOMOUNT mais il veut pas se créer il me donne tjrs le méme erreur ERREUR a la ligne 1 (ORA-01034: oracle not available)<br /> Merci de m'aider et encore de me dire comment je peut supprimer un service ou une instance.<br /> Merci encore<br /> <br /> <br />
Répondre
L
<br /> Bonjour,<br /> <br /> Essayez en ligne de commande :<br /> oradim -DELETE -SID nomdelabase<br /> <br /> LAO.<br /> <br /> <br />
F
<br /> j'ai pu se connécté et tout mais la BD n'est pas créé il me donne ("ORA-01501: ECHEC DE CREATE DATABASE") et ("ORA-01100: base de donnée déja montée")<br /> Please aidez moi au plus proche possible.<br /> <br /> Merci<br /> <br /> <br />
Répondre
L
<br /> Bonjour,<br /> <br /> Le message indique que la base est déjà en mode mount...<br /> L'article indique que la commande create Database doit être lancée en mode NOMOUNT.<br /> <br /> Avez vous fait cela ?<br /> <br /> LAO.<br /> <br /> <br />
P
<br /> Merci pour le retour ...<br /> <br /> C'est le 1 ere step pour s'attaquer au backup distant dur serveur via Rman ...<br /> <br /> Cordialement,<br /> <br /> Philippe.<br /> <br /> <br />
Répondre
P
<br /> Bonjour,<br /> <br /> Merci pour ton travail ...<br /> <br /> Etant neophpyte, j'ai une question basique .. tu detaille un script à lancer pour la creation de la base  dans ta procédure (aprés le startup no mount) .. de quelle façon l'est il ??<br /> <br /> Merci encore pour ton travail,<br /> <br /> Philippe.<br /> <br /> <br />
Répondre
L
<br /> <br /> Bonjour,<br /> <br /> en fait tu copies le scripts dans un fichier sql (exemple c:\tmp\createDB.sql)<br /> Et ensuite dans sqlplus<br /> après le startup nomount tu tapes dans sqlplus @c:\tmp\createDB.sql<br /> <br /> Normalement, ca doit rouler tout seul.<br /> <br /> LAO<br /> <br /> <br /> <br />