暂无图片
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
打赏 0
暂无图片
Thomas

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

暂无图片 评论
暂无图片 有用 1
打赏 0
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
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle 如果分区表按日期分区,但是查数据做逻辑关联是查这个日期的某一个范围,比如大于等于某个日期。 对于这种场景表分区是不是也没有效率提升?
回答 1
已采纳
不仅要大于一个时间,还要小于一个时间。尽量确保在一个分区内。分区主要为了日后清理数据方便。
oracle 数据库有很多报错: opiodr aborting process 是什么原因
回答 1
已采纳
opiodrabortingprocess信息仅仅是一个消息,它是Oracle11g里新添加的一个消息,用来记录进程的异常退出。该消息一般用来记录有权限的用户kill 的session信息。
大家都分析一下,一条简单的update语句,在postgresql, oracle 服务器执行的过程;
回答 2
已采纳
这个问题有点大,关于执行的那一部分可以参考pg官网文档。解析>重写>优化>执行其中在执行器中selectupdatedeleteinsert略有区别 http://www.
spflie是不能直接打开修改,那么如何修改?
回答 2
已采纳
可以进行如下修改:SQL> alter systemsetxx××scopespfile/both意思是修改参数并把修改写入spfile中,如果scope的值是both则表示
数据库大量的pga memory operation 等待事件是什么原因造成的,怎么解决这个问题
回答 1
“PGAmemoryoperation”isjustannewwaiteventtoexposeapriorunmeasuredwaitinearlierversionsofthedatabase.H
Oracle的 archivelog 可转成sql吗?
回答 4
只能是用日志挖掘工具LogMiner
oracle如何查询数据库正在运行的大事务
回答 1
已采纳
查当前正在运行的事务以及sqlSELECTt.startdate,t.startscn,s.sid,s.serial,s.username,s.program,q.sqltext,q.sqlidFRO
Oracle 添加节点传文件时为什么很慢?
回答 2
网速慢吧?千兆网吗?
oracle 的home 目录是哪个目录?
回答 2
已采纳
/home/oracle
如果编写insert语句向BLOB类型插入数据
回答 1
LOB类型的字段写入需要用程序代码完成,纯SQL搞不定的一般做法是insert时,lob字段用emptylob()做初始化,然后一条记录一条记录的,以文件流的方式去写入相应的LOB数据。