1

Моя команда sqlplus не заканчивается, она ждет строки с паролем, это не дает мне ошибку.Как выполнить команды sqlplus на cmd.exe?

Этот код не вызывает проблем, когда я открываю новое окно cmd и вставляю этот код! все нормально, , но я не могу работать на C#, используя process();

Моя команда SQLPLUS текст:

Set ORACLE_SID=prod 
Set ORACLE_HOME=C:\oracle\product\10.2.0\db_1 
sqlplus -s 
sys as sysdba 
password 
shutdown immediate 
startup mount 
recover standby database until cancel; 
cancel 
alter database open read only; 
exit; 
exit; 

Я стараюсь это:

C:\cmd.cmd 
********************************************* 
Set ORACLE_SID=prod 
Set ORACLE_HOME=C:\oracle\product\10.2.0\db_1 
sqlplus -s 
sys as sysdba 
manager 
select * from dual; 
exit; 
********************************************* 

Process process = new Process(); 
ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = @"C:\cmd.cmd"; 
startInfo.RedirectStandardInput = true; 
startInfo.RedirectStandardOutput = true; 
startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 

process = Process.Start(startInfo); 

//output 
string BatProcessResult = process.StandardOutput.ReadToEnd(); 

Выход:

D: \ AppPath \ Bin \ Debug> Set ORACLE_SID = прод

D: \ AppPath \ bin \ Debug> Установить ORACLE_HOME = C: \ oracle \ product \ 10.2.0 \ db_1

D: \ AppPath \ Bin \ Debug> SQLPLUS -s

D: \ AppPath \ Bin \ Debug> SYS как SYSDBA;

+0

Я не помню точно, но это что-то вроде этого в скрипте: 'SQLPLUS -s "SYS @, где/пароль, как SYSDBA"' , Двойные кавычки нужны из-за пробелов. –

+0

thx я нашел решение, синтаксис имя пользователя/pw @ db – Mennan

+1

Отлично - я рад, что вы его нашли! Двойными кавычками могут быть unix/linux. Обратите внимание, что Oracle будет принимать 'username/pw @ db' или' username @ db/pw'. –

ответ

0

Попробуйте

sqlplus -L username/[email protected] @ fileWithCommands.sql 

или

set ORACLE_SID=... 
sqlplus -L/as sysdba 

Это не будет ждать имя пользователя и пароль, но войти в вас с заданными учетными данными. Если они ошибочны, sqlplus немедленно выйдет с ошибкой. Если учетные данные верны, sqlplus будет запускать все команды в данном файле один за другим.

+0

это работает !! ТНХ ур порции – Mennan

0

Вы забыли добавить роль пользователя в свою команду. Попробуйте использовать это один

sqlplus <username>/<password>@<host>:<port>/<sid> <db_role> @<script> 

, например:

sqlplus sys/[email protected]:1524/ORCL AS SYSDBA @myscript.sql 
Смежные вопросы