Oracle - eliminar objetos sin eliminar usuario

 
Vista:

eliminar objetos sin eliminar usuario

Publicado por olga (4 intervenciones) el 10/12/2004 16:27:51
holas quisiera saber si hay alguna forma de eliminar todos los objetos de un usuario sin eliminarlo en SQL pq no tengo ningun administrador grafico.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:eliminar objetos sin eliminar usuario

Publicado por Harold (697 intervenciones) el 10/12/2004 18:28:08
pues primero tienes que identificar los objectos. comectado como dba:

select object_name,object_type from dba_objects
where owner='USUARIOAELIMINAR';

y luego procedes con los drops o truncates necesarios

Saludes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no queria hacer eso

Publicado por Olga (4 intervenciones) el 11/12/2004 22:19:55
ssi se qe objetos tiene mi usuario lo que no queria es hacer un drop por cada tabla u objeto, como haria un script pq tengo como 292 objetos , si alguien tiene alguna idea le agradecere mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no queria hacer eso

Publicado por Harold (697 intervenciones) el 13/12/2004 17:44:06
1. Has un export de todo los objetos, botas el usuario y lo vuelves a crear.
2. Cambiale el nombre al usuario existente y luego crea uno nuevo con el nombre del usaurio antes del renombrarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no queria hacer eso

Publicado por CESAR CENALMOR MAYO (2 intervenciones) el 31/08/2017 10:10:27
Te pongo el script que he puesto dentro de unos ficheros ".bat"

Necesitaras 3 ficheros......
SetVariables.bat, regenerar_usuario.sql, y yo le he llamado al que tienes que ejecutar....."Borrar_objetos_usuario_sin_perder_permisos.bat"

<Borrar_objectos_usuario_sin_perder_permisos.bat>

@ECHO OFF

Call SetVariables.bat

echo creando lista para borrar objetos....
@ECHO @"%~d0%~p0\regenerar_usuario.sql"; | sqlplus %USUARIO%/%USUARIO%@%TNS_NAMES%
echo Se borraran los objetos de la base de datos, compruebe el script de borrado drop_objects.sql
pause

echo borrando objetos....
@echo @"%~d0%~p0\drop_objects.sql"; | sqlplus %PRIVILEGE_USER%@%TNS_NAMES%
PAUSE

<SetVariables.bat>
rem a continuacion el usuario destino en la bbdd
SET USUARIO=SANTOMERA_AUTO
rem a continuacion usuario con pribilegios para borrar cualquier objeto de un usuario ( admin, sys.... etc, etc )
SET PRIVILEGE_USER= usuario/password
rem cadena de conexion a la bbdd
SET TNS_NAMES=SGAORACLE_CESAR

<regenerar_usuario.sql>

set head off;
set pagesize 0;
set linesize 1767;
set verify off;
set feedback off;
spool drop_objects.sql;

select 'drop ' || object_type || ' ' || USER || '.' || object_name || CASE OBJECT_TYPE WHEN 'TABLE' THEN ' cascade constraints purge' ELSE '' END || ';' from user_objects
where NOT object_type in ('INDEX','LOB','JOB','PROGRAM','JAVA CLASS','SCHEDULE');

select ' execute DBMS_SCHEDULER.DROP_JOB(JOB_NAME=>'''|| user || '."' || object_name ||'"'',FORCE=>TRUE);' from user_objects where object_type in ('JOB');

select ' execute DBMS_SCHEDULER.DROP_PROGRAM(PROGRAM_NAME=>'''|| user || '."' || object_name ||'"'',FORCE=>TRUE);' from user_objects where object_type in ('PROGRAM');

select ' execute DBMS_SCHEDULER.DROP_JOB_CLASS(JOB_CLASS_NAME=>'''|| user || '."' || object_name ||'"'',FORCE=>TRUE);' from user_objects where object_type in ('JAVA CLASS');

select ' execute DBMS_SCHEDULER.DROP_SCHEDULE(SCHEDULE_NAME=>'''|| user || '."' || object_name ||'"'',FORCE=>TRUE);' from user_objects where object_type in ('SCHEDULE');

spool off;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no queria hacer eso

Publicado por CESAR CENALMOR MAYO (2 intervenciones) el 31/08/2017 11:45:54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 * Script para SQL*Plus - Elimina todos los objetos del usuario actual - v2015-11-29
 *
 * Basado en un script de Michel Cadot: https://groups.google.com/forum/?fromgroups=#!msg/comp.databases.oracle.misc/XA0Yhv9-3Rs/sSeNMcpN600J
 */
SET ECHO OFF
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET TIMING OFF
SET TIME OFF
--SET TRIMSPOOL ON
--SET TRIMOUT ON
SET LINESIZE 100
 
PROMPT Vaciando papelera de reciclaje...
 
--PURGE RECYCLEBIN;
 
--SET TERMOUT OFF
--PROMPT Generando fichero...
SPOOL eliminar-todo-1
 
SELECT     'PROMPT - ' || MVIEW_NAME || '
' ||     'DROP MATERIALIZED VIEW "' || MVIEW_NAME || '";'
FROM SYS.USER_MVIEWS ORDER BY MVIEW_NAME;
 
SELECT     'PROMPT - ' || MASTER || ' (MATERIALIZED VIEW LOG)
' ||     'DROP MATERIALIZED VIEW LOG ON "' || MASTER || '";'
FROM SYS.USER_MVIEW_LOGS ORDER BY MASTER;
 
SPOOL OFF
SET TERMOUT ON
@eliminar-todo-1.LST
SET TERMOUT OFF
SPOOL eliminar-todo-2
 
SELECT     'PROMPT - ' || OBJECT_NAME || '
' ||     'DROP ' || OBJECT_TYPE || ' "' || OBJECT_NAME || '"' ||
         DECODE(OBJECT_TYPE,
               'CLUSTER', ' INCLUDING TABLES CASCADE CONSTRAINTS',
               'OPERATOR', ' FORCE',
               'TABLE', ' CASCADE CONSTRAINTS PURGE',
               'TYPE', ' FORCE',
               'VIEW', ' CASCADE CONSTRAINTS',
         '') || ';'
FROM SYS.USER_OBJECTS
WHERE OBJECT_TYPE IN (
      'CLUSTER', 'CONTEXT','DATABASE LINK','DIMENSION','DIRECTORY','FUNCTION','INDEX TYPE',
      'JAVA', 'LIBRARY', 'OPERATOR', 'OUTLINE', 'PACKAGE', 'PROCEDURE',
      'SEQUENCE', 'SYNONYM', 'TABLE', 'TYPE', 'VIEW'
      )
ORDER BY OBJECT_TYPE, OBJECT_NAME;
 
SPOOL OFF
SET TERMOUT ON
@'eliminar-todo-2.LST'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar