<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FSystem_Packages%2Fdbms_utility</id>
		<title>Oracle PL/SQL/System Packages/dbms utility - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FSystem_Packages%2Fdbms_utility"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/dbms_utility&amp;action=history"/>
		<updated>2026-05-24T21:42:52Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/dbms_utility&amp;diff=1298&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/dbms_utility&amp;diff=1298&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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://www.sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/dbms_utility&amp;diff=1299&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/System_Packages/dbms_utility&amp;diff=1299&amp;oldid=prev"/>
				<updated>2010-05-26T09:55:27Z</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;==Assign dbms_utility.get_time to integer variable==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure num_test_as_integer is&lt;br /&gt;
  2   x integer;&lt;br /&gt;
  3   t number := dbms_utility.get_time;&lt;br /&gt;
  4   begin&lt;br /&gt;
  5       for i in 1 .. 1000 loop&lt;br /&gt;
  6           x := i;&lt;br /&gt;
  7       end loop;&lt;br /&gt;
  8       dbms_output.put_line((dbms_utility.get_time-t)||&amp;quot;cs&amp;quot;);&lt;br /&gt;
  9   end;&lt;br /&gt;
 10  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Call dbms_utility.get_time twice to time a statement in PL SQL==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t ( x int );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2          l_start number default dbms_utility.get_time;&lt;br /&gt;
  3  begin&lt;br /&gt;
  4          for i in 1 .. 1000&lt;br /&gt;
  5          loop&lt;br /&gt;
  6                  insert into t values ( 1 );&lt;br /&gt;
  7          end loop;&lt;br /&gt;
  8          commit;&lt;br /&gt;
  9          dbms_output.put_line( dbms_utility.get_time-l_start || &amp;quot; hsecs&amp;quot; );&lt;br /&gt;
 10  end;&lt;br /&gt;
 11  /&lt;br /&gt;
21 hsecs&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DBMS_UTILITY.analyze_schema==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE analyze_oem&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     CURSOR curs_get_hour IS SELECT TO_CHAR (SYSDATE, &amp;quot;HH24&amp;quot;) FROM dual;&lt;br /&gt;
  4     v_current_hour NUMBER (2);&lt;br /&gt;
  5     v_method_opt VARCHAR2 (15);&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7     OPEN curs_get_hour;&lt;br /&gt;
  8     FETCH curs_get_hour INTO v_current_hour;&lt;br /&gt;
  9     CLOSE curs_get_hour;&lt;br /&gt;
 10&lt;br /&gt;
 11     IF v_current_hour IN (1, 2)&lt;br /&gt;
 12     THEN&lt;br /&gt;
 13        v_method_opt := NULL;&lt;br /&gt;
 14     ELSE&lt;br /&gt;
 15        v_method_opt := &amp;quot;FOR ALL INDEXES&amp;quot;;&lt;br /&gt;
 16     END IF;&lt;br /&gt;
 17&lt;br /&gt;
 18     DBMS_UTILITY.analyze_schema (&lt;br /&gt;
 19        schema =&amp;gt; &amp;quot;OEM&amp;quot;,&lt;br /&gt;
 20        method =&amp;gt; &amp;quot;COMPUTE&amp;quot;,&lt;br /&gt;
 21        method_opt =&amp;gt; v_method_opt&lt;br /&gt;
 22     );&lt;br /&gt;
 23  END analyze_oem;&lt;br /&gt;
 24  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==dbms_utility.format_error_stack==&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;
  &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    myException EXCEPTION;&lt;br /&gt;
  3    FUNCTION innerFunction&lt;br /&gt;
  4    RETURN BOOLEAN IS&lt;br /&gt;
  5      retval BOOLEAN := FALSE;&lt;br /&gt;
  6    BEGIN&lt;br /&gt;
  7      RAISE myException;&lt;br /&gt;
  8      RETURN retval;&lt;br /&gt;
  9    END;&lt;br /&gt;
 10  BEGIN&lt;br /&gt;
 11    IF innerFunction THEN&lt;br /&gt;
 12      dbms_output.put_line(&amp;quot;No raised exception&amp;quot;);&lt;br /&gt;
 13    END IF;&lt;br /&gt;
 14  EXCEPTION&lt;br /&gt;
 15    WHEN others THEN&lt;br /&gt;
 16      dbms_output.put_line(&amp;quot;DBMS_UTILITY.FORMAT_ERROR_STACK&amp;quot;);&lt;br /&gt;
 17      dbms_output.put_line(dbms_utility.format_error_stack);&lt;br /&gt;
 18&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==dbms_utility.get_parameter_value==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    l_intval number;&lt;br /&gt;
  3    l_strval varchar2(2000);&lt;br /&gt;
  4    l_type   number;&lt;br /&gt;
  5    begin&lt;br /&gt;
  6       l_type := dbms_utility.get_parameter_value(&amp;quot;user_dump_dest&amp;quot;, l_intval, l_strval);&lt;br /&gt;
  7       dbms_output.put_line(l_strval );&lt;br /&gt;
  8    end;&lt;br /&gt;
  9  /&lt;br /&gt;
