Oracle的远程连接注意事项
首先说明,我做实验的Oracle是安装在Linux系统的虚拟机内,连接方是在Windows7的pl/sql。
需要先了解几个概念,这些概念和MySQL是完全不同的。
- TNS简要介绍与应用
Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器。
TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置TNS也可以连接Oracle数据库,比如通过JDBC。如果通过TNS连接Oracle,那么客户端必须安装Oracle client程序。
Oracle当中,如果想访问某个服务器,必须要设置TNS,它不像SQL SERVER那样在客户端自动列举出在局域网内所有的在线服务器,只需在客户端选择需要的服务器,然后使用帐号与密码登录即可。而Oracle不能自动列举出网内的服务器,需要通过读取TNS配置文件才能列出经过配置的服务器名。
2、 Oracle的环境变量
在安装Oracle时,配置的几个环境变量可还记得?
export ORACLE_BASE=/usr/local/oracle #Oracle安装的基本路径,是自定义的。
export ORACLE_HOME=/usr/local/oracle/myoracle #真实的Oracle安装到的目录,也是自定义的,但是必须是上面的路径内
export ORACLE_SID=oracleSID#定义的一个操作系统的变量,该变量的值是Oracle数据库实例化的名称,可自定义,不可更改。尤其需要注意,这个变量的值一般设定为orcl,一旦安装完毕Oracle后,无法修改的(你要改了,数据库就瘫了)
和MySQL有什么区别?tns可以想象成一个驱动?(其实从实现功能来说,可以说是一个驱动),程序间的远程通信其实都需要socket,而Oracle改成了tns,我想,应该是这样。
回忆一下mysql的远程连接,服务端生成一个socker套接字文件,客户端通过该文件和服务端通信,是不是这么回事?Oracle改成了配置文件的形式,以及一个专用程序负责通信,是不是这么回事?负责通信的文件改成了ora后缀的文件。
Oracle的远程连接为以下步骤:
1、运行netca,也就是在Linux这个服务端,运行命令 netca,会弹出oracle net configure assistant,这个中文意思为:
Oracle 网络设置小助手,没什么好说的,Windows程序的风格,下一步就完事,设置的内容为绑定监听端口为1521.监听的名字为自定义,不过一般为listener,没必要自定义。
2. 启动tns服务,监听外部的连接,启动命令为:
看到 successfully即为启动成功。注意了,倒数第三行
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=centos11)(PORT=1521)))
这里的host的值为Linux这台机器的hostname,Windows肯定是认不出来的,怎么办?
很简单,给Windows做个域名解析即可,解析方法为修改hosts文件,具体细节请百度,不多说了。
前面说了半天环境变量ORACLE_SID,这里就该说道说道了。该变量需要存储在初始化文件内,文件名为init+变量值.ora,如果没有,需要从别的地方复制过来。(init意思为初始化,如果没有初始化,程序肯定无法启动的)
cp -a /usr/local/oracle/admin/oracle/pfile/init.ora.8262020163649 /usr/local/oracle/myoracle/dbs/initoracleSID.ora
两个文件路径分别为ORACLE_BASE/admin/oracle/pfile/ 和 ORACLE_HOME/dbs/
需要注意,ORACLE_SID的值是什么文件名就为 init+值.ora,区分大小写的哦。
以上远程连接的服务端就完成了,现在该配置pl/sql 这个Windows客户端了。
Windows的pl/sql 安装目录下的instantclient_11_2这个文件夹下的tnsnames.ora,记事本打开:
运行pl/sql 主程序,
点击确定即可连接Oracle,并进行管理工作了。
、