Mereka sangat berbeda, ya.
Di Oracle, hak istimewa pada tabel dapat diberikan baik secara langsung kepada pengguna (dalam hal ini hak tersebut akan muncul di ALL_TAB_PRIVS
) atau hak istimewa dapat diberikan ke peran (terlihat di ROLE_TAB_PRIVS
) dan peran tersebut dapat diberikan kepada pengguna (terlihat di USER_ROLE_PRIVS
). Kueri pertama akan menunjukkan kepada Anda pengguna yang memiliki hibah langsung di atas meja. Kueri kedua akan menunjukkan kepada Anda pengguna yang telah diberikan peran yang telah diberikan akses ke tabel (perhatikan bahwa dalam kedua kasus Anda benar-benar harus menentukan OWNER
selain nama tabel). Tidak ada yang akan menunjukkan kepada Anda informasi tentang pemberian yang telah dilakukan melalui beberapa tingkat peran bersarang (yaitu Pengguna A telah diberikan Peran 1, Peran 1 telah diberikan Peran 2, Peran 2 telah diberikan akses ke tabel). Hibah yang dibuat melalui peran juga bisa menjadi sedikit rumit karena ada peran default dan non-default dan peran dan peran yang dilindungi kata sandi dapat diaktifkan dan dinonaktifkan dalam satu sesi.
Secara umum, saya sarankan untuk melihat skrip yang tersedia di situs Pete Finnigan jika Anda ingin memiliki sesuatu yang mencakup semua kemungkinan kasus. Dalam hal ini, Anda mungkin ingin menggunakan skrip who_can_access miliknya. untuk menentukan pengguna mana yang dapat mengakses tabel tertentu.