Bonjour,
Je prépare un script oracle automatisé afin de vider une base de données. Ce script sera utilisé par Bambo lors d'un processus de datapump.
Jusqquà présent j'effectuais les requêtes suivantes manuellement dans SQL Developer pour vider la base de données avant d'importer le fichier de datapump.
J'ai besoin maintenant d'éxécuter ces requêtes automatiquement sans faire d'action manuelle. Je dois donc grâce à ce script vider ces objets: TABLE, VIEW, MATERIALIZED VIEW, INDEX, PACKAGE, TYPE, SEQUENCE, SYNONYM, PROCEDURE, FUNCTION, DATABASE LINK et JOB
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 select 'drop TABLE ' || object_name || ';' from user_objects where object_type = 'TABLE'; select 'drop view ' || object_name || ';' from user_objects where object_type = 'VIEW'; select 'drop INDEX ' || object_name || ';' from user_objects where object_type = 'INDEX'; select 'drop PACKAGE ' || object_name || ';' from user_objects where object_type = 'PACKAGE'; select 'drop TYPE ' || object_name || ';' from user_objects where object_type = 'TYPE'; select 'drop sequence ' || object_name || ';' from user_objects where object_type = 'SEQUENCE'; select 'drop synonym ' || object_name || ';' from user_objects where object_type = 'SYNONYM'; select 'drop PROCEDURE ' || object_name || ';' from user_objects where object_type = 'PROCEDURE'; select 'drop FUNCTION ' || object_name || ';' from user_objects where object_type = 'FUNCTION'; select 'drop DATABASE LINK ' || object_name || ';' from user_objects where object_type = 'DATABASE LINK'; select 'drop JOB ' || object_name || ';' from user_objects where object_type = 'JOB'; select 'drop MATERIALIZED VIEW ' || object_name || ';' from user_objects where object_type = 'MATERIALIZED VIEW';
J'ai commencé à créer ce script:
Mais je ne pense pas qu'il soit optimisé et qu'il résolve les erreurs éventuelles (notamment celles liées aux contraintes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 BEGIN FOR cur_rec IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN ('TABLE', 'VIEW', 'MATERIALIZED VIEW', 'PACKAGE', 'TYPE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE', 'SYNONYM', 'INDEX', 'DATABASE LINK', 'JOB', 'PACKAGE BODY' )) LOOP BEGIN IF cur_rec.object_type = 'TABLE' THEN EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS'; ELSE EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"'; END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('FAILED: DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"' ); END; END LOOP; FOR cur_rec IN (SELECT * FROM all_synonyms WHERE table_owner IN (SELECT USER FROM dual)) LOOP BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name; END; END LOOP; END;
Pourriez-vous m'aider avec cela ?
Partager