Мне нужно удалить конкретного пользователя (у которого могут быть активные сеансы) из пакета без какого-либо взаимодействия с пользователем . Меня не волнуют активные сеансы, и я хочу, чтобы их отбрасывали и откатывали. Для Microsoft SQL я бы выполнил аналогичную задачу с одной строкой:
osql -E -S localhost -b -Q "use master if ((select name from sysdatabases where name='%DB%') is not null) begin alter database [%DB%] set single_user with rollback immediate drop database [%DB%] end"
Как мне сделать это для Oracle (10g XE в Windows)?
Мой текущий пакет:
sqlplus sys/*** as SYSDBA @delete1.sql >delete.log
sqlplus sys/***@XE as SYSDBA @delete2.sql >>delete.log
, где delete1.sql:
startup force;
exit;
и delete2.sql:
drop user MYUSER cascade;
exit;
Это чертовски уродливо и занимает слишком много времени по сравнению с долей секунды решения MSSQL.