Ⅰ 如何查看 sql 的操作记录
SELECT * From ::fn_dblog(Default,Default)
DBCC Log(database,type)
database- 任一数据库的ID或名字
type - 输出结果的类型:
0 - 最少信息(operation, context, transaction id)
1 - 更多信息(plus flags, tags, row length)
2 - 非常详细的信息(plus object name, index name,page id, slot id)
3 - 每种操作的全部信息
4 - 每种操作的全部信息加上该事务的16进制信息
默认 type = 0
Ⅱ 怎么查看用户的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 procere successfully completed.
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 procere successfully completed.
$ cd $ORACLE_HOME/admin/test/ump
$ 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> commit;
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,scn,timestamp,sql_redo from v$logmnr_contents where table_name='TEST2';
SQL> select username,scn,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,所以能查看的内容有限。
Ⅲ 查询用户sql语句
select*
fromtest
whereu='a'
union
selectt2.*
fromtestt1leftjointestt2ont1.id=t2.pid
leftjoin(select*
fromtest
whereu='a')t3ont2.pid>=t3.id
whereisnull(t2.u,'')<>''
andisnull(t3.u,'')<>''
用户:u;ParentId:pid
Ⅳ SQL 登录访问记录怎么查询
你可以在控制面板里的性能和维护里的管理工具——计算机管理——本地用户——组——打开 Remote Desktop Users 看里面有没有
用户(不应该有半个)
管理工具——本地安全设置——审核策略——自己调试一下
还可以在控制面板---管理工具——事件查看器--查看电脑开机后运行程序的信息
隔几天到事件察看器里看吧!!!
Ⅳ 如何用SQL查询记录
首先需要登录
打开 Sql
Server
先展开需要查询的表,了解其中的字段名后点击新建查询
查询中输入如下命令:
select
top
20
UserID,UserName
from
ReportServer$SQLSERVER.dbo.Users
即可查看所有符合条件的记录。
注:其中 top
20
为最先的20条。可以去掉后显示所有。
UserID,UserName
为指定字段名,如替换为
*
则显示所有字段。
ReportServer$SQLSERVER.dbo.Users,分别为库名,表名。
Ⅵ 怎么查看用户的SQL执行历史
查看粗此用户的SQL执行历史的语句如下:
select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('用户名') order by t.LAST_ACTIVE_TIME desc
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc
注意 :执行此语句等等一些相关的语句谈凳祥 必须具有DBA 的权限 虽然这条语句很普含搏通 但是需要的时候很管用 能够及时查出一个人执行sql语句情况
Ⅶ 如何使用SQL语句在一个表中查询: 同一个人购买两个以上相同产品的记录要求显示所有符合条件的人.
select SaleID,GoodsID from Table
group by SaleID,GoodsID
例如:
select f1,f2,...,fn
from table
group by f1,f2,...,fn
having count(1)>1 查出存在相同的f1,f2,..,fn
想查找出记录则
select t1.* from table t1
(7)查询用户记录sql扩展阅读:
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
Ⅷ 用SQL数据库如何查看数据库的用户
select * from tableName;
tableName是租羡数据库中注册用键型槐户表。
查询具体的字段:
SELECT column_name,column_name FROM tableName;
例子:
获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表):
SELECT LastName,FirstName FROM Persons;
(8)查询用户记录sql扩展阅读:
获取数据库所有表的字段及其字段
select table_name,column_name,column_comment,column_type,column_key from information_schema.Columns
where table_schema='数稿友据库'
获取数据库某个表的字段及其字段
select table_name,column_name,column_comment,column_type,column_key from information_schema.Columns
where table_name='表名' and table_schema='数据库'
Ⅸ sql 取每个用户的最新记录
你把表指定一下不就得了!~
晕倒 我外面套的sql就是要用来取最新时间的 你怎么给我去了
select *
from table,
(select userid as id,max(imagedate) as maxtime
from table
group by userid) aa
where table.userid=aa.id
and table.imagedate=aa.maxtime
Ⅹ SQL 查询统计每个用户组发文章数量并按数量排序
createtablet1--文章表
(
titlevarchar2(10),
contentvarchar2(100),
useridvarchar2(10),
dtdate--假如格式为2013-10-1810:23:00
);
create毁槐tablet2--用户表
(
groupidvarchar2(10),
useridvarchar2(10),
pwdvarchar2(10)
);
createtablet3--用户组表
(
contentidvarchar2(10),
groupidvarchar2(10),
groupnmvarchar2(10)
);
1.selectgroupid,groupnm,count(1)countfromt3groupbygroupid,groupnmorderbycount(1)desc;--降序
2.selectgroupid,count(1)from纤哗友t1,t2wheret1.userid=t2.useridgroupbygroupid,substring(dt,0,6);
有问题再芦衡追问,望采纳。