sql >> Database teknologi >  >> RDS >> Oracle

Sender variabel bruger, pass, side i sqlplus-komman

Du har ikke sagt, hvad der rent faktisk sker, men jeg gætter på, at du ikke bliver bedt om legitimationsoplysningerne, og at den måske ikke kan finde sqlplus . På en Red Hat-boks virker dette:

#!/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

Dette indsamler værdierne fra brugeren på den lokale maskine for at undgå 'Pseudo-terminalen vil ikke blive allokeret, fordi stdin ikke er et terminal'-problem.

Det er derefter at konfigurere Oracle-miljøet én gang på fjernserveren - hvad du skal indstille afhænger af, hvilken klient du bruger (især om du bruger instant-klienten, men hvis du opretter forbindelse som oracle det virker usandsynligt, og du kan sikkert køre oraenv ).

Jeg har også tilpasset det til at køre SQL*Plus med /nolog og derefter tilslut når den kører, så legitimationsoplysningerne ikke vises i ps produktion. Og jeg har skiftet fra de gamle faner til de mere almindelige brugertabeller .

De indlejrede heredocs virker, men er ikke nødvendige; SQL-kommandoerne bliver allerede indtastet på det rigtige sted og vil blive set af SQL*Plus i stedet for fjernskallen.

Selvfølgelig, da jeg ikke ved, hvilken fejl du rent faktisk så, er dette i høj grad spekulation. Det ville nok være nemmere at have klienten installeret lokalt og bruge en SQL*Net-forbindelse frem for SSH, men der kan være firewall-restriktioner, som vi ikke kender til.



  1. Oracle SQL usigneret heltal

  2. Håndtering af endnu en PostgreSQL Commitfest

  3. node.js oracledb indsætter eller opdaterer ikke

  4. Sådan fjerner du dublerede kolonner fra join i SQL