1. 修改tnsnames.ora文件:找到ORACLE_HOME/network/admin目录下的tnsnames.ora文件,用文本编辑器打开,找到你的数据库连接条目,修改HOST、PORT、SERVICE_NAME等参数。比如将HOST从localhost改为你的服务器IP,保存后重启监听器。
2. 使用sqlnet.ora配置:同样在network/admin目录,编辑sqlnet.ora,添加SQLNET.AUTHENTICATION_SERVICES= (NTS)来允许Windows认证,或者设置NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)来优先使用TNS解析。重启后测试连接。
3. listener.ora调整监听器:编辑listener.ora文件,修改LISTENER参数下的HOST和PORT,比如HOST = 0.0.0.0允许所有IP访问,SID_LIST中确保SID_NAME匹配数据库实例,然后lsnrctl reload生效。
4. 实用技巧:用EZCONNECT简化连接字符串如jdbc:oracle:thin:@//ip:port/service,绕过tnsnames。防火墙放行1521端口,确保数据库服务运行。测试用tnsping服务名或sqlplus sys/password@服务名。
5. 步骤详解:步骤1备份原文件,步骤2停止监听器lsnrctl stop,步骤3编辑配置文件,步骤4 lsnrctl start启动,步骤5用sqlplus测试连接成功即OK。常见问题如ORA-12541用netstat检查端口。
6. 配置客户端:安装Oracle Instant Client,复制network/admin文件到客户端,设置TNS_ADMIN环境变量指向该目录,然后在ODBC或JDBC中使用DSN连接。
7. 密码文件修改:orapwd file=orapwd路径 password=新密码 entries=10,放在%DB_HOME%in下,用于远程sys连接。
8. 服务名 vs SID:11g推荐用SERVICE_NAME,修改init.ora或spfile中SERVICE_NAMES参数,重启数据库生效。
FAQ
Q: 连接时报ORA-12154怎么解决?
A: 检查tnsnames.ora路径和TNS_ADMIN变量,确保服务名拼写正确,用tnsping测试。
Q: 如何远程连接Oracle 11g?
A: 配置监听器允许外部IP,防火墙开1521端口,用IP:PORT/SERVICE_NAME格式连接。
Q: sqlplus连不上数据库?
A: 确认数据库实例启动,监听器运行,检查listener.ora和tnsnames.ora匹配。
Q: Windows下环境变量怎么设?
A: 右键此电脑-属性-高级-环境变量,新增ORACLE_HOME和TNS_ADMIN。