Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle DBA:有没有办法查看我的ASP.NET应用程序正在运行的查询?_Asp.net_Oracle_Profiling_Toad - Fatal编程技术网

Oracle DBA:有没有办法查看我的ASP.NET应用程序正在运行的查询?

Oracle DBA:有没有办法查看我的ASP.NET应用程序正在运行的查询?,asp.net,oracle,profiling,toad,Asp.net,Oracle,Profiling,Toad,我有一个ASP.NET应用程序,它使用Oracle进行持久化,并通过ADO.NET和存储过程进行查询 我拥有TOAD的完整版本和数据库的管理权限 是否有任何方法可以查看应用程序在过去10分钟内发出的所有查询?我不知道过去10分钟内发出的所有查询,但如果使用会话浏览器(脱离工具栏,或“数据库”菜单->监视->会话浏览器),则可以查看已连接用户的当前语句(展开w3wp.exe,然后按计算机名称排序以找到正确的连接),然后在应用程序中导航时只需按住刷新按钮 脱离TOAD GUI的限制,您可以尝试手动查

我有一个ASP.NET应用程序,它使用Oracle进行持久化,并通过ADO.NET和存储过程进行查询

我拥有TOAD的完整版本和数据库的管理权限


是否有任何方法可以查看应用程序在过去10分钟内发出的所有查询?

我不知道过去10分钟内发出的所有查询,但如果使用会话浏览器(脱离工具栏,或“数据库”菜单->监视->会话浏览器),则可以查看已连接用户的当前语句(展开w3wp.exe,然后按计算机名称排序以找到正确的连接),然后在应用程序中导航时只需按住刷新按钮

脱离TOAD GUI的限制,您可以尝试手动查询:


我不知道在过去的10分钟内,但是如果您使用会话浏览器(脱离工具栏,或数据库菜单->监视器->会话浏览器),您可以查看已连接用户的当前语句(展开w3wp.exe,然后按机器名排序以找到正确的连接),然后只需在浏览应用程序时按住刷新按钮即可

脱离TOAD GUI的限制,您可以尝试手动查询:


下面是我用来检查慢速查询的查询:(可能会让您开始)


下面是我用来检查慢速查询的查询:(可能会让您开始)


您可能不知道应用程序用户会话的SID。但您肯定知道对象的架构所有者,应用程序正在访问

要按时间限制结果,可以使用awr快照。(自动工作负载存储库)

有关AWR的更多信息:


您可能不知道应用程序用户会话的SID。但您肯定知道对象的架构所有者,应用程序正在访问

要按时间限制结果,可以使用awr快照。(自动工作负载存储库)

有关AWR的更多信息:


不过,这是假设每个与应用程序的交互都有一个查询。如果当我单击一个链接时,实际上有4个数据库调用,而我对第二个数据库调用感兴趣呢?奇怪的是,这显示了一堆sql,但我知道应用程序只使用存储过程。我可以通过任何方式找出调用了哪些存储过程,然后使用哪些参数?我不知道Oracle是否存储了它所执行的所有存储过程的历史记录,但我怀疑它没有。我误解了您的要求。如果您的存储过程动态生成并执行语句1、语句2和语句3,那么这三条语句将出现在sqlarea中,但谁会这样做现在知道它们是如何实现的。也许您可以在数据层中添加一些日志语句来监视正在进行的调用?也许您将此应用程序误认为使用了“日志记录”或“对象”或“层”等概念好的,让我直截了当地告诉你,好的先生…这是假设每个与应用程序的交互都有一个查询。如果当我点击一个链接时,实际上有4个数据库调用,而我对第二个数据库调用感兴趣呢?奇怪的是,这显示了一堆sql,但我知道应用程序只使用存储过程。我能找出正在调用存储过程以及使用哪些参数?我不知道Oracle是否存储了它所执行的所有存储过程的历史记录,但我怀疑它没有。我误解了您的要求。如果您的存储过程动态生成并执行语句1、语句2和语句3,那么这三个语句我nts将出现在sqlarea中,但谁知道它们是如何出现的。也许您可以在数据层中添加一些日志语句来监视正在进行的调用?也许您将此应用程序误认为是使用了“日志记录”或“对象”或“层”等概念的应用程序好的,让我直截了当地告诉你,好先生……我相信v$视图正是你想要的,但我无法确认它们是否会提供你所要求的历史记录。另一种选择可能是使用TKProf。你是否安装了Oracle Enterprise Manager?它提供了对每个会话正在执行的内容的适当可见性。@Dougman不,这是oracle,我只是想这些东西都存储在sys schema表的某个地方。ADO.NET应用程序是连接一次然后使用该连接,还是每次请求都连接和断开连接。这很重要,因为它基本上决定了如何跟踪已发出的SQL命令。我相信v$views是您想要的,但是我无法确认他们是否会提供您要求的历史记录。另一种选择可能是使用TKProf。您是否安装了Oracle Enterprise Manager?它提供了对每个会话正在执行的内容的适当可见性。@Dougman不,不,这是Oracle,我只是想这些内容都存储在sys架构表中的某个位置。广告O.NET应用程序先连接一次,然后再使用该连接,或者是为每个请求连接和断开连接。这一点很重要,因为它基本上决定了如何跟踪已发出的SQL命令。
  select * 
    from v$sqlarea
   where upper(module) = 'W3WP.EXE'
     and parsing_schema_name = 'MY_CONNECTING_SCHEMA'
order by last_active_time desc
SELECT   username, sql_text, elapsed_time, executions, optimizer_cost, loads,
         fetches, rows_processed,
         DECODE (command_type,
                 2, 'Insert',
                 3, 'Select',
                 6, 'Update',
                 7, 'Delete',
                 26, 'Lock Table',
                 35, 'Alter Database',
                 42, 'Alter Session',
                 44, 'Commit',
                 45, 'Rollback',
                 46, 'Savepoint',
                 47, 'Begin/Declare',
                 command_type
                ) AS cmdtype,
         first_load_time, last_load_time, module
    FROM v$sql, v$session_longops
   --longops is a view of statements that took longer than 6 seconds
WHERE    sql_address(+) = address AND sql_hash_value(+) = hash_value
ORDER BY elapsed_time DESC, executions, address, hash_value, child_number;
--Create a snapshot
exec dbms_workload_repository.create_snapshot;

--Wait 10min and create another snapshot;
exec dbms_workload_repository.create_snapshot;

--This Statement does the following:
--1. Get the recent two Snapshot IDs
--2. Select all SQL IDs which are execute between the last two snapshots
--3. Filter the SQL IDs which are accessing objects of a certain owner (Substitute 'APP_OWNER' with the schema owner of your application)
--4. Select the SQL text of all these SQL IDs

SELECT sql_id,
       sql_text
FROM   dba_hist_sqltext
WHERE  sql_id IN (SELECT DISTINCT sql_id
                  FROM   dba_hist_sql_plan
                  WHERE  sql_id IN (SELECT sql_id
                                    FROM   dba_hist_sqlstat
                                    WHERE  snap_id BETWEEN (SELECT max(snap_id) - 1
                                                            FROM   dba_hist_snapshot) AND (SELECT max(snap_id)
                                                                                           FROM   dba_hist_snapshot))
                         AND object_owner = 'APP_OWNER')
/