Exécution du script oracle en tant qu’utilisateur Oracle à partir d’un script shell exécuté en tant que root

J’ai un script shell qui s’exécute en tant que root. Je souhaite que le script passe en mode utilisateur Oracle, exécute sqlplus et exécute des fichiers .sql . J’essaie de suivre:

 su - oracle <&1 sqlplus $user/$password << -EOF2 @oracle.sql; @quartz.sql; EOF2 EOF1 

Tout d’abord je reçois stty: standard input: Inappropriate ioctl for device que signifie-t-il?

Deuxièmement, quelqu’un peut-il m’expliquer comment la redirection (devrait) fonctionner dans ce cas?

Merci

Utilisation:

 if [ "$(id -un)" -eq "root" ]; then exec su - oracle -c $0 fi sqlplus < 

Si votre script prend potentiellement des arguments, la solution sera différente.

Qu'est-ce que cela fait vérifier si l'utilisateur en cours d'exécution est actuellement root. Si c'est le cas, il ré-exécute le script ( $0 ) en tant qu'utilisateur oracle place.

Mais BTW, pourquoi le script s'exécute-t-il en tant que root en premier lieu?

su – oracle -c “echo” sélectionnez 1 du double, sélectionnez 2 du double; ‘| sqlpus / comme sysdba ”

Si contient ‘en utilisant su – oracle – c “echo \”, sélectionnez 1 du double; sélectionnez 2 du double; \ “| sqlpus / comme sysdba”