Sabtu, 09 Agustus 2008

Login ke Database dengan User Lain

Login ke Database dengan User Lain

Sebagai DBA, kadang kita ingin login ke database dengan user lain sementara kita tidak tahu passwordnya. Contoh, kita diminta untuk mengubah password dari db link di schema TEST. Nama db link tersebut adalah TSREPLINK. Namun sayangnya, orang yang tahu password untuk user TEST sedang tidak di kantor, di telpon pun tidak diangkat. Padahal untuk mengubah db link harus dilakukan oleh user (schema) yang punya db link tersebut. Gimana kah caranya?

Misalkan definisi database link tersebut adalah berikut ini:

SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADPASS using 'TSREP';Sekarang password user ROHMAD di database TSREP diganti menjadi ROHMADNEW. Mau gak mau kita khan mesti me-recreate database link tersebut dengan password yang baru.

Tapi kalau tidak tahu password user TEST, kita khan tidak bisa connect pakai user TEST tersebut. Mau melakukannya pakai user SYSTEM, ya gak bisa; kalau gak percaya, coba aja:

SQL> conn system
SQL> drop database link TEST.TSREPLINK;
ORA-02024: database link not foundMenghapus tabel atau index bisa seperti itu, sebutkan nama owner dan nama objectnya (tabel atau index). Tapi menghapus db link tidak seperti itu, harus pakai user (schema) yang punya. Harusnya begini caranya:

SQL> connect TEST
SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';BEGINI CARANYA
Yang perlu kita lakukan adalah mengubah password user TEST. Kemudian buka session baru pakai user TEST dengan password yang baru. Kemudian kembalikan lagi password yang diubah tadi itu.

Lihat password user TEST (ini adalah password yang telah di-encrypt oleh Oracle; dan dengan cara apapun kita tidak bisa men-decrypt-nya). Jalankan query berikut, catat hasilnya. SQL> conn SYSTEM
SQL> select PASSWORD from dba_users
where username='TEST';
PASSWORD
------------------------------
7A0F2B316C212D67Setelah itu, ubah password user TEST SQL> alter user TEST identified by TEST_TEMP_PASS;Catatan: walaupun password diganti, session (dari user TEST) tetep establish, tidak terpengaruh apa-apa. Hanya saja kita tidak bisa login pakai user TEST dengan password yang lama. Oleh karena itu, segera buru-buru ke langkah selanjutnya.

Buka sesssion baru dengan dengan user TEST dan password yang baru SQL> conn TEST/TEST_TEMP_PASSKembali ke session SYSTEM. Kembalikan password user TEST ke password yang lama. SQL> alter user TEST
identified by values '7A0F2B316C212D67';Walaupun password diubah lagi (dikembalikan ke semula), session yang connect dengan password baru tersebut masih establish dan bisa melakukan aktifitas biasa.

Sekarang dengan session user TEST yang masih establish itu, tinggal kira recreate database link tersebut:

SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';

Tags: Database, login, oracle,

Tidak ada komentar: