十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
1、打開(kāi)PL/SQL Developer,輸入正常的用戶(hù)名密碼后,選擇數(shù)據(jù)庫(kù),然后正常連接。如下圖。

為濉溪等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及濉溪網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、濉溪網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
2、正常登錄后,在PL/SQL Developer中打開(kāi)一個(gè)sql執(zhí)行窗口,操作如下圖1中標(biāo)紅的位置,選擇"SQL Window"。
3、在新出現(xiàn)的空白窗口中輸入正確的sql語(yǔ)句,如下圖。
2、在出現(xiàn)數(shù)據(jù)結(jié)果集后,點(diǎn)擊上圖2中標(biāo)紅的按鈕,出現(xiàn)新的對(duì)話(huà)框。這是要將數(shù)據(jù)結(jié)果集導(dǎo)出成各個(gè)不同的格式。
3、選擇第一個(gè)"CSV file",這樣導(dǎo)出的就是excel格式的數(shù)據(jù)集。
4、打開(kāi)指定的文件夾,就可以看到剛剛導(dǎo)出的文件,雙擊該文件就可以正常打開(kāi),結(jié)果和數(shù)據(jù)庫(kù)中查詢(xún)完出來(lái)的結(jié)果是一致的。
Events事件是Oracle的重要診斷工具及問(wèn)題解決辦法,很多時(shí)候需要通過(guò)Events設(shè)置來(lái)屏蔽或者更改Oracle的行為;
有四種類(lèi)型的Events:
Immediate dumps
Conditional dumps
Trace dumps
Events that change database behaviour
每一個(gè)事件都有一個(gè)號(hào)跟Oracle的錯(cuò)誤信息是一樣的.如10046和ORA-10046
1. 啟用 sql_trace 跟蹤當(dāng)前 session 開(kāi)啟會(huì)話(huà)跟蹤:alter session set sql_trace=true; 關(guān)閉會(huì)話(huà)跟蹤:alter session set sql_trace=false; 2. 啟用 10046 事件跟蹤全局 session 這將會(huì)對(duì)整個(gè)系統(tǒng)的性能產(chǎn)生嚴(yán)重的影響,所以一般不建議開(kāi)啟。 ...
沒(méi)用,只想從后臺(tái)數(shù)據(jù)庫(kù)看對(duì)這個(gè)數(shù)據(jù)庫(kù)執(zhí)行的sql問(wèn)題補(bǔ)充:unika_ly12 寫(xiě)道 那你直接查詢(xún) v$sqltext 和 v$session 好了 首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。 第二,為某個(gè)用戶(hù)開(kāi)啟sql跟蹤。那個(gè)用戶(hù)就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶(hù)。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數(shù)的意義是,sid-會(huì)話(huà)id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。 第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶(hù)所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫(xiě)在用戶(hù)跟蹤文件里。用戶(hù)跟蹤文件存放在數(shù)據(jù)庫(kù)服務(wù)器上,路徑請(qǐng)參考init.ora文件中的udump參數(shù)值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統(tǒng)進(jìn)程編號(hào),這個(gè)編號(hào)可以從v$process和v$session兩個(gè)表通過(guò)關(guān)聯(lián)的方式查詢(xún)得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。 首先,你要以dba身份登陸數(shù)據(jù)庫(kù)。 第二,為某個(gè)用戶(hù)開(kāi)啟sql跟蹤。那個(gè)用戶(hù)就是你要跟蹤的、正在執(zhí)行sql語(yǔ)句的那個(gè)用戶(hù)。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中參數(shù)的意義是,sid-會(huì)話(huà)id,serial#-序列號(hào),這兩個(gè)參數(shù)可以從v$session中得到。 第三,上面的命令執(zhí)行成功之后數(shù)據(jù)庫(kù)就自動(dòng)對(duì)該用戶(hù)所發(fā)出的所有sql語(yǔ)句進(jìn)行跟蹤,并把結(jié)果寫(xiě)在用戶(hù)跟蹤文件里。用戶(hù)跟蹤文件存放在數(shù)據(jù)庫(kù)服務(wù)器上,路徑請(qǐng)參考init.ora文件中的udump參數(shù)值。文件名為ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系統(tǒng)進(jìn)程編號(hào),這個(gè)編號(hào)可以從v$process和v$session兩個(gè)表通過(guò)關(guān)聯(lián)的方式查詢(xún)得到。當(dāng)然你也可以簡(jiǎn)單的查看一下哪個(gè)trc文件的日期最新,哪個(gè)文件就是你要的結(jié)果了。
1 audit
用審記來(lái)記錄用戶(hù)的操作信息
2 trigger
用系統(tǒng)觸發(fā)器來(lái)記錄用戶(hù)登錄
3 logmnr
從log文件中挖出用戶(hù)登錄信息
推薦使用第3種,不占用系統(tǒng)資源,而且很方便。
===============================
Oracle 中記錄用戶(hù)登錄信息
我們可以使用 Oracle Audit 函數(shù)來(lái)記錄用戶(hù)登錄信息,但是如果開(kāi)放了 Audit 函數(shù)將會(huì)使Oracle 性能下降,甚至導(dǎo)致 Oracle 崩潰。那我們?nèi)绾尾拍苡涗浻脩?hù)登錄信息呢?其實(shí)我們可以通過(guò)建立觸發(fā)器的方式來(lái)實(shí)現(xiàn)。方法如下:
1. 用 sys 用戶(hù)登錄 Oracle
2. 創(chuàng)建記錄用戶(hù)登錄信息的表
CREATE TABLE LOG$INFORMATION
(
ID NUMBER(10),
USERNAME VARCHAR2(30),
LOGINTIME DATE,
TERMINAL VARCHAR2(50),
IPADRESS VARCHAR2(20),
OSUSER VARCHAR2(30),
MACHINE VARCHAR2(64),
PROGRAM VARCHAR2(64),
SID NUMBER,
SERIAL# NUMBER,
AUSID NUMBER
)
/
3. 創(chuàng)建一個(gè) Sequence,作為登錄信息的主鍵
CREATE SEQUENCE LOGIN_SEQ
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20
/
4. 創(chuàng)建觸發(fā)器,記錄用戶(hù)登錄信息
CREATE OR REPLACE TRIGGER LOGIN_RECORD_TR
AFTER logon ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(iiQuerySid IN NUMBER) IS
SELECT * FROM v$session
WHERE audsid = iiQuerySid;
BEGIN
OPEN cSession(userenv('SESSIONID'));
FETCH cSession INTO mtSession;
IF cSession%FOUND AND SYS_CONTEXT ('USERENV','IP_ADDRESS') IS NOT NULL THEN
INSERT INTO log$information(
id,
username,
logintime,
terminal,
ipadress,
osuser,
machine,
program,
sid,
serial#,
ausid
) VALUES(
login_seq.nextval,
USER,
SYSDATE,
mtSession.Terminal,
SYS_CONTEXT ('USERENV','IP_ADDRESS'),
mtSession.Osuser,
mtSession.Machine,
mtSession.Program,
mtSession.Sid,
mtSession.Serial#,
userenv('SESSIONID')
);
END IF;
CLOSE cSession;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
5. 將 SYS.LOG$INFORMATION 授權(quán)給需要查看登錄記錄的用戶(hù)
Grant select on SYS.LOG$INFORMATION to XXX
/
=======================================
審計(jì)用戶(hù)登錄和登出
記錄每個(gè)用戶(hù)每次登錄數(shù)據(jù)庫(kù)和退出數(shù)據(jù)庫(kù)的日期和事件。設(shè)置步驟如下:
1. 設(shè)置系統(tǒng)審計(jì)相關(guān)的參數(shù)
2. 重新啟動(dòng)數(shù)據(jù)庫(kù)
3.以SYSTEM帳號(hào)登錄數(shù)據(jù)庫(kù)執(zhí)行下列語(yǔ)句,設(shè)置CONNECT審計(jì)并檢查是否設(shè)置成功:
SQL connect system/password
SQL audit connect
SQL col user_name format a11
SQL col audit_option format a14
SQL select user_name, audit_option, success, failure
from sys.dba_stmt_audit_opts;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
----------- -------------- ---------- ----------
CREATE SESSION BY ACCESS BY ACCESS
4.查詢(xún) AUD$表就可以查看到審計(jì)結(jié)果了
SQL col userid format a8
SQL select sessionid, to_char(timestamp#,'DD-MON-YY:HH24:MI:SS') login,
userid, to_char(logoff$time,'DD-MON-YY:HH24:MI:SS') logoff
from sys.aud$ where userid='SCOTT';
SESSIONID LOGIN USERID LOGOFF
---------- ------------------ -------- ------------------
132 22-FEB-00:13:55:06 SCOTT 22-FEB-00:14:04:05
注意:不同的版本的ORACLE數(shù)據(jù)庫(kù)AUD$字典會(huì)有所不同,實(shí)際情況請(qǐng)參照你當(dāng)前版本的數(shù)據(jù)庫(kù)的AUD$表。
1.4.11 審計(jì)SYS用戶(hù)的操作(ORACLE 9i Release 2)
在ORACLE 9.2之前,SYS帳戶(hù)是系統(tǒng)中的一個(gè)唯一不受審計(jì)的帳戶(hù)。在ORACLE 9I Release 2和以后的版本中,通過(guò)一些設(shè)置就可以對(duì)SYS帳號(hào)進(jìn)行審計(jì)。
在ORACLE 9.2以后的版本中,可以通過(guò)設(shè)置AUDIT_SYS_OPERATIONS可以實(shí)現(xiàn)對(duì)具有SYS/SYSDBA/SYSOPER權(quán)限的用戶(hù)的審計(jì)。
1.4.12 使用WINDOWS 事件管理器來(lái)記錄審計(jì)信息
和UNIX系統(tǒng)不同,WINDOWS的審計(jì)結(jié)果不是存儲(chǔ)在操作系統(tǒng)文件中,而是直接存儲(chǔ)在WINDOWS 事件日志中。本節(jié)介紹如何配置數(shù)據(jù)庫(kù)審計(jì),并用事件管理器來(lái)查看審計(jì)記錄。
在WINDOWS下設(shè)置數(shù)據(jù)庫(kù)審計(jì),需要按照如下的步驟:
1、配置審計(jì)
首先要確認(rèn)WINDOWS的事件日志(EVENTLOG)服務(wù)是否啟動(dòng)??梢酝ㄟ^(guò)“控制面板/管理工具/服務(wù)”工具來(lái)查看。
然后通過(guò)修改ORACLE的參數(shù)(參數(shù)修改方法參見(jiàn)前面的關(guān)于ORACLE參數(shù)文件的描述)AUDIT_TRAIL:
AUDIT_TRAIL=0S
在WINDFOWS平臺(tái)下要注意的是:
不管AUDIT_TRAIL設(shè)置為什么值,有部分ORACLE的操作會(huì)記錄在事件日志中
在WINDOWS下不支持AUDIT_FILE_DEST參數(shù),如果設(shè)置了該參數(shù),數(shù)據(jù)庫(kù)會(huì)報(bào)錯(cuò)
LRM-00101: UNKNOWN PARAMETER NAME 'AUDIT_FILE_DEST'
ORA-01078: FAILURE IN PROCESSING SYSTEM PARAMETERS
在使用審計(jì)前,要確保事件日志有足夠大的空間來(lái)存儲(chǔ)審計(jì)信息
2、檢查是否安裝好AUDIT相關(guān)的對(duì)象
最簡(jiǎn)單的檢查方法是看看AUD$是否存在。如果AUDIT相關(guān)對(duì)象安裝不正確,可以通過(guò)%ORACLE_HOME%\rdbms\admin\cataudit.sql腳本來(lái)安裝AUDIT相關(guān)對(duì)象。如果要?jiǎng)h除審計(jì),可以執(zhí)行%ORACLE_HOME%\rdbms\admin\catnoaud.sql。
3、配置審計(jì)
在配置審計(jì)之前,首先要說(shuō)明的是,審計(jì)是一種會(huì)帶來(lái)額外開(kāi)銷(xiāo)的操作。因此在可能的情況下,盡量減少審計(jì)操作。另外,如果打開(kāi)審計(jì)操作,那么對(duì)一些數(shù)據(jù)庫(kù)事件的審計(jì)是缺省的,這些審計(jì)事件包括:
實(shí)例關(guān)閉
通過(guò)SYSOPER和SYSDBA連接數(shù)據(jù)庫(kù)
在WINDOWS下配置審計(jì)的步驟和在UNIX下配置審計(jì)類(lèi)似,這里就不再描述了。審計(jì)信息會(huì)自動(dòng)寫(xiě)入WINDOWS的事件日志種,通過(guò)事件管理器可以查看日志。