Основы работы с ORACLE для начинающих
"Пользователь пользователю рознь" — я всегда это говорю, когда меня спрашивают:
Собственно, вас какие именно пользователи интересуют?
Есть те, которые работают — так сказать, трудятся в поле лица. А есть "мёртвые души" — те, кто просто числится.
Давайте разбираться.
Начнём с тружеников.
Если речь идёт о получении списка работающих пользователей, то надо смотреть список текущих подключений к базе. Делается это под администратором:
select sid , serial# , username , status , type , to_char( logon_time, 'dd.mm hh24:mi') logon_time , osuser , machine , program from v$session ;
Запрос выводит список текущих сессий. Имена работающих пользователей будут выведены в колонке "USERNAME", время подключения в "LOGON_TIME".
Следует заметить, что:
Есть, так называемые, серверные процессы, которые тоже могут инициировать коннект к базе. Чтобы отличить пользовательские сессии от служебных, следует смотреть на значение в колонке "TYPE".
Типичная ситуация, когда пользователь, усевшись утром в рабочее кресло, запускает приложение, подключается к базе и затем сворачивает окошко на панель задач, чтобы развернуть его только вечером ради клика по крестику в правом верхнем углу. Весь день в базе будет висеть его сессия (вроде работает), но по факту активной работы в этой сессии не было.
Колонка "STATUS" показывает, кто работает именно в данный момент. Значение для таких сессий будет 'ACTIVE'. И надо понимать, что выполнение обычного запроса происходит быстро, как мимолётное мгновение. Хорошо видны только долгоиграющие запросы. Выполните запрос подряд несколько раз — может, что и заметите.
Иногда, смотря на список сессий, у вас может появиться сильное и непреодолимое желание кое-что сделать — не сдерживайте себя. Вот команда для отключения:
ALTER SYSTEM KILL SESSION 'a, b';
Значение "а" берём из колонки "SID", значение для "b" из "SERIAL#".
Конечно, команду надо выполнять с правами администратора.
Внимание! Удаляйте только пользовательские сессии.
Теперь разберёмся со списочным составом пользователей в базе.
Делается это тоже просто. Вводим следующий запрос:
select username , account_status , lock_date , default_tablespace , temporary_tablespace from dba_users order by username;
Как пополнить этот список новыми членами и как удалить неугодных пользователей, я рассказывал в этом посте —
Как пользователи делают других пользователей
Практикуйтесь.
Алексей.
P.S. И не забывайте про команду desc в SQL*Plus. В v$session и dba_users есть много интересных колонок.
Знаете что? Никуда не годится под пользователем SYSTEM выполнять упражнения из моего курса. Честно говоря, работать под ним тоже надо поменьше. Лучше создайте в базе ещё одного пользователя. Для этого проделайте следующее: Подключитесь к базе под пользователем SYSTEM.
Долго не мог понять, почему люди не любят пользоваться SQL*Plus. Оказывается: интерфейс убогий и бестолковый. Словом, не графический – мышкой ткнуть не куда (значит интуитивно не понятный). Мда.... ..редко встретишь кодера, умеющего мышкой воять SELECT’ы.
Умеете делать резервную копию оракловой базы? Вопрос далеко-далеко не праздный (если вы уже знаете, как делать копию, то, наверное, догадываетесь, о чём пойдёт речь, правильно — о времени). Тема резервного копирования для администраторов оракла — одна из ключевых.