Konekcija na bazu bez lozinke/šifre [How to connect to Oracle database without password]
Monday, 07.06.2010 – DejanA sada još jedna mala tajna iz kuhinje velikog majstora – spajanje na Oracle bazu bez zadavanja šifre iliti lozinke (u daljnjem tekstu – password 🙂 ).
Vjerujem da ste svi kad-tad imali potrebu da pokrenete neki batch job, zbog čega ste u toj batch datoteci morali koristiti password u plaintext formatu, pri čemu ste se brinuli da vam neko ne vidi password i spoji se na bazu sa lošim namjerama…
Ili vas muči što svaki programer mora znati password, da bi pristupio bazi?
Vjerovatno mislite kako je nemoguće spojiti se na bazu bez navođenja passworda pri spajanju na bazu?
Ta-daaaam! E pa moguće je!
Rješenje leži u Oracle Walletu.
Administrator Oracle baze mora za svakog korisnika kreirati Oracle Wallet i u njemu sačuvati korisničko ime i njegov password. Uz taj Wallet, na korisničkom kompjuteru se moraju još podesiti datoteke sqlnet.ora i tnsnames.ora, nakon čega taj korisnik može pristupiti bazi bez ukucavanja passworda – čak štaviše, korisnik ne mora niti znati password, da bi se spojio na bazu. Dakle, password je poznat samo administratoru Oracle baze, tako da nijedan drugi korisnik ili programer nema potrebu za passwordom.
Pogledajmo kako to izgleda na jednom primjeru…
Kreiranje Oracle Walleta
Recimo da imamo slijedeće okruženje:
– postoje 3 korisnika/programera, koji bazi pristupaju preko PL/SQL Developera, SQL*Loadera, DataPump-a ili neke druge korisničke aplikacije
– svaki korisnik ima instaliran Oracle Client na svom kompjuteru
– lokalni ORACLE_HOME za Client je C:\oracle\product\10.2.0\client
Za svakog korisnika se mora kreirati pojedinačni Oracle wallet.
cd \ mkdir wallets cd wallets mkdir korisnik1 korisnik2 korisnik3 REM kreiranje Walleta (unesite neki password za Wallet i potvrdite ga jos jednom) mkstore -wrl C:\wallets\korisnik1 -create REM korisnik1 je naziv DB Usera, a password1 je password od tog DB Usera: mkstore -wrl C:\wallets\korisnik1 -createCredential TNSstring korisnik1 password1 mkstore -wrl C:\wallets\korisnik2 -create mkstore -wrl C:\wallets\korisnik2 -createCredential TNSstring korisnik2 password2 mkstore -wrl C:\wallets\korisnik3 -create mkstore -wrl C:\wallets\korisnik3 -createCredential TNSstring korisnik3 password3
– pri čemu je TNSstring zapravo connection string za bazu u datoteci tnsnames.ora, npr:
RAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.150)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.151)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac) ) )
Nakon toga je potrebno kopirati tnsnames.ora i sqlnet.ora u pripadajuće direktorije:
copy %ORACLE_HOME%\network\admin\tnsnames.ora C:\wallets\korisnik1 copy %ORACLE_HOME%\network\admin\tnsnames.ora C:\wallets\korisnik2 copy %ORACLE_HOME%\network\admin\tnsnames.ora C:\wallets\korisnik3 copy %ORACLE_HOME%\network\admin\sqlnet.ora C:\wallets\korisnik1
Otvorite datoteku C:\wallets\korisnik1\sqlnet.ora i dodajte slijedeće podatke za Oracle Wallet:
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = C:\wallets\korisnik1) ) ) SQLNET.WALLET_OVERRIDE = TRUE
Snimite izmjene u toj datoteci i onda ju kopirajte za preostale korisnike:
copy C:\wallets\korisnik1\sqlnet.ora C:\wallets\korisnik2 copy C:\wallets\korisnik1\sqlnet.ora C:\wallets\korisnik3
Otvorite sqlnet.ora datoteke u tim direktorijima i podesite putanju za WALLET_LOCATION:
... (DIRECTORY = C:\wallets\korisnik2) ...
i
... (DIRECTORY = C:\wallets\korisnik3) ...
Korištenje Oracle Walleta – spajanje na bazu bez passworda
Za svakog korisnika i za svaku aplikaciju kreirajmo npr. na Desktopu potrebne .bat datoteke sa slijedećim sadržajem:
set ORACLE_HOME=C:\oracle\product\10.2.0\client set TNS_ADMIN=C:\wallets\korisnik1 C:\putanja\do\vase\aplikacije\aplikacija.exe userid=/@TNSstring
Tako npr. možete pokrenuti DataPump Export/Import bez unošenja plaintext passworda u neku batch datoteku ili pokrenuti SQL*Loader, TOAD, PL/SQL Developer i td., a da biste vidjeli kako to izgleda u praksi, navešću par primjera.
1. Ovako bi npr. izgledala .bat datoteka za korisnika korisnik1, ukoliko želi pokrenuti SQL*Loader bez unošenja passworda:
set ORACLE_HOME=C:\oracle\product\10.2.0\client set TNS_ADMIN=C:\wallets\korisnik1 sqlldr userid=/@RAC keyword=value keyword=value keyword=value ...
U ovom slučaju korisnik1 ne mora uopšte znati password da bi se putem SQL*Loadera spojio na bazu i obavio import podataka. Jednostavno klikne na .bat datoteku i gotovo.
2. Ovako bi npr. izgledala .bat datoteka za korisnika2, ukoliko želi pokrenuti DataPump Export/Import:
set ORACLE_HOME=C:\oracle\product\10.2.0\client set TNS_ADMIN=C:\wallets\korisnik2 set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 expdp userid=/@RAC dumpfile=TEST:korisnik2.dmp schemas=korisnik2 logfile=TEST:korisnik2.log status=60 job_name=exp_korisnik2
Napomena: korisnik2 mora imati sistemske privilegije EXPORT FULL DATABASE i IMPORT FULL DATABASE, da bi mogao koristiti sve opcije DataPumpa!
3. Ovako bi npr. izgledala .bat datoteka, ukoliko se programer želi putem TOAD-a ili PL/SQL Developera spojiti na bazu pod korisničkim imenom korisnik3, bez da mora znati password:
set ORACLE_HOME=C:\oracle\product\10.2.0\client set TNS_ADMIN=C:\wallets\korisnik3 cd "C:\Program Files (x86)\Quest Software\Toad for Oracle" start /MAX toad.exe -max -c /@RAC REM a za PLSQL Developer morate promijeniti putanju i plsqldev.exe pozvati ovako: REM start /MAX plsqldev.exe nosplash userid=/@RAC
To bi bilo to. Jest’ da ćete imati hrpu .bat datoteka na Desktopu, ali vjerujte mi da ćete biti mirniji, sigurniji i efikasniji u radu, kada ne morate stalno ukucavati password…
2 Responses to “Konekcija na bazu bez lozinke/šifre [How to connect to Oracle database without password]”
Da to i ja koristim no mislio sam na backup scripte koje su prije mene instalirane ali se svugdje pokazuju password, ja sa windowsom nisam bas na ti a sad me sef gnjavi da to trebamo promijeniti jer navodno cak i kad log dobijem preko maila vidi se password od sysa kako.Ja ti mogu poslati ako hoces te skripte ali ako moze preko maila.
Vjeruj mi akomi mozes pomoci bio bi ti do groba zahvalan, a ja cu u meduvremenu pokusati ipak dogovorti da mi predemo na RMAN. Molim te javi se ako moze castim s cevapima i dobrom rakijom.
Pozdrav.
By tihacp on Nov 23, 2011
O, ne, ne! 🙂
Postoji jedna stara izreka – “Daj nekome ribu i nahranices ga za jedan dan. Nauci nekog da peca, nahranices ga za citav zivot.”
Dakle, nema sanse da ti ja analiziram skripte i prepravim ih – moraces to ipak sam.
By Dejan on Nov 23, 2011