|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
Dans ce HOWTO, je vais essayer de couvrir l'installation et l'administration basique d'une base de donn馥s Oracle tournant sur une machine Linux. Je vais couvrir particuli鑽ement l'installation du serveur Oracle, la configuration de SQL*Net et du client.
Ce document n'est pas un tutoriel complet sur l'utilisation et l'administration d'une base de donn馥s Oracle. Si c'est cela que vous recherchez, il y a de bons livres sur ces sujets publi駸 par O'Reilly et autres.
Je ne vais pas non plus couvrir le d騅eloppement des programmes Oracle sous UNIX. Si cela vous est absolument n馗essaire, je vous recommanderais d'acheter le syst鑪e de d騅eloppement de SCO (avec OpenServer 5.x) , dont
Vous n'auriez pas lu ceci sans un... N'est-ce pas?
Je ne peux garantir que les instructions seront fiables pour les autres noyaux. (ni pour le 2.0.30, d'ailleurs...)
Je sais que ceci peut sembler important, surtout en ce qui concerne Linux, mais n'oubliez pas que Oracle est un logiciel complexe. Vous n'auriez pas ces r駸erves sur SCO!
sur son importance. Utilisez les logiciels d'Oracle sans licence est ill馮al.Mieux encore, Oracle va aussi porter Oracle Applications sur Linux. Il doit 黎re disponible dans le premier semestre 1999, selon le site web d'Oracle.
R馭駻ences:
http://www.oracle.com/html/linux.html
http://www.news.com/News/Item/0,4,24436,00.html
http://www.zdnet.com/pcweek/news/0720/20morac.htmlNous avons 騅idemment besoin d'un utilisateur pour maintenir la base de donn馥s Oracle. Comme nous n'avons l'intention de relier le noyau Oracle (plus sur ceci plus tard), nous devons accepter les noms d'utilisateur et de groupe par d馭aut d'Oracle. Il inclut l'utilisateur ORACLE et le groupe DBA.
oracle et le groupe dba.
$ groupadd dba
$ useradd oracle
$ mkdir /home/oracle
$ mkdir /home/oracle/7.3.3.0.0 (Version of Oracle)
$ chown -R oracle.dba /home/oracle
$ cp -a /mnt/cdrom/* .
$ find . -name *_ -exec ~/7.3.3.0.0/orainst/oiuncomp {} \;
Ajouter les lignes suivantes dans /etc/profile ou dans .profile pour chaque utilisateur d'Oracle.
# Oracle Specific
ORACLE_HOME=/home/oracle/7.3.3.0.0
ORACLE_SID=orcl
ORACLE_TERM=vt100
export ORACLE_HOME ORACLE_SID ORACLE_TERM
# Changer le chemin pour Oracle
PATH="$PATH:$ORACLE_HOME/bin"
Nous devons aussi changer le propri騁aire et les permissions de l'utilitaire Oracle d'augmentation de ulimit.
$ chown root.root $ORACLE_HOME/bin/osh
$ chmod u+s $ORACLE_HOME/bin/osh
Changer les permissions pour les fichiers Oracle pour s'assurer de leur bonne ex馗ution.
$ chmod +x $ORACLE_HOME/bin/*
$ chmod u+s $ORACLE_HOME/bin/oracle
Les outils Oracle demandent que les messages soient dans le r駱ertoire $ORACLE_HOME/tool_name/mesg.
Donc, d駱lacez les fichiers msb des r駱ertoires msg_ship aux r駱ertoires mesg.
$ mv $ORACLE_HOME/plsql/mesg/mesg_ship/* $ORACLE_HOME/plsql/mesg/.
$ mv $ORACLE_HOME/rdbms/mesg/mesg_ship/* $ORACLE_HOME/rdbms/mesg/.
$ mv $ORACLE_HOME/svrmgr/mesg/mesg_ship/* $ORACLE_HOME/svrmgr/mesg/.
Cr馥r les r駱ertoires suivants, s'ils n'existent pas:
$ mkdir $ORACLE_HOME/rdbms/log
$ mkdir $ORACLE_HOME/rdbms/audit
$ mkdir $ORACLE_HOME/network/log
Les r駱ertoires suivants peuvent 黎re enlev駸 sans probl鑪e:
$ORACLE_HOME/guicommon2/$ORACLE_HOME/ctx/$ORACLE_HOME/md/$ORACLE_HOME/mlx/Si vous utilisez Oracle 7.2.x ou une version anterieure, veuillez lire la section D駱annage ci-dessous.
Copiez $ORACLE_HOME/dbs/init.ora vers $ORACLE_HOME/dbs/initorcl.ora:
$ cd $ORACLE_HOME/dbs
$ cp init.ora initorcl.ora
Le modifier en ajoutant les lignes suivantes:
db_name = orcl
COMPATIBLE=7.3.3.0.0
connect internal
startup nomount
set echo on
spool makedb.log
create database orcl
maxinstances 1
maxlogfiles 8
datafile '$ORACLE_HOME/dbs/orcl_syst_01.dbf' size 40M reuse
logfile
'$ORACLE_HOME/dbs/orcl_redo_01.dbf' size 1M reuse,
'$ORACLE_HOME/dbs/orcl_redo_02.dbf' size 1M reuse,
'$ORACLE_HOME/dbs/orcl_redo_03.dbf' size 1M reuse;
@$ORACLE_HOME/rdbms/admin/catalog.sql
create tablespace rollback
datafile '$ORACLE_HOME/dbs/orcl_roll_01.dbf' size 8.5M reuse;
create tablespace temp
datafile '$ORACLE_HOME/dbs/orcl_temp_01.dbf' size 5M reuse
temporary;
create tablespace users
datafile '$ORACLE_HOME/dbs/orcl_user_01.dbf' size 10M reuse;
create rollback segment r1 tablespace rollback
storage ( optimal 5M );
alter rollback segment r1 online;
connect system/manager
@$ORACLE_HOME/rdbms/admin/catdbsyn.sql
connect internal
@$ORACLE_HOME/rdbms/admin/catproc.sql
connect system/manager
@$ORACLE_HOME/sqlplus/admin/pupbld.sql
spool off
exit
3.3 Ex馗uter le script pour l'installation de la base de donn馥s
D駑arrer svrmgrl et ex馗uter le script:
$ cd $ORACLE_HOME/dbs
$ svrmgrl
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> startup nomount
ORACLE instance started.
Total System Global Area 4313312 bytes
Fixed Size 41876 bytes
Variable Size 4140364 bytes
Database Buffers 122880 bytes
Redo Buffers 8192 bytes
SVRMGR> @makedb
<beaucoup de messages>
SVRMGR> exit
Server Manager complete.
3.4 D駑arrer la base de donn馥s
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> startup
ORACLE instance started.
Total System Global Area 4313316 bytes
Fixed Size 41876 bytes
Variable Size 4140368 bytes
Database Buffers 122880 bytes
Redo Buffers 8192 bytes
Database mounted.
Database opened.
SVRMGR> exit
Server Manager complete.
Il est important de mentionner ici que red駑arrer un serveur Linux sans fermer auparavant la base de donn馥s Oracle risque fort de corrompre la base de donn馥s.
Donc, avant d'駑ettre la commande Linux shutdown, il est sage de fermer le base de donn馥s:
$ svrmgrl
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR> exit
Server Manager complete.
Ces utilisateurs sont typiquement utilis駸 pour maintenir les informations sur le dictionnaire standard de donn馥s pour la base de donn馥s. C'est une bonne id馥 de changer les mots de passe par d馭aut aussit? que possible.
Ceci peut 黎re fait par:
sqlplus system/manager
SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle7 Server Release 7.3.3.0.0 - Production Release
SQL> alter user system identified by <newpassword>;
User altered.
SQL> alter user sys identified by <newpassword>;
User altered.
SQL> exit;
Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release
SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SQL> create user <user> identified by <psw>
2 default tablespace users
3 temporary tablespace temp;
User created.
SQL> grant connect, resource to <user>
Grant succeeded.
SQL> exit
Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
Maintenant que vous avez un nouvel utilisateur sur le syst鑪e, vous pouvez jouer avec. Pour se connecter sur la base de donn馥s Oracle:
$ sqlplus <user>/<password>
Si, cependant, comme la plupart des gens, vous voulez configurer la partie r駸eau du logiciel pour que vous puissiez vous connecter depuis d'autres machine, continuez votre lecture.
Tous ces fichiers configurent la partie r駸eau d'Oracle (SQL*Net ou Net8 pour Oracle8). Ces fichiers doivent 黎re cr鳬s sur le serveur dans le r駱ertoire $ORACLE_HOME/network/admin.
tnsnames.ora
orcl.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = <INSERER LE NOM LOGIQUE DU SERVEUR ICI> )
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = <INSERER LE NOM LOGIQUE DU SERVEUR ICI> )
(Port = 1526)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
Il contient les sections pour le nom de l'馗outeur, son adresse, les bases de donn馥s desservies par l'馗outeur et les param鑼res de configuration.
Voici un exemple:
# Nom de l'馗outeur et les adresses a 馗outer
LISTENER =
( ADDRESS_LIST =
(ADDRESS =
(PROTOCOL=tcp)
(HOST=<INSERT HOST>)
(PORT=1521)
(COMMUNITY=UK_SUP_TCPIP)
)
(ADDRESS =
(PROTOCOL=ipc)
(KEY=700)
(COMMUNITY=UK_SUP_TCPIP)
)
)
# Liste des services d駸servis par l'馗outeur
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=orcl)
(ORACLE_HOME=/home/oracle/7.3.3.0.0)
)
)
# D饕ut des param鑼res de configuration
TRACE_LEVEL_LISTENER=OFF
TRACE_FILE_LISTENER = "listener"
LOG_FILE_LISTENER = "listener"
CONNECT_TIMEOUT_LISTENER = 10
STOP_LISTENER = YES
DBA_GROUP = dba
sqlnet.ora
Le fichier sqlnet.ora contient la configuration pour le noeud du r駸eau. Ceci est ind駱endant du nombre de bases de donn馥s ou du nombre d'馗outeurs. La chose la plus importante dans ce fichier est la variable de configuration
Timeout des Connexions Mortes.
Voici une copie de mon fichier sqlnet.ora pour vous servir d'exemple:
TRACE_LEVEL_CLIENT = OFF
sqlnet.expire_time = 30 # le nombre de secondes entre les v駻ifications des clients.
names.default_domain = world
name.default_zone = world
Pour arr黎er les 馗outeurs:
$ lsnrctl
LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20
Copyright (c) Oracle Corporation 1994. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
The command completed successfully
LSNRCTL> exit
, ne vous inqui騁ez pas. Soyez patient.
La configuration SQL*Net sur un PC avec les versions r馗entes du logiciel Client Oracle est tr鑚 facile. La meilleure fa輟n (et la plus facile) pour r騏ssir l'installation d'un client qui marche enti鑽ement, est d'utiliser l'outil SQL*Net Easy Configuration fourni par Oracle.
Cet outil a une interface qui vous guidera dans l'installation des fichiers tnsnames.ora et sqlnet.ora.
Cependant, si vous n'avez pas l'outil SQL*Net Easy Configuration Tool, ne vous inquietez pas. Vous pouvez simplement cr馥r les fichiers tnsnames.ora et sqlnet.ora dans le r駱ertoire $ORACLE_HOME/network/admin sur le client, exactement comme sur le serveur.
Il fournira comme alias le m麥e que sur le serveur (toujours une bonne id馥 de toute fa輟n).
Les clients UNIX ne sont pas tr鑚 diff駻ents des clients Windows. Si vous avez Network Manager d'Oracle, alors utilisez-le
de la m麥e fa輟n que ci-dessus, sinon vous pouvez utiliser juste les m麥es fichiers de configuration
que sur le serveur dans le r駱ertoire $ORACLE_HOME/network/admin.
dbstart et dbstop
Le d駑arrage et l'arr黎 automatique de la base de donn馥s Oracle peuvent 黎re effectu駸 (avec la version 7.3.3.0.0) avec les
fichiers dbstart et dbshut, tous deux fournis par Oracle. Ces fichiers d駱endent sur l'existence du
fichier /etc/oratab pour fonctionner (bien qu'en modifiant les fichiers dbshut et dbstart il puissent 黎re d駱lac駸).
Le format du fichier /etc/oratab est le suivant:
SID:ORACLE_HOME:AUTO
Un exemple:
orcl:/home/oracle/7.3.3.0.0:Y
leaveup:/home/oracle/7.3.2.1.0:N
init.d et rc.d
Pour d駑arrer et arr黎er la base de donn馥s quand la machine se lance ou s'騁eint, il faut modifier les routines de d駑arrage pour la machine Linux. Ceci est tr鑚 facile, bien que je devrais souligner que cela peut changer suivant la distribution Linux (Slackware, Debian, RedHat, etc). Je vais montrer quelques exemples qui marchent avec RedHat Linux 5.0. Pour modifier ceux-ci pour votre propre distribution Linux, veuillez voir votre documentation Linux. (bien que ceci doit 黎re valable pour n'importe quel UNIX de type Sys V)
Premi鑽ement, nous devons cr馥r le script qui ex馗utera dbshut et dbstart dans le r駱ertoire /etc/rc.d/init.d . Cr馥z le fichier suivant comme /etc/rc.d/init.d/oracle:
#!/bin/sh
#
# /etc/rc.d/init.d/oracle
# Description: Starts and stops the Oracle database and listeners
# See how we were called.
case "$1" in
start)
echo -n "Starting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstop >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac
Il vaut la peine de v駻ifier si le fichier arr黎e et d駑arre
vraiment correctement les bases de donn馥s pour le syst鑪e.
V駻ifiez le fichier de log, /var/log/oracle, pour les messages d'erreur.
Une fois que le script marche, nous devons cr馥r les liens symboliques de start et kill dans les r駱ertoires appropri駸 de niveau d'ex馗ution (runlevel)
/etc/rc.d/rcX.d.
Les commandes suivantes assureront que les bases de donn馥s vont d駑arrer dans les niveaux d'ex馗ution 2,3 et 4:
$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle
Pour arr黎er les bases de donn馥s avant un r饌mor軋ge ou arr黎, nous avons besoin des liens suivants:
$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # Halting
$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting
Si vous avez besoin d'un Agent Intelligent Oracle, vous pouvez l'ex馗uter sans changement
de la configuration.
Pour d駑arrer le AI, essayez:
$ lsnrctl dbsnmp_start
Pour arr黎er l'AI, essayez:
$ lsnrctl dbsnmp_stop
Voir ci-dessous les diff駻ents conseils de d駱annage.
Les fichiers exp馘i駸 par Oracle dans les versions 7.2.x sont incorrects en supposant que vous voulez installer une configuration parall鑞e de serveur. Le fichier init.ora contient la ligne suivante:
# define parallel server (multi-instance) parameters
ifile = ora_system:initps.ora
Pour fixer le probl鑪e, mettez la en commentaire:
# define parallel server (multi-instance) parameters
#ifile = ora_system:initps.ora
D'abord merci pour votre aide, mais aucun des probl鑪es possubles que vous pensez n'騁ait responsable de mon probl鑪e.
Le probl鑪e esy l'駑ulateur iBCS lui-m麥e.
Il semble que Oracle ex馗ute les appels sysconf qui ne sont pas support駸 dans la version en cours d'iBCS.
Regardez la trace:
<7>[22]615 sysconf(34)
<7>iBCS2 unsupported sysconf call 34
<7>[22]615 sysconf error return linux=-22 -> ibcs=22 <Invalid argument>
<7>[24]615 sysconf(34)
<7>iBCS2 unsupported sysconf call 34
<7>[24]615 sysconf error return linux=-22 -> ibcs=22 <Invalid argument>
Solution: patcher iBCS-source.apply avec le diff-patch suivant:
--- sysconf.c Sun Apr 19 19:19:15 1998
+++ sysconf.c.ori Sun Apr 19 19:28:45 1998
@@ -60,7 +60,6 @@
#define _SC_JOB_CONTROL 5
#define _SC_SAVED_IDS 6
#define _SC_VERSION 7
-#define _SC_HACK_FOR_ORACLE 34
#define _SC_PAGESIZE 11
@@ -97,11 +96,6 @@
case _SC_SAVED_IDS: {
return (1);
}
-
- case _SC_HACK_FOR_ORACLE: {
- return (1);
- }
-
case _SC_PAGESIZE: {
return PAGE_SIZE;
Relectures suppl駑entaires faites par Bob Withers, Mark Watling, Peter Sodhi et Greg Hankins.