链接远程数据库ORACLE11g,错误百出!

 

客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出!

建立时间: 2017/10/14 18:44
做者: CNSIMO
标签: ORACLE

 

忙了一下午,只有两个字形容:麻烦!
 
安装ORACLE1g
 
首先,我已经提早在虚拟机上配置了windows2008+oracle11g,为何用server2008呢?我没有别的,win10作虚拟机以为不太好,win7镜像还得下载,你懂的。 而后就是oracle11g是去某电脑上拷过来的,我是一个十分爱惜流量的人,嘿嘿。
咱们老师为了让咱们更清楚区分数据库软件安装和数据库配置,因此在安装oracle11g的时候选择的是”只安装数据库软件“(记得是第二个选项),而后安装的时候字符集都设置的UTF8,其余的配置基本上都是保持的默认。
好了,安装的事情不细说,通常状况下只要是主机没问题,检测条件经过,安装都是不成问题的,下面就开始了配置数据库。
首先使用 DCA(在oRACLE的开始菜单文件夹里面,缩写哦 ),打开后会显示几个选项,选择【建立数据库】,而后下一步,以后的几个步骤一直到建立数据库完毕,并无出任何错误,因此就很少说了,惟一出现的错误可能就是提示相似“没有监听,没法继续”的对话框,因此就去NCA(和DCA同级目录)添加监听,你只需一直下一步就行,默认的监听端口是1521而后回到DCA就可以继续下一步了,一直到最后,须要关注的就是,最后的一个页面有web管理页面的URL,此端口号都是https://hostname:port/em这个形式的,hostname就是本机的ip地址,port就是端口号,个人端口号是1158,有的可能不是。
例如个人web管理页面:https://server2008:1158/em,个人数据库监听端口是1521。
管理页面以下:
若是刚安装完,红框中的状态不对,那么考虑重装或者重启ORACLE各项服务或者重启ORACLE服务器。
重启ORACLE服务器的操做以下:
打开cmd输入如下命令:
sqlplus / as sysdba
shutdown immediate
startup
而后说ORACLE这几个配置工具的功能:
  • DCA:管理数据库(建立、删除等等)
  • NCA:配置数据库网络服务(监听、服务名等)
  • Net Manager:网络综合管理工具(监听、服务名等具体信息查看更改等)
还有一个工具sqlplus也很经常使用,使用它访问ORACLE数据库地操做以下(cmd中):
若是是普通用户
sqlplus username/password@hostname/tnsname
若是是sysdba用户,例如sys
sqlplus sys/password@hostname/tnsname as sysdba
后面用到地时候你可能会更明白一些。
 
而后还有三个很重要的文件,其中两个须要知道一下:
注意路径哦! 格式:{database_base}\network\admin
在Net Manager或者NCA中更改监听或者服务名的信息后可能会映射到这两个文件,例如我在Net Manager中更改了LISTEN的地址,在listener.ora文件中是有体现的,能够打开看看,可是最好不要手动地去更改里面地内容,由于一不当心感受没错就可能被人坑了。想要更改,仍是在Net Manager中更改比较合适,例如如今我在Net Manager中将LISTEN地监听端口由1521变成了1522,打开listener.ora文件能够看到相应的地方也变了。
Tip:若是你在你不知道什么状况的状况下,你使用Net Manager作了一些操做,并且你也忘了原来是什么了,没关系,关闭Net Manager窗口的时候会提示你是否保存,选择否便可恢复!
 
说了这么多没用的,个人目的还没实现呢,怎么在真机中访问虚拟机内的数据库呢?
先说明一下 预先条件
  1. 我所说的话,都是假设你对计算机了解,而且有基础,思惟敏捷,熟悉VM虚拟机,不懂的请提问。
  2. 宿主机和虚拟机可以互相ping通,若是不行,尝试将链接方式改成NAT,宿主机中的VMNet8网卡ipv4设置为自动获取IP。
  3. 宿主机中的ORACLE的各项服务都已经正常启动。
  4. 还得知道环境变量怎么配置,不懂的自动百度学习。
 
