1、oracle监听连接过程
当你输入sqlplus sys/oracle@orcl的时候
(1)查询sqlnet.ora看看名称的解析方式,发现是TNSNAME。
(2)则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name。
(3)如果listener进程没有问题的话,建立与listener进程的连接。
(4)根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的serverprocess。 (5)这时候网络连接已经建立,listener进程的历史使命也就完成了。 2、连接用到的几种命令形式
(1)sqlplus /as sysdba这是典型的操作系统认证,不需要listener进程
(2)sqlplus sys/oracle这种连接方式只能连接本机数据库,同样不需要listener进程 (3)sqlplus sys/oracle@orcl这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,数据库用户认证是采用数据库认证,所以数据库必需处于open状态。
例如,作为普通用户进行登录
[oracle@dg1admin]$sqlplus sys/oracle
SQL*Plus:Release 10.2.0.1.0-Production on Sun Feb1316:18:332011
Copyright(c)1982,2005,Oracle.All rights reserved. ERROR:
ORA-01034:ORACLE not available
ORA-27101:shared memory realm does not exist Linux Error:2:No such file or directory Enter user-name:
3、initSID.ora中的Remote_Login_Passwordfile对身份验证的影响 initSID.ora中的Remote_Login_Passwordfile有三个可选值:
NONE:默认值,表示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限 EXCLUSIVE:
(1)表示只有一个数据库实例可以使用密码文件
(2)允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户 SHARED:
(1)表示可以有多个数据库实例可以使用密码文件
(2)不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE 4、关于域名(主机名)解析
客户端需要在/etc/hosts(UNIX)或者
windows\\hosts(WIN98)winnt\\system32\\drivers\\etc\\hosts(WIN2000)中写入数据库服务器IP地址和主机名的对应关系。
例如: 127.0.0.1 dg1
192.168.0.35 oracledb oracledb 192.168.0.45 tomcat tomcat 202.84.10.193 bj_db bj_db
(1)有些时候我们配置好第一步后,tnsping数据库服务器别名显示是成功的,但是sqlplus username/password@servicename 不通,jdbc thin link 也不通的时候, 一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。
(2)如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。 (3)编辑前最好留一个备份,增加一行时也最好用复制粘贴,避免编辑hosts时空格或者tab字符错误。
(4)UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量来指定默认的目标数据库:
ORACLE_SID=appdb;export ORACLE_SID TWO_TASK=appdb;export TWO_TASK
因篇幅问题不能全部显示,请点此查看更多更全内容