Jonny: v$tabelle mit Perl auslesen

Hallo,

ich habe ein kleines Problem. Auf einem unserer Server gibt es leider kein DBI Modul (auch nicht erwünscht) und ich muss aus einem Perl-Skript eine v$tabelle (Oracle) auslesen.

Hier ein Beispiel:

my @tmp=qx{sqlplus -s <<EOT
/ as sysdba
set head off feed off pagesize 0 linesize 100
select value from v$parameter where name='background_dump_dest';
EOT
};

Meine Fehlermeldung hierzu lautet:

select value from v where name='background_dump_dest'
                   *
ERROR at line 1:
ORA-00942: table or view does not exist

Hat jemand eine Idee, wie ich das Problem umgehen kann, ohne den Aufruf eines externen SQL-Skripts?

Für Hilfe wäre ich dankbar.

Mfg,
Jonny

  1. Hallo,

    ich habe ein kleines Problem. Auf einem unserer Server gibt es leider kein DBI Modul (auch nicht erwünscht) und ich muss aus einem Perl-Skript eine v$tabelle (Oracle) auslesen.

    was soll das sein v$tabelle?

    select value from v$parameter where name='background_dump_dest';

    Meine Fehlermeldung hierzu lautet:

    select value from v where name='background_dump_dest'

    *

    gibt es die tabelle/view namens v denn?

    ORA-00942: table or view does not exist

    gruss

    --
    no strict;
    no warnings;
    Zucker ist das, was dem Kaffee den schlechten Geschmack gibt, wenn man es nicht hineintut.
    1. Hallo Eternius,

      ich glaube du hast mein Problem überhaupt nicht verstanden :-)

      was soll das sein v$tabelle?

      V$-Tabellen sind Tabellen, die beim Hochfahren der Instanz mit Daten gefüllt und gepflegt werden. Dort stehen Daten, die beispielsweise ausgewertet werden können und wichtige Informationen über die Performance, Auslastung etc. - und noch vieles mehr - über die Datenbank vermitteln.

      select value from v where name='background_dump_dest'
                          *

      gibt es die tabelle/view namens v denn?

      ORA-00942: table or view does not exist

      Bitte schau dir nochmal mein SQL-Statement an. Ich versuche die Tabelle v$parameter zu selektieren, aber leider klappt das nicht, denn entweder meckert perl, dass die Variable $paramter nicht deklariert wurde und wenn ich ein Backslash einsetze (v$parameter), dann verschwindet alles nach dem v. Die Tabelle heisst aber allerdings so und viele weitere V$-Tabellen ebenfalls. Beispiele:
      v$sqlarea, v$lock, v$datafile ...

      Gruss,
      Jonny

  2. Hallo,

    probiers mal mit 2 backslahs in 'v$parameter '.

    Gruss

    Bernd

    1. Hallo Bernd,

      probiers mal mit 2 backslahs in 'v$parameter '.

      mit 3 Backslashs funktioniert es.

      Danke :-)

      Mfg,
      Jonny

  3. Hallo,

    my @tmp=qx{sqlplus -s <<EOT
    / as sysdba
    set head off feed off pagesize 0 linesize 100
    select value from v$parameter where name='background_dump_dest';
    EOT
    };

    Ich vermute mal, dass die Shell ihrerseits auch noch proviert $parameter zu ersetzen.
    Wenn dem so wäre dann sollten drei Backslashes das gewünschte Resultat bringen.

    Grüße
      Klaus

    1. Hallo Klaus,

      Wenn dem so wäre dann sollten drei Backslashes das gewünschte Resultat bringen.

      Ja, genau das war es. Es werden 3 Backslashs benötigt.

      Danke !!!

      Mfg,
      Jonny