ওরাকল: এসকিএল সার্ভারের জন্য প্রোফাইলার এর মতো কোয়েরিগুলি ট্রেস করার কোনও সরঞ্জাম আছে? [বন্ধ]


86

আমি স্কিএল সার্ভারের সাথে কাজ করি তবে আমার অবশ্যই ওরাকল ডিবি সহ একটি অ্যাপ্লিকেশনটিতে স্থানান্তরিত করতে হবে। আমার অ্যাপ্লিকেশন প্রশ্নের সন্ধানের জন্য, এসকিএল সার্ভারে আমি দুর্দান্ত প্রোফাইলার সরঞ্জামটি ব্যবহার করি। ওরাকল এর সমতুল্য কিছু আছে কি?


38
আপনি কেন একটি ভুল উত্তর গ্রহণ করলেন? পরিকল্পনাটি ব্যাখ্যা করুন প্রোফাইলার যা করেন না তা করেন না। এটি সম্পূর্ণ সম্পর্কিত নয়।
জুঁই

4
আপনি কি মত সেরা সরঞ্জাম খুঁজে পেয়েছেন sql server profiler? আপনি এখন কি ব্যবহার করছেন?
শহীদ গাফুর

আমি ওরাকল অ্যাপ্লিকেশনগুলি ট্রেসিং সম্পর্কে একটি বই লিখেছি। এটি মেথড-আর.কম- এ পিডিএফ আকারে উপলব্ধ ।
কেরি মিলসাপ

দয়া করে ডিভার্ট থেকে ওরাকল এর জন্য ডিবিফর্জি স্টুডিওতে ওরাকল প্রোফাইলারটি দেখুন
ডিভার্ট

নীচে প্রচুর উত্তর, কিন্তু আশ্চর্যের সাথে কেউই পিএল / এসকিউএল- এর জন্য ওরাকল এর দু'জন প্রোফাইলারের মধ্যে কোনটির উল্লেখ করেননি : DBMS_PROFILER(বেসিক এবং সীমাবদ্ধ তবে সুপার-সুবিধাজনক) বা DBMS_HPROF(আরও নির্ভুল তবে আরও সেটআপ প্রয়োজন)। যাইহোক, আমি এসকিউএল সার্ভারকে জানি না তাই এটি ওরাকল প্যাকেজগুলির মধ্যে যে কোনওটির চেয়ে প্রোফাইলিংয়ের আলাদা ধারণা থাকতে পারে এবং আপনি যা চান তা ওরাকলে ট্রেস করার মতো।
উইলিয়াম রবার্টসন

উত্তর:


22

সক্রিয় সেশনগুলি নিরীক্ষণের জন্য আপনি ওরাকল এন্টারপ্রাইজ ম্যানেজারটি ব্যবহার করতে পারেন, যা চালানো হচ্ছে এমন ক্যোয়ারী, এর এক্সিকিউশন প্ল্যান, লকস, কিছু পরিসংখ্যান এবং দীর্ঘ কাজের জন্য একটি অগ্রগতি বারও রয়েছে।

দেখা: http://download.oracle.com/docs/cd/B10501_01/em.920/a96674/db_admin.htm#1013955

দৃষ্টান্ত -> সেশনে যান এবং প্রতিটি সেশনের এসকিউএল ট্যাবটি দেখুন।

অন্যান্য উপায় আছে। এন্টারপ্রাইজ ম্যানেজার শুধু চমত্কার রং দিয়ে রাখে কি এখানে নথিভুক্ত মতো বিশেষ মতামত ইতিমধ্যেই পাওয়া যায়: http://www.oracle.com/pls/db92/db92.catalog_views?remark=homepage

এবং, অবশ্যই আপনি প্ল্যান ফর, ট্র্যাক সরঞ্জাম এবং যন্ত্রের আরও অনেকগুলি উপায়ও ব্যাখ্যা করতে পারেন। শীর্ষ ব্যয়বহুল এসকিউএল কোয়েরিগুলির জন্য এন্টারপ্রাইজ ম্যানেজারে কিছু প্রতিবেদন রয়েছে। আপনি ক্যাশে রাখা সাম্প্রতিক ক্যোয়ারীও অনুসন্ধান করতে পারেন।


19

আমি একটি সহজ সমাধান খুঁজে পেয়েছি

ধাপ 1. পিএলএসকিউএল বা স্কেলডেভলভার বা অন্য কোনও ক্যোয়ারী ইন্টারফেস ব্যবহার করে কোনও প্রশাসক ব্যবহারকারীর সাথে ডিবিতে সংযুক্ত হন

ধাপ ২. স্ক্রিপ্ট দমন করুন; এসএসকিউএল_এইচপিআর্টাম কলামে, আপনি সম্পাদিত প্রশ্নগুলি দেখতে পাবেন

SELECT            
 S.LAST_ACTIVE_TIME,     
 S.MODULE,
 S.SQL_FULLTEXT, 
 S.SQL_PROFILE,
 S.EXECUTIONS,
 S.LAST_LOAD_TIME,
 S.PARSING_USER_ID,
 S.SERVICE                                                                       
FROM
 SYS.V_$SQL S, 
 SYS.ALL_USERS U
WHERE
 S.PARSING_USER_ID=U.USER_ID 
 AND UPPER(U.USERNAME) IN ('oracle user name here')   
ORDER BY TO_DATE(S.LAST_LOAD_TIME, 'YYYY-MM-DD/HH24:MI:SS') desc;

এটির সাথে একমাত্র ইস্যুটি হ'ল আমি ইনপুট পরামিতিগুলির মানগুলি (ফাংশন কলগুলির জন্য) দেখানোর কোনও উপায় খুঁজে পাই না তবে কমপক্ষে আমরা দেখতে পারি যে ওরাকলে কী চলছে এবং কোনও নির্দিষ্ট সরঞ্জাম ব্যবহার না করে এর ক্রমটি ঘটতে পারে।


4
এসকিউএল_আরএইচআরএফএসটি কেটে যাওয়ার সাথে সাথে ক্যোয়ারী পাঠ্যটি 1000 টি অক্ষরের বেশি হলে আপনি এস.এসকিউএল_এফএলএলএকটি যোগ করতে পারেন।
ট্রিডাস

4
আপনার LAST_ACTIVE_TIME দ্বারা অর্ডার করা উচিত নয় কারণ এটি VARCHAR2 (19)। পরিবর্তে এটি ব্যবহার করুন: অর্ডার বাই_ডেট (এস.এল.এস.এল.এস.এল.ডি.আল.), 'ইয়াইওয়াই-এমএম-ডিডি / এইচএইচ 24: এমআই: এসএস') ডেস্ক
ইগোর ক্রাপিটস্কি

4
ORA-00942: টেবিল বা দৃশ্যটি বিদ্যমান নেই 00942. 00000 - "টেবিল বা দৃষ্টিভঙ্গির অস্তিত্ব নেই" * কারণ: * ক্রিয়া: লাইনটিতে ত্রুটি: 11 কলাম: 6 এর অর্থ কি আমার কোনও প্রশাসক প্রবণতা নেই?
তোহা

এতে প্যারাম মানগুলি অন্তর্ভুক্ত নয়। : আপনি যে আছে খুব চাই, কটাক্ষপাত করা stackoverflow.com/a/14217618/6339469
HamedH

16
alter system set timed_statistics=true

--ও

alter session set timed_statistics=true --if want to trace your own session

- অবশ্যই যথেষ্ট বড় হতে হবে:

select value from v$parameter p
where name='max_dump_file_size' 

- আপনার আগ্রহী সেশনের সিড এবং সিরিয়াল # সন্ধান করুন:

 select sid, serial# from v$session
 where ...your_search_params...

