ORA-19559: error sending device command: string
Cause: An error occurred while sending the indicated command to the session device.
Action: One or more other messages should be displayed to help pinpoint the cause of the error. Correct the error and retry the allocation.
ORA-19559 错误表明试图发送到数据库某种形式的设备 (RAW, External procedure, UTL_FILE, UTL_TCP, UTL_HTTP) 出现了问题,可以是下列的任一情况:
1.指定的设备不存在。
2.指定的设备被禁用,比如使用了 disable_device DBMS_UTILITY 包里的过程。
3.设备占用未释放。
4.登录数据库时想要使用某种形式的设备时失败,比如 UTL_FILE 包里加载时候发生问题。
1.首先,要确认所请求的设备的设置是否正确,是否存在以及是否被禁用。从 PL/SQL 程序中查询 DBMS_UTILITY 包里的 disable_device 指令,也可以参考 DBMS_STORAGE_MAP 查看当前所有设备。
2.如果设备是正常的,检查该设备操作是否已经完成,是否可以释放操作, 如果没有正常关闭操作,可能会出现设备占用未释放问题。
3.如果这个设备是 UTL_FILE 之类的,你可以尝试在当前用户其他程序中使用 UTL_FILE 连接,并检测是否可用,如果可行则表明登录时可能存在问题。
4.对于比较高级的设置,可以使用trace来跟踪操作信息,仔细查看TRACE 中的错误信息。