MVC发布后 oracle连接不上 显示ORA-12154:TNS:无法解析指定的连接标识符

本文解决在VS2010环境下访问Oracle11g数据库时遇到的“ORA-12154:TNS:无法解析指定的连接标识符”错误。通过调整Oracle安装目录的AuthenticatedUsers和IIS_IUSRS用户权限,确保网站发布后能正常访问数据库。

在VS2010中能够正确访问Oracle11g,但是网站发布之后数据无法访问,报错“ORA-12154: TNS:无法解析指定的连接标识符”

出现本问题是因为Oracle的访问权限问题,第一种情况是Oracle目录缺乏Authenticated Users用户权限,第二种情况是缺乏interner来宾用户权限。

 

1、具体方法是在oracle安装目录(d:"oracle")上右键,属性->安全,选中Authenticated Users将权限的读取和运行项的勾去掉,再打上,然后点击应用,再点击高级,选中“用在此显示的可以应用到子对象的项目替代子对象的权限项目”,点击确定,然后重新启动机器 。

  需要注意地方是设置完权限后,一定要重启电脑才会权限设置才会生效。

2、点击“高级”进入用户和组选择对话框。选择internet来宾用户“IIS_IUSRS”,然后一路确定即完成该用户权限的设置。操作完成后请牢记一定要重启电脑,设置才能生效。

### 常见原因分析 Oracle 错误 `ORA-12154` 表示客户端无法解析指定连接标识符,通常是因为 `tnsnames.ora` 文件中未定义目标数据库连接描述,或者连接字符串格式正确。在使用 `impdp` 或 `imp` 命令导入 `.dmp` 文件时,如果连接字符串中的服务名或 SID 配置错误,就会触发该错误[^1]。 例如,用户执行以下命令: ```bash impdp qd20_user/qd20_password@orcl directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 如果 `tnsnames.ora` 中未定义 `orcl` 的连接描述,则会报错 `ORA-12154`[^2]。 --- ### 解决方案 #### 1. 检查 `tnsnames.ora` 文件配置 确保 `tnsnames.ora` 文件中包含目标数据库的服务名定义。该文件通常位于 `$ORACLE_HOME/network/admin` 目录下。示例配置如下: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` 若实际数据库服务名同,例如为 `upbs`,则需修改为对应的 `SERVICE_NAME` 或 `SID`[^2]。 #### 2. 使用完整连接字符串 如果无法修改 `tnsnames.ora` 文件,可以在导入命令中直接使用完整连接字符串,格式如下: ```bash impdp qd20_user/qd20_password@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))" directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 这种方式可以绕过 `tnsnames.ora` 的配置限制,适用于临时测试或环境切换场景[^4]。 #### 3. 使用 `EZCONNECT` 简化连接方式 Oracle 提供了 `EZCONNECT` 方式,允许使用简化的连接语法: ```bash impdp qd20_user/qd20_password@//localhost:1521/orcl directory=dump_dir dumpfile=qd20_1_320722.dmp full=y ``` 该方式无需配置 `tnsnames.ora`,适合快速连接测试[^4]。 #### 4. 验证监听器状态 如果连接字符串正确但仍然报错,可能是因为监听器未启动。可以使用以下命令检查监听器状态并启动: ```bash lsnrctl status lsnrctl start ``` 确保监听器配置与 `tnsnames.ora` 中的 `ADDRESS` 部分一致[^2]。 --- ### 其他注意事项 - 确保 `ORACLE_HOME` 和 `PATH` 环境变量已正确设置,指向当前数据库版本的安装目录。 - 如果使用的是 Oracle 19c 或更高版本,注意服务名和 SID 的区别,推荐使用 `SERVICE_NAME` 而非 `SID`。 - 在 Windows 系统中,`tnsnames.ora` 文件可能位于 `D:\oracle\product\19.0.0\dbhome_1\network\admin` 等路径下。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值