UNIX tricks and treats

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 8 avril 2010

Multiplexer les redo logs Oracle sous ASM

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 +FRA/MYDB/onlinelog/group_1.257.715620719
         2 +FRA/MYDB/onlinelog/group_2.258.715620719
         3 +FRA/MYDB/onlinelog/group_3.259.715620719

SQL>  select group#, status, bytes/1024  from v$log;

    GROUP# STATUS           BYTES/1024
---------- ---------------- ----------
         1 ACTIVE                51200
         2 CURRENT               51200
         3 ACTIVE                51200


SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;


SQL> alter system checkpoint global;


SQL>  select group#, status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE


Prendre un des groupes en état INACTIVE et le supprimer, puis le recréer avec deux membres.

Dans cet exemple, on suppose que l'instance est en mode OMF.

SQL> alter database drop logfile group 3;
(si le groupe 3 est en état INACTIVE)

SQL> select group#, status, bytes/1024  from v$log;

    GROUP# STATUS           BYTES/1024
---------- ---------------- ----------
         1 CURRENT               51200
         2 INACTIVE              51200

SQL> alter database add logfile group 3 ('+DATA','+FRA') size 51200K;

SQL> alter system switch logfile;

On vérifie que le groupe 3 possède désormais deux membres

SQL> select group#, status, members, bytes/1024  from v$log;

    GROUP# STATUS              MEMBERS BYTES/1024
---------- ---------------- ---------- ----------
         1 ACTIVE                    1      51200
         2 INACTIVE                  1      51200
         3 CURRENT                   2      51200


SQL> select group#, member from v$logfile order by 1

    GROUP# MEMBER
---------- --------------------------------------------------
         1 +FRA/MYDB/onlinelog/group_1.257.715710709
         1 +DATA/MYDB/onlinelog/group_1.285.715710709
         2 +FRA/MYDB/onlinelog/group_2.258.715710073
         2 +DATA/MYDB/onlinelog/group_2.284.715710073
         3 +FRA/MYDB/onlinelog/group_3.259.715709881
         3 +DATA/MYDB/onlinelog/group_3.282.715709881

Et faire ainsi de suite pour les trois groupes... Ici, on peut dropper et recréer le groupe 2 car il est inactif

Attention à ne pas dropper les trois groupes de logs en même temps ou de dropper un logfile group actif!


N'hésitez pas à un message si cet article vous a été utile.

Nixman

mercredi 7 avril 2010

Multiplexer le fichier de contrôle Oracle sous ASM


1) Vérifier le nom du fichier de contrôle actuel:

SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------------------------
control_files                        string      +FRA/MYDB/controlfile/current.256.715620719


SQL> shutdown immediate

SQL> startup nomount


2) Effetuer la copie du fichier de contrôle via rman

$ rman target /

RMAN> restore controlfile to '+DATA' from '+FRA/MYDB/controlfile/current.256.715620719';

Starting restore at 07-APR-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=272 device type=DISK

channel ORA_DISK_1: copied control file copy
Finished restore at 07-APR-10


3) Retrouver le nom du nouveau fichier de contrôle via asmcmd:

ASMCMD> ls -lsa +DATA/MYDB/controlfile

Type         Redund  Striped  Time             Sys  Block_Size  Blocks    Bytes     Space  Name
CONTROLFILE  UNPROT  FINE     APR 07 14:00:00  Y         16384     595  9748480  16777216  none => current.283.715704921


4) Modifier les paramètres d'init pour prendre en compte le nouveau fichier de contrôle:

SQL> alter system set control_files='+DATA/MYDB/controlfiles/current.283.715704921','+FRA/MYDB/controlfile/current.256.715620719' scope=spfile;


5) Redémarrer la base et vérifier:

SQL> shutdown immediate

SQL> startup

SQL> show parameter control_files;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +DATA/MYDB/controlfiles/cu
                                                 rrent.283.715704921, +FRA/mmtw
                                                 ebdv/controlfile/current.256.7
                                                 15620719



