我想通过dblink终止会话,但是dbms_utility.exec_ddl_statement不起作用。
以下命令不会引发任何错误,但也不会终止会话。
exec dbms_utility.exec_ddl_statement@dblink('Alter system kill session ''274,12303,@1'' immediate');
答案 0 :(得分:0)
您似乎想杀死驻留在远程数据库中的会话。如果是这样,
execute immediate
)答案 1 :(得分:0)
我假设sid = 274,node = 1上的serial = 12303的会话正在运行沉重的DML / DDL语句,并且说“不会杀死会话”意味着您将会话视为“活动”该命令运行后,在GV $ SESSION中。
这是预期的行为。尽管可能违反直觉,但KILL SESSION并没有真正“杀死”会话-它发送一个终止信号,该会话在当前工作完成后会尊重该信号。没过因此,对于假定的方案,这不是一个选择。
另外两个选项:
ALTER SYSTEM DISCONNECT SESSION '274,12303,@1' IMMEDIATE
P.S。 dbms_utility.exec_ddl_statement@dblink(q'!Alter system kill session '274,12303,@1' immediate!');
alternative quoting mechanism。自10克起,不再有两次点击。