快速修复步骤:1. 登录到数据库服务器,使用sqlplus连接sys用户。2. 执行命令:ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10 SCOPE=BOTH; 3. 重启相关服务:shutdown immediate; startup; 4. 检查是否还有报错。如果远程无法访问服务器,可以通过PL/SQL Developer远程执行以上命令,网友实测在11g和12c上有效,5分钟内解决。
网友分享的远程处理方法
我遇到ORA-23468,是在做数据复制时出的错。远程方案:用expdp全库导出数据,然后impdp导入目标库,避免了直接修改参数的风险。命令:expdp system/password@source directory=DATA_PUMP_DIR dumpfile=full.dmp logfile=exp.log parallel=4; impdp system/password@target ... 实测在阿里云RDS上完美,零 downtime。
另一个实测有效方案
ORA-23468通常是由于job queue进程不足。远程修复:连接到目标数据库,运行SQL:SELECT * FROM DBA_JOBS_RUNNING; 如果卡住,KILL掉进程:ALTER SYSTEM KILL SESSION 'sid,serial#'; 然后设置dbms_scheduler.set_attribute('AQ$_SCHEDULER_AGENT', 'queue_processes', 20); 重试复制任务。网友在论坛实测,适用于19c版本。
论坛帖子原内容
兄弟们,ORA-23468解决了!远程用TOAD工具连接,执行:BEGIN DBMS_REFRESH.REFRESH('你的刷新组名'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; / 如果还是错,加ALTER SESSION SET JOB_QUEUE_PROCESSES=20; 我的环境是Oracle 11.2.0.4,远程Windows服务器搞定,不用去机房。
博客转载实测
步骤详解:1. 检查当前job_queue_processes值:show parameter job_queue_processes; 2. 如果是0,设为10:alter system set job_queue_processes=10 sid='*'; 3. 远程重启dbms_job进程:@?/rdbms/admin/utlrp.sql 4. 测试:select what from user_jobs where broken='Y'; repair them. 网友在CSDN实测,适用于RAC环境,远程脚本一键执行。
快速远程脚本
写了个脚本远程跑:sqlplus sys/pwd@//remotehost:1521/orcl as sysdba < Q: ORA-23468是什么原因? Q: 远程修复需要什么工具? Q: 修复后会不会复发? Q: RAC环境怎么处理?FAQ
A: 主要是job queue进程不够或调度器job卡住。
A: PL/SQL Developer、TOAD或sqlplus命令行即可。
A: 设置参数后永久生效,重启数据库也保留。
A: 用srvctl modify database -o 'job_queue_processes=20',然后重启实例。