Laissez-moi une note si cet article vous a été utile.

Bonne journée.


Nixman

lundi 22 mars 2010

Purge backups OCR non fonctionnel sous Cluster Oracle 11gR2

Dans un cluster Oracle 11gR2, la purge des backups automatiques de l'OCR ne fonctionne pas (depuis version 10.2.4) si les  fichiers *.ocr situés sous $ORA_CRS_HOME/cdata/<cluster_name> (ex:/u01/app/11.2.0/grid/cdata/inbdor0809-rac/) ont les mauvaises permissions. De ce fait, les fichiers *.ocr avec des noms aléatoires ne sont pas renoimmés en backupXX.ocr et ne sont pas purgés, saturant la partition.

ocrconfig -showbackup montre bien la bonne date de sauvegarde, mais les fichiers backupXX.ocr ont une date bien antérieure.

Un grand nombre de fichiers XXXXXXXXX.ocr existe sous $ORA_CRS_HOME/cdata/<cluster_name>.


# ls -rtl $ORA_CRS_HOME/cdata/<cluster_name>

-rw------- 1 grid oinstall 7081984 jan 18 22:24 day.ocr
-rw------- 1 grid oinstall 7081984 jan 19 02:24 day_.ocr
-rw------- 1 grid oinstall 7081984 jan 19 06:24 backup02.ocr
-rw------- 1 grid oinstall 7081984 jan 19 10:24 backup01.ocr
-rw------- 1 grid oinstall 7081984 jan 19 14:24 backup00.ocr

...

-rw------- 1 root root 7413760 mar 19 22:06 40778839.ocr
-rw------- 1 root root 7413760 mar 20 02:06 26378630.ocr
-rw------- 1 root root 7413760 mar 20 06:06 11332652.ocr
-rw------- 1 root root 7413760 mar 20 10:06 35215677.ocr
-rw------- 1 root root 7413760 mar 20 14:06 41977816.ocr
-rw------- 1 root root 7413760 mar 20 18:06 18335174.ocr
-rw------- 1 root root 7413760 mar 20 22:06 90743999.ocr
-rw------- 1 root root 7413760 mar 21 02:06 20182690.ocr
-rw------- 1 root root 7413760 mar 21 06:06 28125568.ocr
-rw------- 1 root root 7413760 mar 21 10:06 20121708.ocr
-rw------- 1 root root 7413760 mar 21 14:06 34916120.ocr
-rw------- 1 root root 7413760 mar 21 18:06 24068304.ocr



Solution:

