sqlserver查询最近执行的sql(sqlserver怎么查看执行计划(oracle查看sql历史执行计划))

本文目录
- sqlserver怎么查看执行计划(oracle查看sql历史执行计划)
- 怎么查看用户的SQL执行历史
- 在MS SQL Server中怎么查看正在执行的SQL
- sql server 如何查找最后一条插入的记录
sqlserver怎么查看执行计划(oracle查看sql历史执行计划)
方法/步骤
首先先建一个查询的窗口中,选中数据库,点击新建查询。
弹出了一个新建查询的窗口的界面中,输入需要执行的sql的语句。
sql输入完成之后,选中需要的执行的sql的语句。
然后进行点击菜单中的查询的按钮选项。
可以弹出下拉菜单中,进行选择为显示估计的执行计划。
在执行窗口的界面中查看的执行计划执行的内容了。
怎么查看用户的SQL执行历史
如何知道一个session都执行过哪些SQL语句?(查看当前比较容易,历史的呢?怎么复原sql的执行场景——事务关系、执行序列、单SQL还是存储过程)
【方法一】查询v$sqltext、v$sqlarea、v$sqlstats视图
select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in (’schema’) order by t.LAST_ACTIVE_TIME desc;
#对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解析历史,因为共享的问题这个查询可能并不能完整地反映出执行的历史。
#v$sqlstats信息保留时间比v$sql、v$sqltext、v$sqlarea长,及时SQL已经换出shared pool仍然可查到
【方法二】
联合v$active_session_history和v$sqlarea
#v$active_session_history 这个表只是个取样数据,按秒进行,只有在那一秒采样点处于on cpu或非idle等待的session统计在内。
所以可能会不全,有些执行很短的SQL会忽略。
这个视图无法还原完整的session历史。
#v$sqlarea中有执行过的SQL语句,但并无到session的关联信息,v$session中只关联了当前的sql,所以也不行。
查看视图:dba_hist_sqlstats、dba_hist_sqltext(历史数据)
【方法三:session trace】
SQL》 execute dbms_session.session_trace_enable(true,true);
PL/SQL procedure successfully pleted.
SQL》 select count(*) from dba_hist_sqltext;
COUNT(*)
----------
478
SQL》 select * from V$sesstat where rownum=1;
SID STATISTIC# VALUE
---------- ---------- ----------
134 0 1
SQL》 execute dbms_session.session_trace_disable;
PL/SQL procedure successfully pleted.
$ cd $ORACLE_HOME/admin/test/udump
$ ls -lrt
$ tkprof test_ora_2195620.trc report.txt sys=no explain=no aggregate=yes
$ more report.txt --这个文件包括了启停trace之间所有SQL语句的执行信息,执行计划、统计
【方法四:logminer】
只包含DML与DDL语句,不能查询select语句。
另外需要开启supplemental logging,默认是没有开启的。
conn / as sysdba
--安装LOGMINER
SQL》 @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;
SQL》 @$ORACLE_HOME/rdbms/admin/dbmslm.sql;
SQL》 @$ORACLE_HOME/rdbms/admin/dbmslms.sql;
SQL》 @$ORACLE_HOME/rdbms/admin/prvtlm.plb;
--开启附加日志
alter database add supplemental log data;
--模拟DML操作
conn p_chenming/...
SQL》 select * from test2;
SQL》 insert into test2 values(7,77);
SQL》 mit;
conn / as sysdba
--切归档
SQL》 alter system switch logfile;
SQL》 select name,dest_id,thread#,sequence# from v$archived_log; --最后一个即为新的归档
--新建LOG MINER
SQL》 execute dbms_logmnr.add_logfile(logfilename=》’/oracle/archive_10g/test/test_1_138_786808434.arc’,options=》dbms_logmnr.new);
--开始miner
SQL》 execute dbms_logmnr.start_logmnr(options=》dbms_logmnr.dict_from_online_catalog);
--查看结果
SQL》 col username format a8;
SQL》 col sql_redo format a50
SQL》 select username,s,timestamp,sql_redo from v$logmnr_contents where table_name=’TEST2’;
SQL》 select username,s,timestamp,sql_redo from v$logmnr_contents where username=’P_CHENMING’;
--关闭MINER
SQL》 execute dbms_logmnr.end_logmnr;
--关闭辅助日志
SQL》 alter database drop supplemental log data;
【总结】
查看v$sqlarea只能查看粗略的历史,因为很多SQL是共享的。
查看ASH也不全,因为这是采样数据。
查看TRACE应该是最完整的,但需要在执行SQL前开启。
查看logminer不能查看select语句,而且默认的系统没有开启supplementing log,所以能查看的内容有限。
在MS SQL Server中怎么查看正在执行的SQL
用MSSQL自带的工具 SQL Server Profiler 可以看到。\x0d\x0a\x0d\x0aSQL Profiler是一个图形界面和一组系统存储过程,其作用如下:\x0d\x0a图形化监视SQL Server查询;\x0d\x0a在后台收集查询信息;\x0d\x0a分析性能;\x0d\x0a诊断像死锁之类的问题;\x0d\x0a调试T-SQL语句;\x0d\x0a模拟重放SQL Server活动;
sql server 如何查找最后一条插入的记录
SQL Server 查询最后一条记录有两种方法,一种是使用TOP命令,一种是使用LIMIT命令,具体方法如下:
1、使用TOP
SELECT TOP 1 * FROM user;
SELECT TOP 1 * FROM user order by id desc;
2、 使用LIMIT
SELECT * FROM user LIMIT 1;
SELECT * FROM user ORDER BY id ASC LIMIT 1;
SELECT * FROM user ORDER BY id DESC LIMIT 1;
扩展资料:
Sqlserver一些基本命令:
1、查询数据库是否存在:
if DB_ID("testDB")is not null;
2、检查表是否存在:
if OBJECT_ID(“textDB”,“U”) is not null ;其中U代表用户表
3、创建数据库:
create database+数据名
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS)。

更多文章:
数组c语言例题(一道c语言题,关于数组的:有如下程序 main() {int n[5]={0,0,0),i)
2026年8月22日 18:15
crontab每月一断时间执行(crontab怎么设置在每个月的某一天不执行,其他时间都执行)
2025年9月24日 22:15
如何使用u盘安装linux系统(怎么用u盘安装过linux详细步骤!)
2026年1月10日 17:45
jdbctemplate jar包(我写了一个java程序(有main函数的那种),我现在想让这个程序每天定时自动运行一遍,望高手指点)
2025年7月30日 12:45
中俄联合巡航后,俄军图-95战略轰炸机首次降落中国?轰-20、轰-6、歼轰-20
2026年8月31日 00:30
reserve a table(reserve a table for 3 at 6 是啥意思)
2026年4月4日 16:45
在哪儿打开curl v(windows curl工具怎么用)
2025年11月3日 18:15
zabbix中文官网(The requested URL was not found on this server是什么意思)
2026年1月11日 12:45
git服务器硬件配置要求(做服务器,对电脑的配置要求是多少)
2026年1月1日 11:15
js转换时间格式(js中怎么将时间戳转换为 yyyy-mm-dd格式)
2025年8月2日 13:00
es6promise的理解(es6 promise的catch 和 then 的区别认识)
2025年9月27日 23:15
代码编辑器排行2022(电脑文本编辑器推荐_文本编辑器排行)
2026年1月4日 12:00









