with tutorial framework espaƱol djangoproject desde con cero applications oracle

oracle - framework - tutorial django



Eliminar un usuario conectado de un esquema de base de datos Oracle 10g (7)

¿Existe una mejor manera de desconectar a la fuerza a todos los usuarios de un esquema de base de datos Oracle 10g que reiniciar los servicios de la base de datos Oracle?

Tenemos varios desarrolladores que usan SQL Developer conectándose al mismo esquema en un único servidor Oracle 10g. El problema es que cuando queremos soltar el esquema para reconstruirlo, inevitablemente, alguien todavía está conectado y no podemos dejar caer el esquema de la base de datos o el usuario mientras alguien todavía está conectado.

Por la misma razón, no queremos eliminar todas las conexiones a otros esquemas porque otras personas pueden estar aún conectadas y probando con esos esquemas.

Alguien sabe de una manera rápida de resolver esto?


¿Has probado ALTER SYSTEM KILL SESSION? Obtenga el SID y el NÚMERO DE SERIE de V $ SESSION para cada sesión en el esquema dado, luego haga

ALTER SCHEMA KILL SESSION sid , número de serie ;


Asegúrese de modificar el sistema y habilitar la sesión restringida antes de matarlos o volverán a iniciar sesión rápidamente en la base de datos antes de completar su trabajo.


Encuentra sesiones existentes a DB usando esta consulta:

SELECT s.inst_id, s.sid, s.serial#, p.spid, s.username, s.program FROM gv$session s JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id WHERE s.type != ''BACKGROUND'';

Verás algo como a continuación.

A continuación, ejecute la consulta debajo de los valores extraídos de los resultados anteriores.

ALTER SYSTEM KILL SESSION ''<put above s.sid here>,<put above s.serial# here>'';

Ej .: ALTER SYSTEM KILL SESSION ''93, 943 '';


Para encontrar las sesiones, como uso de DBA

select sid,serial# from v$session where username = ''<your_schema>''

Si desea asegurarse de obtener únicamente las sesiones que usan SQL Developer, puede agregar and program = ''SQL Developer'' . Si solo desea eliminar sesiones pertenecientes a un desarrollador específico, puede agregar una restricción en os_user

Entonces mátalos con

alter system kill session ''<sid>,<serial#>''

(por ejemplo, alter system kill session ''39,1232'' )

Una consulta que produce sentencias de asesinato preparadas podría ser

select ''alter system kill session '''''' || sid || '','' || serial# || '''''';'' from v$session where username = ''<your_schema>''

Esto devolverá una sentencia kill por sesión para ese usuario, algo así como:

alter system kill session ''375,64855'';

alter system kill session ''346,53146'';



mi propuesta es este simple bloque anónimo:

DECLARE lc_username VARCHAR2 (32) := ''your user name here''; BEGIN FOR ln_cur IN (SELECT sid, serial# FROM v$session WHERE username = lc_username) LOOP EXECUTE IMMEDIATE (''ALTER SYSTEM KILL SESSION '''''' || ln_cur.sid || '','' || ln_cur.serial# || '''''' IMMEDIATE''); END LOOP; END; /


solo usa SQL:

disconnect; conn tiger/scott as sysdba;