chown root:root $ORA_CRS_HOME/cdata/<cluster_name>/*.ocr

Les fichiers XXXXXXXX.ocr peuvent être ensuite supprimés.

Référence: Note Metalink 741271.1

lundi 16 novembre 2009

Nombre de processeurs physiques sur serveur Red Hat Linux

Des outils comme top affichent le nombre de coeurs, ou le nombre de threads, et non le nombre de processurs physiques d'un serveur.


Afin d'obtenir le nombre de processurs physiques, il faut taper la commande suivante:

$ cat /proc/cpuinfo | grep "physical id"
physical id     : 0
physical id     : 2
physical id     : 0
physical id     : 2



Dans ce cas-ci, nous avons deux processurs physiques: 0 et 2

vendredi 9 octobre 2009

Configuration particulière de STREAMS pour RAC

Dans le cadre d'un RAC, si l'on a configuré la propagation via un dblink, il faut indiquer un des noeuds comme propriétaire par défaut de la queue capture et apply de STREAMS. Sinon, on peut se retrouver confroté à une erreur ORA-25315 de façon aléatoire.

Le mieux, sur des configurations 10.2 ou supérieurs, étant de positionner le paramètre queue_to_queue à TRUE lors de la mise en place de la propagation avec DBMS_PROPAGATION_ADM.CREATE_PROPAGATION. On ne passera alors plus par le dblink. Il est impossible de modifier le paramètre en cours de route.

Réf: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_prop_a.htm

Retrouver les noms des queues STREAMS

set lines 150

SELECT q.OWNER, q.NAME, t.QUEUE_TABLE, t.OWNER_INSTANCE

  • FROM DBA_QUEUES q, DBA_QUEUE_TABLES t
  • WHERE t.OBJECT_TYPE = 'SYS.ANYDATA'
  • AND q.QUEUE_TABLE = t.QUEUE_TABLE
  • AND q.OWNER = t.OWNER;

Indiquer un propriétaire par défaut et un propriétaire secondaire

DBMS_AQADM.ALTER_QUEUE_TABLE (

  • queue_table IN VARCHAR2,
  • comment IN VARCHAR2 DEFAULT NULL,
  • primary_instance IN BINARY_INTEGER DEFAULT NULL,
  • secondary_instance IN BINARY_INTEGER DEFAULT NULL);

ex:

BEGIN

  • DBMS_AQADM.ALTER_QUEUE_TABLE(
    • queue_table => 'MON_QUEUE_TABLE_APPLY',

    • primary_instance => 1,

    • secondary_instance => 2);

END; /

BEGIN

  • DBMS_AQADM.ALTER_QUEUE_TABLE(
    • queue_table => 'MON_QUEUE_TABLE_CAPTURE',

    • primary_instance => 1,

    • secondary_instance => 2);

END; /

BEGIN

  • DBMS_AQADM.ALTER_QUEUE_TABLE(
    • queue_table => 'SCHEDULER$_JOBQTAB',

    • primary_instance => 1,

    • secondary_instance => 2);

END; /

mercredi 16 septembre 2009

Purger les jobs Datapump terminés ou orphelins

Réf: Metalink Doc ID: 336014.1

SQL > SET lines 200

COL owner_name FORMAT a10

COL job_name FORMAT a20

COL state FORMAT a11

COL operation LIKE state

COL job_mode LIKE state

SQL> SELECT owner_name, job_name, operation, job_mode, state, attached_sessions FROM dba_datapump_jobs WHERE job_name NOT LIKE 'BIN$%' order by 1,2;

EXPIMP SYS_EXPORT_TABLE_02 EXPORT TABLE NOT RUNNING 0
EXPIMP SYS_EXPORT_FULL_01 EXPORT FULL NOT RUNNING 0

Ne sélectionner que ceux qui sont en "NOT RUNNING". Voir où se trouvent leurs Master tables:

SQL> SELECT o.status, o.object_id, o.object_type,
o.owner||'.'||object_name "OWNER.OBJECT"
FROM dba_objects o, dba_datapump_jobs j
WHERE o.owner=j.owner_name AND o.object_name=j.job_name
AND j.job_name NOT LIKE 'BIN$%' ORDER BY 4,2;

VALID 85215 TABLE EXPIMP.SYS_EXPORT_TABLE_02
VALID 85162 TABLE EXPIMP.SYS_EXPORT_FULL_01

Dropper les Master tables concernés:

SQL> DROP TABLE EXPIMP.sys_export_table_02;

SQL> DROP TABLE EXPIMP.sys_export_full_01;

Killer un job datapump non interactif proprement

Réf: Metalink Doc ID: 336014.1

SQL> SET lines 200

COL owner_name FORMAT a10

COL job_name FORMAT a20

COL state FORMAT a11

COL operation LIKE state

COL job_mode LIKE state

SQL> SELECT owner_name, job_name, operation, job_mode, state, attached_sessions FROM dba_datapump_jobs WHERE job_name NOT LIKE 'BIN$%';

EXPIMP SYS_EXPORT_FULL_05 EXPORT FULL RUNNING 0

SQL> connect expimp/expimp

SQL> DECLARE h1 number;

  • BEGIN
  • h1 := DBMS_DATAPUMP.ATTACH('SYS_EXPORT_FULL_05','EXPIMP');
  • DBMS_DATAPUMP.STOP_JOB (h1);
  • END;

/

La session passe en "STOP PENDING" pendant un certain temps, puis en "NOT RUNNING"

Correspondance volumes ASM ORACLE , disks et device côté Linux:

/etc/init.d/oracleasm listdisks

VOL1

VOL2

export $ORACLE_SID=+ASM

sqlplus / as sysdba

SQL> show parameter asm_diskstring asm_disk

string string /dev/oracleasm/disks/*

SQL> select path from v$asm_disk;

/dev/oracleasm/disks/VOL1

ls -lsa /dev/oracleasm/disks total 0

  • 0 drwxr-xr-x 1 root root 0 avr 18 12:51 .
  • 0 drwxr-xr-x 1 root root 0 avr 18 12:51 ..
  • 0 brw-rw 1 oracle dba 8, 81 avr 18 12:51 VOL1
  • 0 brw-rw 1 oracle dba 8, 97 avr 18 12:51 VOL2

Voir le major/minor (ex:8,81) et les trouver dans /dev:

ls -lsa /dev |grep " 8,"

  • 0 brw-rw 1 root floppy 8, 80 Jun 24 2004 sdf

    0 brw-rw 1 root disk 8, 81 Jun 24 2004 sdf1 --> VOL1 est monté sur /dev/sdf1

  • 0 brw-rw 1 root disk 8, 90 Jun 24 2004 sdf10
Ou cat /proc/partitions -> voir le major/minor

mardi 24 février 2009

Démarrage verbeux de Solaris 10

Note: The english translation of this note can be found here

Par défaut, le démarrage de Solaris 10 se fait en mode silencieux. En d'autres termes, vous ne voyez plus le log de démarrage sur la console.


Ce comportement, issu de l'utilisation de svcadm, peut etre aisément modifié avec l'aide de la commande svccfg.

Mise en place du démarrage verbeux sous Solaris 10:

  # /usr/sbin/svccfg -s system/svc/restarter:default
  svc:/system/svc/restarter:default> addpg options application
  svc:/system/svc/restarter:default> setprop options/logging = astring: verbose
  svc:/system/svc/restarter:default> listprop
...
options/logging            astring  verbose
...

  svc:/system/svc/restarter:default> exit

Retour au démarrage silencieux sous Solaris 10:

  # svccfg -s system/svc/restarter:default
  svc:/system/svc/restarter:default> delpg options
  svc:/system/svc/restarter:default> listprop
  svc:/system/svc/restarter:default> exit


Laissez-moi une note si cet article vous a été utile.

Bonne journée.


Nixman

mercredi 13 août 2008

Activer le Net Management de l'ALOM sur serveurs SunFire


Sur les serveur Sunfire disposant d'une interface ALOM en NetMGMT (SunFire V210, V240, T1000, T2000...), il est possible d'accéder au LOM au travers du réseau, via un port RJ45 spécifique, exactement comme via un port série. Il suffit d'activer la prise en charge réseau via les commandes suivantes du LOM:

setsc if_network true
setsc netsc_ipaddr ADRESSE_IP
setsc netsc_ipnetmask NETMASK
setsc netsc_ipgateway ADRESSE_PASSERELLE
resetsc

Ou bien vous pouvez utiliser la commande interactive setupsc.

Note: Il semble qu'il soit impossible de déterminer un mask différent de 255.255.255.0.

Note 2: Pour des questions de sécurité, il est bien entendu préférable d'accéder à l'ALOM via un sous-réseau spécifique.

Ensuite, il suffit de telneter l'adresse ADRESSE_IP précédemment renseignée.

Pour basculer entre le mode terminal et le mode LOM, il faut utiliser les commandes suivantes:

#.               --> bascule en mode LOM

console -f   --> bascule en mode terminal en rw en déconnectant les autres sessions.


Laissez-moi un commentaire si cet article vous a été utile.

Bonne journée.

Nixman

Ajout d'une table de transcodage non standard à CFT


CFT est un outil de transfert sécurisé multi-plateforme issu des gros systèmes. Il est utilisé essentiellement en France pour le transfert sécurisé de fichiers bancaires. Il a été crée par la société AXWAY et est maintenu par SOPRA.

Lors d'un transfert entre UNIX et MVS par exemple, un transcodage ASCII (UNIX) vers EBCDIC (MVS) est nécessaire.

Or, CFT ne maintient en interne que les quatre tables de transcodage ISO-646 (US7ASCII) vers EBCDIC et inversement.

Dans le cas d'un transfert de fichier contenant des caractères hors ASCII 128 bits (ISO-646, US7ASCII), il faut faire appel à des tables de transcodage externes entre les différents partenaires.

Ici, nous allons ajouter une table de transcodage non standard à un émetteur CFT UNIX se connectant à un récepteur MVS.


1)    Avant toute chose, s’assurer d’une sauvegarde du fichier de configuration existant !

su – cft
cd $CFT_HOME/config
cp config.txt config.txt-YYYY-MM-YY


2)    Obtenir le nouveau fichier de transcodage et le copier sur le serveur

Ex : AtoemV2.dat

le copier sous $CFT_HOME/config/


3)    Arrêter CFT

cftstop


4)    Mettre à jour le fichier de configuration de CFT :

a)    Ajouter une rubrique pour le nouveau fichier de transcodage :

/*------------------------------------------------------------------------------*/
/* Table de transcodage non standard pour partenaire MVS                  */
/*------------------------------------------------------------------------------*/
cftxlate        id      = ATOEV2,
                direct  = SEND,                                             
                fcode   = ASCII,                                            
                ncode   = EBCDIC,                                           
                fname   = $CFT_HOME/config/AtoemV2.dat

