Faire le lien entre OBJ# et Table_name
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:
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:
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:
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 :calim2: 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 :D
Code:
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# |