الثلاثاء، 7 أبريل 2009

استعلامات تهم مديري قواعد البيانات

استعرض جميع المستخدمين المتصلين :

select username,sid || ',' || serial# "ID",status ,last_call_et "Last Activity"

from v$session

where username is not null

order by status desc,last_call_et desc;

الزمن من آخر اتصال للمستخدم محسوب بالدقائق :

select username,floor(last_call_et / 60) "Minutes",status

from v$session

where username is not null

order by last_call_et;


كل ال sessions مرتبة حسب زمن logon

select username

, osuser

, sid || ',' || serial# "ID"

, status

, to_char(logon_time, 'hh24:mi dd/mm/yy') login_time

, last_call_et

from v$session

where username is not null

order by login_time;

استعراض المستخدمين مع معرف نظام التشتغيل OS SID :


select s.sid || ',' || s.serial# "SID/SERIAL"

, s.username

, s.osuser

, p.spid "OS PID"

, s.program

from v$session s

, v$process p

Where s.paddr = p.addr

order by to_number(p.spid);

استعراض تعليمة SQl الحالية التي ينفذها مستخدم محدد (لا تنسى ان تكتب اسم المستخدم) :

Select sql_text

from v$sqlarea

where (address, hash_value) in

(select sql_address, sql_hash_value

from v$session

where username like '&username');

استعراض حالة ال session المرتبطة مع OS SID محدد (لاتنسى أن تحدده) وقد عرفنا سابقا كيف نستعرض OS SID


select s.username

, s.sid

, s.serial#

, p.spid

, last_call_et

, status

from V$SESSION s

, V$PROCESS p

where s.PADDR = p.ADDR

and p.spid='&pid';

استعراض open Cursor لكل مستخدم :


select sess.username

, sess.sid

, sess.serial#

, stat.value cursors

from v$sesstat stat

, v$statname sn

, v$session sess

where sess.username is not null

and sess.sid = stat.sid

and stat.statistic# = sn.statistic#

and sn.name = 'opened cursors current'

order by value;

أو

select count(hash_value) cursors

, sid

, user_name

from v$open_cursor

group by

sid

, user_name

order by

cursors;


استعراض وقت وزمن تشغيل قاعدة البيانات :

select to_char(startup_time, 'HH24:MI DD-MON-YY') "Startup time"

from v$instance;

لمعرفة حجم قاعدة البيانات (الكلي و المستخدم والمتبقي)


select round(sum(used.bytes) / 1024 / 1024 / 1024 ) || ' GB' "Database Size"

, round(sum(used.bytes) / 1024 / 1024 / 1024 ) -

round(free.p / 1024 / 1024 / 1024) || ' GB' "Used space"

, round(free.p / 1024 / 1024 / 1024) || ' GB' "Free space"

from (select bytes

from v$datafile

union all

select bytes

from v$tempfile

union all

select bytes

from v$log) used

, (select sum(bytes) as p

from dba_free_space) free

group by free.p;

استعراض توزع المعطيات والأغراض (أي المستخدمين يأخذ أعلى مساحة) :

select obj.owner "Owner"

, obj_cnt "Objects"

, decode(seg_size, NULL, 0, seg_size) "size MB"

from (select owner, count(*) obj_cnt from dba_objects group by owner) obj

, (select owner, ceil(sum(bytes)/1024/1024) seg_size

from dba_segments group by owner) seg

where obj.owner = seg.owner(+)

order by 3 desc ,2 desc, 1;

إستعراض أكبر عشرة أغراض في قاعدة البيانات :

select  owner
,       segment_name
,       segment_type
,       mb
from    (
        select  owner
        ,       segment_name
        ,       segment_type
        ,       bytes / 1024 / 1024 "MB"
        from    dba_segments
        order   by bytes desc
        )
where   rownum <>
 
