{"id":11,"date":"2008-08-15T11:57:00","date_gmt":"2008-08-15T11:57:00","guid":{"rendered":"http:\/\/noire.dreams.sk\/?p=11"},"modified":"2008-08-15T12:13:27","modified_gmt":"2008-08-15T12:13:27","slug":"oracle-sessions","status":"publish","type":"post","link":"https:\/\/noire.dreams.sk\/?p=11","title":{"rendered":"ORACLE: sessions"},"content":{"rendered":"<p>Poznate to..<\/p>\n<p>Vo svete IT sa casto vyskytuju situacie, ked nieco (aplikacia, skript, query) nebezi tak ako by podla ocakavani mala..a je to potrebne killnut. Vo vacsine pripadov to nieje ziadna extra velka issue..v OS Windows je mozne zabit svoje procesy a procesy ktore by ma mohli zauimat, prekticky bez problemov, v unixovych prostrediach tiez..ale v databazovych prostrediach je (pokial nechcete dat kazdemu userovi privilegium na alter system) trochu problem. DBA su v principe lenivy ludia a to posledne, co chcu je dat privilegia ktore su schopne rozhasit databazu uzivatelom ale tiez nechcu, aby sa nikto bez nich nezaobysiel.<\/p>\n<p>riesenie?: funkcia killsid. procedura a funkcia\u00a0 moze mat dva mody operacie a to dedit privilegia toho, kto ju spusti alebo dedit privilegia schemy v ktorej je zapisana. ak teda zapisem funkciu do systemovej schemy ktora ma grant na alter system, pridelim jej public synonymum a dam uzivatelom na nu pravo na select, dorobim do nej pre istotu nejake logovanie a checky ze kazdy moze zostrelit len vlastnu session prakticky mam po probleme. a voila: hotovy skript:<\/p>\n<p><code>grant select on sys.v_$session to ops$oracle;<br \/>\ngrant select on sys.v_$mystat to ops$oracle;<br \/>\n<\/code><br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p><code><br \/>\nCREATE TABLE \"OPS$ORACLE\".\"KILLSID_LOG\"<br \/>\n(\u00a0\u00a0\u00a0 \"KTO\" VARCHAR2(30 BYTE),<br \/>\n\"ODKIAL\" VARCHAR2(30 BYTE),<br \/>\n\"SID_OWNER\" VARCHAR2(20 BYTE),<br \/>\n\"SCHEMANAME\" VARCHAR2(20 BYTE),<br \/>\n\"SID\" NUMBER,<br \/>\n\"KEDY\" VARCHAR2(50 BYTE)<br \/>\n);<\/code><\/p>\n<p><code>create or replace FUNCTION\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"OPS$ORACLE\".\"kill_sid\" (<br \/>\nSID_TO_KILL IN NUMBER<br \/>\n)<br \/>\nRETURN VARCHAR2<\/code><\/p>\n<p><code>AS<br \/>\nPRAGMA AUTONOMOUS_TRANSACTION;<br \/>\nUSR varchar(50);<br \/>\nPROC_OWNER varchar(50);<br \/>\nPROC_STAT varchar(50);<br \/>\nSNUMBER integer;<br \/>\nqueryna varchar(2000);<br \/>\nlog_schemaname varchar(2000);<br \/>\nlog_machine varchar(2000);<br \/>\ndatum varchar(50);<\/code><\/p>\n<p><code>begin<\/code><\/p>\n<p><code>SELECT USERNAME into USR FROM sys.v_$session WHERE sid = ( SELECT sid FROM sys.v_$mystat WHERE rownum = 1);<br \/>\nselect USERNAME,STATUS,SERIAL#, machine, schemaname into PROC_OWNER,PROC_STAT,SNUMBER, log_machine, log_schemaname from sys.v_$session where sid=SID_TO_KILL and serial#!=1 and username!=' ' and rownum = 1;<br \/>\nSELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH:MI:SS') into datum FROM dual;<br \/>\nif (sql%found) then<br \/>\ndbms_output.put_line('My username:' || USR);<br \/>\ndbms_output.put_line('SID OWNER:' || PROC_OWNER);<br \/>\ndbms_output.put_line('SID STAT:' || PROC_STAT);<br \/>\ndbms_output.put_line('SNUMBER:' || SNUMBER);<br \/>\nDBMS_OUTPUT.ENABLE;<br \/>\n<\/code><br \/>\n<code>execute immediate 'insert into KILLSID_LOG (SID,KTO,ODKIAL,SID_OWNER,SCHEMANAME,KEDY) values (:1,:2,:3,:4,:5,:6)' using SID_TO_KILL,USR,log_machine,PROC_OWNER,log_schemaname,datum;<br \/>\ncommit;<br \/>\nif USR &lt;&gt; PROC_OWNER then<br \/>\nRAISE_APPLICATION_ERROR (-20000,'nemozem zabit session ktora nieje tvoja!');<br \/>\nelse<br \/>\nqueryna:='Alter system kill session ''' || SID_TO_KILL|| ',' || SNUMBER||'''';<br \/>\ndbms_output.put_line(queryna);<br \/>\nexecute immediate queryna;<br \/>\nreturn 'ok,killed';<br \/>\nend if;<br \/>\nend if;<\/code><\/p>\n<p><code>EXCEPTION when NO_DATA_FOUND then return 'cant find this SID';<br \/>\nend;<\/code><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n<code>grant alter system to OPS$ORACLE;<br \/>\nCREATE PUBLIC SYNONYM KILL_SID FOR \"OPS$ORACLE\".\"kill_sid\";<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poznate to.. Vo svete IT sa casto vyskytuju situacie, ked nieco (aplikacia, skript, query) nebezi tak ako by podla ocakavani mala..a je to potrebne killnut. Vo vacsine pripadov to nieje ziadna extra velka issue..v OS Windows je mozne zabit svoje procesy a procesy ktore by ma mohli zauimat, prekticky bez problemov, v unixovych prostrediach tiez..ale &hellip; <a href=\"https:\/\/noire.dreams.sk\/?p=11\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ORACLE: sessions<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-pc_stuff"],"_links":{"self":[{"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":5,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":21,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=\/wp\/v2\/posts\/11\/revisions\/21"}],"wp:attachment":[{"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/noire.dreams.sk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}