C:\ORACLEXE\APP\ORACLE\ADMIN\XE\UDUMP&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==demonstrates the use of DBMS_UTILITY.TABLE_TO_COMMA and DBMS_UTILITY.COMMA_TO_TABLE.==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    v_InitialString VARCHAR2(100) := &amp;quot;Alpha, Bravo, Charlie, Delta, Epsilon, Frank, George&amp;quot;;&lt;br /&gt;
  3    v_Table DBMS_UTILITY.UNCL_ARRAY;&lt;br /&gt;
  4    v_FinalString VARCHAR2(100);&lt;br /&gt;
  5    v_TabLen BINARY_INTEGER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    DBMS_OUTPUT.PUT_LINE(&amp;quot;Initial string: &amp;quot; || v_InitialString);&lt;br /&gt;
  8    DBMS_UTILITY.ruMA_TO_TABLE(v_InitialString, v_TabLen, v_Table);&lt;br /&gt;
  9    DBMS_OUTPUT.PUT_LINE(&amp;quot;Table (length = &amp;quot; || v_TabLen || &amp;quot;):&amp;quot;);&lt;br /&gt;
 10    FOR v_Count IN 1..v_Table.COUNT LOOP&lt;br /&gt;
 11      DBMS_OUTPUT.PUT_LINE(v_Table(v_Count));&lt;br /&gt;
 12    END LOOP;&lt;br /&gt;
 13    DBMS_UTILITY.TABLE_TO_COMMA(v_Table, v_TabLen, v_FinalString);&lt;br /&gt;
 14    DBMS_OUTPUT.PUT_LINE(&amp;quot;Final string (length = &amp;quot; || v_TabLen || &amp;quot;):&amp;quot;);&lt;br /&gt;
 15    DBMS_OUTPUT.PUT_LINE(v_FinalString);&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
Initial string: Alpha, Bravo, Charlie, Delta, Epsilon, Frank, George&lt;br /&gt;
Table (length = 7):&lt;br /&gt;
Alpha&lt;br /&gt;
 Bravo&lt;br /&gt;
 Charlie&lt;br /&gt;
 Delta&lt;br /&gt;
 Epsilon&lt;br /&gt;
 Frank&lt;br /&gt;
 George&lt;br /&gt;
Final string (length = 7):&lt;br /&gt;
Alpha, Bravo, Charlie, Delta, Epsilon, Frank, George&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performace difference between simple parameter and collection parameter==&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;
   &lt;br /&gt;
SQL&amp;gt; create or replace procedure SIMPLE_PARM(p number) is&lt;br /&gt;
  2   x number;&lt;br /&gt;
  3   begin&lt;br /&gt;
  4       null;&lt;br /&gt;
  5   end;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type rec is object&lt;br /&gt;
  2   ( a number,&lt;br /&gt;
  3   b number,&lt;br /&gt;
  4   c varchar2(30));&lt;br /&gt;
  5  /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type rec_list is table of rec;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure big_parm(p Rec_list) is&lt;br /&gt;
  2   x number;&lt;br /&gt;
  3   begin&lt;br /&gt;
  4       null;&lt;br /&gt;
  5   end;&lt;br /&gt;
  6  /&lt;br /&gt;
