oracle中的别名数据库

时间:2010-12-12 15:25:23

标签: oracle sqlplus

如果我设置了oracle 11g数据库,以便我可以使用

访问它
sqlplus user/pass@localhost:1521/ora11

但是,我想知道是否可以通过以下方式设置别名来访问它:

sqlplus user/pass@ora11

我可以设置oracle SID并通过

连接
export ORACLE_SID=ora11
sqlplus user/pass

但是,如果我有多个数据库,即ORA10 - > oracle 10和ORA11 - > oracle 11,然后我更喜欢以

连接
sqlplus user/pass@ORA10
sqlplus user/pass@ORA11

而不是每次都输入localhost或设置ORACLE_SID。

如果我尝试访问远程oracle数据库并且不希望每次我想连接时都记住IP / PORT / SID,那么这样做也很有用。

3 个答案:

答案 0 :(得分:4)

为要连接的每个数据库添加$ORACLE_HOME/network/admin/tnsnames.ora条目:

ORA11 =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = ORA11)
 )
)

您现在可以使用sqlplus user/pass@ORA11连接到此数据库。

答案 1 :(得分:0)

在客户端,您可以使用TNSNANES.ORA执行此操作。但与ODBC设置类似,它仅为一个客户端定义名称。不同的客户端可以使用不同的名称。

答案 2 :(得分:0)

我建议使用此条目

SERVICE11 =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SID = INSTANCE11)
 )
)

将实例和服务命名为模仿概念会更好。因此,名称SERVICE11代表服务的概念,而INSTANCE11代表实例的概念。对于与Oracle 10g相关的服务,您可以:

SERVICE10 =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1520))
   )
 (CONNECT_DATA =
   (SID = INSTANCE10)
 )
)

您必须设置两个侦听器,每个侦听器侦听不同的端口值。在我看来,你想要使用几个DBMS。如您所见,tnsnames.ora中没有涉及数据库。因此,“连接数据库”这个短语是错误的。

在设置了两个侦听器和相关的listener-config文件之后,将两个服务的条目放在客户端主机中的tnsnames.ora中。那么你可以

sqlplus用户名/密码@ service10 sqlplus用户名/密码@ service11