- 基于ORACLE10 G
- 基于windows 2003 搭建的服务端
- 客户端是win7的
一、准备工作(有经验的可忽略)
- 服务端安装好Oracle服务器
2个服务需要存在并启动在服务端,右键计算机->管理->服务和应用程序->服务 会有几个ORACLE开头的服务,一般有5个,默认3个是启动的,最关键的是后面2个。 一个服务是ORACLE..TNSListener,这个就是监听,我们今天的主角。 一个服务是ORACLEserviceORCL74。可以认为是服务器主程序。 上面2个必须是启动的,特殊的情况是监听程序可能是假启动,要刷新一下或者重新启动下,仍然是已启动方才证明是真的启动好的。
- 客户端安装好client
正常的安装会在开始->程序中有很多的程序
简单来说执行: 开始->运行->cmd->sqlplus -v能看到sqlplus的版本
C:\Users\Tanya>sqlplus -v
SQL*Plus: Release 10.2.0.1.0 - Production
开始->运行->cmd->netca 能弹出如下界面
- PLSQL安装完毕
这里有个坑是,
PLSQL的804版本安装路径中不能含有:Program Files(x86)
还要一个坑是win10以上的版本最好用管理员来运行
- 客户端和服务端互通 如果是虚拟机,虚拟机建议是桥接模式,从客户端ping服务端能ping通是
二、本地Net服务名配置
方法1
-
开始->运行->
netca或者开始->运行->程序->Oracle-OraClient10g_home1->配置和移植工具->Net Configuration Assistant -
点击
本地Net服务名配置 -
点击
添加 -
输入服务名
此处的服务名怎么填写呢?还记得服务端的服务,最后一个是OracleServiceORCL74
这个服务是哪里来的呢?ORACLE服务端安装的时候第一个界面,全局数据库名:ORCL74
好像服务名=全局数据库名(其实有点问题,不能完全等同)
-
协议默认选择
TCP即可 -
主机名和端口号
- 输入的主机名可以是服务端的IP地址或者服务端的计算机名
- 端口号一般就默认1521,除非你修改过
- 测试是否正常连接到数据库
- 为了避免无法连接,我们测试一下
- 测试结果
- 正在连接...ORA-01017: invalid username/password; logon denied
- ORA-01017: 无效的用户名密码,登录被拒绝
- 为何会登录失败呢?因为oracle默认会用一组密码来登录,比如system好像是system,scott是tiger,sys好像是sys。所以才会失败
其实出现这个提示,你都是可以登录的,连通没问题了,就是修改密码而已。我们直接可以下一步,当然你可以更改登录。输入正确的任意一组用户名和密码即可。
用户名和密码校验通过就会提示如下
- 网络服务名
- 网络服务名:命名是可以任意的,但建议是以
服务名_IP地址的格式,明确连接的是哪个机器上的哪个oracle服务。
到这里就配置完毕了,下面就下一步,不再赘述。
方法2
其实方法1的配置,弄了半天是修改的什么呢?是修改的如下文件:(注意下面的文件路径是我本机的,跟您的可能会有区别,酌情修改)
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
打开该文件,发现有如下内容
ORCL74_172.20.254.94 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.254.94)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl74) ) )
仔细看我加粗的部分
- ORCL74_172.20.254.94:就是方法一的步骤9,网络服务名
- TCP:就是步骤5:协议
- 172.20.254.194:步骤6的主机名
- 1521:步骤6的端口号
- orcl74:步骤4的服务名
其实方法一就是修改了这个文件,写入了这么一些信息,那么我们就不要那么多配置步骤了,直接来修改文件就可以了,复制这么一段内容,修改相应的信息就可以了!
三、常见的错误
-
ORA-01017: invalid username/password; logon denied这个错误解释过了,其实就是你用户名和密码中的一个弄错了 -
ORA-28000: the account is locked字面意思是:账号被锁定 原因:数据库服务器安装的时候口令管理没有解锁scott用户。 解决方法 (1)服务端开始->运行->cmd (2)cmd下执行:sqlplus / as sysdba (3)SQL>alter user scott account unlock; 提示已更改就对了。 (4)修改完毕重新测试即可 -
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 这个错误提示太清晰了,意思就是你的服务名不对。比如我的orcl74写成orcl744就可以出现该问题。
-
ORA-12170: TNS: 连接超时 出现这个错误的可能就多了。
- 主机名ip地址错误
- 主机名(计算机名)冲突,异常(局域网内无法ping的通)
- 服务端没启动监听
前面2种就不说了,最后一种,如果没启动监听,去启动,但有可能会失败,只能试一下重配监听。 (1)在服务端一样的运行netca
(2)删除原来的监听
(3)选择监听
(4)下一步
(5)添加监听,再来一遍
-
主界面
-
添加
-
监听名字
-
协议默认即可
-
端口号(在这里配置的)
四、关于监听
Oracle Net监听(一般简称为监听)是非本地用户连接到Oracle实例的网关,一个监听可以服务多个数据库实例及多个客户端连接
配置和管理Oracle Network的工具
- EM Net Services Administration页面
- Net Manager(netmgr)
- Net Configuration Assistan(netca)
- 命令行(lsnrctl)
五、关于网络服务名
网络服务名配置好了,PLSQL才能看到。
如果PLSQL始终看不到配置好的网络服务名,那可能是客户端安装了多个。 而PLSQL还要用到CLIENT的一些文件(dll)和配置(环境变量),比如下面的2个。
PLSQL登录成功,界面左上角显示的就是:用户名@网络服务名
如果没有PLSQL,我们还可以通过命令行连接到数据库。
C:\Users\Tanya>sqlplus scott/a123456@orcl74_172.20.254.94
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 25 15:07:27 2019
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
要使用上述命令行连接必须要配置好网络服务名。