ora01940:ORA-01940错误的解决过程来源: 发布时间:星期五, 2008年12月19日 浏览:2次 评论:0
在将每天 ![]() ![]() ![]() ![]() ![]() ![]() ![]() OS:linux Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production SQL> drop user test cascade; drop user test cascade * 第 1 行出现 ![]() ORA-01940: cannot drop a user that is currently connected 解决: 查找原因 ![]() ![]() ![]() ![]() 该test用户执行JOB任务 ![]() ![]() ![]() ![]() 下面 ![]() ![]() ![]() 创建测试表 drop table test1 select * from test1 create table test1 (datetime date); 创建 ![]() create or replace procedure MYPROC as begin for i in 1..100000 loop insert ![]() end loop; end; PL/SQL procedure successfully completed 创建JOB,每天1440分钟 ![]() ![]() declare job number; begin sys.dbms_job.submit (job => job, what =>'MYPROC;', next_date => sysdate, ![]() commit; end; PL/SQL procedure successfully completed 运行JOB SQL> begin 2 sys.dbms_job.run(241); 3 end; 4 / PL/SQL procedure successfully completed 此时需要删除用户daimin时 ![]() ![]() ![]() 以sys登陆系统 ![]() --查看daimin用户下 ![]() SQL> select job,what, ![]() 2 from dba_jobs where schema_user='DAIMIN'; JOB WHAT INTERVAL TO_CHAR(NEXT_DATE,'YYYY-MM-DDH ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------ 241 MYPROC; sysdate+(1/1440)*5 2008-12-16 10:10:03 查看正在运行 ![]() SQL> select * from dba_jobs_running; SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC INSTANCE ---------- ---------- ---------- ----------- ---------------- ----------- ---------------- ---------- 1619 241 2008-12-16 10:25:51 0 查看daimin用户 ![]() SQL> select sid,serial#,username,program,machine,status 2 from v$session 3 where username='DAIMIN' 4 AND STATUS='ACTIVE'; SID SERIAL# USERNAME PROGRAM MACHINE STATUS ---------- ---------- ------------------------------ ------------------------------------------------ ---------------------------------------------------------------- -------- 1619 2360 DAIMIN plsqldev.exe STAPLES\DELLF98P-10QC ACTIVE --以sys用户下来删除daimin用户 ![]() ![]() ![]() SQL> drop user daimin cascade; drop user daimin cascade ORA-01940: cannot drop a user that is currently connected 试图删除job SQL> begin 2 FOR r_job IN (select job,what, ![]() 3 from dba_jobs where schema_user='DAIMIN' 4 ) LOOP 5 dbms_job.REMOVE(r_job.job); 6 end loop; 7 commit; 8 end; 9 / begin FOR r_job IN (select job,what, ![]() from dba_jobs where schema_user='DAIMIN' ) LOOP dbms_job.REMOVE(r_job.job); end loop; commit; end; ORA-23421: job number 241 is not a job in the job queue ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.DBMS_IJOB", line 529 ORA-06512: at "SYS.DBMS_JOB", line 171 ORA-06512: at line 5 分析 ![]() ![]() ![]() ![]() 解决思路方法: 1、杀掉执行JOB任务 ![]() alter system disconnect session 'sid,serial#' immediate; 或者Alter system kill session 'sid,serial#'; 2、通过设置在 ![]() ![]() 修改init.ora文件 ![]() 修改过 ![]() ![]() ![]() ![]() ![]() ![]() 参考网页: 0
相关文章读者评论
发表评论 |