无需tnsnames.ora文件访问Oracle实例的方法

Oracle数据库的使用过程中,通常需要一个名为tnsnames.ora的配置文件来定义数据库实例的别名。然而,本文将介绍一种不需要这个文件即可连接到Oracle实例的方法。这种方法特别适用于需要在多个数据库实例上进行临时脚本编写,或者不确定用户计算机上是否有正确配置的tnsnames.ora文件的情况。

标准的Oracle连接字符串

VBScript中,标准的Oracle连接字符串如下所示:

Dim strCon strCon = "Driver={Microsoft ODBC for Oracle}; " & _ "CONNECTSTRING=MYDB; uid=read;pwd=read;"

在这段代码中,首先指定了驱动程序名称(Microsoft ODBC for Oracle),然后是实例的别名,最后是Oracle的用户名和密码。别名MYDB也需要在tnsnames.ora文件中有相应的条目。

tnsnames.ora文件的位置和内容

tnsnames.ora文件通常位于以下目录:

\network\admin

在该文件中,需要定义别名:

MYDB.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = mysrv)(PORT = 7001)) (CONNECT_DATA = (SERVICE_NAME = MYDB)))

Oracle使用这个定义来确定哪个物理数据库实例与给定的别名MYDB相关联。这就是为什么在访问Oracle实例时需要tnsnames.ora文件的原因。但是,这真的必要吗?答案是不,只需要在连接字符串中包含物理连接数据(如主机和端口)。以下是修改后的连接字符串:

修改后的连接字符串

Dim strCon strCon = "Driver={Microsoft ODBC for Oracle}; " & _ "CONNECTSTRING=(DESCRIPTION=" & _ "(ADDRESS=(PROTOCOL=TCP)" & _ "(HOST=mysrv)(PORT=7001))" & _ "(CONNECT_DATA=(SERVICE_NAME=MYDB))); uid=read;pwd=read;"

现在,将能够访问任何Oracle实例,而不需要在客户端计算机上有正确的tnsnames.ora文件。

Dim strCon strCon = "Driver={Microsoft ODBC for Oracle}; " & _ "CONNECTSTRING=(DESCRIPTION=" & _ "(ADDRESS=(PROTOCOL=TCP)" & _ "(HOST=mysrv)(PORT=7001))" & _ "(CONNECT_DATA=(SERVICE_NAME=MYDB))); uid=read;pwd=read;" Dim oCon Set oCon = WScript.CreateObject("ADODB.Connection") Dim oRs Set oRs = WScript.CreateObject("ADODB.Recordset") oCon.Open strCon Set oRs = oCon.Execute("SELECT myfield FROM mytable") While Not oRs.EOF WScript.Echo oRs.Fields(0).Value oRs.MoveNext Wend oCon.Close Set oRs = Nothing Set oCon = Nothing
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485