C#连接oracle数据库报“ORA-12154: TNS: 无法解析指定的连接标识符”错误看清楚内容再说哦!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#连接oracle数据库报“ORA-12154: TNS: 无法解析指定的连接标识符”错误看清楚内容再说哦!!相关的知识,希望对你有一定的参考价值。

连接成功代码: try
string constring = "data source= (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = billow) ));user=sfcfa;password=sfcfa;";//ConfigurationManager.AppSettings["FAKey"]; //
OracleConnection conn = new OracleConnection(constring);
string orasql = "Select * from sfcmo"; //= "select * from sfcfa.sfcmo where seq in('" + this.textBox1.Text.ToString() + "') "; OracleDataAdapter ora1 = new OracleDataAdapter(orasql, conn);
DataSet orale = new DataSet();
ora1.Fill(orale, "123");
dataGridView1.DataSource = orale.Tables[0].DefaultView;
catch (Exception EX)

label1.Text = EX.ToString();


我需求写的代码
try
string constring = "data source=BILLOW;user=sfcfa;password=sfcfa;";//ConfigurationManager.AppSettings["FAKey"]; //
OracleConnection conn = new OracleConnection(constring);
string orasql = "Select * from sfcmo"; //= "select * from sfcfa.sfcmo where seq in('" + this.textBox1.Text.ToString() + "') "; OracleDataAdapter ora1 = new OracleDataAdapter(orasql, conn);
DataSet orale = new DataSet();
ora1.Fill(orale, "123");
dataGridView1.DataSource = orale.Tables[0].DefaultView;
catch (Exception EX)

label1.Text = EX.ToString();

报错如下图label1中别跟我说-->ORACLE监听器错误
plsql和SQLPlus都能连接上

本地数据库配置文件TNSNAMES:

# tnsnames.ora Network Configuration File: F:\app\Administrator\product\11.2.0\dbhome_5\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.
ORACLR_CONNECTION_DATA = (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
BILLOW = (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = billow)
)
)
LISTENER_BILLOW = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

求大神解决我的需求!!!!所有家当就这点了 帮帮忙

string constring = "data source=BILLOW;user=sfcfa;password=sfcfa;";

修改为:

string constring = "Data Source=BILLOW;Persist Security Info=True;User ID=sfcfa;Password=sfcfa"

看看行不行?
我本机可以跑的配置是上面这样写的。

如果不行。
你可以尝试一下, 开始 --> 运行 cmd

D:\>tnsping BILLOW

然后观察一下, 会提示:

已使用的参数文件:
D:\oracle\......\sqlnet.ora

注意观察一下, 这个 D:\oracle\......\ 路径, 是不是你那里的那个 tnsnames.ora 所在的路径。

(假如机器上面安装了多个 不同版本的 Oracle 的时候, 会有这个问题)
参考技术A BILLOW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = billow)
)
)

把localhost改成IP地址试试看追问

这个报错持续中。。

 string constring = "Data Source=BILLOW;Persist Security Info=True;User ID=sfcfa;Password=sfcfa";

       

           

           

     

参考技术B

     以管理员身份运行程序

    目录不能有括号

oracle连接不了 报ORA-12154:TNS:无法解析指定的连接标识符

cmd里面可以正常连接

plsql里面这样

那两个配置文件

myeclipse里面

望大神或有经验者赐教!

参考技术A

打开client安装目录下network->admin下的tnsnames.ora文件

内容如下:

# tnsnames.ora Network Configuration File: F:/oracle/product/10.2.0/client_2/NETWORK/ADMIN/tnsnames.ora 
# Generated by Oracle configuration tools.

abc =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)

127.0.0.1_LOCALLOST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Locallost)(PORT = 1521))
)
(CONNECT_DATA =
(SID = 127.0.0.1)
(SERVER = DEDICATED)
)
)

ORCL_LOCALHOST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)

把红色字体部分,拷贝到服务器端的安装目录下network->admin下的tnsnames.ora文件。如下所示:

# tnsnames.ora Network Configuration File: F:/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 
# Generated by Oracle configuration tools.

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 74B5853F2D1648B)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

abc =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)

修改后,发现可以连接数据库了。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。

Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。

参考技术B PLSQL Developer的安装目录不能有括号....
试试这个,目测是这个的原因
参考技术C 和我的问题一样。首先到任务管理器---服务,把里面所有oracle的数据库和监听 给停掉。然后在
Net Configuration Assistant 里面把监听给删掉,然后在重建个监听。然后cmd里面 启动监听 lsnrctl start。在重新登录应该就没问题了。我就是这样解决的。
参考技术D 把你的配置文件的 host 改成 ip地址追问

哪个是我电脑名 可以用哪个的 改成ip是一样的

追答

改成 127.0.0.1 后关闭 服务监听 重启试试
bendi =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

以上是关于C#连接oracle数据库报“ORA-12154: TNS: 无法解析指定的连接标识符”错误看清楚内容再说哦!!的主要内容,如果未能解决你的问题,请参考以下文章

oracle连接不了 报ORA-12154:TNS:无法解析指定的连接标识符

用C#链接Oracle Database总是出错(ORA-12154: TNS: 无法解析指定的连接标识符)

出现oracle的12154错误怎么办?

exp/imp报错:ORA-12154: TNS: 无法解析指定的连接标识符

oracle导出数据错误12154

PLSQL链接oracle报错--ORA-12154: TNS: 无法解析指定的连接标识符