My Oracle blog

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

Jeu 29 jan 2009 5 commentaires
Bonjour,

Merci pour ton travail ...

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 ??

Merci encore pour ton travail,

Philippe.
Phi - le 22/02/2010 à 14h48

Bonjour,

en fait tu copies le scripts dans un fichier sql (exemple c:\tmp\createDB.sql)
Et ensuite dans sqlplus
après le startup nomount tu tapes dans sqlplus @c:\tmp\createDB.sql

Normalement, ca doit rouler tout seul.

LAO

LAO
Merci pour le retour ...

C'est le 1 ere step pour s'attaquer au backup distant dur serveur via Rman ...

Cordialement,

Philippe.
Phil - le 22/02/2010 à 17h05
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")
Please aidez moi au plus proche possible.

Merci
Firdaousse - le 22/03/2010 à 22h48
Bonjour,

Le message indique que la base est déjà en mode mount...
L'article indique que la commande create Database doit être lancée en mode NOMOUNT.

Avez vous fait cela ?

LAO.
LAO
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)
Merci de m'aider et encore de me dire comment je peut supprimer un service ou une instance.
Merci encore
Firdaousse - le 25/03/2010 à 16h44
Bonjour,

Essayez en ligne de commande :
oradim -DELETE -SID nomdelabase

LAO.
LAO

Bonjour,

SVP j'ai crée le fichier init.ora sous pfile

et j'ai lancer crée l'instance

mais lorsque je lance

Eminos - le 09/01/2011 à 15h34