b)    Indiquer quel flux doit utiliser cette table, au lieu des tables DEFAULT

Ajouter une ligne xlate = $CFTXLATE_ID (ici :ATOEV2) aux flux devant l’utiliser en envoi (en règle générale, seul l’émetteur a la charge du transcodage).

Ex :

/*------------------------------------------------------------------------------*/
/* Flux exemple en émission (send) vers partenaire  MVS  */
/*------------------------------------------------------------------------------*/
cftsend id      = UNIX2MVS,
        ftype   = T,
        frecfm  = V,
        flrecl  = 21000,
        fcode   = ascii,
        ncode   = ebcdic,
        xlate   = ATOEV2,
        parm    = 'ABCD1234',
        faction = none,
        mode    = replace,
        fname   = $CFT_HOME/emet/testunix2mvs.txt


5)    Réinitialiser et redémarrer CFT

cd $CFT_HOME/config

cftinit config.txt

Vérifier qu’il n’y a pas de rejets…

cftstart


Laissez-moi un commentaire si cet article vous a été utile.

Bonne journée

Nixman

mardi 12 août 2008

Installation et configuration de Proftpd sous AIX 5.2


Fonctionne sous: IBM AIX 5.2

Le serveur ftp historique d'IBM AIX étant relativement limité dans ses capacités de configuration, notamment dans l'utilisation d'environnements chrootés, il est parfois utile d'installer un daemon ftpd alternatif.

