Click here to Skip to main content
6,935,055 members and growing! (19,640 online)
Email Password   helpLost your password?
 
Languages » VBScript » General     Intermediate License: The Code Project Open License (CPOL)

Access to Oracle without tnsnames.ora

By fstrahberger

Access to Oracle without tnsnames.ora
VBScript, Windows, Visual-Studio, ADO, ADO.NET, DBA, Dev
Revision:4 (See All)
Posted:25 Oct 2005
Views:53,318
Bookmarked:22 times
printPrint Friendly   add Share
      Discuss Discuss   Broken Article?Report  
13 votes for this article.
Popularity: 4.70 Rating: 4.22 out of 5

1
1 vote, 7.7%
2

3
6 votes, 46.2%
4
6 votes, 46.2%
5
Sample image

Introduction

Have you ever tried to access an Oracle instance in VBScript? This is not too complicated, but normally you need an additional file called tnsnames.ora in the Oracle installation directory. This article describes an easy way to access an Oracle instance without this file. All you have to do is use a different connection string.

Using the Code

You can use this kind of connection string in VBScript, VBA and Visual Basic. I also tested it with Perl, it worked. Using a connection string without the need to have a correct tnsname.ora on your computer is especially useful for ad hoc scripting on many different database instances, or when you cannot be sure if the user has a correct tnsnames.ora on his computer.

First take a look at the standard connection string for Oracle, used in a VBScript file:

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

You see in the first section the driver name (Microsoft ODBC for Oracle), followed by the alias for the instance and last the Oracle username and password. The alias name MYDB also needs a corresponding entry in the file tnsnames.ora. Mostly you find this file in the following directory: <Oracle-Home>\network\admin. In this file, you need a definition of the alias:

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

Oracle uses this definition to determine which physical database instance is associated with the given alias MYDB. This is why we need the file tnsnames.ora when we access an Oracle instance. But is this necessary? No, not really! All you have to change: include the physical connection data (like host and port) in your connection string. Here is the modified connection string in VBScript:

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;"

Now you will be able to access every Oracle instance without the need to have a correct tnsnames.ora on your client machine. Finally here is the complete source code that selects some rows and writes them to STDOUT:

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

I hope that you found this article useful. For me this kind of connection string was already useful, when I could not be sure if the end-user had a correct tnsnames.ora on his computer.

History

  • 25th October, 2005: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

fstrahberger


Member
Florian works as consultant for change- and configuration management for about 7 years. In this environment he is often forced to work with unix, perl and shell scripts.

For more information about change- and configuration management (espacially Serena Dimensions) visit: www.venco.de
For video tutorials about asp.net, ajax, gridviews, ... (in german) visit: www.siore.com
Occupation: Web Developer
Location: Germany Germany

Other popular VBScript articles:

 
Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 8 of 8 (Total in Forum: 8) (Refresh)FirstPrevNext
GeneralGreat Find Pinmember/randz20:30 2 Jul '07  
GeneralRe: Great Find Pinmemberfstrahberger4:48 4 Jul '07  
GeneralThank you thank you thank you! PinmemberBPloe11:41 17 Nov '05  
AnswerRe: Thank you thank you thank you! Pinmemberjoelperez5:57 12 Mar '08  
GeneralIt works with the Oracle Client PinmemberMike Elliott5:37 26 Oct '05  
GeneralIt also works with Oracle OLEDB Provider PinmemberPrasad Khandekar21:37 25 Oct '05  
GeneralRe: It also works with Oracle OLEDB Provider Pinmemberfstrahberger1:35 26 Oct '05  
QuestionRe: It also works with Oracle OLEDB Provider Pinmemberahaskins4:09 18 Aug '06  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+PgUp/PgDown to switch pages.

PermaLink | Privacy | Terms of Use
Last Updated: 25 Oct 2005
Editor: Deeksha Shenoy
Copyright 2005 by fstrahberger
Everything else Copyright © CodeProject, 1999-2010
Web17 | Advertise on the Code Project