解决Oracle数据库链接问题,避免无法连接的烦恼 (oracle数据库链接不上)

Oracle是目前世界上更大的关系数据库管理系统之一,广泛应用于企业级应用系统中。在使用Oracle数据库的过程中,有时我们会遇到无法连接的问题,这对于我们来说是非常烦恼的,因为无法连接数据库会导致我们无法操作数据,而数据又是重要的资产。本文主要介绍如何。

一、检查网络连接

我们需要检查网络连接是否正常。如果网络连接不正常,那么就无法连接到数据库,因此我们必须首先解决网络连接问题。

如果我们使用的是LAN网络,那么我们需要检查网络设备是否正常工作,如交换机是否工作正常,网线是否损坏,IP地址是否配置正确等。如果我们使用的是WAN网络,那么我们需要检查网络带宽是否正常,网络延迟是否过高等。

二、检查Oracle监听器

如果网络连接没有问题,那么我们需要检查Oracle监听器是否正常。Oracle监听器是Oracle数据库的一个系统进程,它负责监听来自客户端的连接请求,并向客户端提供连接服务。如果Oracle监听器不正常,那么就会导致客户端无法连接到数据库。

我们可以使用lsnrctl命令来检查Oracle监听器状态。lsnrctl命令是Oracle Listener Control工具,用于管理Oracle监听器。在命令行中输入以下命令:

lsnrctl status

如果监听器状态为“READY”,那么监听器正常运行。如果监听器状态为“UNKNOWN”或“DOWN”,那么我们需要重新启动监听器。

三、检查Oracle服务

如果Oracle监听器正常,那么我们需要检查Oracle服务是否正常。Oracle服务是由Windows操作系统管理的,它负责在Oracle数据库启动时自动启动。如果Oracle服务不正常,那么就无法启动Oracle数据库,从而导致客户端无法连接到数据库。

我们可以打开“服务”窗口,查找Oracle服务。如果Oracle服务的状态为“正在运行”,那么服务正常。如果Oracle服务的状态为“停止”,那么我们需要手动启动服务。

四、检查TNSnames.ora文件

如果Oracle监听器和服务都正常,那么我们需要检查TNSnames.ora文件是否正确。TNSnames.ora文件是Oracle客户端与数据库之间的配置文件,它包含了数据库的连接参数。

我们可以打开TNSnames.ora文件,查找我们要连接的数据库。如果连接参数正确,那么就可以连接数据库了。如果连接参数不正确,那么我们需要修改TNSnames.ora文件,确保连接参数正确。

五、检查防火墙设置

如果以上问题都没有解决数据库连接问题,那么我们需要检查防火墙设置。防火墙是网络安全的重要组成部分,它可以阻止恶意攻击和垃圾信息。

我们需要确保防火墙没有阻止我们的数据库连接。我们可以打开防火墙设置,查找是否有与Oracle数据库连接相关的规则。如果有,我们需要添加相应的规则,以允许数据库连接。

六、

通过以上几个方面的检查,我们可以有效地。在使用Oracle数据库时,我们需要时刻保持警惕,及时解决出现的问题,以确保我们的数据库系统运行稳定可靠。

相关问题拓展阅读:

如何连接oracle数据库?

