mardi 6 octobre 2009

error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

Je souhaite exécuter une requête SQL dans une base de données Oracle, en utilisant sqlplus. Ma requête est dans un script ksh que je lance en crontab toutes les 10 minutes. Mon script ne fonctionne pas, pourquoi ?

J'ai cette erreur :
error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

C'est une erreur classique, facile à contourner. En effet, dans le script ksh, il faut redéfinir toutes les variables nécessaires pour Oracle, à savoir :
- ORACLE_HOME
- ORACLE_SID
- LD_LIBRARY_PATH
- ORACLE_USER
- ORA_PASSWD
- NLS_LANG
- DATE_FORMAT
- PATH
- etc...

Puis vous devez intégrer la ligne suivante dans votre script :
export PATH NLS_LANG  ORA_USER ORACLE_SID ORA_PASSWD LD_LIBRARY_PATH

Posté par fatihaelh - - Oracle - Commentaires [2] - Rétroliens [0] - Permalien [#]


mardi 29 septembre 2009

Informations sur les tablespaces Oracle en un script

La question du jour est la suivante : comment savoir tout ce qu'il y a à savoir sur les tablespaces d'une base de données Oracle ?

Si comme moi, vous êtes plus MySQL qu'Oracle, plus Linux que Windows, ce script SQL est pour vous !

Vous devez d'abord vous connecter à la base de données Oracle avec sqlplus puis à lancer la requête suivante :

set echo off
set feedback off
set verify off
set linesize 512

set term off
COLUMN block_size NOPRINT new_value block_size
SELECT
   value block_size
FROM
   v$parameter
WHERE
   name='db_block_size';

set term on

prompt ------------------------------
prompt - Infos sur les tablespaces --
prompt ------------------------------

col Tablespace_name Heading 'Tablespace'
col Megs_Alloc      Heading 'Mo alloués'
col Megs_Free       Heading 'Mo libres'
col Megs_Used       Heading 'Mo utilisés'
col Pct_Free        Heading 'Pct Free'
col Pct_Used        Heading 'Pct Used'
col Init_Ext        Heading 'Init Ext'
col Next_Ext        Heading 'Next Ext'
col Min_Ext         Heading 'Min Ext'
col Max_Ext         Heading 'Max Ext'
col Num_Segs        Heading 'Nbre Segments'
col Num_Exts        Heading 'Nbre Extents'


SELECT
   c.tablespace_name,
   round(a.bytes/1048576) Megs_Alloc,
   round(b.bytes/1048576) Megs_Free,
   round((a.bytes-b.bytes)/1048576) Megs_Used,
   round(b.bytes/a.bytes * 100) Pct_Free,
   round((a.bytes-b.bytes)/a.bytes * 100) Pct_Used,
   round(c.initial_extent/1048576) Init_Ext,
   round(c.next_extent/1048576) Next_Ext,
   round(a.minbytes/1048576) Min_Ext,
   round(a.maxbytes/1048576) Max_Ext,
   nvl(d.num_segs,0) Num_segs,
   nvl(d.num_exts,0) Num_Exts
FROM
   ( SELECT
        tablespace_name,
        sum(a.bytes) bytes,
        min(a.bytes) minbytes,
        max(a.bytes) maxbytes
     FROM
        sys.dba_data_files a
     GROUP BY tablespace_name) a,
   ( SELECT
        a.tablespace_name,
        nvl(sum(b.bytes),0) bytes
     FROM
        sys.dba_data_files a,
        sys.dba_free_space b
     WHERE
        a.tablespace_name = b.tablespace_name (+)
     AND
        a.file_id = b.file_id (+)
     GROUP BY
        a.tablespace_name) b,
    sys.dba_tablespaces c,
    ( SELECT
        tablespace_name,
        count(distinct segment_name) num_segs,
        count(extent_id) num_exts
      FROM
        sys.dba_extents
      GROUP BY
      tablespace_name) d
WHERE
   a.tablespace_name = b.tablespace_name(+)
AND
   a.tablespace_name = c.tablespace_name
AND
   a.tablespace_name = d.tablespace_name(+)
ORDER BY
   c.tablespace_name;

Pour avoir quelque chose de plus propre, vous pouvez récupérer le résultat de la requête dans un fichier. Il vous suffit d'ajouter la commande :
spool votreFichier avant la requête SQL
puis :
spool off
exit

après la requête SQL


Merci au site developpez.com.

Posté par fatihaelh - - Oracle - Commentaires [2] - Rétroliens [0] - Permalien [#]
« Accueil  1