ORACLE在“域”上的問題【轉】
檢視G:oracle10.2.0NETWORKADMINsqlnet.ora檔案內容如下:
# sqlnet.ora Network Configuration File: #G:oracle10.2.0NETWORKADMINsqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES=(NONE)
SQLNET.AUTHENTICATION_SERVICES 引數解釋:資料庫的認證方式:
一種是作業系統認證方式;一種是密碼檔案認證方式.
sqlnet.ora檔案中的:SQLNET.AUTHENTICATION_SERVICES= (NTS/NONE)
NTS:作業系統認證
NONE:口令檔案認證
NTS:作業系統認證表示只要你登陸到作業系統上的OS使用者在ORA_DBA GROUP裡,你不需要SYSDBA的密碼就可以直接登陸,直接在cmd裡執行
sqlplus "/as sysdba"即可以以SYSDBA身份登陸資料庫。
NONE:口令檔案認證表示你不能登陸到OS上,但是透過如下方法後可以以SYSDBA身份登登陸資料庫系統裡:建立passwordfile密碼檔案,確保REMOTE_PASSWORDFILE = EXCLUSIVE.這樣就可以透過ORACLE客戶端sqlplusas sysdba以SYSDBA身份登陸到資料庫系統裡。
為了確保rman備份工具能透過os認證登陸到資料庫系統,修改G:oracle10.2.0NETWORKADMINsqlnet.ora檔案內容
SQLNET.AUTHENTICATION_SERVICES=(NONE)改為:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
這樣ORACLE的本地OS認證就沒問題了,RMAN也能直接透過OS認證登陸資料庫進行備份(不需要提供資料庫密碼)。
但是由於資料庫client機c1跟資料庫伺服器db1(開文件開頭環境說明)不在同一個域,C1庫連線資料庫時報ora-12638 身份證明檢索失敗的錯誤。檢視client機c1的G:oracle10.2.0NETWORKADMINsqlnet.ora檔案內容如下:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
檢視METALINK後ORACLE官方提供的解決方法如下:修改客戶端G:oracle10.2.0NETWORKADMINsqlnet.ora檔案內容
SQLNET.AUTHENTICATION_SERVICES= (NTS)為
SQLNET.AUTHENTICATION_SERVICES= (NONE)
問題解決。
Oracle 解釋如下:
Either create trust between the two domains or change the client or
SQLNET.AUTHENTICATION_SERVICES such that NTS in not negotiated in the connection handshake.
NTS is only negotiated if both client and server have SQLNET.AUTHENTICATION_SERVICES
set to NTS.
i.e. SQLNET.AUTHENTICATION_SERVICES=NONE
總結如下:
Site(A, Server) 2003(處於DR1域中), oracle9206(opatch5)
Site(B, Client) windows 環境(2000,2003,處於DR2域中),oracle 資料庫或客戶端
Site(A),Site(B) 的oraclenetworkadmin目錄下都有檔案sqlnet.ora該檔案中都有這一項 SQLNET.AUTHENTICATION_SERVICES= (NTS)
現象1、當Site(B)以域domain (此域不同於site(A)的域)身份登入機器時,並且Site(A),Site(B) 中的sqlnet.ora 都有這一項 SQLNET.AUTHENTICATION_SERVICES=(NTS) 時,則會出現:
SQL> connect
ERROR:
ORA-12638: Credential retrieval failed
Warning: You are no longer connected to ORACLE.
SQL>
現象2(接上)、此時,若把客戶端Site(B) 的 sqlnet.ora檔案中的這一項 SQLNET.AUTHENTICATION_SERVICES 被註釋掉
#SQLNET.AUTHENTICATION_SERVICES= (NTS) 或 SQLNET.AUTHENTICATION_SERVICES= (NONE),則均可以正常連線資料庫
SQL> connect
Connected.
現象3、當客戶端Site(B)以本機身份登入時,則不論 Site(B) 的 sqlnet.ora檔案中的這一項 SQLNET.AUTHENTICATION_SERVICES = (NTS) 還是被註釋掉
#SQLNET.AUTHENTICATION_SERVICES= (NTS) 或 SQLNET.AUTHENTICATION_SERVICES= (NONE),均可以正常連線資料庫
SQL> connect
Connected.
原因:Site(A)與Site(B)為不同的域,並且Site(A),Site(B)都採用作業系統認證(NTS)方式,則需要雙方建立信任關係,要不就一方不採用(NTS)認證。如:
SQLNET.AUTHENTICATION_SERVICES=NONE 或
#SQLNET.AUTHENTICATION_SERVICES=NTS
解決方法:
1、對兩個域建信任關係(沒測試此方法)。
2、資料庫或客戶端的sqlnet.ora 中的 SQLNET.AUTHENTICATION_SERVICES=(NONE)或被註釋掉 #SQLNET.AUTHENTICATION_SERVICES。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13442480/viewspace-1028973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跨域CORS圖片上傳問題跨域CORS
- CXF 在WAS上報Unmarshalling Error的問題Error
- Oracle Rman多通道故障轉移問題分析Oracle
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 跨域問題跨域
- 搞懂:前端跨域問題JS解決跨域問題VUE代理解決跨域問題原理前端跨域JSVue
- Oracle trigger問題Oracle
- JS中的跨域問題JS跨域
- pytest 的 fixture 作用域問題
- Oracle:sqlplus查詢出的中文是亂碼問題的解決(轉)OracleSQL
- 在騰訊雲上安裝mysql遇到的問題MySql
- 關於tomcat在idea上的中文編碼問題TomcatIdea
- 關於驅動在何處上拉的問題
- msmq在Internet上訪問的問題(只能傳送,不能接收)MQ
- Oracle的SCN顯示問題Oracle
- 手機上傳的圖片翻轉90度問題
- 不要再問我跨域的問題了跨域
- 解決JS跨域訪問的問題JS跨域
- AJAX 跨域問題跨域
- djangorestjwtvue跨域問題DjangoRESTJWTVue跨域
- VUE跨域問題Vue跨域
- 前端跨域問題前端跨域
- springboot 跨域問題Spring Boot跨域
- Nginx跨域問題Nginx跨域
- js -- 跨域問題JS跨域
- air在go的其他版本上執行可能遇到的問題AIGo
- Oracle常用傻瓜問題1000問Oracle
- Django在Linux上uwsgi 與nginx的問題與解決DjangoLinuxNginx
- 在 Debian 64 位上安裝 wkhtmltopdf 時遇到的問題HTML
- Shell變數的作用域問題變數
- 關於轉義符 在php正則中的匹配問題PHP
- 跨域問題(普通跨域和springsecurity跨域)跨域SpringGse
- Oracle的時區問題Time ZoneOracle
- Oracle 19C上線後可能出現的問題彙總(全)Oracle
- 跨域問題及Umi中使用proxy代理解決跨域問題跨域
- 跨域問題再解跨域
- 跨域問題總結跨域
- 解決跨域問題跨域
- Laravel 中跨域問題Laravel跨域