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

创建时间: 2017/10/14 18:44
作者: CNSIMO
标签: ORACLE
忙了一下午,只有两个字形容:麻烦!
 
安装ORACLE1g
 
首先,我已经提前在虚拟机上配置了windows2008+oracle11g,为什么用server2008呢?我没有别的,win10做虚拟机觉得不太好,win7镜像还得下载,你懂的。 然后就是oracle11g是去某电脑上拷过来的,我是一个十分爱惜流量的人,嘿嘿。
我们老师为了让我们更清楚区分数据库软件安装和数据库配置,所以在安装oracle11g的时候选择的是”只安装数据库软件“(记得是第二个选项),然后安装的时候字符集都设置的UTF8,其他的配置基本上都是保持的默认。
好了,安装的事情不细说,一般情况下只要是主机没问题,检测条件通过,安装都是不成问题的,下面就开始了配置数据库。
首先使用,有的可能不是。
例如我的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再次尝试。
 
 

连接远程数据库ORACLE11g,错误百出!的更多相关文章

  1. 解决SQL Server管理器无法连接远程数据库Error: 1326错误

    解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...

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

    客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!   ...

  3. 通过IIS不能连接远程数据库的问题

    近期遇到一个奇怪的问题:在调试MES程序时发现,如果连接的是远程的SQL SERVER数据库(通过了IIS),则提示连接失败,就是经常见到的数据库不允许远程连接的错误提示: 而且又测试了以下几种情况: ...

  4. 解决SQL Server管理器无法连接远程数据库的问题(转)

    add by zhj: 本文最后那个数据库别名没搞明白,在我的测试中没有建别名,是可以的.远程登陆时,服务器名称: 服务器IP,端口号 (如223.42.155.248,52134 如果是默认端口号1 ...

  5. sql 2000 无法连接远程数据库 sqlserver不存在或访问被拒绝、不能打开到主机的连接,在端口1433:连接失败等 解决方案

    问题: sql 2000 无法连接远程数据库 sqlserver不存在或访问被拒绝 telnet 127.0.0.1 1433     提示:不能打开到主机的连接,在端口1433:连接失败 解决方案: ...

  6. navicat连接远程数据库报错'client does not support authentication protocol requested by server consider ...'解决方案

    [1.cmd终端连接远程mysql数据库方法] mysql -uhello -pworld   -h192.168.1.88 -P3306 -Dmysql_oa mysql -u用户名 -p密码 -h ...

  7. Android连接远程数据库的避坑指南

    Android连接远程数据库的避坑指南 今天用Android Studio连接数据库时候,写了个测试连接的按钮,然后连接的时候报错了,报错信息: 2021-09-07 22:45:20.433 705 ...

  8. “VS2013无法连接远程数据库”解决方案

    “VS2013无法连接远程数据库” 解决方案:以管理员身份登录CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接) 或 netsh winsoc ...

  9. PLSQL DEVELOPER 连接远程数据库 OCI客户端安装方法

    安装使用过PLSQL Dev都知道,要连接数据库,必须配置TNS(Transparence Network Substrate),而直接安装PLSQL Dev 之后,本机是没有Oracle HOME的 ...

随机推荐

  1. [PHP] B2B2C商品模块数据库设计

    /**************2016年4月25日 更新********************************************/ 知乎:产品 SKU 是什么意思?与之相关的还有哪些? ...

  2. PHP语法-该注意的细节

    php in_array(mixed $needle, array $haystack[, bool $strict = FALSE] ) 注意: 一.如果$needle 是字符串,则比较是区分大小写 ...

  3. Android-Handler使用姿势

    http://www.jianshu.com/p/8e9a54f1826e 好文章先马,慢慢看

  4. node.js(express)连接mongoDB入门指导

    一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...

  5. JS实现自定义排序

    定义:用本地特定的顺序来比较两个字符串. 语法:stringObject.localeCompare(target) 参数:target——要以本地特定的顺序与 stringObject 进行比较的字 ...

  6. WebAPI返回时间数据不带T

    最近一段时间项目里面使用WebAPI比较多,但是在返回时间数据的时候回默认带上T,就像这样子 "2016-04-21T13:26:17.4701811+08:00", 这样的数据在 ...

  7. Oracle EBS FA 资产编号跳号

  8. 购物商城学习--第三讲(tomcat插件启动web工程)

    此处提到的tomcat插件即maven工程集成的tomcat插件,可以在添加maven的tomcat插件之后,在本地通过脚本或者命令行方式运行web工程,tomcat插件启动只需要修改一个端口即可,非 ...

  9. Python pip 安装与使用

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具. Python 2 ...

  10. 转:asp.net mvc下的多语言方案 包含Html,Javascript和图片

    可以不使用微软的Resource文件,而是将所有的词汇放入在一个txt的词典之中,便于维护. 步骤如下: 1)在整个程序的入口处global.asax.cs加入函数 private void Read ...