【Oracle踩坑】远程连接和中文乱码问题

由于很长时间没有用Oracle,在配置时由于疏忽大意遇到了两个典型问题,但是网上给出千篇一律的解决方案似乎都解决不了我的问题。Oracle服务端装在主机中,Oracle客户端在虚拟机中。因此我想的是直接将数据导入主机,然后通过虚拟机连接主机获取数据。

1. 远程连接

网上给出的解决方案几乎都只谈到了如何去修改客户端的tnsnames.ora文件以正确连接到服务端,或者是配置PL/SQL的oci.dll文件位置,但我的这此都配置好后还是一直报无法找到监听程序的错误。最后还是通过在服务端的listener.ora添加一行记录来解决,HOST为虚拟网上的IP地址,在虚拟机中能ping通此IP,如下:

# listener.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.44.1)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = D:\oracle

2.中文乱码

由于Oracle对中文的不太友好导致中国用户稍不注意就会遇到乱码的问题,我碰到的是导入的数据中文都以???显示,同样网上查找一番后无非就是配置注册表,添加环境变量,修改Oracle数据库字符集,但是这此都开好后还是没效果。当我新建一张表插入中文竟然可以正常显示,于是删除以前的数据,再进行重新导入就可以解决中文乱码的问题了。原因原来是在最初导入时没有设置好字符集,虽然后面配置好了但还是无法正确显示,因此正确做法是先设置好字符集再导入数据。

你可能感兴趣的:(【Oracle踩坑】远程连接和中文乱码问题)