Изменение графика работы пользователя
Спецификация
::=
::=
::=
::=
::=
::=
::=
::=
::=
Синтаксические правила
-
< График по времени >
задается по Гринвичу и округляется в меньшую сторону до ближайшего получасового интервала. -
Значение '00:00', заданное в качестве конца диапазона времени, рассматривается как окончание суток.
Общие правила
-
Конструкция
ENABLE LOGIN
разрешает,DISABLE LOGIN
запрещает пользователю доступ к БД в указанные периоды времени. -
Опция
ALWAYS
устанавливает (ENABLE LOGIN
) или запрещает (DISABLE LOGIN
) ежедневный круглосуточный период доступа к БД в течение всего времени её существования (при создании пользователя задаётсяENABLE LOGIN ALWAYS
). -
Если опция
FROM < время начала работы >
не задана, по умолчанию используется начало суток. -
Если опция
TO < время окончания работы >
не задана, по умолчанию используется конец суток. -
Если опция
FOR < дни работы >
не задана, по умолчанию используется все дни недели.
Примеры
1) alter user GUEST enable login for 'MON','WED','SUN' since '16.06.2010' until '20.06.2010' from '12:50' to '16:45'; 2) Установка доступности к БД сотрудника GUEST на время испытательного срока c 01.04.2018 по 01.06.2018 alter user GUEST enable login since '01.04.2018'; alter user GUEST enable login until '01.06.2018'; Посмотреть период и длительность испытательного срока select rowid from $$$usr where $$$s34='GUEST'; 44 select cast getraw($$$s35,88,16) as date, cast getraw($$$s35,104,16) as date from $$$usr where rowid=44; 01.04.2018:00:00:00 01.06.2018:00:00:00 3) Посмотреть маску запрещенных для доступа дней недели alter user U1 disable login for 'SAT','SUN'; Битовая маска select 'Доступ запрещен: ' || (case when (GetByte($$$S35,120) & 0x1) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x2) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x4) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x8) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x10) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x20) = 0 then '0' else '1' end) || (case when (GetByte($$$S35,120) & 0x40) = 0 then '0' else '1' end) from LINTER_SYSTEM_USER.$$$USR where $$$S32=0 and $$$S34 like 'GUEST'; Доступ запрещен: 0000011 4) Посмотреть ограничение доступа к БД по дням недели create or replace user guest identified by '12345678'; alter user GUEST DISABLE LOGIN FROM '01:45' TO '02:15' for 'MON', 'FRI'; select case d when 0 then 'MON' when 1 then 'TUE' when 2 then 'WED' when 3 then 'THU' when 4 then 'FRI' when 5 then 'SAT' when 6 then 'SUN' end, /* день */ to_char(cast (cast (to_date ('30', 'MI') as decimal) * sh as date), 'HH:MI') /* время начала */ || '-' || to_char(to_date('00:30', 'HH:MI') + cast (cast (to_date ('30', 'MI') as decimal) * sh as date), 'HH:MI') /* время окончания */ from (select level-1 d from $$$usr start with rowid=1 connect by level < 7), /* дни */ (select level-1 sh from $$$usr start with rowid=1 connect by level < 48), /* получасовые промежутки */ LINTER_SYSTEM_USER.$$$USR where $$$S32=0 and $$$S34 like 'GUEST' and ((GetByte($$$S35,18+d*6+sh/8) & cast (power(2,mod(sh,8)) as int)) < > 0); MON 01:30-02:00 FRI 01:30-02:00