1 ) Télécharger coreutils et proftpd depuis le site d’IBM :

http://www-03.ibm.com/systems/p/os/aix/linux/toolbox/download.html


2 ) Installer coreutils-5.2.1-2.aix5.1.ppc.rpm et  proftpd-1.2.8-1.aix5.1.ppc.rpm :

rpm –Uvh coreutils-5.2.1-2.aix5.1.ppc.rpm
rpm –Uvh proftpd-1.2.8-1.aix5.1.ppc.rpm


3 ) Modifier /etc/proftpd.conf

####################################################
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

# Modif Nixman: on ne veut pas que le serveur affiche la version de proftpd
# On remplace ServerName par ServerIdent
ServerIdent     on      "Serveur FTP NIXBLOG.ORG"
# ServerName                    "Serveur FTP NIXBLOG.ORG"
# Modif Nixman:  Mettre ServerType a inetd au lieu de StandAlone
ServerType                      inetd
DefaultServer                   on

# Port 21 is the standard FTP port.
Port                            21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    30

# Set the user and group under which the server will run.
# Modif Nixman: Mettre Group a nobody, car le groupe par defaut n'existe pas
# sous AIX
User                            nobody
Group                           nobody

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
# Modif Nixman: Tous les utilisateurs du groupe ftpjail sont chrootes
DefaultRoot ~ ftpjail