لمعرفة فيما إذا كانت الجافا مثبتة في قاعدة البيانات(إذا كانت مثبتة فالنتيجة 9000'ish)


select  count(*)
from    all_objects
where   object_type like '%JAVA%'
and     owner = 'SYS';
 
استعراض tablespace usage :


select tsu.tablespace_name, ceil(tsu.used_mb) "size MB"

, decode(ceil(tsf.free_mb), NULL,0,ceil(tsf.free_mb)) "free MB"

, decode(100 - ceil(tsf.free_mb/tsu.used_mb*100), NULL, 100,

100 - ceil(tsf.free_mb/tsu.used_mb*100)) "% used"

from (select tablespace_name, sum(bytes)/1024/1024 used_mb

from dba_data_files group by tablespace_name union all

select tablespace_name || ' **TEMP**'

, sum(bytes)/1024/1024 used_mb

from dba_temp_files group by tablespace_name) tsu

, (select tablespace_name, sum(bytes)/1024/1024 free_mb

from dba_free_space group by tablespace_name) tsf

where    tsu.tablespace_name = tsf.tablespace_name (+);
 
استعراض data files  المحتواة في tablespace  محدد (لا تنسى ان تكتب اسم tablespace) :
 

select file_name

, ceil(bytes / 1024 / 1024) "size MB"

from dba_data_files

where  tablespace_name like '&TSNAME;
 

User quotas on all tablespaces

select username

, tablespace_name

, decode(max_bytes, -1, 'unlimited'

, ceil(max_bytes / 1024 / 1024) || 'M' ) "QUOTA"

from dba_ts_quotas

where tablespace_name not in ('TEMP');

 
 

استعراض جميع الاغراض في فضاء معين :

select owner

, segment_name

, segment_type

from dba_segments

where lower(tablespace_name) like lower('%&tablespace%')

order by owner, segment_name;

استعراض كل tablespace المستخدمة بواسطة مستخدم محدد :

select tablespace_name

, ceil(sum(bytes) / 1024 / 1024) "MB"

from dba_extents

where owner like '&user_id'

group by tablespace_name

order by tablespace_name;

استعراض ال segments التي اقتربت من max_extent :

select owner

, segment_type

, segment_name

, max_extents - extents as "spare"

, max_extents

from dba_segments

where owner not in ('SYS','SYSTEM')

and (max_extents - extents) <>

order by 4;

استعراض محتويات temporary tablespace(S)

select su.username

, ses.sid

, ses.serial#

, su.tablespace

, ceil((su.blocks * dt.block_size) / 1048576) MB

from v$sort_usage su

, dba_tablespaces dt

, v$session ses

where su.tablespace = dt.tablespace_name

and su.session_addr = ses.saddr

للبحث عن غرض ما (حدد الغرض ) :


select owner

, object_name

, object_type

from dba_objects

where lower(object_name) like lower('%&object%')

order by owner, object_type, object_name;

استعراض invalid objects

select owner || '.' || object_name "obj",

object_type

from dba_objects

where status = 'INVALID';

استعرض حجم غرض محدد :

select segment_name

, bytes "SIZE_BYTES"

, ceil(bytes / 1024 / 1024) "SIZE_MB"

from dba_segments

where segment_name like '&obj_name'

كل الأغراض التابعة لمستخدم محدد :

select object_name

, object_type

from dba_objects

where owner = '&user'

order by object_type, object_name

استعرض كل الجداول التي تحتوي على عمود محدد :

elect owner || '.' || table_name as tab

, column_name

from dba_tab_columns

where column_name like upper('&col')

استعراض جميع الاغراض المملوكة لمستخدم محدد مرتبة حسب الحجم :


select segment_name

, ceil(sum(bytes) / 1024 / 1024) "MB"

from dba_segments

where owner like '&user'

and segment_type = 'TABLE'

group by segment_name

order by ceil(sum(bytes) / 1024 / 1024) desc

عرض الجلسات التي تعيق كل منها الأخرى :



select 'SID ' || l1.sid ||' is blocking ' || l2.sid blocking

from v$lock l1, v$lock l2

where l1.block =1 and l2.request > 0

and l1.id1=l2.id1

and l1.id2=l2.id2;

استعراض المستخدمين :

select username

, account_status status

, created

, default_tablespace tablespace

, temporary_tablespace temp_ts

from dba_users

order by username;

فتح أو إغلاق مستخدم :

alter user account lock;

alter user account unlock;

استعراض datafiles,tempfiles,logfiles وأحجامهم :

select name, bytes

from (select name, bytes

from v$datafile

union all

select name, bytes

from v$tempfile

union all

select lf.member "name", l.bytes

from v$logfile lf

, v$log l

where lf.group# = l.group#

union all

select name, 0

from v$controlfile) used

, (select sum(bytes) as p

from dba_free_space) free;


الفحص السريع لحالة datafiles :


select distinct status from v$datafile

إظهار المجلدات التي تحوي ال datafiles في UNIX:

select distinct substr(name, 1, instr(name, '/', -1)) DIR

from v$datafile

order by 1;

إظهار المجلدات التي تحوي ال datafiles في windows:

select distinct substr(name, 1, instr(name, '\', -1)) DIR

from v$datafile

order by 1;

استعراض ال datafiles القابلة للتوسع الآلي :

select file_name

from dba_data_files

where autoextensible = 'YES';

استعراض control files :

select name

from v$controlfile


استعراض جميع الملفات التي في حالة hot-backup :


select df.name

, b.status

, to_char(time, 'hh24:mi:ss dd/mm/yyyy') time

from v$datafile df

, v$backup b

where df.file# = b.file#

and b.status = 'ACTIVE'

order by b.file#;



لمعرفة السنة الكبيسة (LEAP)

 
select &year,
       decode( mod(&year, 4), 0,
          decode( mod(&year, 400), 0, 'Leap Year',
             decode( mod(&year, 100), 0, 'Not a Leap Year', 'Leap Year')
          ), 'Not a Leap Year'
       ) as leap_year_indicator
from   DUAL;

لتحويل الرقم إلى كلمه

select decode( sign( &num ), -1, 'Negative ', 0, 'Zero', NULL ) ||
       decode( sign( abs(&num) ), +1, to_char( to_date( abs(&num),'J'),'Jsp') )
from dual;

لمعرفة معلومات حول قاعدة البيانات الحالية زالمستخدم الحالي

select 'User: '|| user || ' on database ' || global_name,

' (term='||USERENV('TERMINAL')||

', audsid='||USERENV('SESSIONID')||')' as MYCONTEXT

from global_name;

لمعرفة إصدار قاعدة البيانات مع الخيارات المثبتة :

select banner
from   sys.v_$version;
 
select '   With the '||parameter||' option'
from   sys.v_$option
where  value = 'TRUE';
 
select '   The '||parameter||' option is not installed'
from   sys.v_$option
where  value <> 'TRUE';
 
begin
    dbms_output.put_line('Port String: '||dbms_utility.port_string);
end;
/


ليست هناك تعليقات:

إرسال تعليق

Powered By Blogger