Procedure 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; declare&lt;br /&gt;
  2   x rec_list := rec_list();&lt;br /&gt;
  3   t1 number;&lt;br /&gt;
  4   t2 number;&lt;br /&gt;
  5   begin&lt;br /&gt;
  6       x.extend(50000);&lt;br /&gt;
  7       for i in 1 .. 50000 loop&lt;br /&gt;
  8          x(i) := rec(i,i,rpad(i,30));&lt;br /&gt;
  9       end loop;&lt;br /&gt;
 10       t1 := dbms_utility.get_time;&lt;br /&gt;
 11       for i in 1 .. 500000 loop&lt;br /&gt;
 12          simple_parm(i);&lt;br /&gt;
 13       end loop;&lt;br /&gt;
 14       t2 := dbms_utility.get_time;&lt;br /&gt;
 15       dbms_output.put_line(&amp;quot;Simple: &amp;quot;||(t2-t1));&lt;br /&gt;
 16       for i in 1 .. 500000 loop&lt;br /&gt;
 17          big_parm(x);&lt;br /&gt;
 18       end loop;&lt;br /&gt;
 19       t1 := dbms_utility.get_time;&lt;br /&gt;
 20       dbms_output.put_line(&amp;quot;Collection:&amp;quot;||(t1-t2));&lt;br /&gt;
 21   end;&lt;br /&gt;
 22  /&lt;br /&gt;
Simple: 19&lt;br /&gt;
Collection:15&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==round dbms_utility.get_time==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare l_tmp char(1);&lt;br /&gt;
  2  l_start number := dbms_utility.get_time;&lt;br /&gt;
  3  begin&lt;br /&gt;
  4  select * into l_tmp from dual;&lt;br /&gt;
  5  dbms_output.put_line( round( (dbms_utility.get_time-l_start)/100, 2 )||&amp;quot; seconds&amp;quot; );&lt;br /&gt;
  6  end;&lt;br /&gt;
  7  /&lt;br /&gt;
0 seconds&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==This script demonstrates DBMS_UTILITY.NAME_TOKENIZE.==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE Tokenize(name IN VARCHAR2) AS&lt;br /&gt;
  2    v_A VARCHAR2(256);&lt;br /&gt;
  3    v_B VARCHAR2(256);&lt;br /&gt;
  4    v_C VARCHAR2(256);&lt;br /&gt;
  5    v_DBLink VARCHAR2(256);&lt;br /&gt;
  6    v_NextPos BINARY_INTEGER;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8    DBMS_UTILITY.NAME_TOKENIZE(name, v_A, v_B, v_C, v_DBLink,&lt;br /&gt;
  9                               v_NextPos);&lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;a: &amp;quot; || v_A);&lt;br /&gt;
 11    DBMS_OUTPUT.PUT_LINE(&amp;quot;b: &amp;quot; || v_B);&lt;br /&gt;
 12    DBMS_OUTPUT.PUT_LINE(&amp;quot;c: &amp;quot; || v_C);&lt;br /&gt;
 13    DBMS_OUTPUT.PUT_LINE(&amp;quot;db link: &amp;quot; || v_DBLink);&lt;br /&gt;
 14    DBMS_OUTPUT.PUT_LINE(&amp;quot;next pos: &amp;quot; || v_NextPos);&lt;br /&gt;
 15  END Tokenize;&lt;br /&gt;
 16  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; exec Tokenize(&amp;quot;example.lecturer&amp;quot;);&lt;br /&gt;
a: EXAMPLE&lt;br /&gt;
b: LECTURER&lt;br /&gt;
c:&lt;br /&gt;
db link:&lt;br /&gt;
next pos: 16&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==time to commit==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select * from all_objects;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
12210 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
24420 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t where rownum &amp;lt; 12000;&lt;br /&gt;
11999 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
60839 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
121678 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
243356 rows created.&lt;br /&gt;
SQL&amp;gt; insert into t select * from t;&lt;br /&gt;
486712 rows created.&lt;br /&gt;
SQL&amp;gt; commit;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace procedure do_commit( p_rows in number )&lt;br /&gt;
  2  as&lt;br /&gt;
  3      l_start        number;&lt;br /&gt;
  4      l_after_redo   number;&lt;br /&gt;
  5      l_before_redo  number;&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      l_start := dbms_utility.get_time;&lt;br /&gt;
  8      insert into t select * from t where rownum &amp;lt; p_rows;&lt;br /&gt;
  9      dbms_output.put_line( sql%rowcount || &amp;quot; rows created&amp;quot; );&lt;br /&gt;
 10      dbms_output.put_line ( &amp;quot;Time to INSERT: &amp;quot; ||to_char( round( (dbms_utility.get_time-l_start)/100, 5 ), &amp;quot;999.99&amp;quot;) || &amp;quot; seconds&amp;quot; );&lt;br /&gt;
 11&lt;br /&gt;
 12      l_start := dbms_utility.get_time;&lt;br /&gt;
 13      commit;&lt;br /&gt;
 14      dbms_output.put_line( &amp;quot;Time to COMMIT: &amp;quot; ||to_char( round( (dbms_utility.get_time-l_start)/100, 5 ), &amp;quot;999.99&amp;quot;) || &amp;quot; seconds&amp;quot; );&lt;br /&gt;
 15&lt;br /&gt;
 16      dbms_output.put_line( &amp;quot;Generated &amp;quot; ||  to_char(l_after_redo-l_before_redo,&amp;quot;999,999,999,999&amp;quot;) || &amp;quot; bytes of redo&amp;quot; );&lt;br /&gt;
 17      dbms_output.new_line;&lt;br /&gt;
 18  end;&lt;br /&gt;
 19  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt; show error&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on format wrapped&lt;br /&gt;
SQL&amp;gt; begin&lt;br /&gt;
  2      for i in 1 .. 5&lt;br /&gt;
  3      loop&lt;br /&gt;
  4          do_commit( power(10,i) );&lt;br /&gt;
  5      end loop;&lt;br /&gt;
  6  end;&lt;br /&gt;
  7  /&lt;br /&gt;