# Normally, we want files to be overwriteable.
<Directory />
  AllowOverwrite                on
</Directory>

# Ajout Nixman: on veut un log des transfert
Transferlog     /var/adm/xferlog.proftpd

## A basic anonymous configuration, no upload directories.  If you do not
## want anonymous users, simply delete this entire <Anonymous> section.
## Modif Nixman: On ne veut pas de compte ftp anonyme, donc on commente tout
## le paragraphe
#<Anonymous ~ftp>
#  User                         ftp
#  Group                                ftp
#
#  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias                    anonymous ftp
#
#  # Limit the maximum number of anonymous logins
#  MaxClients                   10
#
#  # We want 'welcome.msg' displayed at login, and '.message' displayed
#  # in each newly chdired directory.
#  DisplayLogin                 welcome.msg
#  DisplayFirstChdir            .message
#
#  # Limit WRITE everywhere in the anonymous chroot
#  <Limit WRITE>
#    DenyAll
#  </Limit>
#</Anonymous>
####################################################

4) modifier /etc/inetd.conf

#ftp     stream  tcp6    nowait  root    /usr/sbin/ftpd         ftpd
ftp     stream  tcp    nowait  root    /usr/sbin/proftpd         proftpd


5) Relancer inetd:

refresh –s inetd


6) Modifier ftpusers:

Enlever les utilisateurs qui ont droit de se connecter dans /etc/ftpusers, si le fichier a été créé à l’installation.


7) Créer le groupe ftpjail et y ajouter les utilisateurs à chrooter:

mkgroup ftpjail
vi /etc/group et y ajouter les utilisateurs qui doivent être chrootées.


8) Retour en arrière possible:

Il suffit de remettre /etc/inetd.conf à l’état d’origine :

ftp     stream  tcp6    nowait  root    /usr/sbin/ftpd         ftpd
#ftp     stream  tcp    nowait  root    /usr/sbin/proftpd         proftpd

Ensuite, refresh –s inetd.

Pour désinstaller coreutils et proftpd:
rpm –e proftpd-1.2.8-1
rpm –e coreutils-5.2.1-2


Laissez-moi un commentaire si cet article vous a été utile.

Vous pouvez également suivre quelques liens pour m'assurer un peu de revenu ;-).


Nixman

Guide rapide d'installation Apache 2 + PHP5 + OCI8 SOUS AIX 5.2


Fonctionne sous: IBM AIX 5.2

Les librairies OCI8 de PHP permettent de se connecter à une base de données Oracle depuis un serveur web comme Apache.

1)    Prérequis : installer bos.compat.termcap :

Installer le package bos.compat depuis le CD 1 de AIX 5.2. On peut simplement copier bos.compat depuis le CD dans un répertoire du serveur et l’installer avec smit.

2)    Installer le package amp (Apache Mysql PHP) :

Informations générales utiles sur :
http://www-941.ibm.com/collaboration/wiki/display/WikiPtype/aixopen

Télécharger le package complet pour AIX 5.2 depuis le site de pware :
ftp://ftp.hvcc.edu/pub/pware/aix52/bundles/amp/amp.pware-bundle.tar.gz

Gunzipper, détarer dans un répertoire et installer tous les paquets avec smit.

3)    Mettre à jour httpd.conf

Sous /opt/pware/conf, modifier httpd.conf comme il suit :

a) Ajouter les lignes :

LoadModule php5_module modules/libphp5.so

et :

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
</IfModule>

b) Modifier :

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

en :

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

c) Modifier :

User daemon
Group daemon

en :

User daemon
Group staff

