oracle的sqlnet.ora,tnsnames.ora,listener.ora的理解

1  

oracle中3个比较常用的配置文件  tnsnames.ora  ,listener.ora ,sqlnet.ora  ,它们都位于$ORACLE_HOME/db_2\NETWORK\ADMIN 目录下面 ,我们可以手动修改它们,也可以使用ORACLE提供的图形界面来修改


如果使用图形界面,那么netca命令对应  tnsnames.ora 文件 ,net manager对应的是listener.ora文件 .其中ORACLE还提供了DBCA(建库命令界面),DBUA(升级数据库界面)等工具对ORACLE进行管理

 查看下sqlnet.ora文件的内容

  sqlnet.ora 写道

# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

#NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
 

 我们通常使用 sqlplus "/as sysdba" 走的就是操作系统认证,SQLNET.AUTHENTICATION_SERVICES= (NTS) 这句话就是做这个用的,

  使用 sqlplus user/pass@tnsname 来连接数据库表明这次的连接走的是网络认证,NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) 表示到哪里去查询tnsname和IP的对应关系。这里表明首先到tnsnames文件里去找,走网络连接的话,那么listener进程必须是开着的( lsnrctl status查看状态),它负责来侦听客户机的连接请求,然后发送给ORACLE Server来进行处理。

listener.ora 写道
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = H:\oracle\product\10.2.0\db_2)
(PROGRAM = extproc)
)
)

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

假如把listener进程杀掉,那么对已经连接上的会话不会产生影响,对新的会话会产生影响。tnsname.ora配置例子

 tnsname.ora 写道

# Generated by Oracle configuration tools.

ORA10GC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hua-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora10gc)
)
)

10=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl10g)
)
)

nbey=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
)

nbey =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

 在配置完tnsnames.ora后,使用tnsping 'tnsname'来检查是不是配置好了。

以SYS用户连接到数据库,数据库不需要为OPEN状态,操作系统认证也不需要数据库为OPEN状态,普通的用户则需要数据库处于OPEN状态才能使用。(ORACLE的数据库状态 nomount,mount,open),查看数据库状态使用select * from v$database表格可以查看。


  

                              

猜你喜欢

转载自chenhua-1984.iteye.com/blog/1471590