EXPIRE в Oracle SQL — как управлять временем жизни сессий

🟢 EXPIRE в Oracle SQL. Введение

Ключевое слово EXPIRE в Oracle используется в различных контекстах, связанных с истечением срока действия:

  • Сессий пользователей

  • Паролей

  • Кэшированных записей

  • Данных в Materialized Views

Понимание того, как работает EXPIRE, помогает управлять безопасностью, производительностью и актуальностью данных в Oracle-среде.


🔤 Написание

EXPIRE применяется не как самостоятельная команда, а как часть других SQL- или DDL-операторов:

sql
CREATE PROFILE имя LIMIT PASSWORD_LIFE_TIME 30;
sql
ALTER MATERIALIZED VIEW имя REFRESH ON DEMAND START WITH ... NEXT ... WITH PRIMARY KEY USING DEFAULT LOCAL ROLLBACK SEGMENT DISABLE QUERY REWRITE;

🔄 Где используется EXPIRE

  • Управление временем жизни паролей

  • Установка автоматического истечения учётных данных

  • Контроль срока актуальности данных в Materialized View

  • Параметры EXPIRE_TIME для базовых соединений SQL*Net


🧪 10 Примеров использования EXPIRE

1️⃣ Истечение пароля через профиль

sql
CREATE PROFILE secure_users
LIMIT PASSWORD_LIFE_TIME 60;

Пароль истечёт через 60 дней.


2️⃣ Назначение профиля пользователю

sql
ALTER USER ivanov PROFILE secure_users;

3️⃣ Проверка даты истечения пароля

sql
SELECT username, expiry_date
FROM dba_users;

4️⃣ Установка EXPIRE_TIME в sqlnet.ora

ini
SQLNET.EXPIRE_TIME = 10

Проверяет активность соединения каждые 10 минут и завершает неактивные.


5️⃣ Истечение данных в Materialized View

sql
CREATE MATERIALIZED VIEW sales_summary
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH SYSDATE
NEXT SYSDATE + 1;

Обновление каждый день — предотвращает «просрочку».


6️⃣ FORCE EXPIRE для профиля

sql
ALTER PROFILE secure_users LIMIT PASSWORD_GRACE_TIME 0;

Сразу после срока жизни пароль истекает без периода «на продление».


7️⃣ Истечение записи через PL/SQL (логика по дате)

plsql
IF SYSDATE > record.expire_date THEN
mark_as_expired(record.id);
END IF;

8️⃣ Обновление Materialized View вручную

sql
EXEC DBMS_MVIEW.REFRESH('sales_summary');

Используется, если данные «устарели».


9️⃣ Удаление просроченных записей

sql
DELETE FROM temp_sessions
WHERE expire_at < SYSDATE;

🔟 Контроль безопасности — блокировка по EXPIRE

sql
SELECT username, account_status
FROM dba_users
WHERE account_status LIKE '%EXPIRED%';

🧩 Заключение

Хотя EXPIRE — не самостоятельный SQL-оператор, он играет ключевую роль в управлении жизненным циклом данных и безопасности. Он применяется через параметры, профили, политики и логику в SQL*Net и PL/SQL.

💡 Запомни:

  • Используется в профилях пользователей для контроля паролей

  • Настраивается в sqlnet.ora для сессий

  • Влияет на Materialized Views и временные таблицы

  • Хорошая практика — регулярно очищать и обновлять «просроченные» данные


🔜 Следующая статья:

EXIT в Oracle SQL — как выйти из цикла в PL/SQL по условию


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии