文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>oracle学习------,sqlnet.ora;tnsnames.ora等配..

oracle学习------,sqlnet.ora;tnsnames.ora等配..

时间:2010-05-26  来源:jennyljd

引出: Qwhy同学的oracle数据库连接不上,错误提示为:ora 12560 tns 协议适配器错误 网上解决方案大体三种:  

1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,
启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务
面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI
D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下
输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题。

一一试过均不成立,最后发现是不小心改了配置文件(tnsnames.ora数据库里的实例描述被修改了,还有listener.ora中的主机名).可见自己最近缺少思考,有问题就google.在此反思~

顺带学习整理配置文件等相关信息

在$ORACLE_HOME\network\admin下有三个网络相关配置文件:listener.ora;sqlnet.ora;tnsnames.ora

先来sqlnet.ora文件配置:

# SQLNET.ORA Network Configuration File: D:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

其中:

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)作用如下:

当我们用sql>conn system/manager@iso连接时候,客户端就会在tnsnames.ora中查找iso的记录,如果找不到则尝试把iso当作主机名,通过网络途径查找其对应的ip,然后连接这个ip上对应GLOBAL_DBNAME=iso的实例.

SQLNET.AUTHENTICATION_SERVICES= (NTS)与oracle的os认证方式有关

sqlnet.ora文件,SPFILE文件(命名方式spfile+sid)和口令文件PWDsid.ora(命名方式为pwd+sid)三者协同作用实现身份认证。

sqlnet.ora中:

SQLNET.AUTHENTICATION_SERVICES= (NTS)|(NONE)    --1
其中:nts为操作系统认证方式,不需要口令文件,而none为口令文件认证。

SPFILE文件中:

REMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED) --2
其中:NONE不使用口令认证方式,使用os认证。

   EXCLUSIVE使用口令文件认证,但只有一个数据库实例可以使用此文件。

   SHARED口令文件认证,与EXCLUSIVE不同的是有多个数据库实例可以使用此文件。

只有internal|sys帐号可以被识别,即使文件中存有其他用户信息,也不允许以sysoper/sysdba登陆。

当1为NTS,2为NONE时为操作系统认证方式

当1为NONE,2为EXCLUSIVE|SHARED时,配合口令文件,为口令文件认证方式

当1为NTS,2为EXCLUSIVE|SHARED时,配合口令文件,这个时候os认证和口令认证同时起作用。

sqlnet.ora可以实现在数据库层的ip限制

tcp.validnode_checking=yes


#允许访问的ip
tcp.invited_nodes =(ip1,ip2,……)

#不允许访问的ip
tcp.excluded_nodes=(ip1,ip2,……)

当不允许访问的ip中的ip连接过来会有错误提示:

ERROR: ORA-12537: TNS: 连接已关闭


附上:1:internal,sys,system用户之间的区别

SYS and INTERNAL are synonymous. SYS should only be used administatively. SYS
(and internal) is special. You cannot create a trigger on a SYS table, you
cannot have a read only transaction as SYS and so on.

SYSTEM is simply an account that holds some data dictionary tables/views (not
many) and is a DBA. SYSTEM is a "regular" user -- nothing special about it.

Use SYS/internal as little as possible, I never use system for anything (Oracle
software might use it now and again to install some tables/run some scripts but
thats it). Create your own DBA accounts.


sys是数据用户,system是dba用户,internal相当与sys as sysdba

2:赋予用户sysdba权限

sql>grant sysdba to 用户;



相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载