OEM安裝報錯不是內部或外部程式的解決過程
標題比較拗口,客戶在安裝OEM的時候碰到了“不是內部或外部命令,也不是可執行的程式或批處理檔案”的錯誤。
客戶環境是11.2.0.1 for Windows環境,以前配置過OEM,有一段時間沒有使用,最近打算啟用OEM,發現無法正常啟動,嘗試了多次後,只能將OEM清除掉。在解除安裝OEM並重新安裝時,出現了這個錯誤。
詳細的錯誤為:
Connecting to database using
connect string (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=NODE)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DAISY)))
in home E:\app\Administrator\product\11.2.0\dbhome_1 with user "SYS"
role "SYSDBA".
connected to database.
sql to execute declare repos_pwd varchar2(30); view_user varchar2(30);
view_user_pwd varchar2(30); view_user_acc_status varchar2(30); begin repos_pwd
:= ?; sysman.mgmt_view_priv.get_view_user(view_user); select account_status
into view_user_acc_status from sys.dba_users where upper(username) = upper ( view_user
); IF view_user_acc_status like '%LOCKED%' THEN execute immediate 'alter user '
|| view_user || ' account unlock'; END IF; IF view_user_acc_status like
'%EXPIRED%' THEN sysman.mgmt_view_priv.set_view_user_creds ( repos_pwd );
sysman.mgmt_view_priv.GET_VIEW_USER_CREDS ( view_user, view_user_pwd ); execute
immediate 'alter user ' || view_user || ' identified by ' || view_user_pwd ||
''; END IF; end;
noOfParams to bind: 1.
sql execute successfully.
2012-9-24 18:59:05
oracle.sysman.emcp.util.PlatformInterface executeCommand
配置:
'??S-1-5-21-343818398-2147128839-1417001333-500' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。
2012-9-24 18:59:05
oracle.sysman.emcp.util.PlatformInterface executeCommand
配置: 執行 CMD /C
E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts\emca\emcaDbUtil.bat
"E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts;E:\app\Administrator\product\11.2.0\dbhome_1\bin;"
E:/app/Administrator/product/11.2.0/dbhome_1/perl/bin\perl.exe
E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts\emca\emcaDbUtil.pl
E:\app\Administrator\product\11.2.0\dbhome_1
"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=NODE)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DAISY)))"
SYS SYSDBA declare repos_pwd varchar2(30); view_user varchar2(30);
view_user_pwd varchar2(30); view_user_acc_status varchar2(30); begin repos_pwd
:= ?; sysman.mgmt_view_priv.get_view_user(view_user); select account_status
into view_user_acc_status from sys.dba_users where upper(username) = upper (
view_user ); IF view_user_acc_status like '%LOCKED%' THEN execute immediate
'alter user ' || view_user || ' account unlock'; END IF; IF
view_user_acc_status like '%EXPIRED%' THEN
sysman.mgmt_view_priv.set_view_user_creds ( repos_pwd );
sysman.mgmt_view_priv.GET_VIEW_USER_CREDS ( view_user, view_user_pwd ); execute
immediate 'alter user ' || view_user || ' identified by ' || view_user_pwd ||
''; END IF; end; DAISY 1 SYSMAN_PWD 時出錯
2012-9-24 18:59:05 oracle.sysman.emcp.EMReposConfig unlockMGMTAccount
配置: Failed to unlock mgmt_view account
2012-9-24 18:59:05 oracle.sysman.emcp.EMReposConfig invoke
嚴重: 無法對所有 EM 相關帳戶解鎖
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig perform
嚴重: 無法對所有 EM 相關帳戶解鎖
有關詳細資料, 請參閱
E:\app\Administrator\cfgtoollogs\dbca\DAISY\emConfig.log 中的日誌檔案。
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig perform
配置: Stack Trace:
oracle.sysman.emcp.exception.EMConfigException: 無法對所有
EM 相關帳戶解鎖
at oracle.sysman.emcp.EMReposConfig.invoke(EMReposConfig.java:349)
at oracle.sysman.emcp.EMReposConfig.invoke(EMReposConfig.java:158)
at oracle.sysman.emcp.EMConfig.perform(EMConfig.java:253)
at
oracle.sysman.assistants.util.em.EMConfiguration.run(EMConfiguration.java:583)
at
oracle.sysman.assistants.dbca.backend.PostDBCreationStep.executeImpl(PostDBCreationStep.java:968)
at oracle.sysman.assistants.util.step.BasicStep.execute(BasicStep.java:210)
at oracle.sysman.assistants.util.step.Step.execute(Step.java:140)
at
oracle.sysman.assistants.util.step.StepContext$ModeRunner.run(StepContext.java:2667)
at java.lang.Thread.run(Thread.java:595)
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig restoreOuiLoc
配置: Restoring oracle.installer.oui_loc to
E:\app\Administrator\product\11.2.0\dbhome_1\oui
本來最先定位的是Oracle的異常“無法對所有 EM 相關帳戶解鎖”,前臺出現的也是這個錯誤資訊。但是在MOS找了大量的案例,發現都和當前的問題不符。仔細檢查資料庫中使用者的配置,也未發現任何的異常。
隨後把疑點逐漸轉移到上面“不是內部或外部命令,也不是可執行的程式或批處理檔案。”資訊上。並且發現這個問題並非只有在執行OEM的指令碼時報錯,而是起動CMD命令視窗時都會出現這個錯誤。
那麼其實問題就很明顯了,導致問題的原因並不是發生在資料庫層,而是作業系統層面,顯然CMD命令被進行了惡意的篡改。
詳細詢問了一下情況,客戶以前確實中過病毒,後來透過防毒已經將病毒清除。懷疑雖然病毒被清除,但是CMD程式並沒有完全恢復原始狀態,導致目前啟動CMD時會尋找一個不存在的檔案。
檢查CMD命令的登錄檔資訊,並未發現有異常的修改。懷疑是CMD程式碼層的autorun被修改:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v "AutoRun" /d "" /f
透過執行上面的命令,CMD啟動不會在出現前面的錯誤,再次安裝OEM元件,安裝順利完成。
這個案例也再次反映了Windows環境下資料庫健壯性的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-752041/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- maven安裝問題——mvn不是內部或外部命令Maven
- conda不是內部或外部命令,也不是可執行的程式解決方案
- vue不是內部或外部命令Vue
- node不是內部或外部命令
- (已解決)'ng' 不是內部或外部命令,也不是可執行的程式或批處理檔案
- Windows命令列報錯:'findstr' 不是內部或外部命令,也不是可執行的程式或批處理檔案Windows命令列
- ‘cnpm' 不是內部或外部命令,也不是可執行的程式NPM
- 'findstr' 不是內部或外部命令,也不是可執行的程式
- 記錄解決 egg啟動時報錯 cross-env不是內部或外部命令,也不是可執行的程式ROS
- 'ping' 不是內部或外部命令,也不是可執行的程式
- cmake的使用(cmake不是內部或外部命令)
- 安裝sysbench過程報錯,解決辦法
- git ssh金鑰生成過程中ssh-keygen不是內部或外部命令Git
- xxx 不是內部或外部命令解決辦法以及npm配置NPM
- Jenkins 提示'pytest' 不是內部或外部命令,也不是可執行的程式或批處理檔案的解決方法Jenkins
- 'webpack-dev-server' 不是內部或外部命令,也不是可執行的程式WebdevServer
- ‘javac‘ 不是內部或外部命令,也不是可執行的程式 或批處理檔案。Java
- net start mysql net不是內部或外部命令MySql
- 在cmd上一直報javac不是內部或外部命令的詳解及原理Java
- pytorch中’tensorboard‘不是內部或外部命令,也不是可執行的程式PyTorchORB
- cmd執行命令時:不是內部或外部命令,也不是可執行的程式
- 'telnet' 不是內部或外部命令,也不是可執行的程式 或批處理檔案。
- python不是內部或外部命令怎麼回事Python
- Python錯誤集錦:”‘python’ 不是內部或外部命令,也不是可執行的程式 或批處理檔案。”Python
- ‘NODE_OPTIONS‘ 不是內部或外部命令,也不是可執行的程式或批處理檔案
- Win10提示python不是內部或外部命令怎麼回事 win10執行python提示不是內部或外部命令如何解決Win10Python
- Pycharm:terminal中python不是內部或外部命令PyCharmPython
- django-admin.py不是內部或外部命令,也不是可執行的程式或批處理檔案Django
- windows下cmd中輸入nvidia-smi顯示不是內部或外部命令解決方法!Windows
- NODE_ENV 不是內部或外部命令,也不是可執行的程式,或者批處理檔案
- Windows下配置Git(git命令會提示“不是內部或外部命令)WindowsGit
- 重新下載安裝nodejs後,cmd進入專案目錄下提示npm不是內部或外部命令NodeJSNPM
- 安裝ionic 報錯 安裝canvas報錯 解決辦法Canvas
- anaconda中執行pip命令顯示不是內部或外部命令
- WinXP上安裝office2000過程中出現內部錯誤2343的解決及可能引起的原因
- tensorflow安裝使用過程錯誤及解決方法
- nvidia驅動安裝過程中報已有nouveau驅動錯誤解決
- ROS 安裝過程中出現“hash校驗和不符”報錯解決辦法ROS