Как убить процесс, запущенный на сервере oracle db, из putty? - PullRequest
0 голосов
/ 22 октября 2018

Я создал один файл sql в PuTTY и продолжил его работу с помощью следующей команды:

sqlplus username/pwd@SSAR05 @exec_lmn_DELETE.sql > exec_lmn_DELETE_17102018.log &

Я не записал SPID этого, но теперь я хочу завершить этот процесс.

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я бы сказал, что вы должны сначала зайти в базу данных и завершить там сеанс.

Поскольку в вашей текущей среде может быть несколько сеансов SQL * Plus, вы не будете знать, какой процесс вы завершаете.

Сначала определите идентификаторы процессов из команды ps.

knayak-/Users/knayak-$ps -ef | grep [s]qlplus
501 23750 23309   0 11:46AM ttys004    0:00.05 sqlplus
501 23445 23309   0 11:50AM ttys004    0:00.05 sqlplus

Как вы видите, существует несколько сеансов sqlplus, как определить, какой из них принадлежит вам?

Подключитесь к соответствующему сеансу базы данных (в идеале, как пользователь системы / dba)

SELECT s.username,
       s.sid,
       s.osuser,
       t.sql_id,
       sql_text,
       p.spid,  -- OS Process id of the Oracle process
       s.process . -- Client session process ID
FROM v$sqltext_with_newlines t JOIN
     v$session s
ON t.address = s.sql_address AND t.hash_value = s.sql_hash_value 
     JOIN v$process p ON p.addr = s.paddr
WHERE s.status = 'ACTIVE' AND s.username <> 'SYSTEM'
AND sql_text LIKE '%DELETE%' --This should correspond to your statements in the sql file.
AND s.process IN ( '<list of pids from the command>') --put the client pids here.
ORDER BY s.sid,
         t.piece;

Теперь pid клиента отличается от PID процесса Oracle , выполняющего задание.

Во-первых, уничтожьте основной процесс Oracle.вы увидите что-то вроде этого, когда запустите ps на сервере Oracle и grep для spid, полученного из запроса выше.

oracle   63063     1 32 23:16 ?        00:11:12 oracleSSAR05 (LOCAL=NO)

Если у вас нет доступа к логину Oracle, обратитесь к администратору базы данных.завершить сеанс, соответствующий этому сеансу.

Затем завершить соответствующий сеанс, если он существует, подключаясь к базе данных как dba.

ALTER SYSTEM KILL SESSION '<sid>,<serial#>'; -- from the query above

Теперь проверьте, не завершен ли клиентский процесс.бегать не должно.Убейте его наконец, если оно там.

0 голосов
/ 22 октября 2018

Попробуйте:

ps -ef| grep "sqlplus"

Это должно дать вам результат, как показано ниже:

mayankp  30927 22295  0 Oct09 pts/22   00:00:02 /home/mayankp/anaconda2/bin/python /home/mayankp/anaconda2/bin/ipython

, где 30927 - идентификатор процесса.Убей его как:

kill -9 30927

...