暂无图片
Oracle 查询某条SQL产生的日志大小
我来答
分享
Thomas
2023-02-20
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
暂无图片
Thomas

请教,get_stat_val的源码找不到啊。帮人帮到底,送佛送到西。呵呵

暂无图片 评论
暂无图片 有用 1
2023-02-21
创建函数get_stat_val create 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$statname a,v$mystat b where a.statistic# = b.statistic# and a.name = p_name; return l_val; end;
fxjian0829
create 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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