¹ØÓÚsql trace ºÍ 10046ʼþµÄ˵Ã÷
ÔÎĵØÖ·£ºhttp://www.eygle.com/case/Use.sql_trace.to.Diagnose.database.htm
SQL_TRACEÊÇOracleÌṩµÄÓÃÓÚ½øÐÐSQL¸ú×ÙµÄÊֶΣ¬ÊÇÇ¿ÓÐÁ¦µÄ¸¨ÖúÕï¶Ï¹¤¾ß.ÔÚÈÕ³£µÄÊý¾Ý¿âÎÊÌâÕï¶ÏºÍ½â¾öÖУ¬SQL_TRACEÊǷdz£³£Óõķ½·¨¡£
±¾ÎľÍSQL_TRACEµÄʹÓÃ×÷¼òµ¥Ì½ÌÖ£¬²¢Í¨¹ý¾ßÌå°¸Àý¶Ôsql_traceµÄʹÓýøÐÐ˵Ã÷.
Ò»¡¢ »ù´¡½éÉÜ
(a) SQL_TRACE˵Ã÷
SQL_TRACE¿ÉÒÔ×÷Ϊ³õʼ»¯²ÎÊýÔÚÈ«¾ÖÆôÓã¬Ò²¿ÉÒÔͨ¹ýÃüÁîÐз½Ê½ÔÚ¾ßÌåsessionÆôÓá£
1£® ÔÚÈ«¾ÖÆôÓÃ
ÔÚ²ÎÊýÎļþ(pfile/spfile)ÖÐÖ¸¶¨:
sql_trace =true
ÔÚÈ«¾ÖÆôÓÃSQL_TRACE»áµ¼ÖÂËùÓнø³ÌµÄ»î¶¯±»¸ú×Ù£¬°üÀ¨ºǫ́½ø³Ì¼°ËùÓÐÓû§½ø³Ì£¬Õâͨ³£»áµ¼Ö±ȽÏÑÏÖØµÄÐÔÄÜÎÊÌ⣬ËùÒÔÔÚÉú²ú»·¾³
ÖÐÒª½÷É÷ʹÓÃ.
Ìáʾ: ͨ¹ýÔÚÈ«¾ÖÆôÓÃsql_trace£¬ÎÒÃÇ¿ÉÒÔ¸ú×Ùµ½ËùÓкǫ́½ø³ÌµÄ»î¶¯£¬ºÜ¶àÔÚÎĵµÖеijéÏó˵Ã÷£¬Í¨¹ý¸ú×ÙÎļþµÄʵʱ±ä»¯£¬ÎÒÃÇ¿ÉÒÔÇåÎú
µÄ¿´µ½¸÷¸ö½ø³ÌÖ®¼äµÄ½ôÃÜе÷.
2£® ÔÚµ±Ç°session¼¶ÉèÖÃ
´ó¶àÊýʱºòÎÒÃÇʹÓÃsql_trace¸ú×Ùµ±Ç°½ø³Ì.ͨ¹ý¸ú×Ùµ±Ç°½ø³Ì¿ÉÒÔ·¢ÏÖµ±Ç°²Ù×÷µÄºǫ́Êý¾Ý¿âµÝ¹é»î¶¯(ÕâÔÚÑо¿Êý¾Ý¿âÐÂÌØÐÔʱÓÈÆäÓÐЧ)£¬
Ñо¿SQLÖ´ÐУ¬·¢ÏÖºǫ́´íÎóµÈ.
ÔÚsession¼¶ÆôÓúÍÍ£Ö¹sql_trace·½Ê½ÈçÏÂ:
ÆôÓõ±Ç°sessionµÄ¸ú×Ù:
SQL> alter session set sql_trace=true;
Session altered.
´ËʱµÄSQL²Ù×÷½«±»¸ú×Ù:
SQL> select count(*) from dba_users;
COUNT(*)
----------
34
½áÊø¸ú×Ù:
SQL> alter session set sql_trace=false;
Session altered.
3£® ¸ú×ÙÆäËûÓû§½ø³Ì
ÔںܶàʱºòÎÒÃÇÐèÒª¸ú×ÙÆäËûÓû§µÄ½ø³Ì£¬¶ø²»Êǵ±Ç°Óû§£¬Õâ¿ÉÒÔͨ¹ýOracleÌṩµÄϵͳ°üDBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION
À´Íê³É
SET_SQL_TRACE_IN_SESSION¹ý³ÌÐòÒªÌṩÈý¸ö²ÎÊý:
SQL> desc dbms_system
...
PROCEDURE SET_SQL_TRACE_IN_SESSION
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SID NUMBER IN
SERIAL# NUMBER IN
SQL_TRACE BOOLEAN IN
...
ͨ¹ýv$sessionÎÒÃÇ¿ÉÒÔ»ñµÃsid¡¢serial#µÈÐÅÏ¢:
»ñµÃ½ø³ÌÐÅÏ¢£¬Ñ¡ÔñÐèÒª¸ú×ٵĽø³Ì:
SQL> select sid,serial#,username from v$session
Ïà¹ØÎĵµ£º
#include "iostream.h"
#include "stdio.h"
#import "C:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
int main(int argc, char* argv[])
{
::CoInitialize(NULL);
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance("ADODB.Connection");
tr ......
--¿ç·þÎñÆ÷²éѯÈçÏ£º
SELECT a.*,b.stor_Name
from OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=tom;UID=sa;PWD=123',
pubs.dbo.authors) AS a,stores b
ORDER BY a.au_lname, a.au_fname
--ÆäÖУ¬tomΪԶ³Ì·þÎñÆ÷Ãû£¬stores ÊDZ¾»úÊý¾Ý¿âpubsÖеıí
--ÐèҪעÒâµÄÊÇÈô¶þ¸ö±íÖÐµÄ ......
ÐÂ×°»òÕßÒÔǰװ¹ýsql server£¬ºóÀ´É¾µô¡£ÏÖÔÚ֨װ£¬»á³öÏÖ“ÒÔǰµÄij¸ö³ÌÐò°²×°ÒÑÔÚ°²×°¼ÆËã»úÉÏ´´½¨¹ÒÆðµÄÎļþ²Ù×÷£¬ÔËÐа²×°³ÌÐò֮ǰ±ØÐëÖØÐÂÆô¶¯¼ÆËã»ú”´íÎó¡£ÎÞ·¨½øÐÐÏÂÈ¥¡£
ÒÔÏÂΪ½â¾ö²½Ö裺
1£©Ìí¼Ó/ɾ³ý³ÌÐòÖг¹µ×ɾ³ýsql server¡£
2£©½«Ã»ÓÐɾ³ýµÄsql serverĿ¼Ҳɾ³ýµô¡£
3£©´ò¿ª×¢²á±í±à¼Æ÷£ ......
±í£ºÓû§ºÅÂ룬µÇ¼ʱ¼ä
ÏÔʾ £ºÃ¿ÈյǼ¸÷ʱ¼ä¶ÎµÄµÇ¼ÈËÊý£¬ºÍÿÌìµÇ¼ÈËÊý
if isnull(object_id('#tb'),'')=''
drop table #tb
CREATE TABLE #tb(ÁÐÃû1 varchar(12),ʱ¼ä datetime)
INSERT INTO #tb
SELECT '03174190188','2009-11-01 07:17:39.217' UNION ALL
SELECT '015224486575','2009-11-01 08:01:17.153' ......
¡¾1¡¿
create procedure proc_pager1
( @pageIndex int, -- ҪѡÔñµÚXÒ³µÄÊý¾Ý
@pageSize int -- ÿҳÏÔʾ¼Ç¼Êý
)
AS
BEGIN
declare @sqlStr varchar(500)
set @sqlStr='select top '+con ......