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

Oracle 使用UNIX shell脚本建立数据库连接,oracle,shell,unix,Oracle,Shell,Unix,我不熟悉shell脚本,对这方面的知识不太了解。 我必须读取一个db.properties文件,该文件包含数据库连接详细信息,即连接到哪个数据库。然后,我必须建立与该数据库的连接,并执行检查当前时间的操作 下面是我的db.properties文件:- driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@171.01.187.94:1532:DEV userName=abc password=abc #!/b

我不熟悉shell脚本,对这方面的知识不太了解。 我必须读取一个db.properties文件,该文件包含数据库连接详细信息,即连接到哪个数据库。然后,我必须建立与该数据库的连接,并执行检查当前时间的操作

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

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@171.01.187.94:1532:DEV
userName=abc
password=abc
#!/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
下面是我调用db.properties文件的脚本:-

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@171.01.187.94:1532:DEV
userName=abc
password=abc
#!/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
但我得到了以下错误:-

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


有人能在上述问题上提供帮助吗?

不要担心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
就这样。您不需要更改脚本

#!/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
注意:我假设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

关于

请在端口和SID名称之间尝试。
用户名/password@host:port/SID

Oracle的本地TNS设置不包括要连接的数据库。您包括一个Java JDBC驱动程序类名,但使用的是sqlplus客户端。我觉得不对劲。@duffymo:-是的,不对劲:请您根据我的要求帮我修改脚本好吗?不,请与您的Oracle数据库管理员联系。您没有将JDBC URL传递给SQL*Plus。那是行不通的。您通常希望在tnsnames.ora文件中创建一个指向该数据库的条目,假设您使用的是本地命名。假设TNS别名名为dev,那么您将使用sqlplus用户/password@dev连接到数据库。有关tnsnames.ora的更多但不完整的信息,请参阅中的答案。祝你好运。我已经在我的脚本中添加了以下内容/bin/bash file=./database.properties query=从双if[-f$file]中选择SYSDATE-2,然后返回找到的$file$文件echo User Id=${userName}echo User password=${password}echo url=${url}sqlplus${userName}/${password}@${url}