不正确退出会话后,怎么删除有问题会话(ora-01013)
来源:互联网 发布:java常见数据类型 编辑:程序博客网 时间:2024/06/05 04:49
这是一个故事~~
鄙人在玩pl/sql时候遇到了点小问题,我的操作在sqlplus上进行,如下
SQL> set serveroutput on;DECLARE v_deptno emp.deptno%TYPE; v_increment NUMBER(4); v_empno emp.empno%type;BEGIN v_empno:=&x; SELECT deptno INTO v_deptno FROM emp WHERE empno=v_empno; IF v_deptno=10 THEN v_increment:=100; ELSIF v_deptno=20 THEN v_increment:=150; ELSIF v_deptno=30 THEN v_increment:=200; ELSE v_increment:=300; END IF; UPDATE emp SET sal=sal+v_increment WHERE empno=v_empno;END; 17 /Enter value for x: 10old 6: v_empno:=&x;new 6: v_empno:=10;DECLARE*ERROR at line 1:ORA-01403: no data foundORA-06512: at line 7
一开始看不懂为什么会错,以为是自己写的有错误,后来发现,原来是根本没有员工号为10的员工,判断条件那个是部门号(汗。。。)
接着我复制粘贴了一下代码,发现原来不用的,我想撤销,然后忘记按了crtl+z还是crtl+c了,结果如下
DECLARE v_deptno emp.deptno%TYPE; v_increment NUMBER(4); v_empno emp.empno%type;BEGIN v_empno:=&x; SELECT deptno INTO v_deptno FROM emp WHERE empno=v_empno; IF v_deptno=10 THEN v_increment:=100; ELSIF v_deptno=20 THEN v_increment:=150; ELSIF v_deptno=30 THEN v_increment:=200; ELSE v_increment:=300; END IF; UPDATE emp SET sal=sal+v_increment WHERE empno=v_empno;END; 17 [1]+ Stopped rlwrap sqlplus / as sysdba
之后一直卡着
DECLARE v_deptno emp.deptno%TYPE; v_increment NUMBER(4); v_empno emp.empno%type;BEGIN v_empno:=&x; SELECT deptno INTO v_deptno FROM emp WHERE empno=v_empno; IF v_deptno=10 THEN v_increment:=100; ELSIF v_deptno=20 THEN v_increment:=150; ELSIF v_deptno=30 THEN v_increment:=200; ELSE v_increment:=300; END IF; UPDATE emp SET sal=sal+v_increment WHERE empno=v_empno;END; 17 /Enter value for x: 7900old 6: v_empno:=&x;new 6: v_empno:=7900;DECLARE*ERROR at line 1:ORA-01013: user requested cancel of current operationORA-06512: at line 15
卡在上面的代码界面。然后crtl+c强制撤销,出现ora-01013那些错误。之后再登录进去,想再次测试pl/sql块就不行了,一样报ora-01013的错误
思考与解决方案
这个问题,我觉得是因为先前的scott会话卡在DBMS里了,没有正常撤销,所以只要我kill掉那个会话(其实质我还是不太清楚),应该就可以了。
之后用system用户登录,然后查看一下v$session,
SQL> connect system/123456Connected.SQL> select sid,serial#,username,type from v$session; SID SERIAL# USERNAME TYPE---------- ---------- ------------------------------ ---------- 1 1 BACKGROUND 2 1 BACKGROUND 3 1 BACKGROUND 4 1 BACKGROUND 5 1 BACKGROUND 6 1 BACKGROUND 7 1 BACKGROUND 8 1 BACKGROUND 9 5 BACKGROUND 12 5 BACKGROUND 13 3 BACKGROUND SID SERIAL# USERNAME TYPE---------- ---------- ------------------------------ ---------- 17 105 BACKGROUND 125 7 SCOTT USER 126 1 BACKGROUND 127 1 BACKGROUND 128 1 BACKGROUND 129 1 BACKGROUND 130 1 BACKGROUND 131 1 BACKGROUND 132 1 BACKGROUND 136 47 SYSTEM USER 138 7 BACKGROUND SID SERIAL# USERNAME TYPE---------- ---------- ------------------------------ ---------- 139 31 BACKGROUND23 rows selected.
显然,那个scott就是我们要删除的会话,删除之
SQL> alter system kill session '125,7';
之后再进行操作,就没事了
0 0
- 不正确退出会话后,怎么删除有问题会话(ora-01013)
- 怎么引用有状态会话bean呢
- 如何开发会话Bean(有状态会话Bean)
- 会话
- 会话
- 会话
- 会话
- 会话
- 会话
- 会话
- 会话
- 会话
- 使用游标删除会话
- 批量删除oracle 会话
- secureCRT 删除会话密码
- [Oracle]删除用户会话
- 融云删除会话
- 有状态会话bean
- 利用ExpandableListView和gridview 显示可展开折叠菜单导航
- MindManager 2016中文版快捷方式一览表
- iOS触摸事件和手势
- 将博客搬至CSDN
- CAP 理论的理解
- 不正确退出会话后,怎么删除有问题会话(ora-01013)
- Java NIO 随笔(二)
- Firefox OS简介
- Android 自动检测版本并升级
- JAVA两个数组间元素的比较(找出相同或者不同元素)
- VS2015输入反斜杠显示成人民币符号的问题
- 指示项,轮播图,圆角图片可拉伸,popwindow
- Android 开发如何做好内存优化
- 使用OutputDebugString帮助调试