9 rows created&lt;br /&gt;
Time to INSERT:     .06 seconds&lt;br /&gt;
Time to COMMIT:     .00 seconds&lt;br /&gt;
Generated  bytes of redo&lt;br /&gt;
99 rows created&lt;br /&gt;
Time to INSERT:     .00 seconds&lt;br /&gt;
Time to COMMIT:     .00 seconds&lt;br /&gt;
Generated  bytes of redo&lt;br /&gt;
999 rows created&lt;br /&gt;
Time to INSERT:     .02 seconds&lt;br /&gt;
Time to COMMIT:     .00 seconds&lt;br /&gt;
Generated  bytes of redo&lt;br /&gt;
9999 rows created&lt;br /&gt;
Time to INSERT:     .31 seconds&lt;br /&gt;
Time to COMMIT:     .00 seconds&lt;br /&gt;
Generated  bytes of redo&lt;br /&gt;
99999 rows created&lt;br /&gt;
Time to INSERT:     .80 seconds&lt;br /&gt;
Time to COMMIT:     .00 seconds&lt;br /&gt;
Generated  bytes of redo&lt;br /&gt;
&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Timing Package function call==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE lecturer (&lt;br /&gt;
  2    id               NUMBER(5) PRIMARY KEY,&lt;br /&gt;
  3    first_name       VARCHAR2(20),&lt;br /&gt;
  4    last_name        VARCHAR2(20),&lt;br /&gt;
  5    major            VARCHAR2(30),&lt;br /&gt;
  6    current_credits  NUMBER(3)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10001, &amp;quot;Scott&amp;quot;, &amp;quot;Lawson&amp;quot;,&amp;quot;Computer Science&amp;quot;, 11);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major, current_credits)&lt;br /&gt;
  2                VALUES (10002, &amp;quot;Mar&amp;quot;, &amp;quot;Wells&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10003, &amp;quot;Jone&amp;quot;, &amp;quot;Bliss&amp;quot;,&amp;quot;Computer Science&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10004, &amp;quot;Man&amp;quot;, &amp;quot;Kyte&amp;quot;,&amp;quot;Economics&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10005, &amp;quot;Pat&amp;quot;, &amp;quot;Poll&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10006, &amp;quot;Tim&amp;quot;, &amp;quot;Viper&amp;quot;,&amp;quot;History&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10007, &amp;quot;Barbara&amp;quot;, &amp;quot;Blues&amp;quot;,&amp;quot;Economics&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10008, &amp;quot;David&amp;quot;, &amp;quot;Large&amp;quot;,&amp;quot;Music&amp;quot;, 4);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10009, &amp;quot;Chris&amp;quot;, &amp;quot;Elegant&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10010, &amp;quot;Rose&amp;quot;, &amp;quot;Bond&amp;quot;,&amp;quot;Music&amp;quot;, 7);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10011, &amp;quot;Rita&amp;quot;, &amp;quot;Johnson&amp;quot;,&amp;quot;Nutrition&amp;quot;, 8);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO lecturer (id, first_name, last_name, major,current_credits)&lt;br /&gt;
  2                VALUES (10012, &amp;quot;Sharon&amp;quot;, &amp;quot;Clear&amp;quot;,&amp;quot;Computer Science&amp;quot;, 3);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE CopyFast AS&lt;br /&gt;
  2    TYPE StudentArray IS&lt;br /&gt;
  3      TABLE OF lecturer%ROWTYPE;&lt;br /&gt;
  4&lt;br /&gt;
  5    PROCEDURE Passlecturer1(p_Parameter IN StudentArray);&lt;br /&gt;
  6    PROCEDURE Passlecturer2(p_Parameter IN OUT StudentArray);&lt;br /&gt;
  7    PROCEDURE Passlecturer3(p_Parameter IN OUT NOCOPY StudentArray);&lt;br /&gt;
  8&lt;br /&gt;
  9    PROCEDURE Go;&lt;br /&gt;
 10  END CopyFast;&lt;br /&gt;
 11  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY CopyFast AS&lt;br /&gt;
  2    PROCEDURE Passlecturer1(p_Parameter IN StudentArray) IS&lt;br /&gt;
  3    BEGIN&lt;br /&gt;
  4      NULL;&lt;br /&gt;
  5    END Passlecturer1;&lt;br /&gt;
  6&lt;br /&gt;
  7    PROCEDURE Passlecturer2(p_Parameter IN OUT StudentArray) IS&lt;br /&gt;
  8    BEGIN&lt;br /&gt;
  9      NULL;&lt;br /&gt;
 10    END Passlecturer2;&lt;br /&gt;
 11&lt;br /&gt;
 12    PROCEDURE Passlecturer3(p_Parameter IN OUT NOCOPY StudentArray) IS&lt;br /&gt;
 13    BEGIN&lt;br /&gt;
 14      NULL;&lt;br /&gt;
 15    END Passlecturer3;&lt;br /&gt;
 16&lt;br /&gt;
 17    PROCEDURE Go IS&lt;br /&gt;
 18      myLecturerArray StudentArray := StudentArray(NULL);&lt;br /&gt;
 19      myLecturerRec lecturer%ROWTYPE;&lt;br /&gt;
 20      v_Time1 NUMBER;&lt;br /&gt;
 21      v_Time2 NUMBER;&lt;br /&gt;
 22      v_Time3 NUMBER;&lt;br /&gt;
 23      v_Time4 NUMBER;&lt;br /&gt;
 24    BEGIN&lt;br /&gt;
 25      SELECT *&lt;br /&gt;
 26        INTO myLecturerArray(1)&lt;br /&gt;
 27        FROM lecturer&lt;br /&gt;
 28        WHERE ID = 10007;&lt;br /&gt;
 29      myLecturerArray.EXTEND(50000, 1);&lt;br /&gt;
 30&lt;br /&gt;
 31      v_Time1 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 32      Passlecturer1(myLecturerArray);&lt;br /&gt;
 33      v_Time2 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 34      Passlecturer2(myLecturerArray);&lt;br /&gt;
 35      v_Time3 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 36      Passlecturer3(myLecturerArray);&lt;br /&gt;
 37      v_Time4 := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 38&lt;br /&gt;
 39      DBMS_OUTPUT.PUT_LINE(&amp;quot;Time to pass IN: &amp;quot; || TO_CHAR((v_Time2 - v_Time1) / 100));&lt;br /&gt;
 40      DBMS_OUTPUT.PUT_LINE(&amp;quot;Time to pass IN OUT: &amp;quot; || TO_CHAR((v_Time3 -   v_Time2) / 100));&lt;br /&gt;
 41      DBMS_OUTPUT.PUT_LINE(&amp;quot;Time to pass IN OUT NOCOPY: &amp;quot; || TO_CHAR((v_Time4 - v_Time3) / 100));&lt;br /&gt;
 42    END Go;&lt;br /&gt;
 43  END CopyFast;&lt;br /&gt;
 44  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    CopyFast.Go;&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
