1. 程式人生 > >關於PLSQL配置了正確的Oracle客戶端但是不能識別tnsnames.ora問題

關於PLSQL配置了正確的Oracle客戶端但是不能識別tnsnames.ora問題

場景描述:

     在通過安裝Oracle客戶端使用PLSQL的時候發現PLSQL在已經正常配置了Oracle Home和Ocdi library的情況下不能識別tnsnames.ora中的有效配置。

正常安裝Oracle客戶端效果:


PLSQL中關於Oracle Home和Ocdi library的配置:


我的Oracle客戶端安裝位置在:C:\Users\dushangkui\soft\oracle\instantclient_12_2

但是中有合法的配置

LOCALMYDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.20)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

剛剛在登入框中並不能被展示出來。現在我們來查一下原因。

第一步,通過PLSQL的Help選單下的Support info選單檢視PLSQL載入的配置資訊:

SOFTWARE\ORACLE
  ORACLE_HOME = C:\Program Files (x86)\Oracle\Instant Client
  ORACLE_HOME_NAME = OraInstantClient11g
  NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  NLS_DATE_FORMAT = YYYY-MM-DD
  NLS_TIMESTAMP_FORMAT = YYYY-MM-DD HH24:MI:SS:FF6
  NLS_TIMESTAMP_TZ_FORMAT = YYYY-MM-DD HH:MI:SS.FF TZH:TZM
  TNS_ADMIN = C:\Program Files (x86)\Oracle\Instant Client\network\admin

  SOFTWARE\ORACLE\KEY_OraInstantClient11g
    ORACLE_HOME = C:\Program Files (x86)\Oracle\Instant Client
    ORACLE_HOME_KEY = SOFTWARE\Wow6432Node\Oracle\KEY_OraInstantClient11g
    ORACLE_HOME_NAME = OraInstantClient11g
    ORACLE_BASE = C:\Program Files (x86)\Oracle\Instant Client
    ORACLE_BUNDLE_NAME = Enterprise
    ORACLE_GROUP_NAME = Oracle - OraInstantClient11g
    NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    NLS_DATE_FORMAT = YYYY-MM-DD
    NLS_TIMESTAMP_FORMAT = YYYY-MM-DD HH24:MI:SS:FF6
    NLS_TIMESTAMP_TZ_FORMAT = YYYY-MM-DD HH:MI:SS.FF TZH:TZM
    TNS_ADMIN = C:\Program Files (x86)\Oracle\Instant Client\network\admin

我們可以看到ORACLE_HOME和ORACLE_BASE\TNS_ADMIN均不是我們剛剛配置的位置。

第二步,檢視登錄檔:ORACLE_HOME_KEY = SOFTWARE\Wow6432Node\Oracle\KEY_OraInstantClient11g我們看到上面的這行影響了配置

我們發現配置表裡面多了這些東西:


經過確認,這是上次安裝刪除後的殘留配置,我們把它刪除掉。

然後我們再看PLSQL的help -> Support Info ->TNS Names


我們可以看到,出現了正常的TNS配置。