在Oracle中,如何更改"默认"数据库?

Nic*_*int 5 linux oracle sqlplus

我真的应该知道这一点,但有人会告诉我如何在Linux上更改默认数据库吗?

例如:

我有一个数据库test1server1使用ORACLE_SID=test1.所以,连接到test1我可以使用:

sqlplus myuser/password
Run Code Online (Sandbox Code Playgroud)

连接到默认数据库, test1

我现在想将默认的sqlplus连接转到test2服务器上的数据库server2.

所以,我已经更新了tnsnames,以便旧test1条目现在指向test2@server2.我还为test2这一点添加了一个单独的条目到同一个地方.但是,默认连接似乎仍然存在test1@server1.

以下都工作得不错,去数据库test2server2:

sqlplus myuser/password@test1
sqlplus myuser/password@test2
Run Code Online (Sandbox Code Playgroud)

但是默认连接sqlplus myuser/passwordtest1@server1.

有任何想法吗?

谢谢.

kdg*_*ory 4

扩展kerchingo的答案:Oracle 有多种方法来识别数据库。

最好的方法 - 您应该始终使用的方法 - 是USER/PASSWORD@SERVER。这将使用 Oracle 命名查找 (tnsnames.ora) 来查找实际服务器,每次连接到该服务器时,该服务器可能位于不同的物理主机上。您还可以将 Oracle 连接字符串指定为SERVER,但假装您不能。

还有两种方法可以通过环境变量指定默认服务器。第一个是TWO_TASK,它使用命名查找,第二个是ORACLE_SID,它假设服务器正在当前计算机上运行。ORACLE_SID优先于TWO_TASK.

您应该始终使用显式连接字符串的原因是您不知道用户是否设置了TWO_TASKORACLE_SID、两者或两者都没有;你也不知道它们可能会被设置成什么。将两者设置为不同的值是一个诊断起来特别痛苦的问题,尤其是通过电话与一个并不真正了解 Oracle 工作原理的人(去过那里,做过那件事)。