Oracle 查询某条SQL产生的日志大小
如题。在PLSQL里写一段代码:先运行某DML并COMMIT,然后查询该DML产生的日志大小,能实现吗?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
3条回答
默认
最新
可以用下面的存储过程试试:
create or replace procedure do_sql(p_sql in varchar2)
as
l_start_redo number;
l_redo number;
begin
l_atart_redo := get_stat_val( 'redo size' );
execute immediate p_sql;
commit;
l_redo :=get_stat_val( 'redo size' ) - l_start_redo;
dbms_output.put_line
( to_char(l_redo,'99,999,999') || ' bytes of redo generated for '' ' ||
substr( replace( p_sal, char(10), ' '), 1, 25) || ' '' ... ' );
end;
/
评论
有用 1
请教,get_stat_val的源码找不到啊。帮人帮到底,送佛送到西。呵呵
评论
有用 1create or replace function get_stat_val(p_name in varchar2) return number
as
l_val number
begin
select b.value into l_val
from v$stat name a, v$my stat b
where a.statistic# = b.statistic#
and a.name=p_name;
return l_val;
end;
/
摘自《Oracle编程艺术:深入理解数据库体系结构》第9章 redo与undo
希望能帮到你
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

