导致报错的操作
- 在已安装了
oracle11g版本后再安装oracle9i客户端 - 在安装了
oracle11g后修改了主机名称 
解决方法
- 修改配置文件的主机名称
可能是因为你的Oracle文件配置的主机名称出了问题,在你的Oarcle安装路径D:\app\lenovo\product\11.2.0\dbhome_1\NETWORK\ADMIN下找到listener.ora,
将HOST的值修改成你自己电脑的名称(右键我的电脑,属性,查看主机名称) - 配置环境变量
 
ORACLE_HOME:D:\app\lenovo\product\11.2.0\dbhome_1
TNS_ADMIN:D:\app\lenovo\product\11.2.0\dbhome_1\NETWORK\ADMIN
 
- 修改注册表
 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\OracleOraDb11g_home1TNSListener注册表的ImagePath值,D:\app\lenovo\product\11.2.0\dbhome_1\BIN\TNSLSNR中没有’.exe’,所以也加上后缀;
 4. 重新配置监听程序
 删除 D:\app\lenovo\product\11.2.0 \ db \ NETWORK \ ADMIN下的listener.ora文件
 选择Net Configuration Assistant监听,一直无脑下一步,新建了个listener.ora文件,启动OracleOraDb11g_home1TNSListener服务还是报错,但是此时多了个OracleTNSListener服务,可以正常启动,然后试着ODBC和数据库连接,还是报错
 5. 重启数据库
sqlplus / as sysdba
startup force
 
再重新连接数据库和ODBC,就没有问题了他
原文链接:https://blog.csdn.net/dwj901125/article/details/9009617