On peut alors faire un /opt/pware/bin/apachectl start pour verifier que Apache démarre bien.
On peut éventuellement créer un petit fichier index.php avec un phpinfo() à l’intérieur pour vérifier que PHP fonctionne bien.

/opt/pware/bin/apachectl stop

4)    Créer un fichier tnsnames.ora

Le placer dans le répertoire spécifié par $TNS_ADMIN du .profile de root.

5)    Mettre à jour le .profile de root :

Ajouter /opt/pware/bin dans $PATH
Ajouter /opt/pware/instantclient_10_2 dans $LIBPATH
(Sous AIX, LIBPATH est utilisé en lieu et place de LD_LIBRARY_PATH)

Ajouter:
export TNS_ADMIN=/opt/pware/instantclient_10_2
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

Se déconnecter et se reconnecter de root

Se créer une petite page PHP testoci8.php et la mettre dans le répertoire htdocs.

apachectl start

Test de connexion. http://MON_SERVEUR/testoci8.php
Si vous obtenez une erreur ORA-12737, il faudra effectuer un mise à jour de la version basic light vers basic.

apachectl stop

6)    Mise à jour vers l’instant client basic :

Amp est installé avec les librairies instant client basic light, qui ne gère qu’une quantité limitée de NLS_LANG (client) et CHARACTER SET (serveur).

SQL> select * from nls_database_parameters where parameter IN ('NLS_LANGUAGE','N LS_TERRITORY','NLS_CHARACTERSET');

Si votre serveur Oracle a un character set un peu exotique (genre FRENCH_FRANCE. WE8ISO8859P15 ;-)), vous obtiendrez  une erreur ORA-12737 lors du test de connexion testoci8.php.

Télécharger les librairies instant client basic chez Oracle:
http://www.oracle.com/technology/tech/oci/instantclient/index.html

Prenez la verion pour AIX5L qui vous convient (bootinfo –k).
Dézippez-la dans un répertoire.
Copiez les fichiers de ce répertoire dans le répertoire /opt/pware/instantclient_10_2 en écrasant ceux qui s’y trouvent déjà.

apachectl start

Test de connexion. http://MON_SERVEUR/testoci8.php


7)    Démarrage automatique au boot:

Créer un script /opt/pware/bin/demarre_apache.sh

######################
#!/bin/ksh

PATH=$PATH:/opt/freeware/bin
export PATH

### Pour OCI8 PHP ###
LIBPATH=/usr/lib:/opt/pware/instantclient_10_2
export LIBPATH

TNS_ADMIN=/opt/pware/instantclient_10_2
export TNS_ADMIN

/opt/pware/bin/apachectl start

exit
######################

Le rendre exécutable.

Ajouter son lancement dans /etc/inittab :

apache:2:once:/opt/pware/bin/demarre_apache.sh


Laissez-moi un commentaire si cet article vous a été utile.

Nixman

jeudi 15 mai 2008

Installer un serveur de syslog sous AIX


(The english version of this post is here)

Fonctionne sous: AIX IBM


L'UNIX AIX d'IBM utilisant ses propres systèmes de collecte d'informations et erreurs, comme errpt, il ne possède pas de serveur de syslog actif et configuré par défaut.

Voici les étapes pour le mettre en place:

Editer le fichier /etc/syslog.conf
 
Y ajouter les lignes suivantes:
 
########
kern.debug;mail.none      /var/adm/messages       rotate size 2m files 3 compress
*.emerg;mail.none /var/adm/messages       rotate size 2m files 3 compress
*.alert;mail.none /var/adm/messages       rotate size 2m files 3 compress
*.crit;mail.none  /var/adm/messages       rotate size 2m files 3 compress
*.warning;mail.none       /var/adm/messages       rotate size 2m files 3 compress
*.err;mail.none   /var/adm/messages       rotate size 2m files 3 compress
*.notice;mail.none        /var/adm/messages       rotate size 2m files 3 compress
*.info;mail.none  /var/adm/messages       rotate size 2m files 3 compress
auth.notice     /var/adm/authlog        rotate size 2m files 3 compress
mail.info       /var/adm/mailerrors     rotate size 2m files 3 compress
########
 
