【问题标题】:Remotely connect to oracle database by powershell通过powershell远程连接oracle数据库
【发布时间】:2015-08-12 07:16:46
【问题描述】:

下面是我通过 PowerShell 运行的 Oracle 查询。如果我在那台机器上本地运行它,它工作正常,没有错误。

[Reflection.Assembly]::LoadFile("E:\oracle\product\11.2.0\ODP.NET\bin\2.x\Oracle.DataAccess.dll")

$constr = "User Id=system;Password=pass;Data Source=API"
$conn= New-Object Oracle.DataAccess.Client.OracleConnection($constr)
$conn.Open()
$sql="select * from dba_users"
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
$reader=$command.ExecuteReader()

while($reader.Read()){
  $reader.GetString(0)
}

$conn.Close()

我想在这台机器上的其他机器上运行相同的查询。我可以说我想远程运行它。

当我运行它时,我收到了这个错误:

使用“0”参数调用“Open”的异常:“ORA-12541: TNS:no 听众”

我无法在 Tnsora 文件中添加条目。

谁能告诉我任何替代方法来实现这一目标?

【问题讨论】:

    标签: oracle powershell


    【解决方案1】:

    如果您无法修改 tnsora,则必须使用EZConnectconnect descriptor 作为您的connection string。试试这个:

    $userId = 'system'
    $password = 'pass'
    $host = 'ip or hostname'
    $port = '1521'
    $serviceName = 'Your service name'
    
    $constr = "User Id=$userId;Password=$password;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$host)(PORT=$port))(CONNECT_DATA=(SERVICE_NAME=$serviceName)))"
    

    【讨论】:

    • 感谢您的回答。我会尽力让你知道。
    • 还有一个问题 $serviceName = '您的服务名称'。我需要在服务名称中输入什么。可以是数据库名称或其他名称
    • 是的,数据库名称。有关我建议您使用的连接描述符的更多信息,请查看我提供给您的链接;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多