❶ 怎麼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工具,沒有此工具的可以去網路瀏覽器下載安裝即可,滑鼠點擊查看菜單。