原博客地址:http://blog.csdn.net/jerry_bj/article/details/6384309
windows 2008上启用防火墙后Oracle tnsping不通的解决办法
1、解决方法:
很简单,windows2008防火墙将Oracle 1521端口给封了,新建并开启就行了。当然,如果你的listener是其他端口,按照下述方法把其他的端口开了,也就可以了。
在cmd中,输入:
C:/Users/Administrator>netsh firewall set portopening TCP 1521 "ORACLE"
2、ORA-12154:TNS:无法解析指定的连接标识符:
TNS-03505:无法解析名称:
最近在安装完Oracle Developer Suite之后,就无法登录系统,输入帐号登录发生错误:ORA-12154:TNS:无法解析指定的连接标帜符。
从网上查看说一般是因为 配置文件中没有对应的实例名,然后我就输入C:/tnsping myoracle(我的ora实例名),查看tnsnames.ora和sqlnet.ora是否配置正确,结果报错,提示:TNS-03505:无法解析名称 说明配置文件有误。
然后我就查看%Oracle_Home%/Db_1/NetWork/admin/TNSNAMES.ORA 文件,发现其中包含我需要登录的实例名。我在尝试tnsping命令,发现其查看到的参数文件sqlnet.ora不是我默认安装的oracle下面的sqlnet.ora,而是Oracle Developer Suite目录下NetWork文件夹下面的sqlnet.ora文件,把安装目录下的tnsnames.ora中的实例配置内容拷贝过去,OK.
MYORACLE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYORACLE)
)
)
至于为什么会修改为使用那个目录下的参数文件,还没有研究怎么处理。先记下处理过程
一个很难想到的引起ORA-12154的原因
使用OracleClient.OracleConnection时(我连的是Oracle 9i,其他版本未知),如果你的执行目录太长或者有括号等(未考察有些什么符号),那么即使你的服务名是对的,也会引起ORA-12154问题“TNS: 无法处理服务名”,当出现这个问题时,请也考虑这个原因。
http://render.cnblogs.com/archive/2005/10/13/253688.aspx
写正确了tnsnames文件却tnsping无法ping通:
http://www.oracleblog.cn/working-case/tnsping-block/
http://www.oracleblog.cn/tag/11g/
3、ORA-12154: TNS: 无法解析指定的连接标识符
你看看是不是你的TnaNames.ora里面TNS名称之前有空格,如果有则删除,呵呵,我以前碰到过这样的BT问题
把
(CONNECT_DATA =
(SERVICE_NAME=HXDB)
)
换成
(CONNECT_DATA =
(SID=HXDB)
)
看看
Toad for Oracle免费下载
http://www.innovatedigital.com/node/319/done?sid=375
4、解决ORA-12560: TNS: 协议适配器错误,与大家共享
今天遭遇ORA-12560: TNS: 协议适配器错误的问题,经过一番努力问题已经解决,与大家共享。
造成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.
经过以上步骤,就可以解决问题。
5、TNS:协议适配器错误的解决方法
http://hi.baidu.com/8741659422/blog/item/62333d300112699fa9018e2d.html
没有人会否认ORACLE是全球最有影响的数据库产品之一;不过好的东西似乎总不是那么好用(初看起来如此),甚至有些无情--总会给layman 们一个个无情的错误号。下面是我个人的总结,条条有用,希望能给初学者一点启示。
关于“好的东西似乎总不是那么好用(初看起来如此)”的一个笑话:在参加 IBM DB2 512、513培训前,在校园网上下载到了安装程序,不过任凭我们几个同学研究个半天,也不知哪个文件是安装文件,竟没有安装成功。最后,一致认为:看来这个培训真是太有必要了!事后,才知道--我们下载的是4linux的!
[以8.1.6为例]:
1、 ORA-12541:TNS:没有监听器
原因:没有启动监听器或者监听器损坏。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,则使用“Net8 Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。在添加之前可能需要把所有的监听器先删除!)
2、 ORA-12500:TNS:监听程序无法启动专用服务器进程
或
ORA-12560:TNS:协议适配器错误
原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。
3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:
1)ORADIM -DELETE -SID oradb 删除数据库服务项
2)ORADIM -NEW -SID oradb 新增数据库服务项
注:这个过程中如果出错,就重启计算机!
4、 ORA-12154:TNS:能解析服务名
原因:ORACLE的网络服务名没有正确配置。请使用“Net8 Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。如果仍没有解决,请继续向下看。
5、 ORA-1034 :TNS:ORACLE不可用
原因:ORACLE的数据库服务正确启动,但是数据库没有打开!
使用命令:
1)svrmgrl 启动服务管理器
2)connect internal 以internal身份登陆
3)startup 打开数据库
6、ORA-12560:TNS:协议适配器错误(顽固性的)
原因:未知。
解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的 ora_startup.bat,执行之!
PS:
1、我的ora_startup.bat:
net start OracleOraHome81TNSListener
net start ORACLESERVICEORADB
svrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。
2、我的ora_shutdown.bat:
net stop OracleOraHome81TNSListener
net stop ORACLESERVICEORADB
3、ORACLE 相关服务名请参见“管理工具”之“服务”中以ORACLE开头的服务名。
http://lelong.javaeye.com/blog/593225
我在XP系统中安装了oracle10g 但是当我用system登录时出现以下错误:SQL> conn system
Enter password: *********
ERROR:
ORA-12560: TNS:protocol adapter error
怎么处理?
------解决方法 --------------------------------------------------------
看看类似OracleserviceXXXX这样的一个服务
------解决方法 --------------------------------------------------------
适配器错误,查看监听和服务,并看是否配置正确
oracle从10开始企业管理器就成网页版了,你还可以借助第三方工具来管理你的数据库,PL/SQL或Toad
Toad for oracle9.5
下载地址:
http://www.orbitsw.net/toad/dls/TOAD%20for%20ORACLE/Toad%20for%20Oracle%209.5.exe
注册码:
Key : 0-63920-07153-29060-03749
Site: admin_88
你还可以只装客户端oracle 然后再装PL/SQL 来管理和连接你的数据库
oracle客户端装完,直接打开sqlplus 就让你输入用户名和密码,结果我怎么输入,它都报
ORA-12560:TNS:协议适配器错误
你可以这样来连接:一定要加上实例才能正常连接的
输入用户名:system@soshoo
输入口令:******
这样就可以连上了。
另:我的笔记:
oracle 获取当前用户的默认表空间:
select username,default_tablespace from user_users;
如何获取当前的Oracle用户的session id 两种方法:
1.环境变量:SELECT USERENV('SID') FROM DUAL;直接获取SID,这种方式要注意的是它在oracle 10g以后的版本才有这个环境变量
2.有时候v$mystat有权限, SELECT SID FROM V$MYSTAT WHERE ROWNUM =1;
前面一种显然简单点
select * from v$instance; 获取当明实例
C:/Documents and Settings/Zianed>tnsping orcl
口令中若含@ 连接oracle记得要加""
http://blog.csdn.net/aloha191/archive/2009/05/08/4161372.aspx
http://space.itpub.net/12778571/viewspace-624461 更改Oracle字符集
安装完Oracle后,在服务里可以看到oracleDBConsole和OracleService两个服务,其后还会紧跟数据库名或服务名;
oracleDBConsole是EM的服务
oracleService+(Servicename) 才是实例的服务
我们只要启动OracleService,就可以利用PL/SQL对数据库进行连接操作了.
有时也会因为IP问题而导致PL/SQL连不上数据库实例,我上次就是这样的情况,因为是在没装网线时装的,结果启动了OracleService,PL/SQl也连不上,这时,我们就需要在"程序"-->"Oracle - oraDb10g_home1"-->"Configuration and Migration Tools"-->"Net Manager"里进行配置,里面有一个监听程序和服务命名,里面的主机我们最好都用"计算机名",系统默认的是"localhost",我们需要在服务命名里新建一个关于数据库的服务名,然后对其进行注册,注册完毕后,保存,PLSQL应该就能连上了。
oracleDBConsole如果不启动的话,http://localhost:5500/em是打不开的,而我上次没插网线的问题就导致了oracleDBConsole无法启动,也出现了上篇中的错误。
我机子上装了oracle11服务器端,又装了客户端,还装了pl/sql,结果出现
tnsping 实例名 :导致无法解析名称。所以,OEM可以进,而SQL/PLUS 一直连不上实例,查了好久都不知道原因。实在无耐就卸载了客户端,然而这样操作完后,SQL/PLUS居然可以连实例了,也能tnsping通了。