在sqlplus中执行(确切的说是第二次执行)如下代码之后,有报错:
咨询遇到该错误的工程师当时的操作,当时是正在执行如上匿名块,然后他Ctrl+C终止了,然后重新打开一个sqlplus,重新运行(此时就是第二次执行了)该匿名块之后,就有了如上的错误.
于是mos了一把,只有这个错误:
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';
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