Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle dbms_utility.exec_ddl_语句不';行不通_Oracle_Plsql_Dynamic Sql_Ddl - Fatal编程技术网

Oracle dbms_utility.exec_ddl_语句不';行不通

Oracle dbms_utility.exec_ddl_语句不';行不通,oracle,plsql,dynamic-sql,ddl,Oracle,Plsql,Dynamic Sql,Ddl,我想通过dblink终止会话,但是dbms_utility.exec_ddl_语句不起作用 下面的命令不会抛出任何错误,但也不会终止会话 exec dbms_utility.exec_ddl_statement@dblink('Alter system kill session ''274,12303,@1'' immediate'); 似乎您想终止驻留在远程数据库中的会话。如果是这样的话 在该(远程)数据库中创建一个过程 它会杀死会话 一种选择是使用动态SQL来实现这一点(即立即执行)

我想通过dblink终止会话,但是dbms_utility.exec_ddl_语句不起作用

下面的命令不会抛出任何错误,但也不会终止会话

exec dbms_utility.exec_ddl_statement@dblink('Alter system kill session ''274,12303,@1'' immediate'); 

似乎您想终止驻留在远程数据库中的会话。如果是这样的话

  • 在该(远程)数据库中创建一个过程
  • 它会杀死会话
    • 一种选择是使用动态SQL来实现这一点(即
      立即执行
  • 哪一个?其参数将作为过程参数传递的参数
  • 通过数据库链接调用该过程

我假设节点=1上sid=274,serial=12303的会话正在运行一个沉重的DML/DDL语句,如果说“它不会终止会话”,则表示在运行命令后,会话在GV$session中被视为活动的

这是意料之中的行为。与直觉相反的是,KILL会话并不是真正的“KILL”会话——它发送一个KILL信号,会话在当前工作完成后将遵守该信号。以前没有。因此,这不是假设情景的一个选项

其他两种选择:

  • ALTER SYSTEM DISCONNECT SESSION“27412303,@1”IMMEDIATE
  • 杀死操作系统进程


p.S.
dbms\u utility.exec\u ddl_statement@dblink(q'!Alter system kill session'27412303,@1'immediate!')。自从10g以后,再也没有双滴答声了。

我知道其他方法。问题就在这里。它应该可以工作,但不是。不,它只是在sqlplus上创建的虚拟会话。还是不会杀人。还试过q'!但它也不起作用。