Cette configuration vous permet d'effectuer une rotation des logs sur trois fichiers de 2 Mo chacun et de les compresser.

Ensuite, il ne vous reste plus qu'à lancer les commandes suivantes:
 
# touch /var/adm/messages
# touch /var/adm/authlog
# touch /var/adm/mailerrors
# refresh -s syslogd

 
Si tout va bien, vous verrez une ligne du type:
Nov 26 15:53:06 NOM_SERVEUR syslogd: restart
dans le fichier /var/adm/messages après le refresh -s syslogd


Laissez-moi un commentaire si cet article vous a été utile.

Bonne journée.

Nixman

mardi 6 mai 2008

Activer le cache disque sur un serveur Sun Solaris


(The english version of this post is here)

Fonctionne sous: Sun Solaris

Dans un souci intégriste ... d'intégrité des données, Solaris désactive par défaut le cache d'écriture des disques durs, au détriment de la performance entrée/sortie des disques.

Voici les étapes permettant de restaurer cette fonctionnalité:

# init 1
# format -e
format> cache
format> write_cache
format> display
format> enable
  (si disablé)

Attention! Effectuer cette manipulation de préférence avant que le serveur ne soit en production, dans la mesure où il faut passer par le niveau d'exécution single user.


Laissez-moi un commentaire si cet article vous a été utile.

Bonne journée.

Nixman

Quelques commandes utiles pour serveurs Sun Solaris


Fonctionne sous: Sun Solaris


- Les serveurs SunFire V2xx (V210, V240, etc...), T1000 et T2000 (processeurs Niagara) possèdent une mémorisation du dernier état de l'alimentation électrique. Il faut cependant activer cette fonctionnalité, qui est bizarrement désactivée par défaut, avec la commande suivante:

/usr/platform/`uname -i`/sbin/scadm set sc_powerstatememory true 

... Sinon, votre serveur ne redémarrera pas automatiquement après une coupure de courant, ce qui est pour le moins fâcheux.

Note: Sur les serveurs SunFire T1000 et T2000 plus anciens (d'avant avril 2007), il n'est pas possible d'utiliser la commande scadm, et il faut passer par la console série, ou l'ALOM en Net Management, et taper la commande suivante: setsc sc_powerstatememory true (Merci à patrickm1 pour cette précision). La procédure d'activation de l'ALOM en NetMGMT est expliquée ici.


- Visualiser les paramètres hardware (température, ventilateurs, etc...)  et pannes matérielles éventuelles :

/usr/platform/sun4u/sbin/prtdiag -v

... Selon le modèle du serveur et le nombre de senseurs, vous pouvez monitorer un nombre de paramètres plus ou moins élevés.


Laissez-moi un commentaire si cet article vous a été utile.

Bonne journée.

Nixman

mercredi 30 avril 2008

Trouver le process ID UNIX d'une session Oracle


(If you're looking for the english version, it's here)
(Ceci est la traduction française de l'article précédent.)

Fonctionne sur: Solaris, Linux, AIX

Supposons que vous ayiez un processus Oracle qui ait généré un verrou sur votre base de données et n'arrivez pas à le tuer avec une simple commande ALTER SYSTEM KILL SESSION 'sid, serial#'

Il vous suffit alors d'effecuer la jointure suivante entre les tables V$SESSION et V$PROCESS d'Oracle, afin de retrouver le process ID système (spid) qu'il faudra tuer:

SELECT s.sid, s.serial#, s.username, s.osuser, p.spid, s.machine, p.terminal, s.program
FROM v$session s, v$process p
WHERE s.paddr = p.addr;


La colonne spid vous donne la valeur du process ID qu'il faudra tuer avec une commande shell kill -9 spid.

Et voilà!

Rem: Sur un serveur Windows, on utiliserait la commande suivante:
orakill $ORACLE_SID spid

Laissez-moi un commentaire si cet article vous a été utile.

Bien à vous

Nixman