[20161003]触发器与redo.txt

简介: [20161003]触发器与redo.txt --对于触发器,我个人认为对于dba是最讨厌的东西,它使得维护变得困难,不小心就陷入陷阱里面. --我曾经跟开发讲过建立一个触发器相当于给表建立一个索引.
[20161003]触发器与redo.txt

--对于触发器,我个人认为对于dba是最讨厌的东西,它使得维护变得困难,不小心就陷入陷阱里面.
--我曾经跟开发讲过建立一个触发器相当于给表建立一个索引.除非万不得以不要建立触发器.
--昨天看了一个例子,重复作者的测试来说明问题:

http://orasql.org/2016/09/22/how-even-empty-trigger-increases-redo-generation/

1.环境:

SCOTT@test01p> @ ver1
PORT_STRING          VERSION    BANNER                                                                       CON_ID
-------------------- ---------- ---------------------------------------------------------------------------- ------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production      0

set feed on;
-- simple table:
create table xt_curr1 as select level a,level b from dual connect by level<=1e4;
-- same table but with empty trigger:
create table xt_curr2 as select level a,level b from dual connect by level<=1e4;
create or replace trigger tr_xt_curr2 before update on xt_curr2 for each row
begin
  null;
end;
/

set autot trace stat;
update xt_curr1 set b=a;
--commit;
set autot off;

set autot trace stat;
update xt_curr2 set b=a;
--commit;
set autot off;
set feed off

drop table xt_curr1 purge;
drop table xt_curr2 purge;

2.测试结果:


update xt_curr1 set b=a;

Statistics
----------------------------------------------------------
          8  recursive calls
        142  db block gets
         30  consistent gets
         18  physical reads
     960068  redo size
        862  bytes sent via SQL*Net to client
        824  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          3  sorts (memory)
          0  sorts (disk)
      10000  rows processed

update xt_curr2 set b=a;
Statistics
----------------------------------------------------------
         10  recursive calls
      20386  db block gets
         40  consistent gets
         19  physical reads
    4731300  redo size
        862  bytes sent via SQL*Net to client
        824  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          3  sorts (memory)
          0  sorts (disk)
      10000  rows processed

update xt_curr2 set b=a;

--可以发现即使是NULL的操作,也会导致redo增加不少.
目录
相关文章
|
关系型数据库 Oracle SQL
[20180419]关于闪回的一些问题.txt
[20180419]关于闪回的一些问题.txt --//别人问的问题,就是drop表,然后flashbask表,建立的触发器还在吗? --//我记忆里触发器应该还在,我个人喜欢通过例子验证自己的判断.
1041 0
|
监控 Oracle 关系型数据库
[20171115]redo and commit.txt
[20171115]redo and commit.txt --//参考Jonathan Lewis的https://jonathanlewis.wordpress.com/2011/08/19/redo-2/ --//很早以前的帖子,自己觉得很有意思,重复测试: --//事务已经提交,但是redo log buffer还没有写到磁盘.
1022 0
|
SQL Oracle 关系型数据库
[20170627]使用TSPITR恢复表空间.txt
[20170627]使用TSPITR恢复表空间.txt --//RMAN提供了一种实现所谓TSPITR(Tablespace Point-In-Time Recovery)的技术,通过简单的一个语句,就可以在主库不停库(很吸引人) --//的情况下,利用备份集和连续的归档日志,实现表空间级别的定点恢复。
881 0
|
机器学习/深度学习 SQL 关系型数据库
[20170520]利用undo表空间保护数据.txt
[20170520]利用undo表空间保护数据.txt --//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧, --//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题.
828 0
|
数据库管理
[20170411]bbed删除记录的恢复.txt
[20170411]bbed删除记录的恢复.txt --//昨天上午做的测试,链接:http://blog.itpub.net/267265/viewspace-2136933/ --//我当时并没有选择恢复记录,仅仅看删除的内容.
1035 0
|
监控 Oracle 关系型数据库
[20170412]分析重做日志.txt
[20170412]分析重做日志.txt --//自己很少做重做日志转储,测试看看。 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --...
1016 0
|
Oracle 关系型数据库 数据库
[20170302]异常恢复scn到那里3.txt
[20170302]异常恢复scn到那里3.txt --//如果oracle数据库异常关闭,打开数据库自动执行实例恢复,这个恢复scn到那里呢? --//通过例子说明:实际上http://blog.
910 0
|
SQL Oracle 关系型数据库
[20160406] 恢复until scn NNN.txt
[20160406] 恢复until scn NNN.txt --昨天别人问的问题,如果使用rman恢复,restore database until scn NNN;是恢复到NNN,还是NNN-1.
823 0
|
Oracle 关系型数据库
[20151028]理解数据文件offline+drop.txt
[20151028]理解数据文件offline+drop.txt --前几天做删除数据文件的恢复测试,自己在理解offline drop的方式存在错误,做一个记录: The ALTER DATABASE DATAFILE OFFLINE DROP command, is not meant to allow you to remove a datafile.
817 0