使用UNIX Shell脚本建立数据库连接

Nee*_*aji 2 unix oracle shell

我是Shell脚本的新手,对此知之甚少。我必须阅读db.properties文件,其中包含数据库连接详细信息,即要连接到哪个数据库。然后,我必须建立与该数据库的连接并执行操作以检查当前时间。

以下是我的db.properties文件:-

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@171.01.187.94:1532:DEV
userName=abc
password=abc
Run Code Online (Sandbox Code Playgroud)

以下是我的脚本来调用db.properties文件:-

#!/bin/bash

file="./database.properties"

if [ -f "$file" ]
then
    echo "$file found."
 . $file

  echo "User Id       = " ${userName}
  echo "user password = " ${password}
  echo "url  = " ${url}

  sqlplus -S ${userName}/${password}@${url}

else
    echo "$file not found."
fi
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:-

错误:ORA-12154:TNS:无法解析指定的连接标识符

任何人都可以在上述问题上提供帮助吗?

Dan*_*ich 5

不用担心tnsnames.ora的定义,您拥有使用sqlnet建立连接所需的所有信息。

修改您的database.properties文件,如下所示:

driverClassName=oracle.jdbc.driver.OracleDriver
url='(description=(address_list=(address=(protocol=TCP)(host=171.01.187.94)(port=1532)))(connect_data=(service_name=DEV)))'
userName=abc
password=abc
Run Code Online (Sandbox Code Playgroud)

就是这样。您无需更改脚本。

#!/bin/bash

file="./database.properties"

if [ -f "$file" ]
then
    echo "$file found."
 . $file

  echo "User Id       = " ${userName}
  echo "user password = " ${password}
  echo "url  = " ${url}

sqlplus -S ${userName}/${password}@${url}

else
    echo "$file not found."
fi
Run Code Online (Sandbox Code Playgroud)

注意:我假设DEV是数据库服务名称,如果它是数据库SID,只需将配置字符串修改为:

driverClassName=oracle.jdbc.driver.OracleDriver
url='(description=(address_list=(address=(protocol=TCP)(host=171.01.187.94)(port=1532)))(connect_data=(sid=DEV)))'
userName=abc
password=abc
Run Code Online (Sandbox Code Playgroud)

问候