當前位置:首頁 » 編程語言 » oracle查看歷史sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle查看歷史sql

發布時間: 2022-06-07 00:23:39

㈠ 如何查詢oracle資料庫的操作記錄

用sys用戶以dba身份登錄。

然後,查看視圖:V_$sql,如下參考:


select*
fromV_$SQLt
WHEREt.SERVICE='orcl'
andt.PARSING_SCHEMA_NAME='BHOA'
ANDT.SQL_TEXTLIKE'update%'
orderbyt.LAST_ACTIVE_TIME


可直接查出當前update的那條sql語句。從語句中可看出對什麼表進行了什麼操作。

㈡ 如何查詢oracle操作記錄的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; 查看當前用戶的角色

㈢ 如何查詢oracle表的操作日誌記錄

1、打開oracle sql developer工具,沒有此工具的可以去oracle官網下載安裝即可,剛剛安裝完成的是沒有記錄的,只有使用工具執行過後才會留下記錄可以查詢。打開之後不需要連接資料庫就可以查詢到sql記錄了。

㈣ 如何查看oracle某用戶近期執行的SQL

不能查看近期執行的sql,當前執行的可以查看。

㈤ 在ORACLE 中怎麼查看SQL 執行日誌

1、首先打開oracle sql developer工具,沒有此工具的可以去網路瀏覽器下載安裝即可,滑鼠點擊查看菜單。

㈥ 怎麼查看用戶的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 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,所以能查看的內容有限。

㈦ 如何查看oracle最近執行的sql

oracle 查詢最近執行過的 SQL語句

selectsql_text,last_load_timefromv$sqlorderbylast_load_timedesc;

SELECTsql_text,last_load_timeFROMv$sqlWHERElast_load_timeISNOTNULLandsql_textlike'select%'ORDERBYlast_load_timeDESC;

SELECTsql_text,last_load_timeFROMv$sqlWHERElast_load_timeISNOTNULLandsql_textlike'update%'ORDERBYlast_load_timeDESC;

SELECTsql_text,last_load_timeFROMv$sqlWHERElast_load_timeISNOTNULLandlast_load_timelike'14-06-09%'ORDERBYlast_load_timeDESC;

㈧ oracle 中怎樣查看以前執行過的SQL語句

您好,我來為您解答:
可以通過logminer分析日誌文件
查詢某時間段執行過的語句。
如果我的回答沒能幫助您,請繼續追問。