{"id":739,"date":"2014-03-25T12:15:05","date_gmt":"2014-03-25T15:15:05","guid":{"rendered":"http:\/\/www.dbarj.com.br\/?p=739"},"modified":"2015-03-31T01:14:20","modified_gmt":"2015-03-31T04:14:20","slug":"sessoes-wait-eternos-sqlnet-from-to-dblink","status":"publish","type":"post","link":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/","title":{"rendered":"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink"},"content":{"rendered":"<p>Em grandes corpora\u00e7\u00f5es, ainda \u00e9 comum encontrar diversas vers\u00f5es diferentes do Oracle se comunicando como 9i, 10g e 11g. Entre algumas delas, a matriz de compatibilidade do Oracle alerta para falhas mas mesmo assim o DBA cria o DBLink com a impress\u00e3o que funcionar\u00e1 sempre.<\/p>\n<p>Se analisarmos o <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=207303.1\" target=\"_blank\">Doc ID 207303.1<\/a> (<strong>Client \/ Server \/ Interoperability Support Matrix For Different Oracle Versions<\/strong>), veremos que para um DBLink funcionar corretamente a tabela de compatibilidade cliente-servidor deve funcionar em ambas as dire\u00e7\u00f5es, o que normalmente nos restringe praticamente a mesma vers\u00e3o de Oracle.<\/p>\n<p>Durante muitos meses tive problemas constantes de usu\u00e1rios me ligando reclamando de sess\u00f5es marcadas como <span style=\"color: #800000;\"><strong>KILLED<\/strong> <\/span>que n\u00e3o sumiam, objetos lockados ou jobs rodando eternamente. Ao analisar a causa, normalmente se tratavam de vers\u00f5es 9i ou 10g com um dos waits abaixo:<\/p>\n<ul>\n<li>SQL*Net message from dblink<\/li>\n<li>SQL*Net message to dblink<\/li>\n<li>SQL*Net more data from dblink<\/li>\n<li>SQL*Net more data to dblink<\/li>\n<\/ul>\n<p>Al\u00e9m de ser causada pela diferen\u00e7a de vers\u00f5es, essa falha de comunica\u00e7\u00e3o entre os bancos tamb\u00e9m pode estar associado a bugs do Oracle que precisam ser corrigidos, lapsos na rede e\/ou falhas no S.O.<\/p>\n<p>Como n\u00e3o era poss\u00edvel alinhar todas as vers\u00f5es de Oracle da empresa ou resolver os problemas acima, desenvolvi o job abaixo que busca essas sess\u00f5es que ficam &#8220;perdidas&#8221; esporadicamente, as elimina se estiverem em wait acima de X segundos e por fim mata o seu processo no sistema operacional para garantir que ela ser\u00e1 eliminada.<\/p>\n<p><span style=\"color: #800000;\"><strong>Aten\u00e7\u00e3o:<\/strong> Matar um processo do Oracle no sistema operacional nunca \u00e9 uma tarefa recomendada pela Oracle. Fa\u00e7a sob sua pr\u00f3pria conta e risco. Esse procedimento foi testado em v\u00e1rios bancos rodando em modo &#8220;Dedicated Server Mode&#8221;, n\u00e3o em &#8220;Shared Server Mode&#8221;.<\/span><\/p>\n<p>Etapas:<br \/>\n1- Criar um java source que executa comando &#8220;kill&#8221; no Sistema Operacional.<br \/>\n2- Criar uma interface que executa essa fun\u00e7\u00e3o.<br \/>\n3- Criar uma procedure que ir\u00e1 buscar os processos mortos e executar o kill.<br \/>\n4- Criar um job que executar\u00e1 a cada hora a procedure do item 3.<\/p>\n<h3>1) Java Source para matar o processo:<\/h3>\n<p>Antes de mais nada, certifique-se que o Java est\u00e1 ativo em sua inst\u00e2ncia Oracle:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">SQL&gt; select comp_name, version from dba_registry where comp_name like '%JAVA%';\r\n\r\nCOMP_NAME                                                                        VERSION\r\n-------------------------------------------------------------------------------- ------------------------------\r\nJServer JAVA Virtual Machine                                                     9.2.0.8.0\r\n\r\nSQL&gt;<\/pre>\n<p>Vamos ent\u00e3o come\u00e7ar criando o Java Source:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">CREATE AND COMPILE JAVA SOURCE NAMED \"Kill\" AS\r\nimport java.io.*;\r\npublic class Kill {\r\n  public static void executeCommand(String spid) {\r\n    try {\r\n      String[] finalCommand;\r\n      if (isWindows()) {\r\n        finalCommand = new String[4];\r\n        \/\/ Use the appropriate path for your windows version.\r\n        \/\/finalCommand[0] = \"C:\\\\winnt\\\\system32\\\\cmd.exe\";    \/\/ Windows NT\/2000\r\n        \/\/finalCommand[0] = \"C:\\\\windows\\\\syswow64\\\\cmd.exe\";  \/\/ Windows 64-bit\r\n        finalCommand[0] = \"C:\\\\windows\\\\system32\\\\taskkill.exe\";    \/\/ Windows XP\/2003\r\n        finalCommand[1] = \"\/f\";\r\n        finalCommand[2] = \"\/pid\";\r\n        finalCommand[3] = spid;\r\n      }\r\n      else {\r\n        finalCommand = new String[3];\r\n        finalCommand[0] = \"\/bin\/kill\";\r\n        finalCommand[1] = \"-9\";\r\n        finalCommand[2] = spid;\r\n      }\r\n\r\n      final Process pr = Runtime.getRuntime().exec(finalCommand);\r\n      pr.waitFor();\r\n\r\n      new Thread(new Runnable(){\r\n        public void run() {\r\n          BufferedReader br_in = null;\r\n          try {\r\n            br_in = new BufferedReader(new InputStreamReader(pr.getInputStream()));\r\n            String buff = null;\r\n            while ((buff = br_in.readLine()) != null) {\r\n              System.out.println(\"Process out :\" + buff);\r\n              try {Thread.sleep(100); } catch(Exception e) {}\r\n            }\r\n            br_in.close();\r\n          }\r\n          catch (IOException ioe) {\r\n            System.out.println(\"Exception caught printing process output.\");\r\n            ioe.printStackTrace();\r\n          }\r\n          finally {\r\n            try {\r\n              br_in.close();\r\n            } catch (Exception ex) {}\r\n          }\r\n        }\r\n      }).start();\r\n\r\n      new Thread(new Runnable(){\r\n        public void run() {\r\n          BufferedReader br_err = null;\r\n          try {\r\n            br_err = new BufferedReader(new InputStreamReader(pr.getErrorStream()));\r\n            String buff = null;\r\n            while ((buff = br_err.readLine()) != null) {\r\n              System.out.println(\"Process err :\" + buff);\r\n              try {Thread.sleep(100); } catch(Exception e) {}\r\n            }\r\n            br_err.close();\r\n          }\r\n          catch (IOException ioe) {\r\n            System.out.println(\"Exception caught printing process error.\");\r\n            ioe.printStackTrace();\r\n          }\r\n          finally {\r\n            try {\r\n              br_err.close();\r\n            } catch (Exception ex) {}\r\n          }\r\n        }\r\n      }).start();\r\n    }\r\n    catch (Exception ex) {\r\n      System.out.println(ex.getLocalizedMessage());\r\n    }\r\n  }\r\n\r\n  public static boolean isWindows() {\r\n    if (System.getProperty(\"os.name\").toLowerCase().indexOf(\"windows\") != -1)\r\n      return true;\r\n    else\r\n      return false;\r\n  }\r\n\r\n};\r\n\/\r\n\r\nshow errors java source \"Kill\"<\/pre>\n<p><em>OBS: Caso necess\u00e1rio, fa\u00e7a as adapta\u00e7\u00f5es convenientes de acordo com a localiza\u00e7\u00e3o dos bin\u00e1rios do seu S.O.<\/em><\/p>\n<h3>2) Procedure que executar\u00e1 o Java Source<\/h3>\n<p>Crie a procedure de interface com o usu\u00e1rio que criou o Java Source.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">CREATE PROCEDURE host_kill (p_spid  IN  VARCHAR2)\r\nAS LANGUAGE JAVA \r\nNAME 'Kill.executeCommand (java.lang.String)';\r\n\/<\/pre>\n<p>Conceda agora os privil\u00e9gios abaixo ao mesmo usu\u00e1rio (altere o script com o username correto).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">DECLARE\r\n  l_schema VARCHAR2(30) := 'USERNAME' -- Adjust as required.\r\nBEGIN\r\n  DBMS_JAVA.grant_permission(l_schema, 'SYS:java.io.FilePermission', '\/bin\/kill', 'execute' );\r\n  DBMS_JAVA.grant_permission(l_schema, 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');\r\n  DBMS_JAVA.grant_permission(l_schema, 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');\r\nEND;\r\n\/<\/pre>\n<h3>3) Criar procedure para matar as sess\u00f5es &#8220;perdidas&#8221;<\/h3>\n<p>Para criar esta procedure, primeiro conceda o grant abaixo ao mesmo usu\u00e1rio dono da procedure no passo 2.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">GRANT SELECT ON V_$SESSION TO USERNAME;\r\nGRANT SELECT ON V_$SESSION_WAIT TO USERNAME;\r\nGRANT SELECT ON V_$PROCESS TO USERNAME;<\/pre>\n<p>Agora crie uma procedure que ir\u00e1 buscar as sess\u00f5es que est\u00e3o em wait por conta do DBLink em mais de 2 horas e elimin\u00e1-las. Em seguida, esse mesmo processo ir\u00e1 eliminar via &#8220;kill&#8221; as sess\u00f5es no S.O.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CREATE OR REPLACE PROCEDURE KILL_EXPIRED_DBLINK_CONNECTION AS\r\n  SESSION_MARKED_KILL EXCEPTION;\r\n  PRAGMA EXCEPTION_INIT(SESSION_MARKED_KILL, -31);\r\n  -------------------\r\n  CURSOR C1 IS\r\n    SELECT 'alter system kill session ''' || A.SID || ',' || A.SERIAL# || ''' immediate' KILL\r\n    FROM   V$SESSION A,\r\n           V$SESSION_WAIT B\r\n    WHERE  A.SID = B.SID\r\n    AND    B.EVENT LIKE 'SQL*Net % from dblink'\r\n    AND    B.STATE = 'WAITING'\r\n    AND    B.SECONDS_IN_WAIT &gt; 7200; -- 2 hours\r\n  -------------------\r\n  CURSOR C2 IS\r\n    SELECT A.SPID\r\n    FROM   V$PROCESS A,\r\n           V$SESSION B\r\n    WHERE  A.ADDR = B.PADDR\r\n    AND    B.STATUS LIKE 'KILLED';\r\nBEGIN\r\n  FOR I1 IN C1\r\n  LOOP\r\n    BEGIN\r\n      EXECUTE IMMEDIATE I1.KILL;\r\n    EXCEPTION\r\n      WHEN SESSION_MARKED_KILL THEN\r\n        NULL;\r\n    END;\r\n  END LOOP;\r\n  -------------------\r\n  FOR I2 IN C2\r\n  LOOP\r\n    HOST_KILL(P_SPID =&gt; I2.SPID);\r\n  END LOOP;\r\nEND;\r\n\/<\/pre>\n<h3>4) Criar job de limpeza<\/h3>\n<p>Por fim, crie o job que ir\u00e1 executar\u00e1 a cada hora a limpeza:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">-- Oracle 9i\r\n\r\nDECLARE\r\n  JOBN NUMBER;\r\nBEGIN\r\n  SYS.DBMS_JOB.SUBMIT(JOB =&gt; JOBN, WHAT =&gt; 'BEGIN KILL_EXPIRED_DBLINK_CONNECTION; END;', NEXT_DATE =&gt; SYSDATE, INTERVAL =&gt; 'SYSDATE + 1 \/ 24');\r\n  COMMIT;\r\nEND;\r\n\/\r\n\r\n-- Oracle &gt;= 10g\r\nBEGIN\r\nDBMS_SCHEDULER.CREATE_JOB (\r\n   job_name             =&gt; 'JOB_KILL_EXPIRED_DBLINK_CONN',\r\n   job_type             =&gt; 'STORED_PROCEDURE',\r\n   job_action           =&gt; 'KILL_EXPIRED_DBLINK_CONNECTION',\r\n   number_of_arguments  =&gt; 0,\r\n   start_date           =&gt; SYSDATE,\r\n   repeat_interval      =&gt; 'FREQ=HOURLY;INTERVAL=1;BYMINUTE=0',\r\n   end_date             =&gt; NULL,\r\n   job_class            =&gt; 'DEFAULT_JOB_CLASS',\r\n   enabled              =&gt; TRUE,\r\n   auto_drop            =&gt; FALSE,\r\n   comments             =&gt; 'Job to kill expired DBLink''s connections');\r\nEND;\r\n\/<\/pre>\n<p>Pronto, agora as sess\u00f5es &#8220;perdidas&#8221; do Oracle e marcadas com kill ser\u00e3o eliminadas automaticamente.<\/p>\n<p>Essa postagem foi baseada no artigo <a href=\"http:\/\/www.oracle-base.com\/articles\/8i\/shell-commands-from-plsql.php\">http:\/\/www.oracle-base.com\/articles\/8i\/shell-commands-from-plsql.php<\/a>.<\/p>\n<b>Gostou? N\u00e3o deixe de comentar ou deixar um \ud83d\udc4d!<\/b>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style2 like-739 jlk' href='javascript:void(0)' data-task='like' data-post_id='739' data-nonce='de4404f630' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.dbarj.com.br\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-739 lc'>+9<\/span><\/a><\/div><\/div> <div class='status-739 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Em grandes corpora\u00e7\u00f5es, ainda \u00e9 comum encontrar diversas vers\u00f5es diferentes do Oracle se comunicando como 9i, 10g e 11g. Entre algumas delas, a matriz de compatibilidade do Oracle alerta para falhas mas mesmo assim o DBA cria o DBLink com a impress\u00e3o que funcionar\u00e1 sempre. Se analisarmos o Doc ID 207303.1 (Client \/ Server \/ &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/\">Continue lendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-739","post","type-post","status-publish","format-standard","hentry","category-database","item-wrap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink - DBA - Rodrigo Jorge - Oracle Tips and Guides<\/title>\n<meta name=\"description\" content=\"Como resolver problemas de sess\u00f5es em wait por conta de DBLink que n\u00e3o somem nem ap\u00f3s um kill.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"DBA RJ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/\"},\"author\":{\"name\":\"DBA RJ\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"headline\":\"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\\\/to DBLink\",\"datePublished\":\"2014-03-25T15:15:05+00:00\",\"dateModified\":\"2015-03-31T04:14:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/\"},\"wordCount\":576,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"articleSection\":[\"Oracle Database General\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/\",\"name\":\"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\\\/to DBLink - DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#website\"},\"datePublished\":\"2014-03-25T15:15:05+00:00\",\"dateModified\":\"2015-03-31T04:14:20+00:00\",\"description\":\"Como resolver problemas de sess\u00f5es em wait por conta de DBLink que n\u00e3o somem nem ap\u00f3s um kill.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2014\\\/03\\\/sessoes-wait-eternos-sqlnet-from-to-dblink\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\\\/to DBLink\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/\",\"name\":\"DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"description\":\"Blog about Databases, Security and High Availability\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\",\"name\":\"DBA RJ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"contentUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"width\":712,\"height\":712,\"caption\":\"DBA RJ\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink - DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Como resolver problemas de sess\u00f5es em wait por conta de DBLink que n\u00e3o somem nem ap\u00f3s um kill.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/","twitter_misc":{"Escrito por":"DBA RJ","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/#article","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/"},"author":{"name":"DBA RJ","@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"headline":"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink","datePublished":"2014-03-25T15:15:05+00:00","dateModified":"2015-03-31T04:14:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/"},"wordCount":576,"commentCount":3,"publisher":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"articleSection":["Oracle Database General"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/","url":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/","name":"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink - DBA - Rodrigo Jorge - Oracle Tips and Guides","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#website"},"datePublished":"2014-03-25T15:15:05+00:00","dateModified":"2015-03-31T04:14:20+00:00","description":"Como resolver problemas de sess\u00f5es em wait por conta de DBLink que n\u00e3o somem nem ap\u00f3s um kill.","breadcrumb":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2014\/03\/sessoes-wait-eternos-sqlnet-from-to-dblink\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dbarj.com.br\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Resolvendo problema de sess\u00f5es em wait eternos por SQL*Net from\/to DBLink"}]},{"@type":"WebSite","@id":"https:\/\/www.dbarj.com.br\/pt-br\/#website","url":"https:\/\/www.dbarj.com.br\/pt-br\/","name":"DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Blog about Databases, Security and High Availability","publisher":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbarj.com.br\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9","name":"DBA RJ","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","url":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","contentUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","width":712,"height":712,"caption":"DBA RJ"},"logo":{"@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png"}}]}},"_links":{"self":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts\/739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/comments?post=739"}],"version-history":[{"count":0,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts\/739\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/media?parent=739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/categories?post=739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/tags?post=739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}