在Oracle企业管理服务器(OEMS)中提交作业通常会发生"VNI-2015:验证错误"(如图1)的失败情况,本文提供该错误的解决办法。
图1
· 错误原因:目标节点的操作系统用户身份证明不正确,智能代理验证并使用这个信息运行作业。
· 解决办法:因为作业在目标节点上运行,你的针对这个节点的首选身份证明(存储在资料档案库内)就被用于访问这个节点。因此只要你使用这个首选身份证明直接登录到目标节点,就可以从控制台执行任意数量的任务(一个作业可有多个任务按任意顺序组合)。在管理员首选身份证明页中,设置正确的目标节点操作系统用户身份证明。对于Windows NT用户来说,智能代理所在节点的首选身份证明设置必须与设置为“作为批处理作业登录”的Windows NT用户相同。"作为批处理作业登录"是Windows NT用户的操作系统高级权限。
· 使作业系统可用的具体措施:
为了使Oracle企业管理服务器(OEMS)管理员成功提交作业,必须执行下面几个步骤:
1、必须存在一个操作系统用户帐户,他具有高级用户权限,即在管理员计划提交作业的任何一个运行智能代理的节点机器上有“作为批处理作业登录”权限。这只适用于智能代理运行在Windows NT 和 Windows 2000平台的情况。详细的增加或编辑操作系统用户帐户的内容,请继续往下看。
2、必须为所有将要有作业提交的节点设置首选身份证明,用于Windows NT 和 Windows 2000平台的首选身份证明必须和具有高级用户权限"作为批处理作业登录"的用户帐户相一致。
3、具有高级用户权限的操作系统用户帐户必须具有ORACLE_HOME\NETWORK目录的读写许可,同时具有TEMP目录或ORACLE_HOME目录的读、写、更新、删除许可。
注意:如果你没有设置"作为批处理作业登录"的权限,你在节点运行作业时将收到"用户验证失败"的错误提示。
实例展示
如果你即将提交作业的节点操作系统是Windows NT或Windows 2000,那么你要新建或修改一个Windows NT或Windows 2000用户帐户。新建或修改用户时选项“用户下次登录时必须更改密码”不要选中,用户名不能与“SYSTEM” 或"system"相同。下面步骤以Windows 2000为例:
顺序在菜单中选择"开始"、"程序"、"附件"、"管理工具"、"本地安全策略",在"本地安全设置"窗口的左侧栏目找到"安全设置"、"本地策略"、"用户权利指派",在相应的右侧栏目里找到"作为批处理作业登录"策略项(如图2)。
图2
双击"作为批处理作业登录"策略项,为域用户"DOMAIN/caofei"定义策略设置(如图3)。
图3
下面配置Windows NT或Windows 2000域用户为你的节点的智能代理用户。这个Windows NT域用户仅在主机是主域控制器(PDC)时才工作,否则,作业将失败并提示错误信息"VNI-2015"。在所有的非主域控制器环境中,用户帐户必须是主机本地帐户。在OEMS中选择主菜单"配置"、"首选项",点击"首选身份证明"选项卡,如图4所示,设置缺省节点(同数据库节点)的首选身份证明用户为Windows NT用户caofei。
图4
如果你同时拥有相同名称的本地用户和域用户,则本地用户为首选。如果你正设置这个域用户,就必须设置域用户密码与本地用户密码相同,这样才能在当使用域用户帐户提交作业时成功规划作业的运行。
作业成功运行后,会提示下列信息:
代理主目录为: e:\oracle\ora90
Oracle 主目录为: e:/oracle/ora90
代理 SID 为:
Oracle SID 为: O90
Table analyzed.
OEMS作业和智能代理详解
在Sql*plus中提交作业与在OEMS中提交作业有如下区别:
1、在DBA_JOBS视图中查找不到在OEMS中提交并添加到库中的作业,同样,在OEMS的作业窗口中也不显示DBA_JOBS视图中的作业。OEMS中提交的作业在视图SMP_VIEW_JOBS、SMP_VIEW_JOB_EXECUTIONS、SMP_VIEW_JOB_HISTORY、SMP_VIEW_JOB_STATUS、SMP_VIEW_AGENT_JOBS中存在记录。
2、在Sql*plus中提交的作业不受OEMS中的诸多限制。
3、尽管作业在OEMS控制台提交,但作业脚本本身却存储在目标节点的智能代理中,作业的运行独立于智能代理。
原因在于在OEMS中从规划到完成作业顺序发生下列步骤:
1、从作业面板控制台,规划针对一个或多个节点定做的相同类型的一个或多个任务。
2、OEMS在资料档案库中存储作业信息并检查目标节点是否运行。如果节点或它的智能代理已经停止,则OEMS把作业列入队列。
3、一旦联系上目标节点,OEMS就把作业提交给该节点上的智能代理。作业可以并发地提交到多个节点。
4、智能代理按计划执行作业。
5、智能代理返回所有的作业相关信息到OEMS的与管理员访问级别相对应的控制台如果,智能代理不能联系到OEMS,则把作业相关信息列入队列。
配置智能代理
在ORACLE_HOME\network\admin路径下存储着网络配置文件,为智能代理生成两个文件snmp_ro.ora和snmp_rw.ora。前一个文件为只读,不必修改,只可以修改第二个文件。文件snmp_rw.ora中以"dbsnmpj"为前缀的选项为作业系统设置项。智能代理文件存储在目录ORACLE_HOME\network\agent中,所有被智能代理处理的作业和事件都位于此目录下,文件以".q"为扩展名。智能代理自动发现的服务注册在services.ora文件中。
其它相关错误信息
发生错误"Could not fork or create job process. "或提示下列信息,则问题出在Windows NT下OEMS不能使用在多线程服务器(MTS)数据库的资料档案库,应该使运行资料档案库的数据库运行在独占服务器进程(dedicated server process)模式。
VNI-2016: Failed to fork job
Cause: The agent failed to create an operating system process for running the job.
Action: In the administrator preferences preferred credentials page, set the correct
operating system user credentials for the target node. Check the number of processes
running on the agent's machine. The operating system may restrict the number of
processes.
VNI-2017: Agent restarted while job running.
Cause: The agent was restarted while the job process was running.
Action: Submit the job again.
VNI-2018: Job output lost.
Cause: The job output could not be written because of file errors.
Action: On the agent machine, check space availability, the permissions on the
directory, and the system resources.
VNI-2019: Could not resume thread
Cause: Internal error
Action: Contact Oracle Worldwide Customer Support.
VNI-2020: System resources shortage
Cause: The job process could not be started after trying several times because of
system resource shortage.
Action: Reduce the system work load by reducing the number of jobs.