Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przekazywanie zmiennej user,pass,sid w komendzie sqlplus

Nie powiedziałeś, co się właściwie dzieje, ale domyślam się, że nie jesteś proszony o podanie danych uwierzytelniających i może nie można znaleźć sqlplus . Na pudełku Red Hat to działa:

#!/bin/bash
echo Please enter an Oracle Username:
read USERNAME
echo "Please enter the Oracle Username's Password:"
read -s PASS
SID=XE
conn_str=$USERNAME/[email protected]$SID

ssh [email protected] << EOF
# set these for your specific environment
ORACLE_HOME=<path to ORACLE_HOME>
PATH=$PATH:$ORACLE_HOME/bin # or without .../bin depending on client
TNS_ADMIN=<path to tnsnames.ora directory, if not default>

sqlplus -s /nolog
connect $conn_str
select * FROM user_tables;
exit
EOF

Jest to zbieranie wartości od użytkownika na komputerze lokalnym, aby uniknąć problemu „Pseudoterminal nie zostanie przydzielony, ponieważ stdin nie jest terminalem”.

Następnie konfiguruje środowisko Oracle raz na zdalnym serwerze — to, co należy ustawić, zależy od używanego klienta (szczególnie, czy używasz klienta natychmiastowego, ale jeśli łączysz się jako oracle wydaje się to mało prawdopodobne i prawdopodobnie możesz uruchomić oraenv ).

Zmodyfikowałem go również, aby uruchamiał SQL*Plus z /nolog a następnie połącz po uruchomieniu, więc poświadczenia nie są ujawniane w ps wyjście. I przełączyłem się ze starych kart do bardziej popularnych tabeli_użytkowników .

Zagnieżdżeni heredocy działają, ale nie są potrzebni; polecenia SQL są już wprowadzane we właściwym miejscu i będą widziane przez SQL*Plus, a nie przez zdalną powłokę.

Oczywiście, ponieważ nie wiem, jaki błąd faktycznie widziałeś, jest to w dużej mierze spekulacja. Prawdopodobnie prościej byłoby mieć klienta zainstalowanego lokalnie i używać połączenia SQL*Net zamiast SSH, ale mogą istnieć ograniczenia zapory ogniowej, o których nie wiemy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle sql (brak lewego nawiasu)

  2. jak wypełnić bazę danych za pomocą procedur

  3. Jak sprawdzić, czy baza danych Oracle obsługuje autoinkrementację?

  4. SQL - Jak wybrać wiersz mający kolumnę z maksymalną wartością w Oracle?

  5. SQLPlus Błąd AUTO_INCREMENT