vous êtes sur la bonne voie. sqlplus est la meilleure façon d'interagir avec la base de données lorsque vous êtes scripts shell, mais deux choses à noter:
- utiliser le paramètre « S » pour arrêter sqlplus d'imprimer toutes ses informations d'application
- à lire les données directement dans une variable, vous besoin d'un certain environnement sqlplus paramètres pour élaguer la sortie à juste ce que vous voulez
pour tout DBA qui apprennent le script shell pour les aider à gérer et autom mangé l'administration de la base de données Oracle, je recommande fortement le livre de Jon Emmons Oracle Shell Scripting. Il enseigne un bon cours d'intro de script shell, mais dans le contexte de tâches qui sont vraiment utiles et intéressantes pour les administrateurs de base de données. Une note finale: si vous faites quelque chose de plus qu'une simple tâche DBA, je recommande de ne pas utiliser de scripts shell, mais d'utiliser un langage de script qui prend en charge la base de données appropriée. Perl est une bonne option pour Oracle, car il est installé avec la base de données.
Here's an example d'un script pour Oracle fait à la fois bash et perl. A partir de la version shell, voici comment il lit une valeur spécifique à une variable shell:
alertlog=$(sqlplus -S \/ as sysdba 2> /dev/null <<EOF
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 80
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SELECT value
FROM v\$parameter
WHERE name = 'background_dump_dest';
EOF
)