客户机中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. spring boot aop 报错

    1.控制台报错 Pointcut is not well-formed: expecting 'name pattern' at character position 33 execution(com ...

  2. MySQL锁详解!(转载)

    博客来源于https://baijiahao.baidu.com/s?id=1610581108528334819&wfr=spider&for=pc 一.概述 数据库锁定机制简单来说 ...

  3. Linux常用基本命令(tail )

    tail命令 作用:从文件的尾部查看,跟head命令作用相反,参数也差不多,默认显示后面10行 格式: tail [option] [file] -n : 显示行数 -c<字节数> gho ...

  4. 【学习笔记】--- 老男孩学Python,day2

    今天正式上课的第一天,好害怕.好紧张.好激动.好兴奋! 第一天的课程还算是比较简单吧,因为之前断断续续学的就是这点东西,算是这些都比较熟了吧 今天学习了如下课程: 1. 简单计算机组成 2. pyth ...

  5. Hadoop Mapreduce 参数 (一)

    参考 hadoop权威指南 第六章,6.4节 背景 hadoop,mapreduce就如MVC,spring一样现在已经是烂大街了,虽然用过,但是说看过源码么,没有,调过参数么?调过,调到刚好能跑起来 ...

  6. ubutu强制关闭应用程序的方法

    1.打开终端,输入命令 top 2.查看应用程序PID号,比如是8080 3.然后终端输入 kill 8080 ,行了

  7. Android Studio 关联 JDK Java 源码

    Android Studio 关联 Android 源码比较方便,一般下载后可自动关联,但是 Android Studio 默认使用的 JDK 是内嵌的,是不带源码的.所以在查看 JDK 源码时,看到 ...

  8. iOS 开发之环形倒计时进度条(虚线/实线)

    代码很简单,一看便知.这里为顺时针,若想要逆时针,clockwise改为0,还需更改起始角度和终点角度. 源码地址:https://github.com/LfyDragon/CountDown 直接上 ...

  9. Java标识符

    相关内容: JAVA标识符: 定义 组成规则 常见的命名规则 包 类和接口 方法.变量 常量 首发时间:2017-06-22 20:40 修改时间: 2018-03-16 14:01 :修改了标题,修 ...

  10. SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析 (转载)

    在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan).聚集索引表走聚集索引扫描(Clustered Index ...