21 апр. 2008 г.

Управление пользователями в SQLDeveloper

Неоднократно замечал, что некоторые считают, что в SQLDeveloper нельзя управлять пользователями и их привилегиям. На самом деле это не так!
Во-первых есть встренная форма для создания и редактирования пользователей, до которой можно добраться вызвав контекстное меню на узле дерева Other Users и выбрав Create user. Или в этой же ветке выбрать пользователя и в контестном меню нажать Edit user.
Хотя прямо скажу - я не любитель расставлять галочки. Но может быть кому-то так удобней. Во всяком случае из этой формы можно почерпнуть DDL скрипт на создание пользователя. Вот как это выглядит:


Во-вторых на закладке Reports среди среди прочего есть несколько отчетов по пользователям, хотя меня они тоже не особо впечатлили:


Ну и последнее, ради чего и затевался пост, это возможноть создавать собственные довольно продвинутые расширения для SQLDeveloper. Причем создавать можно и формы, наподобие той, которая упоминалась в первом пункте, и отчеты с дополнительной функциональностью, как например отчет по текущим сессиям с возможностью включения трассировки и kill session (пункт меню Tools -> Monitor Sessions)

Я для себя создал такой отчет по привилегиям пользователей, который включает в себя основной отчет - список пользователей и их аттрибуты и четыре подчиненных отчета:
1. Роли выбранного пользователя
2. Объектные привилегии
3. Системные привилегии
4. DDL скрипт на создание пользователя
Причем привилегии и роли отображаются как выданные напрямую непосредственно пользователю, так и полученные пользователем через другую роль.

В основном отчете добавлено 2 дополнительных пункта меню:
1. Clone user - для создания нового пользователя с точно таким же набором привилегий, как и выделенный пользователь.
2. Drop user - для удаления пользователя.
Скачать можно с OTN. Вот прямой линк на xml. Установка проста: сохранить xml у себя. На папке с отчетами в SQLDeveloper кликнуть на пункт контекстного меню Import, выбрать сохраненный файл и готово.
Вот сие творение:


Комментариев нет: