如何知道指令碼中正在執行的SQL語句
阿新 • • 發佈:2018-12-31
1、發變更讓值班同事執行如下指令碼
nohup sh ./spa.sh &
而spa.sh內容如下:
cat spa.sh
sqlplus ' / as sysdba' << eof
@POLICY_SPA.sql
exit;
eof
2、第二天上班來複核指令碼,是否還在執行。
ps -ef | grep sqlplus | grep -v grep
opepcis 14431 13946 0 09:05:04 ? 1:59 sqlplus -s / as sysdba
opepcis 44610 44382 0 Jan 13 ? 0:01 sqlplus dbmon/[email protected] :1530/monitor
opepcis 45336 19373 0 08:56:07 pts/3 0:00 sqlplus / as sysdba
opepcis 14850 1 0 23:08:21 ? 0:00 sqlplus / as sysdba
那假設,我們想看下pid為14850的執行sql語句,是否可行呢?
3、執行如下命令
09:21:57 [email protected]>SELECT t.sql_fulltext FROM v$process p,v$session s,v$sql t
09:22:06 2 WHERE p.SPID=&1
09:22:12 3 AND p.ADDR=s.PADDR
09:22:16 4 AND t.sql_id=s.sql_id;
Enter value for 1: 14850
old 2: WHERE p.SPID=&1
new 2: WHERE p.SPID=14850
no rows selected
4、會不會是,產生了子程序?
通過子程序來查?
ps -ef | grep 14850 | grep -v grep
opepcis 14850 1 0 23:08:21 ? 0:00 sqlplus / as sysdba
opepcis 14851 14850 0 23:08:21 ? 88:57 oracleepcis (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
嘗試查一下14851:
09:23:22 [email protected]>SELECT t.sql_fulltext FROM v$process p,v$session s,v$sql t
WHERE p.SPID=14851
AND p.ADDR=s.PADDR
AND t.sql_id=s.sql_id;
SQL_FULLTEXT
--------------------------------------------------------------------------------
BEGIN
DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET(SQLSET_NAME
=> 'STS_AUQIT07
OK能夠查到,正在執行的語句了!
nohup sh ./spa.sh &
而spa.sh內容如下:
cat spa.sh
sqlplus ' / as sysdba' << eof
@POLICY_SPA.sql
exit;
eof
2、第二天上班來複核指令碼,是否還在執行。
ps -ef | grep sqlplus | grep -v grep
opepcis 14431 13946 0 09:05:04 ? 1:59 sqlplus -s / as sysdba
opepcis 44610 44382 0 Jan 13 ? 0:01 sqlplus dbmon/[email protected]
opepcis 45336 19373 0 08:56:07 pts/3 0:00 sqlplus / as sysdba
opepcis 14850 1 0 23:08:21 ? 0:00 sqlplus / as sysdba
那假設,我們想看下pid為14850的執行sql語句,是否可行呢?
3、執行如下命令
09:21:57 [email protected]>SELECT t.sql_fulltext FROM v$process p,v$session s,v$sql t
09:22:06 2 WHERE p.SPID=&1
09:22:12 3 AND p.ADDR=s.PADDR
09:22:16 4 AND t.sql_id=s.sql_id;
Enter value for 1: 14850
old 2: WHERE p.SPID=&1
new 2: WHERE p.SPID=14850
no rows selected
4、會不會是,產生了子程序?
通過子程序來查?
ps -ef | grep 14850 | grep -v grep
opepcis 14850 1 0 23:08:21 ? 0:00 sqlplus / as sysdba
opepcis 14851 14850 0 23:08:21 ? 88:57 oracleepcis (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
嘗試查一下14851:
09:23:22
WHERE p.SPID=14851
AND p.ADDR=s.PADDR
AND t.sql_id=s.sql_id;
SQL_FULLTEXT
--------------------------------------------------------------------------------
BEGIN
DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET(SQLSET_NAME
=> 'STS_AUQIT07
OK能夠查到,正在執行的語句了!