个人机器配置以下:
  • 虚拟机:VM12.5.7版本
  • 宿主机:win10专业版1703
  • 虚拟机:server2008r2 企业版,内存2G
    • oracle:11g,数据库实例名称STD,全局数据库名STD.CNSIMO.CN,全部密码惟一:Admin2015,字符集:UTF8,语言:简体中文
 
链接步骤
 
  1. 官网下载instant client,http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
  2. 下载基础包和sqlplus包
  3. 一块儿解压出来后,获得一个文件夹,将它复制到任意位置,例如:D:\PLSQL Developer 12\
  4. 在D:\PLSQL Developer 12\instantclient_12_2中(如下简称{instantclient})新建文件夹network,在network中新建文件夹admin。
  5. {instantclient}\network\admin中新建记事本文件,下列代码复制进去并保存为utf-8格式,名称改成tnsnames.ora【后缀名txt->ora】,注意格式不能变(少一个多一个空格都不行)
 tip:请将STD.CNSIMO.CN改成本身的全局数据库名,HOST和PORT也改成本身的,首行的STD能够随便写。
STD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.138)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = STD.CNSIMO.CN)
    )
  )
  1. 打开PLSQL DEV12,找到【首选项】设置
  2. 而后,在connection中安装图示设置,instantclient的位置。
         
  1. 很重要的一步,到虚拟机注册表中查看NLS_LANG的值,若无此路径则直接查找NLS_LANG,复制此键值。
  2.  很重要的一步,在宿主机中新建系统环境变量NLS_LANG,值与虚拟机中保持一致!
            
  1.  很重要的一步,再新建系统环境变量TNS_ADMIN,值为{instantclient}\network\admin   
            
  1. 更改环境变量PATH,添加值为{instantclient}。
  2. 而后cmd中,运行sqlplus命令链接远程数据库,命令为:sqlplus sys/Admin2015@192.168.111.138/STD.CNSIMO.CN as SYSDBA,下图表明链接成功。
       
  1. 从新打开PLSQL DEV,尝试链接,填写用户名密码,database下拉框中若是没有出现以前在tnsnames.ora首行写的名字STD,就手动输入STD,并做为SYSDBA链接。成功的话,会进入主界面,不然提示。
 
解决问题
 
好了,链接的常规步骤已经看完了,可是事实上好多时候并不能真正的如愿以偿,问题碰到了一堆,常见的问题描述可能以下:
  • ORA-12170: TNS:Connect timeout occurred
  • ORA-12514: TNS: 监听程序当前没法识别链接描述符中请求的服务
  • ORA-12705: Cannot access NLS data files or invalid environment specified
 
先解决 第一个问题,你可尝试ping一下你的远程主机,可能ping不通,因此须要你更改一下虚拟机和主机之间的网络链接方式;
而后 第二个问题,致使这个问题的根本缘由是在远程主机上该服务名并无被监听程序监听,例如我经过sqlplus链接的时候将STD.CNSIMO.CN改成STD或者其它随便一个,都会报这个错误。解决方法以下:
    打开Net Manager,选择服务命名,点击加号添加服务,列表中显示的std仅仅具备本地意义,重要的是右边的服务名,设置成全局数据库名,链接类型选择 共享服务器。
                       
而后关闭Net Manager并保存配置。
再次尝试链接,若是仍是链接不上,尝试重启ORACLE数据库!
Tip:网上可能查到的都是更改虚拟机中tnsnames.ora和listener.ora这两个文件,擅自更改后可能致使的问题是数据库链接不上、NetManager和NCA中部分功能无反应的问题。由于oracle对这两个文件的内容格式要求的太严格了。红框的首部不能有空格,蓝框的首部必须有空格!
                       
至于 最后一个问题,请检查环境变量中的NLS_LANG的值是否和远程主机注册表中的值相同,切记不要手敲!若是仍是这个问题,多是你刚配置完环境变量,cmd的命令框仍是以前开的,请重开一个cmd再次尝试。
相关文章
相关标签/搜索