- আপনি 10046 ইভেন্টের সাহায্যে ট্রেসিং শুরু করতে পারেন, চতুর্থ প্যারামিটারটি ট্রেস স্তর নির্ধারণ করে (12 বৃহত্তম)

 begin
    sys.dbms_system.set_ev(sid, serial#, 10046, 12, '');
 end;

- শূন্য স্তর নির্ধারণের সাথে ট্রেসিং বন্ধ করুন:

begin
   sys.dbms_system.set_ev(sid, serial#, 10046, 0, '');
end;

/ * সম্ভাব্য স্তর: 0 - বন্ধ 1 - সর্বনিম্ন স্তর। অনেকগুলি sql_trace = সত্য 4 - বাইন্ড ভেরিয়েবলের মান 8 টি ট্রেস-এ যুক্ত করা হয় - অপেক্ষাগুলি 12 টি যোগ করা হয় - উভয় বাইন্ড ভেরিয়েবলের মান এবং ওয়েট ইভেন্টগুলি যুক্ত করা হয় * /

- একইভাবে আপনি যদি নিজের স্তরের সাথে আরও বড় স্তরটি আবিষ্কার করতে চান তবে:

alter session set events '10046 trace name context forever, level 12';

--বন্ধ কর:

alter session set events '10046 trace name context off';

- কাঁচা ট্রেস তথ্য সহ ফাইলটি অবস্থিত হবে:

 select value from v$parameter p
 where name='user_dump_dest'

ফাইলের নাম (*। টিআরসি) এ স্পিড থাকবে:

 select p.spid from v$session s, v$process p
 where s.paddr=p.addr
 and ...your_search_params...

- এছাড়াও আপনি নিজেই নামটি সেট করতে পারেন:

alter session set tracefile_identifier='UniqueString'; 

- অবশেষে, TKPROFট্রেস ফাইলটি আরও পঠনযোগ্য করার জন্য ব্যবহার করুন:

C:\ORACLE\admin\databaseSID\udump>
C:\ORACLE\admin\databaseSID\udump>tkprof my_trace_file.trc output=my_file.prf
TKPROF: Release 9.2.0.1.0 - Production on Wed Sep 22 18:05:00 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
C:\ORACLE\admin\databaseSID\udump>

ট্রেস ফাইল ব্যবহারের স্থিতি দেখুন:

set serveroutput on size 30000;
declare
  ALevel binary_integer;
begin
  SYS.DBMS_SYSTEM.Read_Ev(10046, ALevel);
  if ALevel = 0 then
    DBMS_OUTPUT.Put_Line('sql_trace is off');
  else
    DBMS_OUTPUT.Put_Line('sql_trace is on');
  end if;
end;
/

কেবলমাত্র অনুবাদিত http://www.sql.ru/faq/faq_topic.aspx?fid=389 মূল সম্পূর্ণ, তবে যাইহোক যাইহোক অন্যেরা আইএমএইচও পোস্ট করেছেন তার চেয়ে এটি ভাল any


অন্যান্য উত্তরগুলির চেয়ে অনেক বেশি দরকারী!
Andomar

খুবই জটিল. কেউ এটি ব্যবহার করতে যাচ্ছে না।
এডিএম-আইটি

7

জিআই ওরাকল প্রোফাইলার ভি 1.2

এসকিউএল সার্ভার প্রোফাইলারের অনুরূপ সম্পাদিত অনুসন্ধানগুলি ক্যাপচার করার জন্য এটি ওরাকল এর একটি সরঞ্জাম। এই ডাটাবেস সার্ভারটি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলির রক্ষণাবেক্ষণের জন্য অপরিহার্য সরঞ্জাম।

আপনি এটি অফিসিয়াল সাইট iacosoft.com থেকে ডাউনলোড করতে পারেন


হাই, এই সফ্টওয়্যারটি ব্যবহার করার জন্য আপনার কি ORACLE এর একটি বিশেষ লাইসেন্স দরকার? আমি জানি যে ওরাকল আপনাকে নির্দিষ্ট সারণী / দর্শনগুলিতে ইন্টারোগেট করার অনুমতি দেয় এবং যদি আপনি এটি করেন এবং এর লাইসেন্স না পান তবে তারা আপনাকে অতিরিক্ত চার্জ দেয়।
সার্জিউ

4
হাই, আপনার ভিউ স্ক্লেরিয়া জিজ্ঞাসা করতে হবে? আমি লিঙ্ক প্রবেশ করতে পারি যে কি বলে?
পিয়ো

অসাধারণ ধন্যবাদ মানুষ !!! আপনি আমাকে অনেক কাজ বাঁচান
হার্নাল্ডো গঞ্জালেজ

যদি আমার ক্যোয়ারী ব্যর্থ হয় তবে এটি প্রোফাইলার দ্বারা প্রদর্শিত হবে না।
এডিএম-আইটি

6

পিএল / এসকিউএল বিকাশকারী ব্যবহার করে দেখুন এটিতে প্রোফাইলারের কাছে একটি দুর্দান্ত ব্যবহারকারীর বন্ধুত্বপূর্ণ জিইউআই ইন্টারফেস রয়েছে। এটি চেষ্টা করে দেখতে খুব সুন্দর। ওরাকল ডাটাবেসগুলিতে কাজ করার সময় আমি এই সরঞ্জামটির শপথ করি।

http://www.allroundautomations.com/plsqldev.html?gclid=CM6pz8e04p0CFQjyDAodNXqPDw


5

আমি স্রেফ সাম্প্রতিক প্রশ্নটিকে সদৃশ হিসাবে ডুপ্লিকেট হিসাবে ভোট দিয়েছি এবং এই দিকে নির্দেশ করেছি Seeing । ।

আরও কয়েকজন - এসকিউএল * প্লাসে - সেট অটোট্র্যাক অন - চালিত প্রতিটি বিবরণের জন্য পরিকল্পনা এবং পরিসংখ্যানের বিবরণ দেবে।

টোড ক্লায়েন্ট সাইড প্রোফাইলিংয়েরও অনুমতি দেয়।

এই উভয়েরই অসুবিধা হ'ল তারা আপনাকে কেবলমাত্র বিবৃতিটির কার্যকর করার পরিকল্পনাটি বলে, তবে কীভাবে আশাবাদী সেই পরিকল্পনায় এসেছিলেন - তার জন্য আপনার নিম্ন স্তরের সার্ভার সাইড ট্রেসিংয়ের প্রয়োজন হবে।

আর একটি গুরুত্বপূর্ণ বোঝার বিষয় হ'ল স্ট্যাটস্প্যাক স্ন্যাপশটগুলি - সামগ্রিকভাবে ডাটাবেসের কর্মক্ষমতা দেখার জন্য এগুলি একটি ভাল উপায়। পরিকল্পনা ইত্যাদি ব্যাখ্যা করুন, পৃথক এসকিউএল স্টেটমেন্টগুলি যে বাধা রয়েছে তা সন্ধান করার পক্ষে ভাল। আপনার সমস্যাটি এই সমস্যাটি সনাক্ত করতে স্ট্যাটাসপ্যাকটি ভাল is


3

সময়টি দুটি পয়েন্টের মধ্যে থাকা সমস্ত এসকিউএল রানটি ক্যাপচার করে। এসকিউএল সার্ভারের মতো করে।

এমন পরিস্থিতিতে রয়েছে যেখানে এসকিউএল ক্যাপচার করা দরকারী যে কোনও নির্দিষ্ট ব্যবহারকারী ডাটাবেসে চলছে running সাধারণত আপনি কেবল সেই ব্যবহারকারীর জন্য সেশন ট্রেসিং সক্ষম করবেন তবে সেই পদ্ধতির সাথে দুটি সম্ভাব্য সমস্যা রয়েছে।

  1. প্রথমটি হ'ল অনেক ওয়েবভিত্তিক অ্যাপ্লিকেশনগুলি একাধিক ব্যবহারকারীর মধ্যে ভাগ করে নেওয়া অবিচ্ছিন্ন ডাটাবেস সংযোগগুলির একটি পুল বজায় রাখে।
  2. দ্বিতীয়টি হ'ল কিছু অ্যাপ্লিকেশনগুলি সংযোগ করে, কিছু এসকিউএল চালায় এবং খুব দ্রুত সংযোগ বিচ্ছিন্ন করে, সেশনের ট্রেসিং মোটেও সক্ষম করা কঠিন করে তোলে (অবশ্যই আপনি এই ক্ষেত্রে সেশন ট্রেসিং সক্ষম করতে লগন ট্রিগার ব্যবহার করতে পারেন)।

সমস্যার একটি দ্রুত এবং নোংরা সমাধান হ'ল সময়ের মধ্যে দুটি পয়েন্টের মধ্যে চালিত সমস্ত এসকিউএল বিবৃতি ক্যাপচার করা।

নিম্নলিখিত পদ্ধতিটি দুটি সারণী তৈরি করবে, যার প্রত্যেকটিতে একটি নির্দিষ্ট সময়ে ডাটাবেসের স্ন্যাপশট থাকবে। টেবিলগুলিকে সেই সময়ের মধ্যে সমস্ত এসকিউএল রানের একটি তালিকা তৈরি করতে জিজ্ঞাসা করা হবে।

যদি সম্ভব হয় তবে আপনার শান্ত বিকাশের সিস্টেমে এটি করা উচিত - অন্যথায় আপনি খুব বেশি ডেটা ফেরত পাওয়ার ঝুঁকি রাখবেন।

  1. প্রথম স্ন্যাপশটটি নিন প্রথম স্ন্যাপশট তৈরি করতে নিম্নলিখিত স্ক্যুচালটি চালান:

    create table sql_exec_before as
    select executions,hash_value
    from v$sqlarea
    /
    
  2. অ্যাপ্লিকেশন মধ্যে ব্যবহারকারী তাদের কাজ সম্পাদন করুন।

  3. দ্বিতীয় স্ন্যাপশট নিন।

    create table sql_exec_after as
    select executions, hash_value
    from v$sqlarea
    /
    
  4. ফলাফলগুলি পরীক্ষা করুন এখন আপনি এসকিউএল ক্যাপচার করেছেন তবে ফলাফলগুলি অনুসন্ধানের সময় এসেছে।

এই প্রথম ক্যোয়ারিতে সম্পাদিত সমস্ত ক্যোয়ারী হ্যাশগুলি তালিকাভুক্ত করবে:

select  aft.hash_value
from sql_exec_after aft
left outer join sql_exec_before bef
  on aft.hash_value  =  bef.hash_value 
where aft.executions > bef.executions
   or bef.executions is null;
/

এটি একটি হ্যাশ এবং এসকিউএল নিজেই প্রদর্শন করবে: পৃষ্ঠা 999 লাইন 100 হ্যাশ_ভ্যালুতে বিরতি সেট করুন

select  hash_value, sql_text
from    v$sqltext
where   hash_value in (
    select  aft.hash_value
    from sql_exec_after aft
    left outer join sql_exec_before bef
      on aft.hash_value  =  bef.hash_value
    where aft.executions > bef.executions
       or bef.executions is null;
)
order by
    hash_value, piece
/

৫. পরিপাটি করা শেষ করে একবার স্ন্যাপশট সারণীগুলি সরাতে ভুলবেন না:

drop table sql_exec_before
/

drop table sql_exec_after
/

কৌশলটি প্রদর্শন করে এমন সম্পূর্ণ স্ক্রিপ্টগুলির জন্য আপনাকে ধন্যবাদ।
রোমান পোক্রভস্কিজ

2

ওরাকল, অন্যান্য ডাটাবেসগুলির সাথে একটি কার্যকরকরণ পরিকল্পনা তৈরি করার জন্য প্রদত্ত ক্যোয়ারিকে বিশ্লেষণ করে। এই পরিকল্পনাটি ডেটা পুনরুদ্ধারের সবচেয়ে কার্যকর উপায় way

ওরাকল ' explain plan' বিবৃতি সরবরাহ করে যা ক্যোয়ারিকে বিশ্লেষণ করে তবে তা চালায় না, পরিবর্তে একটি বিশেষ টেবিল তৈরি করে যা আপনি ক্যোয়ার করতে পারেন (পরিকল্পনার সারণী)।

সিনট্যাক্স (সাধারণ সংস্করণ, অন্যান্য বিকল্প রয়েছে যেমন একটি বিশেষ আইডির সাথে পরিকল্পনার সারণিতে সারিগুলি চিহ্নিত করা, বা কোনও ভিন্ন পরিকল্পনার টেবিল ব্যবহার করা):

explain plan for <sql query>

সেই ডেটা বিশ্লেষণ অন্য প্রশ্ন বা আপনার আরও গবেষণার জন্য রেখে গেছে।



1

এটি একটি ওরাকল ডক যা কীভাবে কয়েকটি সরঞ্জাম (এসকিউএল ট্রেস এবং টেকপ্রফ) সহ এসকিউএল ক্যোয়ারীগুলি সনাক্ত করতে হয় তা ব্যাখ্যা করে is

লিঙ্ক


1

স্পষ্টতই কোনও ছোট ছোট সস্তা ইউটিলিটি নেই যা এই কাজটি সম্পাদন করতে সহায়তা করবে। এটি জটিল এবং অসুবিধাজনক উপায়ে করার 101 টি উপায় রয়েছে।

নিম্নলিখিত নিবন্ধটি বেশ কয়েকটি বর্ণনা করে। সম্ভবত আরও কয়েক ডজন রয়েছে ... http://www.petefinnigan.com/ramblings/how_to_set_trace.htm

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.