Bonjour,

Je voudrais faire le lien entre les tables utilisant les colonnes TS#, OBJ# et DATAOBJ# comme V$SEGSTAT ou DBA_HIST_SEG_STAT et les vues comme DBA_TABLES où apparaît le vrai le nom des tables.

L'info ci-dessous me semble sympa mais j'ai pas le nom des objets...

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
select TS#, OBJ#, DATAOBJ#, LOGICAL_READS_TOTAL, PHYSICAL_READS_TOTAL from DBA_HIST_SEG_STAT where rownum < 11 order by 1, 2, 3;
 
       TS#       OBJ#   DATAOBJ# LOGICAL_READS_TOTAL PHYSICAL_READS_TOTAL
---------- ---------- ---------- ------------------- --------------------
         0          9          9            12033920                  747
         0         12          6             5094624                    0
         0         14          8           135092672                   25
         0         21          2            11284768                 1021
         0         22         10             3772464                    0
         0         31         29              997488                    0
         0         36         36             1542432                   11
         0         57         57              679584                    0
         0        223        223              742976                  969
         0        234        234              910272                    1
 
10 rows selected.

Ce qui m'énerve le plus est que je n'arrive pas à utiliser les tables du dictionnaire pour trouver LA bonne table faisant ce lien. Au début j'ai cherché des tables avec la colonne COLUMN dans leur structure et j'ai trouvé
DICT_COLUMNS.

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
select table_name from DICT where UPPER(table_name) like UPPER('%COLUMN%')
UNION 
select view_name from DBA_VIEWS where UPPER(view_name) like UPPER('%COLUMN%')
UNION
select table_name from DBA_TABLES where UPPER(table_name) like UPPER('%COLUMN%')
UNION
select table_name from ALL_ALL_TABLES where UPPER(table_name) like UPPER('%COLUMN%')
 
 
TABLE_NAME                    
------------------------------
...
DBA_STREAMS_KEEP_COLUMNS      
DBA_STREAMS_RENAME_COLUMN     
DBA_SUBPART_KEY_COLUMNS       
DBA_SUBSCRIBED_COLUMNS        
DBA_TAB_COLUMNS               
DBA_UPDATABLE_COLUMNS         
DICT_COLUMNS          
...
Mais toutes les vues/tables ne sont pas référencées dedans car DBA_HIST_SEG_STAT n'y est pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select * from DICT_COLUMNS where column_name LIKE 'OBJ#'
 
TABLE_NAME                     COLUMN_NAME                   COMMENTS                                                                        
--------------------------------------------------------------------------------
V$SEGMENT_STATISTICS           OBJ#                          
V$SEGSTAT                      OBJ#                          
GV$SEGMENT_STATISTICS          OBJ#                          
GV$SEGSTAT                     OBJ#                          
4 rows selected.
A partir de là je baisse les bras et me tourne vers vous pour être sauvé une fois de plus

Bon, si vous savez comment faire ce lien, un gros merci!


[EDIT]

Je crois que c'est sys.obj$ la table qui sert au lien car elle a une colonne NAME qui me plait bien

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
desc sys.obj$
 
TABLE sys.obj$
 Name                                      Null?    Type                        
 ----------------------------------------- -------- ----------------------------
 OBJ#                                      NOT NULL NUMBER                      
 DATAOBJ#                                           NUMBER                      
 OWNER#                                    NOT NULL NUMBER                      
 NAME                                      NOT NULL VARCHAR2(30)                
 NAMESPACE                                 NOT NULL NUMBER                      
 SUBNAME                                            VARCHAR2(30)                
 TYPE#                                     NOT NULL NUMBER                      
 CTIME                                     NOT NULL DATE                        
 MTIME                                     NOT NULL DATE                        
 STIME                                     NOT NULL DATE                        
 STATUS                                    NOT NULL NUMBER                      
 REMOTEOWNER                                        VARCHAR2(30)                
 LINKNAME                                           VARCHAR2(128)               
 FLAGS                                              NUMBER                      
 OID$                                               RAW(16)                     
 SPARE1                                             NUMBER                      
 SPARE2                                             NUMBER                      
 SPARE3                                             NUMBER                      
 SPARE4                                             VARCHAR2(1000)              
 SPARE5                                             VARCHAR2(1000)              
 SPARE6                                             DATE
 
 
select * from sys.obj$ where rownum < 10 order by 1;
OBJ#	DATAOBJ#	OWNER#	NAME
1	291 528	0	_NEXT_OBJECT
2	2	0	C_OBJ#
3	3	0	I_OBJ#
4	2	0	TAB$
5	2	0	CLU$
6	6	0	C_TS#
7	7	0	I_TS#
8	8	0	C_FILE#_BLOCK#
9	9	0	I_FILE#_BLOCK#