如何解决Oracle 更改连接标识符
我在 2 个不同的服务器(生产和测试)上安装了 2 个 Oracle 数据库,但我不是 Oracle 专家。在生产中,我可以使用以下方法通过 SQLPLUS 成功连接:
sqlplus user/password@bc.name.server.com
在测试系统中,我必须指定不同的连接字符串:
sqlplus user/password@bc.name.server.com:1521/orcl
没有 :1521/orcl
我得到:ORA-01017: invalid username/password; logon denied
出于编写脚本的目的,我想使用相同的连接字符串,但我不知道如何更改它。 我试图将 tnsnames.ora 更改为:
ORCLCDB=localhost:1521/orclcdb
bc.name.server.com=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
但是还是不行。有人可以告诉我如何将连接字符串更改为:
sqlplus user/password@bc.name.server.com
谢谢 卢卡斯
解决方法
我就是这样做的;看看有没有帮助。
由于每个 Oracle 软件都使用自己的 TNSNAMES.ORA
文件(例如,如果您安装了 Oracle 数据库和 Developer Suite,您将拥有两个 TNSNAMES.ORA
文件)。为了能够连接到不同的数据库,您必须在两个(或多个)目录中维护 TNSNAMES.ORA
。为避免这种情况,请创建 TNS_ADMIN
环境变量,该变量指向包含 TNSNAMES.ORA
文件的单个副本的目录。因此,当我添加要连接的新数据库时,我只在该 TNSNAMES.ORA
文件中维护它。在我的电脑上,它设置为
SQL> $set tns_admin
TNS_ADMIN=C:\oralib
我的 SQLNET.ORA 文件的内容:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
我的 TNSNAMES.ORA 的内容(不过是其中的一部分;实际上,我目前在那里有 56 个数据库的别名):
MY_TEST_DB=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=my_test_host)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SID=db_test)
)
)
MY_PRODUCTION_DB=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=my_production_host)
(PORT=1521)
)
)
(CONNECT_DATA=
(SID=db_production)
)
)
当我连接到这些数据库时,我运行(在操作系统命令提示符下)
sqlplus scott/tiger@my_production_db
or
sqlplus scott/tiger@my_test_db
一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。