Time to pass IN: 0&lt;br /&gt;
Time to pass IN OUT: .19&lt;br /&gt;
Time to pass IN OUT NOCOPY: 0&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table lecturer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Timing Per Thousand Records Processed (in secs)==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     lv_counter_num        PLS_INTEGER := 0;&lt;br /&gt;
  3     lv_timer_start_num    NUMBER;&lt;br /&gt;
  4     lv_timer_previous_num NUMBER;&lt;br /&gt;
  5     lv_timer_current_num  NUMBER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7     lv_timer_start_num    := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
  8     lv_timer_previous_num := lv_timer_start_num;&lt;br /&gt;
  9     LOOP&lt;br /&gt;
 10        lv_counter_num := lv_counter_num + 1;&lt;br /&gt;
 11        IF MOD(lv_counter_num, 1000) = 0 THEN&lt;br /&gt;
 12           lv_timer_current_num := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 13           DBMS_OUTPUT.PUT_LINE(&amp;quot;Time Elapsed-Total: &amp;quot; ||&lt;br /&gt;
 14              (lv_timer_current_num - lv_timer_start_num)/100 ||&lt;br /&gt;
 15              CHR(9) || &amp;quot; This Set: &amp;quot; ||&lt;br /&gt;
 16              (lv_timer_current_num - lv_timer_previous_num)/100 ||&lt;br /&gt;
 17              CHR(9) || &amp;quot; Records Processed: &amp;quot; ||&lt;br /&gt;
 18              lv_counter_num);&lt;br /&gt;
 19           lv_timer_previous_num := lv_timer_current_num;&lt;br /&gt;
 20         END IF;&lt;br /&gt;
 21         EXIT WHEN lv_counter_num = 5540;&lt;br /&gt;
 22     END LOOP;&lt;br /&gt;
 23     lv_timer_current_num := DBMS_UTILITY.GET_TIME;&lt;br /&gt;
 24     DBMS_OUTPUT.PUT_LINE(&amp;quot;Time Elapsed-Total: &amp;quot;);&lt;br /&gt;
 25     DBMS_OUTPUT.PUT_LINE(lv_timer_current_num - lv_timer_start_num );&lt;br /&gt;
 26     DBMS_OUTPUT.PUT_LINE(&amp;quot; This Set: &amp;quot; );&lt;br /&gt;
 27     DBMS_OUTPUT.PUT_LINE(lv_timer_current_num - lv_timer_previous_num);&lt;br /&gt;
 28     DBMS_OUTPUT.PUT_LINE(&amp;quot; Records Processed: &amp;quot; ||lv_counter_num);&lt;br /&gt;
 29  END;&lt;br /&gt;
 30  /&lt;br /&gt;
Time Elapsed-Total: 0    This Set: 0     Records Processed: 1000&lt;br /&gt;
Time Elapsed-Total: 0    This Set: 0     Records Processed: 2000&lt;br /&gt;
Time Elapsed-Total: 0    This Set: 0     Records Processed: 3000&lt;br /&gt;
Time Elapsed-Total: .01  This Set: .01   Records Processed: 4000&lt;br /&gt;
Time Elapsed-Total: .01  This Set: 0     Records Processed: 5000&lt;br /&gt;
Time Elapsed-Total:&lt;br /&gt;
1&lt;br /&gt;
 This Set:&lt;br /&gt;
