1、ORA-12541:TNS:沒有監聽器
原因:沒有啟動監聽器或者監聽器損壞。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,則使用“Net8 Configuration Assistant”工具向導之“監聽程序配置”增加一個監聽器即可(基本不用寫任何信息,一路OK。在添加之前可能需要把所有的監聽器先刪除!)
2、ORA-12500:TNS:監聽程序無法啟動專用服務器進程 或 ORA-12560:TNS:協議適配器錯誤
原因:ORACLE的數據庫服務沒有啟動。使用命令net start ORACLESERVICEORADB(ORADB為數據庫名字)即可。如果仍沒有解決,請繼續向下看。
3、如果數據庫服務啟動失敗,則很有可能是其注冊表項值損壞,最好的做法是以下兩步:
1)ORADIM -DELETE -SID oradb 刪除數據庫服務項
2)ORADIM -NEW -SID oradb 新增數據庫服務項 注:這個過程中如果出錯,就重啟計算機!
4、ORA-12154:TNS:能解析服務名
原因:ORACLE的網絡服務名沒有正確配置。請使用“Net8 Configuration Assistant”工具向導之“本地網絡服務名配置”配置TNS即可。如果仍沒有解決,請繼續向下看。
5、ORA-1034 :TNS:ORACLE不可用
原因:ORACLE的數據庫服務正確啟動,但是數據庫沒有打開! 使用命令:
1)svrmgrl 啟動服務管理器
2)connect internal 以internal身份登陸
3)startup 打開數據庫
6、ORA-12560:TNS:協議適配器錯誤(頑固性的)
原因:未知。 解決:必殺技--打開“Windows任務管理器”,殺死ORACLE.exe及ORADIM.exe進程,書寫自己的ora_startup.bat,執行之!
7、ORA-12638:身份證明檢索失敗
原因:服務端開了防火牆,且使用了本地操作系統認證
解決:修改sqlnet.ora文件,
1)NTS改為NONE,oracle將采用口令文件認證(此時 remote_login_passwordfile=exclusive)如connect /as sysdba 登錄,后報錯RA-01031: insufficient privileges,實際上是要求你輸入sysdba的用戶名和密碼
SQLNET.AUTHENTICATION_SERVICES= (NONE)
2)修改查找連接的字符串順序:tnsnames.ora,直接使用簡單連接字符串,使用計算機名稱
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)
8、ArcSDE數據被鎖定后的解鎖方法
描述:(1)刪除所選對象失敗 鎖定請求與已有鎖定沖突。
(2)在sde數據被鎖定的情況下,編輯、創建featureclass或者注冊版本的時候會報告:Lock request conflicts with an established lock。多半情況下關閉數據庫連接可以解決這個問題,但有時候問題依然存在。
原因:ArcSDE數據被鎖定
解決:sqlplus下查詢lock表,如果有記錄返回,那么手工刪除這些表中的記錄。
select t.*,t.rowid from sde.state_locks t;
select t.*,t.rowid from sde.object_locks t;
select t.*,t.rowid from sde.layer_locks t;
select t.*,t.rowid from sde.table_locks t;
9、基礎 DBMS 錯誤 ORA-01950: 對表空間 'SYSTEM' 無權限
描述:新建用戶(默認表空間SYSTEM)后用於上傳shp,提示該錯誤
原因:對表空間權限不足,無法提交數據到該表空間
解決:對用於存儲矢量數據的用戶授權
-- Grant/Revoke role privileges
grant connect to user_name;
grant resource to user_name;
grant select_catalog_role to user_name;
-- Grant/Revoke system privileges
grant unlimited tablespace to user_name;
10、客戶端連接Oracle 12c的時候,報錯誤:ORA-28040: No matching authentication protocol
描述:
原因:oracle 12c的參數SQLNET.ALLOWED_LOGON_VERSION默認等於11。當我們使用11g JDBC之前版本的thin驅動連接的時候,就會報錯。此處的ALLOWED_LOGON_VERSION不同於oracle版本號,而是內部連接驅動版本號。
解決:在數據庫服務器上的oracle/network/admin/sqlnet.ora文件添加一行SQLNET.ALLOWED_LOGON_VERSION=8,重啟數據庫,重新連接數據庫,可以成功連接,問題解決。
11、任何ArcGIS連接Oracle問題
描述:ArcMap、ArcCatalog連接Oracle失敗問題
原因:一般會直接彈出錯誤信息,若信息不全,請參考%TEMP% 目錄中的 sdedc_Oracle.log 文件以獲得更多的錯誤消息。
12、conn / as sysdba報錯連接不上
1、檢查sqlnet.ora是否包含:
SQLNET.AUTHENTICATION_SERVICES = (NTS)
2、檢查listener.ora是否包含:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))
3、檢查 我的電腦|右鍵|管理|本地用戶和組|ora_dba 組中是否包含當前電腦登錄用戶
4、報錯:協議適配器錯誤
檢查本機是否有32、64位兩種sqlplus.exe,且cmd默認啟動的是32位的
必須使用dbhome中的64位sqlplus.exe程序啟動,因此在cmd中鍵入以下命令
>cd /d %ORACLE_HOME%\BIN
%ORACLE_HOME%\BIN > sqlplus / as sysdba
