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 found
Menghapus 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 ------------------------------ 7A0F2B316C212D67
- Setelah 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_PASS
- Kembali 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';
Hallo, wah ternyata jagoan SQL yah,
gimana bisnisnya tambah rame kan mas.
Sip Pak Dhe. Mudah-mudahan lancar. Masih terus belajar nih. Untungnya ada blognya Pak Dhe, jadi bisa belajar terus 🙂
mas kok saya gak bisa login padahal sudah pake yang username system ma pass manager trs klo hostring kan nama database nya kan.gimana dongggggggggggggggg
Saya sudah menggunakn cara itu (from sysdba)
akan tetapi, isi dari kolom password bukan berupa encrypt, hanya kolom kosong saja yg di tampikan pada kolom password..
Itu gmna ya cara liat password encrypt tsb..
Trims,.