Oracle原理:11g中的网络配置

目录

1.11g的网络连接方式

2.   11g中网络配置的主要文件

3.静态注册和动态注册

4.netca和netManager

 

1.11g的网络连接方式

   在WINDOWS下,安装完Oracle会自动完成好网络配置实现网络连接,但是在Linux下,得自己手动配置才行。客户端有tnsnames.ora的配置文件来配置网络服务名,如服务器地址,监听端口,数据库SID等。而服务器端有listener.ora配置文件来配置监听器,如监听协议、地址及其他信息。从本地访问数据库服务器,首先要开启OracleServiceORCL服务,如果是通过网络访问数据库服务器,还要启动OracleOraDb11g_home1TNSListener服务。

  lsnrctl  [status/start/stop]  

  在WINDOWS和Linux下都可以用上面的命令来查看/开启/停止监听服务,当然如果是在WINDOWS下还可以在控制面板的服务里通过可视化界面直接 查看/开启/停止服务。

2.   11g中网络配置的主要文件

主要文件有三个,都位于 $ORACLE_HOME\NETWORK\ADMIN路径下的 sqlnet.ora 、listener.ora、tnsnames.ora.我的这三个文件在D:\oracle\product\11.2.0\dbhome_3\NETWORK\ADMIN。直接可以用可视界面进行修改参数,或者用vim编辑。

2.1 打开sqlnet.ora 里面有这一句话:SQLNET.AUTHENTICATION_SERVICES= (NTS) 这是基于操作系统的验证方式。这可以让你在以管理员身份登录操作系统时,可以无需输入用户密码就可以以SYSDBA角色直接登录上,如下图所示。如果把NTS改成NONE,那么就是以口令形式进行登录,此时就不可以无密码直接登录了。

sqlnet.ora 里面有还有一句话:NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) , 这个是连接方式。默认是先按照tnsnmanes.ora文件里指定的连接方式,如果在文件里查无相应记录则会用简单连接的方式尝试连接。想要用什么连接方式连接往括号里面加参数就行,不想用该连接方式就删除对应参数即可。参数有TNSNAMES,ONAMES,HOSTNAME,EZCONNECT。越前面的参数的越先用对应的方式尝试连接。

sqlplus user/password@IP:端口/orcl   --在cmd窗口下
conn   user/password@IP:端口orcl    --在SQLPLUS窗口下
例如:
sqlplus voapd/voapd@hu-PC/orcl

像这种方式就是简单连接,如果出现oracle中监听程序当前无法识别连接描述符中请求服务的错误,可以参考

https://www.cnblogs.com/telwanggs/p/10935367.html 的解决方案。

2.2listener.ora文件里有(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))      ,这个是调用外部过程的监听,比如调用C++/JAVA等一些高级语言的方法程序来完成相应的任务,如果把这行删了,就无法调用外部过程了.

GLOBAL_DBNAME :全局数据库名。通过select * from global_name; 查询得出 。

PROTOCOL:监听协议,一般都使用TCP 

LISTENER :监听名称,可以配置多个监听。

GLOBAL_DBNAME:全局数据库名

SID_NAME:服务名,通常和全局数据库名一致。

我的配置如图:

2.3.在客户端没有tsnames.ora文件时,除了复制别人的,还可以用netca进行可视化配置。没有tsnames,ora文件也就无法按照tnsnmanes.ora文件里指定的连接方式进行连接了。

打头的左对齐的变量就是服务名(SID),例如上文的ORCL、ORACLR_CONNECTION_DATA。

其中在ADDRESS 写上要连接服务器的端的信息,连接方式TCP,主机为hu-PC端口为1521,当然HOST也可以是IP地址、域名等.

可以在 cmd窗口中 输入  tnsping [服务名]  来看能不能ping通服务,而这里的服务名就是tsnames.ora里的SID来查找的。

3.静态注册和动态注册

  3.1 在listener.ora里如果有类型下面的语句就是静态注册,指明了全局数据库名,服务名,Oracle主目录等。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_3)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_3\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_3)
      (SID_NAME = ORCL)
    )
  )

3.2 在listener.ora里如果有类型下面的语句就是动态注册

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hu-PC)(PORT = 1521))
	  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
    )
  )

在cmd中输入lsnrctl status  如果状态为UNKNOWN就是静态注册,如果是READY就是动态注册.动态注册可以不需要listener.ora文件。在启动监听服务时需要读取listener.ora文件内容,如果没有listener.ora文件时,默认情况PMON会向LSNTCTL动态注册协议为TCP/IP,端口为1521注册到监听器。

 lsnrctl status 来查看我监听状态

 想要静态注册和动态注册之间转化,就需要把listener.ora的静态注册的部分给删掉,或者把listener.ora给删除。重启服务如图所示。在读listener.ora文件内容里要是没有相应的静态注册信息,待PMON进程重启后会对监听器进行动态注册。

由于PMON后台进程是随着数据库打开才会打开的,动态注册大概需要1分钟才能完成。

 

4.netca和netManager

    以管理员的身份启动cmd,输入netca会有一个界面,如图,这是一个对参数文件进行修改的可视化界面,要比上面操作文件来改参数要方便得多。监听程序配置实际上就是配置listener.ora配置文件的可视化界面。命名方法配置是配sql,ora的,本地网络服务配置tsnames.ora的。

在WIN菜单下搜索net Manageer打开,这里面可以进行静态注册,选择添加数据库,写入相应的信息,Oracle主目录就是ORACLE_HOME.

添加完数据库后,重启lsnrctl服务等待1分钟。

可以重新查看listener.ora文件,发现静态注册信息又添加上去了。

注意:不建议直接手动操作配置文件,尽量采用可视化管理工具来操作。如果出现TNS监听异常,或者服务无法打开,尝试把listener.ora备份后删除,在重新用可视化工具进行配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章