Oracle 客户端连接服务器常见问题.docx
- 文档编号:23479782
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:12
- 大小:21.82KB
Oracle 客户端连接服务器常见问题.docx
《Oracle 客户端连接服务器常见问题.docx》由会员分享,可在线阅读,更多相关《Oracle 客户端连接服务器常见问题.docx(12页珍藏版)》请在冰豆网上搜索。
Oracle客户端连接服务器常见问题
Oracle客户端连接服务器常见问题之
今天安装软件一直在测试链接不能通过,出现ORA-12154:
TNS:
couldnotresolveservicename,后来才发现是tnsnames.ora中有误。
查找网上的资料,记录下来。
要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。
下面列出几种常见的连接问题:
1、
ORA-12541:
TNS:
没有监听器
显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。
启动监听器:
$lsnrctlstart
或
C:
\lsnrctlstart
2、
ORA-12500:
TNS:
监听程序无法启动专用服务器进程
对于Windows而言,没有启动Oracle实例服务。
启动实例服务:
C:
\oradim–startup-sidmyoracle
3、
ORA-12535:
TNS:
操作超时
出现这个问题的原因很多,但主要跟网络有关。
解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。
4、
ORA-12154:
TNS:
无法处理服务名
检
查输入的服务名与配置的服务名是否一致。
另外注意生成的本地服务名文件(Windows下如D:
\oracle\ora92\network\admin
\tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)里每项服务的首
行服务名称前不能有空格。
5、
ORA-12514:
TNS:
监听进程不能解析在连接描述符中给出的SERVICE_NAME
打开NetManager,选中服务名称,检查服务标识栏里的服务名输入是否正确。
该服务名必须与服务器端监听器配置的全局数据库名一致。
6、
Windows
下启动监听服务提示找不到路径
用
命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。
打开注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/Current
ControlSet/Services/OracleOraHome92TNSListener项,查看ImagePath字符串项是否存在,如果没
有,设定值为D:
\oracle\ora92\BIN\TNSLSNR,不同的安装路径设定值做相应的更改。
这种方法同样适用于Oracle实例服务,同
上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Oracle
ServiceMYORACLE项,查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:
\oracle\ora92
\binORACLE.EXEMYORACLE。
以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。
解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。
数据库客户端连接访问服务器
oracle客户端访问服务器是通过Listener/Tnsnames协议机制。
Listener负责再服务器上监听来自远端的连接请求,而Tnsnames则是远端的连接协议。
用户在使用这个机制的时候,只需要保证三点即可:
1.客户端/服务器之间的网络链路通畅。
2.服务器上监听器配置正确并启动($ORACLE_HOME/network/admin/Listener.ora),且数据库实例已经启动。
3.客户端上请求器配置正确($ORACLE_HOME/network/admin/Tnsname.ora)。
下面是我的配置并访问过程:
一:
检查客户端/服务器之间的网络状态
客户端操作系统:
WindowsXPProfessionalSP3
数据库客户端版本:
Oracle11gRelease
IP:
192.168.114.103
服务器操作系统:
RHEL5.1
数据库服务器版本:
OracleEnterprise11.1.0.6Release
IP:
192.168.114.222
IP对应名称:
ttecdis.tju-
常见数据库名称ttecdis
数据库启动后实例名称ttecdis
客户端与服务器互相ping,网络通畅。
二:
服务器端Listener.ora配置
在服务器端,存在一个初始化参数SERVICE_NAME,这个参数就是用于定义客户端文件(tnsname.ora)请求的服务器端的服务名,也是服务器端文件(listener.ora)提供的服务名。
可以使用showparameterservice_name来查看。
修改了服务器的SERVICE_NAME参数,监听文件listerner.ora文件也要做出修改,使二者保持一致,并使客户端的tnsnames.ora内的SERVICE_NAME与之一致。
才能保证通畅。
此处特意将服务器的SERVICE_NAME设置为两个值,以描述客户端请求服务器端连接的对应关系。
ALTERSYSTEMSETSERVICE_NAMES='kanon,emily'scope=both--此修改将使的spfile与内存同时被修改,下面是监听器的配置。
配置举例:
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
)
(DESCRIPTION=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=kanon)
(ORACLE_HOME=$ORACLE_HOME/)
(SID_NAME=ttecdis)
)
(SID_DESC=
(GLOBAL_DBNAME=emily)
(ORACLE_HOME=$ORACLE_HOME/)
(SID_NAME=ttecdis)
)
)
Listener.ora位于目录$ORACLE_HOME/network/admin.文件内包含两部分内容:
LISTENER包含了监听使用的协议、本机地址和监听端口;SID_LIST_LISTENER描述了本机对外提供的服务(GLOBAL_DBNAME)。
完成上述两端的配置后,启动数据库,之后,启动监听器(lsnrctlstart),显示信息如下:
ListeningEndpointsSummary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ttecdis.tju-)(PORT=1521)))
ServicesSummary...
Service"kanon"has1instance(s).
Instance"ttecdis",statusUNKNOWN,has1handler(s)forthisservice...
Service"emily"has1instance(s).
Instance"ttecdis",statusUNKNOWN,has1handler(s)forthisservice...
Service"ttecdis"has1instance(s).
Instance"ttecdis",statusUNKNOWN,has1handler(s)forthisservice...
Thecommandcompletedsuccessfully
此时,服务器实现启动监听程序,向外提供服务kanon与emily(GLOBAL_DBNAME参数描述的值就是对外提供的服务器名),客户端可以向服务器上的kanon(SERVICE_NAME参数描述的值就是目的服务)发起连接了。
三:
远端Tnsnames.ora配置
配置举例:
wintolinux=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.114.222)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=kanon)
)
)
文件内包含两部分内容:
ADDRESS_LIST描述了连接使用的协议、服务器地址和端口;CONNECT_DATA描述了目标服务器名(SERVICE_NAME),tnsname.ora内的SERVICE_NAME要与服务器端的GLOBAL_DBNAME相同,这是客户端请求的服务。
还可以修改客户端配置的SERVICE_NAME=emily来请求连接另一个服务。
wintolinux=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.114.222)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=emily)
)
)
客户端并不需要关心它连接的数据库究竟是哪个,更不会想到两个客户端连接的是同一个数据库了。
四:
测试客户端向服务器发起连接
1.客户端启动sqlplus,不登录
cmd>sqlplus/nolog
2.向服务器发起连接
sql>connectsys/ttecdis@wintolinuxassysdba(wintolinux是我的客户端tnsname.ora内的配置连接信息标识符)
得到反馈信息:
ERROR:
ORA-12532:
TNS:
无效的参数
3.检测到数据库服务器是否可以ping通
cmd>tnspingwintolinux
不通!
!
4.分析原因
检查网络连接---通过!
检查配置文件正确性---通过!
检查服务器防火墙设置---system-config-securitylevel---发现1521端口被关闭。
打开该端口,再次连接,成功。
5.测试访问
客户端执行SQL语句select*fromdual;
输出结果。
成功!
扩展:
在Oracle8i以及之后的版本里,Oracle引入了一个动态服务注册功能。
所谓动态服务注册是指当实例启动之后,由后台进程PMON在监听器中注册数据库服务器信息,在此机制下,原来监听器配置文件listener.ora中的DIS_LIST部分将不是必须的,
默认的配置文件里面也的确是没有这部分的。
如果先启动监听器,再启动数据库实例,我们就可以通过lsnrctlstatus命令看到动态注册进入的服务了,此时服务的状态不再是UNKNOWN,而是READY了,因为监听器具体知道是哪个服务注册进来了。
另外,在客户端配置工具netmanager中,服务名不支持"域名格式",但tnsname协议是支持的,所以可以通过手工修改tnsname.ora的方式更改服务名为"域名格式"的。
本文来自CSDN博客,转载请标明出处:
Oracle客户端配置及其使用说明
2010-04-1511:
05 佚名 互联网 我要评论(0)
∙摘要:
随着Oracle技术领域应用越来越广泛,现在就关于oracle客户端配置极其使用说明讲下个人的经验,主要包含常见的Oracle客户端配置的两种方法。
∙标签:
Oracle客户端配置
∙
随着Oracle技术领域应用越来越广泛,现在就关于oracle客户端配置极其使用说明讲下个人的经验,希望能对读者有些帮助。
使用oracle数据库有两种方法:
1、在客户端机器上安装oracle的客户端软件。
唯一的例外就是java连接数据库的时候,可以用jdbcthin模式,不用装oracle的客户端软件。
2、如果你在机器上装了oracle数据库服务器,就不需要在单独在该机器上安装oracle客户端了,因为装oracle数据库的时候会自动安装oracle客户端
如果想用本地的计算机访问或连接远程的oracle数据库,那么就必须在本地的计算机上安装oracle客户端软件。
在安装客户端前,确保在服务器端:
1.保证listener服务已经启动。
2.保证数据库已经启动。
安装完客户端软件后,要对客户端软件下的配置和移植工具----》netconfigurationassianstant进行配置,按照提示:
图形界面修改(最好用这种方法修改)可以在客户端机器上使用oracleNetConfigurationAssistant或oracleNetManager图形配置工具对客户端进行配置,该配置工具实际上修改tnsnames.ora文件。
下面是使用 oracleNetConfigurationAssistant工具对客户端进行配置的,设置完成之后netmanage中也作了相应的修改。
步骤如下:
1、打开cmd输入netca或用菜单选择NetConfigurationAssistant。
2、选择【本地net服务名配置】→下一步。
3、选择【添加】→下一步。
4、在【服务名】中输入你想要连接的服务器上的oracle服务的名字(远程服务器上数据库的名字)→下一步。
5、选择【tcp】→下一步。
6、在【主机名】中输入你想要连接的服务器ip,端口号不变→下一步。
7、选择【进行测试】→下一步。
(当然你也可以选择不测试)
※1测试如果不通过,点击【更改登录】输入一个肯定能登入的【用户名】和【口令】→确定,出现【正在连接...测试成功。
】表明测试成功。
※2测试不通过的话,点【上一步】确认你写的【服务名】和【主机名】,确认无误的情况下,确认你要连接的服务器oracle监听服务已经打开。
8、在【net服务名中】输入你想要使用的本地的服务名(本地使用的服务名称即当程序链接数据库所使用的数据库名称或数据库别名、网络服务名)→下一步。
就是【sqlplususer/passwd@本地服务名】。
9、选择【否】→下?
......
至此,整个Oracle客户端配置完成。
如有什么疑虑可以查看本网站相关文章。
2010-09-0121:
46
客户端服务名与远程或本地的监听器建立连接,客户用它向服务器端发出连接请求。
安装Oracle时,用户必须指定一个全局数据库名称,即一个SID名称。
Oracle用指定的SID名称在服务器端自动创建一个服务名。
在客户端创建服务名时,需要指定网络协议、与协议相关的信息和数据库的SID名称。
对于最常用的TCP/IP协议来说,需要指定服务器主机名或IP地址、监听器端口和数据库SID。
这些配置信息都存储在tnsnames.ora文件中,该文件同listener.ora保存位置相同,都位于ORACLE_HOME\network\admin目录下。
另外也可以使用开始—程序—Oracle-OraHome92—ConfigurationandMigrationTools—NetConfigurationAssistant的向导界面进行配置。
这里主要看手动配置过程。
Tnsname.ora文件中主要需要配置的文件如下:
TESTSERVICE=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.1)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=chstone)
)
)
我们一项项来看,首先是“TESTSERVICE”,这就是在客户端配置的服务名,名字可以任意取,但是一定要记住,前面不可以有空格。
“(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.1)(PORT=1521))”这一段中,“PROTOCOL”代表协议类型,此处为TCP;“HOST”是服务器端的IP地址或者主机名;“PROT”是端口号。
下面的“SERVICE_NAME”代表服务器端的服务名。
因为我安装的时候指定的SID名称为“chstone”,所以在这里Oracle用指定的SID名称在服务器端自动创建一个默认服务名“chstone”。
当在使用SQL*Plus登陆连接服务器端时,主机字符串中就填刚才配置好的客户端Net服务名“TESTSERVICE”,如果是将本机作为服务器,则主机字符串可以不填。
1.6使用SQL*Plus查询工具连接Oracle数据库
在连接数据库服务器之前,先要在Windows的控制面板――管理工具――服务中开启两个和Oracle有关的服务,即:
OracleOraHome92TNSListener(监听器服务)和OracleServiceCHSTONE(实例服务),如果本机作服务器,并且不接受远程客户端登陆的话,可以只开后面一个实例服务就行了。
建立连接:
开始—程序—Oracle-OraHome92—ApplicationDevelopment—SQLPlus,出现登录对话框,输入用户名和口令,主机字符串就是前面配置的Net服务名,如果为空,表示连接本机上默认数据库。
使用开始—运行建立连接的方法:
直接输入“sqlplus”进入状态下的SQL*Plus,输入“sqlplusw”进入Windos状态下的SQL*Plus;可直接在后面输入用户名密码登陆进去,例如“sqlpluswscott/tiger”;如果要登陆远程服务器,则在后面加上主机字符串,主机字符串前面加@与密码分隔,例如:
要登陆远程服务器,用我们上面配置的Net服务名,就是:
“sqlpluswscott/tiger@testservice”。
$符号用来在SQL*Plus下执行dos命令,比如启动和关闭服务:
$netstartOracleServiceCHSTONE(启动服务)
$netstopOracleServiceCHSTONE(关闭服务)
1.7SQL*Plus中一些常用的命令及使用技巧
SQL>showuser;显示当前用户(在SQL*Plus工具中专用的,更好的方式是使用SQL>selectuserfromdual;语句进行查看当前用户,其中dual表是每个SQL*Plus用户都可以使用的Oracle表,这里真正重要的是要知道它只含有一行数据。
);
SQL>setpagelize20;设置每页显示行数为20;
SQL>setlinesize100;设置每行显示的字符数为100;(如果嫌每次设置麻烦,可以将这两条语句保存在C:
\oracle\ora92\sqlplus\admin\glogin.sql中,每次启动是Oracle会自动运行glogin.sql文件,相当于初始化)
SQL>showall;查看当前的环境设置;
SQL>spoolfile_name;将显示的内容输出到指定文件,例如spoolc:
\spool.txt;
SQL>spooloff;关闭spool输出,只有关闭spool输出,才会在输出文件中看到输出的内容;
SQL>/;重新运行上一次命令;
SQL>settimingon/off;显示、关闭每个sql语句花费的执行时间;
SQL>select*fromtab;查看当前用户下所有表;
SQL>startfile_name;或SQL>@file_name;执行一个SQL脚本文件,我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理;
SQL>desctable_name;显示表的结构;
SQL*Plus中的快速复制和粘贴技巧(摘自oug.org):
1)鼠标移至想要复制内容的开始
2)用右手食指按下鼠标左键
3)向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样
4)内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键
5)这时,所选内容会自动复制到SQL*Plus环境的最后一行
1.8超级用户密码忘记的处理方式
1、在开始运行中输入sqlplusw/nolog登陆,即不启动服务登陆。
2、利用$netstartOracleServiceCHSTONE和$netstartOracleOraHome92TNSListener启动两个服务。
3、以超级用户身份连接数据库SQL>connect/assysdba;
4、修改system的密码:
SQL>alterusersystemidentifiedby“password”。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 客户端连接服务器常见问题 客户端 连接 服务器 常见问题