ORA-56705: I/O calibration already in progress的解决方法

本文介绍了解决在Oracle数据库中遇到的ORA-56705错误的具体步骤,包括重启数据库和查找并终止相关会话的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在sqlplus中执行(确切的说是第二次执行)如下代码之后,有报错:
SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
--DBMS_RESOURCE_MANAGER.CALIBRATE_IO(<NUM_DISKS>, <MAX_LATENCY>,iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (28, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
dbms_output.put_line('max_mbps = ' || mbps);
end;
/
报错为:
ORA-56705: I/O calibration already in progress
ORA-06512: at "SYS.DBMS_RMIN", line 463
ORA-06512: at "SYS.DBMS_RESOURCE_MANAGER", line 1302
ORA-06512: at line 4

咨询遇到该错误的工程师当时的操作,当时是正在执行如上匿名块,然后他Ctrl+C终止了,然后重新打开一个sqlplus,重新运行(此时就是第二次执行了)该匿名块之后,就有了如上的错误.

于是mos了一把,只有这个错误:
ORA-56705: I/O calibration already in progress
Cause: An attempt was made to run a second instance of I/O Calibration
Action: Wait until the first I/O calibration run is complete; then, retry the operation.
怎么解决呢?
1.重启db,万能的重启大法肯定能解决这个问题.
2.找到Ctrl+C终止过的session,然后kill掉该session.其实关键还是查找的方法:
  2.1 执行select * from gv$access where object='DBMS_RESOURCE_MANAGER',记录下inst_id和sid
  2.2 执行select * from gv$session where inst_id='上一步得到的inst_id' and sid='上一步得到的sid',记录下serial#
  2.3 在相关实例(2.1查询出来的实例)上执行:select p.spid from v$session s,v$process p where s.paddr=p.addr and s.sid='2.1得到的sid';

  2.4 登录相关实例(2.1查询出来的实例)的所在主机上,kill -9 上一步查出来的spid


相关视图:


select * from V$IO_CALIBRATION_STATUS

select * from DBA_RSRC_IO_CALIBRATE

select * from dba_rsrc_categories

select * from V$rsrc_Session_Info

select * from dba_rsrc_plans


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值