Bonjour à la communauté,
Voilà, je dois reprendre la gestion d'une base oracle, mais je me trouve à utiliser notamment deux scripts. Pouvez-vous m'expliquer le fonctionnement de ces deux scripts. Je pense que cela est fait pour faire de la réorganisation. La base tourne sous oracle 9.0.2.1.0.
Merci pour vos explications.
Le premier pour la réorganisation des index.
L'autre pour les tables
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 -- -- Rebuild des index de l'utilisateur VITA -- set serveroutput on set head off set feedback off alter session set nls_date_format='dd/mm/yyyy hh24:mi:ss'; whenever sqlerror exit 1 column date_fmt noprint new_value x_date_fmt select to_char(sysdate,'YYYY_MM_DD') date_fmt from dual / spool C:\ComptesRendus\rebuild_idx_&&x_date_fmt..log select 'Début de traitement de réorganisation des index ',sysdate from dual; DECLARE CURSOR cur_sel_idx IS SELECT index_name FROM all_indexes where owner='VITA' and index_type='NORMAL'; var_stmt VARCHAR2(2000); BEGIN FOR rec_idx IN cur_sel_idx LOOP BEGIN var_stmt := 'ALTER INDEX VITA.'||rec_idx.index_name||' rebuild tablespace VITAINDX '; EXECUTE IMMEDIATE (var_stmt); exception WHEN OTHERS THEN dbms_output.put_line (' ERREUR :'||rec_idx.index_name||' '||sqlerrm); END; END LOOP; END; / select index_name,status,owner from all_indexes where owner = 'VITA'; select 'Fin de traitement de réorganisation des index ',sysdate from dual; exit 0
Y a-t-il un script sql qui pourrait me permettre de vérifier la fragmentation des tables et des indexes ?
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 set serveroutput on set head off set feedback off ALTER SESSION SET NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss'; -- On sort du script avec le code retour -1 si on rencontre une erreur. whenever sqlerror exit -1 -- Formatage de la date pour le nom du fichier LOG column date_fmt noprint new_value x_date_fmt select to_char(sysdate,'YYYY_MM_DD') date_fmt from dual / spool C:\ComptesRendus\rebuild_tab_&&x_date_fmt..log select 'Début du traitement de réorganisation des tables ',sysdate from dual; DECLARE CURSOR cur_sel_tab IS SELECT table_name, tablespace_name FROM all_tables WHERE owner='VITA' and tablespace_name is not null and not exists (select 1 from all_tab_columns where all_tables.table_name = all_tab_columns.table_name and all_tables.owner = all_tab_columns.owner and data_type like 'LONG%' ); var_stmt VARCHAR2(2000); cpt NUMBER:= 0; BEGIN FOR rec_tab IN cur_sel_tab LOOP BEGIN var_stmt := 'ALTER TABLE VITA.'||rec_tab.table_name||' MOVE TABLESPACE '||rec_tab.tablespace_name; EXECUTE IMMEDIATE (var_stmt); cpt := cpt + 1; exception WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE (' ERREUR :'||rec_tab.table_name||' '||sqlerrm); END; END LOOP; DBMS_OUTPUT.PUT_LINE (' Nombre de table reconstruite :'||cpt); END; / select 'Fin du traitement de réorganisation des tables ',sysdate from dual; exit
Merci pour vos conseils.
Cordialement.
Partager