0&lt;br /&gt;
 Records Processed: 5540&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==use DBMS_UTILITY.FORMAT_ERROR_STACK in a SERVERERROR 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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE error_log (&lt;br /&gt;
  2    timestamp     DATE,&lt;br /&gt;
  3    username      VARCHAR2(30),&lt;br /&gt;
  4    instance      NUMBER,&lt;br /&gt;
  5    database_name VARCHAR2(50),&lt;br /&gt;
  6    error_stack   VARCHAR2(2000)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER LogErrors&lt;br /&gt;
  2    AFTER SERVERERROR ON DATABASE&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4    INSERT INTO error_log&lt;br /&gt;
  5      VALUES (SYSDATE, SYS.LOGIN_USER, SYS.INSTANCE_NUM, SYS.&lt;br /&gt;
  6              DATABASE_NAME, DBMS_UTILITY.FORMAT_ERROR_STACK);&lt;br /&gt;
  7  END LogErrors;&lt;br /&gt;
  8  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM non_existent_table;&lt;br /&gt;
SELECT * FROM non_existent_table&lt;br /&gt;
              *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-00942: table or view does not exist&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2    INSERT INTO non_existent_table VALUES (&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
  3  END;&lt;br /&gt;
  4  /&lt;br /&gt;
  INSERT INTO non_existent_table VALUES (&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
              *&lt;br /&gt;
ERROR at line 2:&lt;br /&gt;
ORA-06550: line 2, column 15:&lt;br /&gt;
PL/SQL: ORA-00942: table or view does not exist&lt;br /&gt;
ORA-06550: line 2, column 3:&lt;br /&gt;
PL/SQL: SQL Statement ignored&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; COLUMN error_stack FORMAT a61 WRAPPED&lt;br /&gt;
SQL&amp;gt; SET LINE 80&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM error_log;&lt;br /&gt;
TIMESTAMP USERNAME                         INSTANCE&lt;br /&gt;
--------- ------------------------------ ----------&lt;br /&gt;
DATABASE_NAME&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
ERROR_STACK&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
18-JUN-08 sqle                                  1&lt;br /&gt;
XE&lt;br /&gt;
ORA-00942: table or view does not exist&lt;br /&gt;
18-JUN-08 sqle                                  1&lt;br /&gt;
XE&lt;br /&gt;
ORA-06550: line 2, column 15:&lt;br /&gt;
TIMESTAMP USERNAME                         INSTANCE&lt;br /&gt;
--------- ------------------------------ ----------&lt;br /&gt;
DATABASE_NAME&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
ERROR_STACK&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
PL/SQL: ORA-00942: table or view does not exist&lt;br /&gt;
ORA-06550: line 2, column 3:&lt;br /&gt;
PL/SQL: SQL Statement ignored&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DROP TABLE error_log;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop trigger LOGERRORS;&lt;br /&gt;
Trigger dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use dbms_utility.get_time to do performace check==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2   type charListType is table of number index by varchar2(100);&lt;br /&gt;
  3   vc charListType;&lt;br /&gt;
  4   type numberListType is table of number index by binary_integer;&lt;br /&gt;
  5   n numberListType;&lt;br /&gt;
  6   t number;&lt;br /&gt;
  7   begin&lt;br /&gt;
  8       t := dbms_utility.get_time;&lt;br /&gt;
  9       for i in 1 .. 1000 loop&lt;br /&gt;
 10           n(i) := i;&lt;br /&gt;
 11       end loop;&lt;br /&gt;
 12       dbms_output.put_line(&amp;quot;Index by Number : &amp;quot;|| (dbms_utility.get_time-t));&lt;br /&gt;
 13       t := dbms_utility.get_time;&lt;br /&gt;
 14       for i in 1 .. 1000 loop&lt;br /&gt;
 15           vc(i) := i;&lt;br /&gt;
 16       end loop;&lt;br /&gt;
 17       dbms_output.put_line(&amp;quot;Index by Varchar2: &amp;quot;|| (dbms_utility.get_time-t));&lt;br /&gt;
 18   end;&lt;br /&gt;
 19  /&lt;br /&gt;
Index by Number : 0&lt;br /&gt;
Index by Varchar2: 0&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use dbms_utility to time==&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;
   &lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter system flush shared_pool;&lt;br /&gt;
System altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set timing on&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2      type rc is ref cursor;&lt;br /&gt;
  3      l_rc rc;&lt;br /&gt;
  4      l_dummy all_objects.object_name%type;&lt;br /&gt;
  5      l_start number default dbms_utility.get_time;&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      for i in 1 .. 1000&lt;br /&gt;
  8      loop&lt;br /&gt;
  9          open l_rc for &amp;quot;select object_name from all_objects where object_id = &amp;quot; || i;&lt;br /&gt;
 10          fetch l_rc into l_dummy;&lt;br /&gt;
 11          close l_rc;&lt;br /&gt;
 12      end loop;&lt;br /&gt;
 13      dbms_output.put_line( round( (dbms_utility.get_time-l_start)/100, 2 ) || &amp;quot; seconds...&amp;quot; );&lt;br /&gt;
 14  end;&lt;br /&gt;
 15  /&lt;br /&gt;
37.76 seconds...&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
Elapsed: 00:00:38.10&lt;br /&gt;
SQL&amp;gt; set timing off&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>