测试REDO和BEFORCE AFTER的关系脚本

CREATE OR REPLACE PROCEDURE do_work (p_what IN VARCHAR2)
AS
   l_redo_size   NUMBER;
   l_cnt         NUMBER := 200;

   PROCEDURE report (l_op IN VARCHAR2)
   IS
   BEGIN
      SELECT v$mystat.VALUE - l_redo_size
        INTO l_redo_size
        FROM v$mystat, v$statname
       WHERE v$mystat.statistic# = v$statname.statistic#
         AND v$statname.NAME = ‘redo size’;

      DBMS_OUTPUT.put_line (   l_op
                            || ‘ redo size = ‘
                            || l_redo_size
                            || ‘ rows = ‘
                            || l_cnt
                            || ‘ ‘
                            || TO_CHAR (l_redo_size / l_cnt, ‘99,999.9′)
                            || ‘ bytes/row’
                           );

      INSERT INTO LOG
         SELECT p_what, l_op, data_length, l_redo_size, l_cnt
           FROM user_tab_columns
          WHERE table_name = ‘T’ AND column_name = ‘Y’;
   END;

   PROCEDURE set_redo_size
   AS
   BEGIN
      SELECT v$mystat.VALUE
        INTO l_redo_size
        FROM v$mystat, v$statname
       WHERE v$mystat.statistic# = v$statname.statistic#
         AND v$statname.NAME = ‘redo size’;
   END;
BEGIN
   set_redo_size;

   INSERT INTO t
      SELECT object_id, object_name, created
        FROM all_objects
       WHERE ROWNUM <= l_cnt;

   l_cnt := SQL%ROWCOUNT;
   COMMIT;
   report (’insert’);
   set_redo_size;

   UPDATE t
      SET y = LOWER (y);

   l_cnt := SQL%ROWCOUNT;
   COMMIT;
   report (’update’);
   set_redo_size;

   DELETE FROM t;

   l_cnt := SQL%ROWCOUNT;
   COMMIT;
   report (’delete’);
END;



评论暂缺

(Required)
(Required, will not be published)