❶ 怎么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语句情况
-------oracle 查看已经执行过的sql 这些是存在共享池中的 --------->
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc
-----------查看oracle会话----------------------------》
select * from v$session t order by t.LAST_ACTIVE_TIME desc
-------------查看oracle的权限角色------------------------------>
select * from dba_role_privs; 授予用户和其他角色的角色
select * from dba_sys_privs; 授予用户和其他角色的系统权限
select * from dba_tab_privs; 数据库中对象的所有授权
select * from user_role_privs; 查看当前用户的角色
❷ mysql怎么查询执行sql的记录
-- 打开sql 执行记录功能
set global log_output='TABLE' -- 输出到表
set global log=ON; -- 打开所有命令
执行记录功能general_log, 所有语句: 成功和未成功的.
set global log_slow_queries=ON; -- 打开慢查询 sql 记录
slow_log, 执行成功的: 慢查询语句和未使用索引的语句
set global long_query_time=0.1; -- 慢查询时间限制(秒)
set global log_queries_not_using_indexes=ON; -- 记录未使用索引的sql 语句
-- 查询sql 执行记录
select * from mysql.slow_log order by 1; -- 执行成功的:慢查询语句,和未
使用索引的语句
select * from mysql.general_log order by 1; -- 所有语句: 成功和未成功的.-- 关闭sql 执行记
❸ 数据库之SQL操作表记录
插入数据的规则:
1、插入的数据应与字段的数据类型相同。
2、数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
3、在values中列出的数据位置必须与被加入的列的排列位置相对应。
4、字符和日期型数据应包含在单引号中。
5、插入空值:不指定或insert into table value(null)。
6、如果要插入所有字段可以省写列列表,直接按表中字段顺序写值列表。
更新数据规则:
1、UPDATE语法可以用新值更新原有表行中的各列。
2、SET子句指示要修改哪些列和要给予哪些值。
3、WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行
删除数据的规则:
1、如果不使用where子句,将删除表中所有数据。
2、delete语句不能删除某一列的值(可使用update)。
3、使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
其中FROM指定从哪张表筛选,*表示查找所有列,也可以指定一个列列表明确指定要查找的列,DISTINCT用来剔除重复行。
其中ASC代表升序(默认就是升序),DESC代表降序。
1、COUNT -- 用来统计符合条件的行的个数
2、SUM -- 用来将符合条件的记录的指定列进行求和操作
3、AVG -- 用来计算符合条件的记录的指定列的值的平均值
4、MAX/MIN -- 用来获取符合条件的所有记录指定列的最大值和最小值
当表中某个列中的值有重复时,我们可以用GROUP BY来进行分组查询。具体分组原理可以参考: https://blog.csdn.net/u014717572/article/details/80687042
例如有如下一张订单表orders:
WHERE子句和HAVING子句的区别:
(1)WHERE子句在分组之前进行过滤,HAVING子句在分组之后进行过滤
(2)HAVING子句中可以使用聚合函数,WHERE子句中不能使用
(3)很多情况下使用WHERE子句的地方可以使用HAVING子句进行替代
书写顺序:SELECT FROM WHERE GROUP BY HAVING ORDER BY
执行顺序:FROM WHERE SELECT GROUP BY HAVING ORDER BY
❹ 行云日志表查看sql使用情况
一、行云的系统表v$sys_audit_log,可以根据此表查看所有sql的相关信息
二、系统表v$sys_audit_log字段说明:
以下是查看一条sql的例子:
1)Sql :
insert into /*+IGNORE_SURPLUS_COLUMN IMPLICATION_PARTITION IGNORE_LINES(1) IGNORE_ERR_LINE */ STAGE.ZC_S1_ESM_CDR(LEN,MSG_TYPE,SEQ_ID,FRAG,MF,OFFSET,TOTAL_LEN,TABLE_ID,SERVICE_TYPE,POLICY_ID,START_TIME,CDR_ID,DEVICE_ID,FILTER_FLAG,DATA_TYPE,CUP_CLOCK_MUL,SDR_ID,CDR_TYPE,MSG_TYPE1,EBI,IP_TYPE,USER_IPV4,USER_IPV6,M_TMSI,MME_GROUP_ID,MME_CODE,REQ_COUNT,MME_UE_S1AP_ID,ENB_UE_S1AP_ID,MME_IP,ENODEB_IP,MME_PORT,ENODEB_PORT,CUR_ECI,CUR_TAC,MCC,MNC,CAUSE,CA_TYPE,UPLINK_COUNT,DOWNLINK_COUNT,RESP_DELAY,TOTAL_TIME,IMSI,CALLING,IMEI,APN,CDR_RESULT,MSISDN_CAPABILITY) partition on(PART_ID='3') 'hdfs:/tmp/bdi-exchange/.AVL' SEPARATOR '0x01'
2)根据sql执行时间范围进行查找(这里是2020年2月7号):
3)缩小搜索范围:
STATEMENT字段值为下发的sql,可以通过sql中较难出现的字符串,用like关键字进行过滤(这里是.AVL)
4)已经找到该sql:
第一条是下发sql时的记录,OPERATE字段值对应的是EXECUTE;第二条是sql执行完的记录,OPERATE字段值对应的是EXECUTED(特别说明:常用的是看一条sql执行耗时,可以看第二条记录与第一条记录LOG_TIME的时间差)
❺ 在ORACLE 中怎么查看SQL 执行日志
1、首先打开oracle sql developer工具,没有此工具的可以去网络浏览器下载安装即可,鼠标点击查看菜单。