首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用长时间运行的SQL的Oracle报告

使用长时间运行的SQL的Oracle报告
EN

Stack Overflow用户
提问于 2017-09-29 01:18:14
回答 3查看 3K关注 0票数 0

我使用Oracle report Builder生成了一个报告。该报告有82个SQL查询。几乎每个查询都会执行繁重的计算。我在做财务报告,有两个会计分录。有时,当我生成报告时,条目并不一致。有时候它是好的。看起来它不是以“事务性的方式”来做这件事。因为在生成报告的同时,数据似乎一直在运行。

我很好奇报表是如何执行SQL查询的?是一个接一个,还是整份报告?如何调试或查看正在执行的查询?

EN

回答 3

Stack Overflow用户

发布于 2017-09-29 02:03:25

尝试使用以下查询检查正在运行的active SQl

代码语言:javascript
复制
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
票数 2
EN

Stack Overflow用户

发布于 2017-09-29 21:22:16

Oracle Reports将根据您的Oracle Reports数据模型中查询之间的关系,根据需要发出82个不同的查询。

默认情况下,在Oracle中,您只能在单个SQL语句中获得读取一致性--这就是您的问题所在。

例如,假设您有query Q_ACCOUNTS和query Q_JOURNAL_ENTRIES,前者列出了您的科目表,后者汇总了对给定帐户的日记帐分录。在Oracle Reports数据模型中,假设Q_JOURNAL_ENTRIES链接到Q_ACCOUNTS。

在这种情况下,Oracle report将运行Q_ACCOUNTS,然后为每个帐户运行一次Q_JOURNAL_ENTRIES。这里是关键点:在Q_JOURNAL_ENTRIES的多次执行之间没有读取一致性(就这一点而言,也不存在与Q_ACCOUNTS的一致性)。

我从来没有这样做过,但是您可以尝试在"Before Report“触发器中运行一个SET TRANSACTION READ ONLY SQL命令。这可以为您提供事务级别的读取一致性,这是您所需要的,但它也有局限性(顾名思义,主要是不能执行任何数据库写入)。

票数 1
EN

Stack Overflow用户

发布于 2017-09-29 21:29:55

也许你可以试试"longops“

代码语言:javascript
复制
SELECT s.sid, 
       s.serial#,          
       sl.target,  sl.OPNAME, sl.SQL_PLAN_OPERATION as OPERATION, sl.SQL_PLAN_OPTIONS as options,
       ROUND(sl.elapsed_seconds/60) || ':' || MOD(sl.elapsed_seconds,60) elapsed,
       ROUND(sl.time_remaining/60) || ':' || MOD(sl.time_remaining,60) remaining,
       ROUND(sl.sofar/decode(sl.totalwork,0, decode(sl.sofar, 0,1), sl.totalwork  )*100, 2) progress_pct, s.INST_ID , s.machine
FROM   gv$session s,
       v$session_longops sl
WHERE  s.sid     = sl.sid
AND    s.serial# = sl.serial#(+)
and sl.elapsed_seconds(+) <> 0
ORDER BY   ROUND(sl.sofar/decode(sl.totalwork,0, decode(sl.sofar, 0,1), sl.totalwork  )*100, 2) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46474920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档