我是shell脚本的新手,对此有很少或根本不知道。 我必须读取db.properties文件,该文件具有数据库连接详细信息,即要连接到哪个db。然后我必须建立与该数据库的连接并执行操作以检查当前时间。
下面是我的db.properties文件: -
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@171.01.187.94:1532:DEV
userName=abc
password=abc
下面是调用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
但我得到以下错误: -
错误: ORA-12154:TNS:无法解析指定的连接标识符
有人可以帮助解决上述问题吗?
答案 0 :(得分:4)
不要担心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
此致
答案 1 :(得分:0)
请在端口和SID名称之间尝试/。 用户名/密码@主机:端口/ SID