如何配置才能使客户端连到数据库:\x0d\x0a\x0d\x0a要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是java连接数据库的时候,可以用 \x0d\x0ajdbc \x0d\x0athin模式,不用装oracle的客户端软件。加入你在机器上装了oracle数据库,就不需要在单独在该机器上安装oracle客户端了,因为装 \x0d\x0aoracle数据库的时候会瞎培余自动安装oracle客户端。\x0d\x0a 用过sql \x0d\x0aserver数据库然后又用oracle的新手可能会有这样的疑问:问什么我用sql server的时候不用装sql \x0d\x0aserver的客户端呢?原因很简单,sql server也是microsoft的,它在操作系统中集成了sql \x0d\x0aserver客户端,如果microsoft与oracle有协议,将oracle客户端也集成到操作系统中,那我们也就不用在客户端机器装oracle\x0d\x0a 客户端软机就可访问数据库了,不过,这好像是不可能实现的事情。\x0d\x0a 也有的人会问:为什么在sql \x0d\x0aserver中没有侦听端口一说,而在oracle中要配置侦听端口?其实sql \x0d\x0aserver中也有侦听端口,只不过microsoft将侦听端口固定为1433,不允许你随便改动,这样给你一个错觉感觉sql \x0d\x0aserver中没有侦听端口,咳,microsoft把太多的东西都封装到黑盒子磨滚里,方便使用的同时也带来的需要副作用。而oracle中的侦听端口直接\x0d\x0a 在配置文件中,允许随便改动,只不过无论怎样改动,要与oracle服务器端设置的侦听端口一致。\x0d\x0a好,言归正传,我们如何做才能使客户端机器连接到oracle数据库呢?\x0d\x0aA. 安装相关软件\x0d\x0aB. 进行适当的配置\x0d\x0a\x0d\x0aA.在适当的位置安装适当的软件:\x0d\x0a在客户端机器:\x0d\x0a1.在客户端机器上安装ORACLE的Oracle Net通讯软件,它包含在oracle的客户端软件中。\x0d\x0a2.正确配置了sqlnet.ora文件:\x0d\x0aNAMES.DIRECTORY_PATH = (TNSNAMES, ?.)\x0d\x0aNAMES.DEFAULT_DOMAIN=DB_DOMAIN\x0d\x0a一般情况下我们不用NAMES.DEFAULT_DOMAIN参数。如果想不用该参数用#注释掉或将该参数删除即可,对于NAMES.DIRECTORY_PATH参数采用缺省值即可,对于NAMES.DEFAULT_DOMAIN参数有时需要注释掉,在下面有详细解释。\x0d\x0a3.正确配置了tnsname.ora文件\x0d\x0a\x0d\x0a在服务器端机器:\x0d\x0a1.保证listener已经启动\x0d\x0a2.保证数据库已经启动。\x0d\x0a如果数据库没有启动,用:\x0d\x0aOracle 9i:\x0d\x0ados>sqlplus “/ as sysdba”\x0d\x0asqlplus> startup\x0d\x0aOracle 8i:\x0d\x0ados>svrmgrl\x0d\x0asvrmgrl>connect internal\x0d\x0asvrmgrl>startup\x0d\x0a命令启动数据库\x0d\x0a如果listener没有启动,用:\x0d\x0alsnrctl start \x0d\x0alsnrctl status \x0d\x0a命令启动listener\x0d\x0aB.进行适当的配置\x0d\x0a如何正确配置tnsname.ora文件:\x0d\x0a\x0d\x0a可\x0d\x0a 以在客户端机器上使用oracle Net Configuration Assistant或oracle Net \x0d\x0aManager图形配置工具对客户端进行中贺配置,该配置工具实际上修改tnsnames.ora文件。所以我们可以直接修改tnsnames.ora文件,\x0d\x0a 下面以直接修改tnsnames.ora文件为例:\x0d\x0a该文件的位置为: ?\network\admin\tnsnames.ora (for windows)\x0d\x0a?/network/admin/tnsnames.ora (for unix)\x0d\x0a此处,假设服务器名为testserver,服务名为orcl.testserver.com,使用的侦听端口为1521,则tnsnams.ora文件中的一个test网络服务名(数据库别名)为:\x0d\x0atest =\x0d\x0a(DESCRIPTION=\x0d\x0a(ADDRESS_LIST=\x0d\x0a(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\x0a)\x0d\x0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)\x0d\x0a)\x0d\x0a)\x0d\x0a此处的笑脸为)。\x0d\x0a 红色的内容为需要根据实际情况修改的内容,现解释如下:\x0d\x0a PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。\x0d\x0a\x0d\x0aHOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机 \x0d\x0a \x0d\x0a器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for\x0d\x0a WINDOWS) or ifconfig(for \x0d\x0aUNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在\x0d\x0a hosts文件中加入数据库侦听所在的机器的机器名的解析。\x0d\x0a\x0d\x0aPORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status 命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。\x0d\x0a SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。\x0d\x0a 如何利用配置的网络服务名连接到数据库:\x0d\x0a 用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。\x0d\x0a 如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net \x0d\x0aservice)后面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN参数的值,此处我的参数值为 \x0d\x0atestserver.com,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:\x0d\x0a\x0d\x0a 什么情况下会引起oracle自动设置NAMES.DEFAULT_DOMAIN参数?\x0d\x0a \x0d\x0a 出现这种情况的典型环境为windows的客户端的‘我得电脑à属性à计算机名à更改à其它?à此计算机的主DNS后缀’中设置了‘primary \x0d\x0a dns \x0d\x0asuffix’,因为在这种情况下安装客户端时,会在sqlnet.ora文件中自动设置NAMES.DEFAULT_DOMAIN参数,或许当把计算机\x0d\x0a 加入域中安装oracle客户端时也会出现这种情况,有条件的话大家可以试一下。\x0d\x0a\x0d\x0a我在设置oracle的客户端时一般手工修改tnsnames.ora文件,但是还有许多人喜欢用图形工具配置,该图形工具最终还是修改tnsnames.ora文件,但是它有时会引起其它的问题:\x0d\x0a\x0d\x0a在用oracle的图形配置软件’net assistant’或‘Net Configuration \x0d\x0aAssistant’配置网络服务名时,假如已经设置了‘primary dns \x0d\x0asuffix’,但是在图形配置软件中写的网络服务名的名字中没有‘primary dns \x0d\x0asuffix’,如只是写了test,则图形配置软件会自动在后面加上‘primary dns \x0d\x0asuffix’,使之变为test.testserver.com,并存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有 \x0d\x0aNAMES.DEFAULT_DOMAIN参数。此时,用图形工具进行测试连接是通过的,但是假如此时sqlnet.ora文件中没有 \x0d\x0aNAMES.DEFAULT_DOMAIN参数,则你在使用网络服务名时应该使用在tnsnames.ora中的 \x0d\x0atest.testserver.com,而不是你在图形配置软件中键入的test。解决的办法为:\x0d\x0a可以在sqlnet.ora文件中设置NAMES.DEFAULT_DOMAIN= testserver.com,这时你可以用test或test.testserver.com连接数据库\x0d\x0a在sqlnet.ora文件中不设置NAMES.DEFAULT_DOMAIN参数,在tnsnames.ora文件中将test.testserver.com中的.testserver.com去掉,这时你可以用test连接数据库。\x0d\x0a\x0d\x0a关于为什们在网络服务名后面加db_domain参数,需要了解sql*plus连接数据库的原理,我在后面解决12154常见故障中给出了详细的说明。\x0d\x0a\x0d\x0a如果上面的招数还不奏效的话,只好用一下乾坤大挪移了。\x0d\x0a将客户端的网络服务名部分\x0d\x0atest.testserver.com =\x0d\x0a(DESCRIPTION=\x0d\x0a(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\x0a)\x0d\x0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)\x0d\x0a)\x0d\x0a)\x0d\x0a此处的笑脸为)。\x0d\x0a拷贝到服务器的tnsnames.ora文件中。然后再服务器端用sqlplus 。\x0d\x0a 如果能连接成功,说明你的客户端与服务器端的网络有问题。\x0d\x0a 如果连接不成功,用前面的部分检查网络服务名部分部分是否正确,如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题,建议重新安装数据库。\x0d\x0a该错误表示用于连接的网络服务名在tnsnames.ora文件中不存在,如上面的tnsnames.ora中的网络服务名只有test,假如用户在连接时用sqlplus system/manager@test1则就会给出TNS-12154错误。\x0d\x0a要注意的是,有时即使在tnsnames.ora文件中有相应的网络服务名,可是用该网络服务名连接时还会出错,出现这种情况的典型配置如下(在客户端的机器上):\x0d\x0asqlnet.ora文件:\x0d\x0aNAMES.DIRECTORY_PATH = (TNSNAMES, ?.)\x0d\x0aNAMES.DEFAULT_DOMAIN = server.com\x0d\x0atnsnames.ora文件:\x0d\x0atest =\x0d\x0a(DESCRIPTION=\x0d\x0a(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\x0a)\x0d\x0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)\x0d\x0a)\x0d\x0a)\x0d\x0a此处的笑脸为)。\x0d\x0asql*plus运行基本机理:\x0d\x0a 在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假 如该参数存在,则将该参数中的值取出,加到网络服务名的后面, \x0d\x0a\x0d\x0a即此例中你的输入由sqlplus system/manager@test自动变为sqlplus \x0d\x0a \x0d\x0a,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报 \x0d\x0a 错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如 \x0d\x0a#NAMES.DEFAULT_DOMAIN = \x0d\x0aserver.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找 \x0d\x0atest网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。\x0d\x0a 另外原则上tnsnames.ora中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以更好将使用的网络服务与tnsnames.ora中配置的完全一样。\x0d\x0aORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor.\x0d\x0a该错误表示能在tnsnames.ora中找到网络服务名,但是在tnsnames.ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致。解决的办法是修改tnsnames.ora中的SERVICE_NAME。\x0d\x0a\x0d\x0a 易混淆术语介绍:\x0d\x0a \x0d\x0a Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为之一章讲到的Oracle \x0d\x0adatabase。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负 \x0d\x0a 担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和 \x0d\x0aDb_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和 \x0d\x0aDb_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。 \x0d\x0aDb_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。\x0d\x0a\x0d\x0a Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。\x0d\x0a\x0d\x0aGlobal_name:对一个数据库(Oracle \x0d\x0adatabase)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. \x0d\x0aDb_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改 \x0d\x0aGlobal_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO \x0d\x0a

plsql连接ORacle数据库时报:因目标主机或对象不存在,连接失败怎样解决?

解决方法如下:

查看主机名,LINUX看/etc/hosts里有没有配置该主机与IP的对应关系,如果是IP地址,如果连接本机127.0.0.1试试看网络通不通;

看看防火墙配置,是不是防火墙打开了,屏幕下方目标主机的端口,如果主机IP能通,而端口不通,可能是你自己主机上防火墙阻止了,也有可能目标主机限制了你IP域在端口的网络连接。

oracle数据库链接不上的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle数据库链接不上,解决Oracle数据库链接问题,避免无法连接的烦恼,如何连接oracle数据库?,plsql连接ORacle数据库时报:因目标主机或对象不存在,连接失败怎样解决?的信息别忘了在本站进行查找喔。


数据运维技术 » 解决Oracle数据库链接问题,避免无法连接的烦恼 (oracle数据库链接不上)