Je dois être en mesure de supprimer un utilisateur spécifique (qui peut avoir des sessions actives) à partir du lot sans aucune intervention de l'utilisateur. Je ne me soucie pas des sessions actives et je veux qu'elles soient abandonnées et annulées. Pour Microsoft SQL je voudrais faire la même tâche avec une seule ligne:drop utilisateur cascade dans Oracle
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"
Comment puis-je faire pour Oracle (10g XE sous Windows)?
Mon lot en cours est:
sqlplus sys/*** as SYSDBA @delete1.sql >delete.log
sqlplus sys/***@XE as SYSDBA @delete2.sql >>delete.log
où delete1.sql:
startup force;
exit;
et delete2.sql:
drop user MYUSER cascade;
exit;
Ce qui est laid comme l'enfer et prend trop de temps à comparer à la fraction de seconde de la solution MSSQL.
Dans Oracle, un utilisateur a un schéma, donc il est beaucoup plus impliqué dans la suppression de l'utilisateur, surtout s'il y a beaucoup d'objets qui lui appartiennent. Pensez à faire un ALTER USER ... ACCOUNT LOCK et à le laisser tomber plus tard à un moment plus commode. –
À quelle fréquence devez-vous laisser tomber un utilisateur - pourquoi ses performances sont-elles un problème? –
Cela fait partie de mon processus CI (build -> recréer le schéma db -> exécuter les tests d'intégration) donc il est exécuté presque à chaque validation. Je peux vivre avec ses performances mais je suis choqué, Oracle n'a pas les moyens pour ça. Je ne demande pas quelque chose de spécial, suis-je? – UserControl