use*_*435 8 sql oracle powershell sqlplus
我正在尝试使用PowerShell登录Oracle DB并运行名为"C:\ Users\Administrator\Desktop\oracle\OracleCleanTest.sql"的脚本,当我执行PS时没有任何反应.
这就是我所拥有的.
$adminLogon = "sys as sysdba/manager@ORCL"
$logon = "sqlplus\sql/manager@ORCL"
$mydata = Invoke-SqlPlus -inputfile "@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql" $logon
Run Code Online (Sandbox Code Playgroud)
我也试过这个.
$database = "ORCL";
$user = "sys as sysdba";
$pw = "manager";
sqlplus.exe -d $database -U $user -P $pw -I "@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql"
Run Code Online (Sandbox Code Playgroud)
我试过这个.
& 'C:\app\Administrator\product\11.2.0\client_1\BIN\sqlplus.exe' 'QE-JDBC-1/manager@ORCL sys as sysdba' '@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql'
Run Code Online (Sandbox Code Playgroud)
我收到错误,"&:模块'sqlplus'无法加载.有关更多信息,请运行'Import-Module sqlplus'.在行:5 char:3 +&$ mydata Invoke-SqlPlus -inputfile"@C:\Users\Administrator\Desktop\oracle\Orac ... + ~~~~~~~ + CategoryInfo:ObjectNotFound:(sqlplus\sql/manager @ ORCL:String)[],ParentContainsErrorRecordException + FullyQualifiedErrorId:CouldNotAutoLoadModule"
Pat*_*con 10
我使用调用操作符,&正如Keith Hill提出的问题,如何在PowerShell中使用带空格和引号的参数运行EXE文件.
& 'path\sqlplus.exe' 'system/password@dbase as sysdba'
Run Code Online (Sandbox Code Playgroud)
由于空格,我将用户名,密码放在引号中.
要启动脚本,我添加另一个参数,如下所示:
& 'path\sqlplus.exe' 'system/password@dbase as sysdba' '@my_script.sql'
Run Code Online (Sandbox Code Playgroud)
如果您收到ORA-12154错误,并且您知道其他用户已建立连接(这意味着数据库侦听器正在正常运行); 然后我会检查SQL*Plus是否可以找到我的tnsname文件.
我的第一个任务是看看我是否可以在Windows cmd.exe中进行如下操作:
tnsping orcl
Run Code Online (Sandbox Code Playgroud)
它将确认连接可以(或不能建立).
如果不能,我会检查是否设置了环境变量ORACLE_HOME.SQL*Plus使用它来查找tnsname.ora文件.
如果未设置,我将在PowerShell中执行此语句(以建立此环境变量):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Run Code Online (Sandbox Code Playgroud)
接下来,我将重试tnsping(上面确定).
一旦成功,我会重新尝试执行上面的脚本运行命令.
| 归档时间: |
|
| 查看次数: |
25807 次 |
| 最近记录: |