1. 程式人生 > >PL/SQL Developer遠程連接Oracle數據庫

PL/SQL Developer遠程連接Oracle數據庫

重新 nts 註冊表 解決方法 nvi rip min edi edit

修改數據庫配置文件:tnsnames.ora 【我的數據庫位置:D:\app\Icey-evil\product\11.2.0\dbhome_1\NETWORK\ADMIN】

根據服務器地址加入以下內容:

10.88.250.28 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.88.250.28)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

說明:HOST = 10.88.250.28 是需要連接的oracle服務器 IP,SERVICE_NAME = ORCL是連接的數據庫實例,PORT = 1521是oracle服務器監聽端口。

配置完成,用PL/SQL Developer工具進行遠程連接,database即為添加的tns服務名,這裏是 10.88.250.28。

遠程連接過程中出現的問題:

1.ORA-12638: 身份證明檢索失敗

 解決方法: 

  查閱相關資料,說是將本地文件sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (NTS)註釋掉,或者將其改為SQLNET.AUTHENTICATION_SERVICES= (NONE)。

  按照以上方法將本地文件sqlnet.ora修改後,重新連接,依舊是ORA-12638。

  個人將服務器上的文件sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (NTS) 改為SQLNET.AUTHENTICATION_SERVICES= (NONE)後重新連接,連接成功。

  綜上來看呢,好像是SQLNET.AUTHENTICATION_SERVICES的問題,可是呢在PL/SQL Developer連接出現ORA-12638時,有用Navicat Premium進行遠程連接Oracle,連接是成功的,所以呢,在PL/SQL Developer遠程連接成功後,又將服務器上文件sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES= (NONE)改回SQLNET.AUTHENTICATION_SERVICES= (NTS),此時按理說,PL/SQL Developer遠程連接依舊會是ORA-12638,事實是連接成功!所以......無解...

  【SQLNET.AUTHENTICATION_SERVICES 表示oracle使用哪種驗證方式,NTS表示采用本地操作系統認證,NONE表示將采用口令文件方式認證。設定了none後,本地的操作系統認證將不被許可,oracle將采用口令文件認證】

2. PL/SQL Developer登陸後提示:

Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different.
Character set conversion may cause unexpected results.

Note: you can set the client character set through the NLS_LANG environment variable or the NLS_LANG registry key in
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1.

 解決方法:修改註冊表

  win+r —> cmd —>regedit —>enter;

  找到KEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1

【win 64位系統中在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraDb11g_home1,Wow64放的是64位操作系統下安裝的32位程序】

  找到 NLS_LANG 鍵,原值是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  將其改為:SIMPLIFIED CHINESE_CHINA.AL32UTF8

  重新打開PL/SQL Developer ,登錄,Ok.

  

PL/SQL Developer遠程連接Oracle數據庫