<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTrigger%2FDatabase_Level_Trigger</id>
		<title>Oracle PL/SQL Tutorial/Trigger/Database Level Trigger - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTrigger%2FDatabase_Level_Trigger"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Database_Level_Trigger&amp;action=history"/>
		<updated>2026-04-06T20:37:22Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Database_Level_Trigger&amp;diff=3540&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Database_Level_Trigger&amp;diff=3540&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Database_Level_Trigger&amp;diff=3541&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Database_Level_Trigger&amp;diff=3541&amp;oldid=prev"/>
				<updated>2010-05-26T10:06:37Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Database level trigger: AFTER STARTUP ON DATABASE==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE uptime_log (&lt;br /&gt;
  2      database_name       VARCHAR2(30),&lt;br /&gt;
  3      event_name          VARCHAR2(20),&lt;br /&gt;
  4      event_time          DATE,&lt;br /&gt;
  5      triggered_by_user   VARCHAR2(30)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER log_startup&lt;br /&gt;
  2  AFTER STARTUP ON DATABASE&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4      INSERT INTO uptime_log&lt;br /&gt;
  5          (database_name,&lt;br /&gt;
  6           event_name,&lt;br /&gt;
  7           event_time,&lt;br /&gt;
  8           triggered_by_user)&lt;br /&gt;
  9          VALUES (sys.database_name,&lt;br /&gt;
 10                  sys.sysevent,&lt;br /&gt;
 11                  sysdate,&lt;br /&gt;
 12                  sys.login_user);&lt;br /&gt;
 13      COMMIT;&lt;br /&gt;
 14  END;&lt;br /&gt;
 15  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table uptime_log;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Database level trigger: BEFORE SHUTDOWN ON DATABASE==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE uptime_log (&lt;br /&gt;
  2      database_name       VARCHAR2(30),&lt;br /&gt;
  3      event_name          VARCHAR2(20),&lt;br /&gt;
  4      event_time          DATE,&lt;br /&gt;
  5      triggered_by_user   VARCHAR2(30)&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER log_shutdown&lt;br /&gt;
  2  BEFORE SHUTDOWN ON DATABASE&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4      INSERT INTO uptime_log&lt;br /&gt;
  5          (database_name,&lt;br /&gt;
  6           event_name,&lt;br /&gt;
  7           event_time,&lt;br /&gt;
  8           triggered_by_user)&lt;br /&gt;
  9          VALUES (sys.database_name,&lt;br /&gt;
 10                  sys.sysevent,&lt;br /&gt;
 11                  sysdate,&lt;br /&gt;
 12                  sys.login_user);&lt;br /&gt;
 13      COMMIT;&lt;br /&gt;
 14  END;&lt;br /&gt;
 15  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table uptime_log;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Database logoff trigger==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE session_logon_statistics&lt;br /&gt;
  2  (user_logged VARCHAR2(30),&lt;br /&gt;
  3  start_time   DATE,&lt;br /&gt;
  4  end_time     DATE);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER logoff_log_trigger&lt;br /&gt;
  2  BEFORE LOGOFF&lt;br /&gt;
  3  ON DATABASE&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     UPDATE session_logon_statistics&lt;br /&gt;
  6     SET    end_time    = SYSDATE&lt;br /&gt;
  7     WHERE  user_logged = USER&lt;br /&gt;
  8     AND    end_time IS NULL;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT user_logged,&lt;br /&gt;
  2         TO_CHAR(start_time, &amp;quot;MM/DD/YYYY HH24:MI:SS&amp;quot;) &amp;quot;START TIME&amp;quot;,&lt;br /&gt;
  3         TO_CHAR(end_time, &amp;quot;MM/DD/YYYY HH24:MI:SS&amp;quot;) &amp;quot;END TIME&amp;quot;&lt;br /&gt;
  4  FROM   session_logon_statistics&lt;br /&gt;
  5  where  rownum &amp;lt; 50&lt;br /&gt;
  6  order by user_logged, start_time;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop trigger logoff_log_trigger;&lt;br /&gt;
Trigger dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table session_logon_statistics;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Database logon trigger==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE session_logon_statistics&lt;br /&gt;
  2  (user_logged VARCHAR2(30),&lt;br /&gt;
  3  start_time   DATE,&lt;br /&gt;
  4  end_time     DATE);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER logon_log_trigger&lt;br /&gt;
  2  AFTER LOGON&lt;br /&gt;
  3  ON DATABASE&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     INSERT INTO session_logon_statistics&lt;br /&gt;
  6     (user_logged, start_time)&lt;br /&gt;
  7     VALUES&lt;br /&gt;
  8     (USER, SYSDATE);&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT user_logged,&lt;br /&gt;
  2         TO_CHAR(start_time, &amp;quot;MM/DD/YYYY HH24:MI:SS&amp;quot;) &amp;quot;START TIME&amp;quot;,&lt;br /&gt;
  3         TO_CHAR(end_time, &amp;quot;MM/DD/YYYY HH24:MI:SS&amp;quot;) &amp;quot;END TIME&amp;quot;&lt;br /&gt;
  4  FROM   session_logon_statistics&lt;br /&gt;
  5  where   rownum &amp;lt; 50&lt;br /&gt;
  6  order by user_logged, start_time;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop trigger logon_log_trigger;&lt;br /&gt;
Trigger dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table session_logon_statistics;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== New Database triggers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER On_Logon&lt;br /&gt;
  2  AFTER LOGON&lt;br /&gt;
  3  ON SCHEMA&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    DBMS_UTILITY.ANALYZE_SCHEMA(sys.login_user,&amp;quot;ESTIMATE&amp;quot;);&lt;br /&gt;
  6  END;&lt;br /&gt;
  7  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop trigger On_Logon;&lt;br /&gt;
Trigger dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Save information about all errors in an after-servererror on database==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table userLog&lt;br /&gt;
  2  (error_date date,&lt;br /&gt;
  3   username varchar2(30),&lt;br /&gt;
  4   error_msg varchar2(2000),&lt;br /&gt;
  5   error_sql varchar2(2000));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger log_errors after servererror on database&lt;br /&gt;
  2  declare&lt;br /&gt;
  3     sql_text ora_name_list_t;&lt;br /&gt;
  4     msg varchar2(2000) := null;&lt;br /&gt;
  5     stmt varchar2(2000):= null;&lt;br /&gt;
  6  begin&lt;br /&gt;
  7     for i in 1 .. ora_server_error_depth loop&lt;br /&gt;
  8        msg := msg||ora_server_error_msg(i);&lt;br /&gt;
  9     end loop;&lt;br /&gt;
 10     for i in 1..ora_sql_txt(sql_text) loop&lt;br /&gt;
 11        stmt := stmt||sql_text(i);&lt;br /&gt;
 12     end loop;&lt;br /&gt;
 13     insert into userLog(error_date,username,error_msg,error_sql)values (sysdate,ora_login_user,msg,stmt);&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table userLog;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>