Pelo menos um problema é a sua sintaxe:
sqlplus -S user/[email protected] <<EOF
SELECT INSTANCE_NUMBER, HOST_NAME, STARTUP_TIME, STATUS, DATABASE_STATUS, BLOCKED
FROM GV$INSTANCE;
EOF
Isso é chamado de "aqui-documento" e variáveis do shell (nomes prefixados com $
) são normalmente expandidos. Para impedir a expansão, citar o primeiro uso de EOF
, por exemplo,
sqlplus -S user/[email protected] <<"EOF"
SELECT INSTANCE_NUMBER, HOST_NAME, STARTUP_TIME, STATUS, DATABASE_STATUS, BLOCKED
FROM GV$INSTANCE;
EOF
Outro problema pode ser o caractere especial no nome da tabela. Você pode citar isso também (dizendo ao Oracle para ignorar algumas das regras de sintaxe que ele usa para SQL). A melhoria ficaria assim:
sqlplus -S user/[email protected] <<"EOF"
SELECT INSTANCE_NUMBER, HOST_NAME, STARTUP_TIME, STATUS, DATABASE_STATUS, BLOCKED
FROM "GV$INSTANCE";
EOF
Leitura adicional: