Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Запрос для поиска неиндексированных FK-ключей : Oracle

17.05.2022 10:01


Контакты Поиск
09.07.2018 11:16
OlegON
 
Не мое, для памяти
SQL код:
select
  
'create index '||s.owner||'.'||
  
case when length(s.new_idx_name) <= 30 then s.new_idx_name
    
else case when length(s.constraint_name) <= 28 then s.constraint_name||&#039;_i'
      
else s.constraint_name end end ||
  &
#039; on '||s.owner||'.'||s.table_name||'('||s.columnsa||') tablespace &IND_TBS;' cmd
s.*
from 
(
  
select decodeb.table_namenull, &#039;****', 'ok' ) Status, a.owner
       
a.table_namea.columns columnsab.columns columnsba.constraint_name
       
a.table_name||&#039;_'||replace(a.columns,', ','_')||'_i ' new_idx_name
  
from 
  
select a.owner,
           
substr(a.table_name,1,30table_name
           
substr(a.constraint_name,1,30constraint_name
           
max(decode(position1,     substr(column_name,1,30),null)) || 
           
max(decode(position2,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position3,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position4,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position5,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position6,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position7,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position8,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position9,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,10,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,11,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,12,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,13,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,14,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,15,&#039;, '||substr(column_name,1,30),null)) || 
           
max(decode(position,16,&#039;, '||substr(column_name,1,30),null)) columns
      
from dba_cons_columns adba_constraints b
     where a
.constraint_name b.constraint_name
       
and b.constraint_type = &#039;R'
     
group by a.ownersubstr(a.table_name,1,30), substr(a.constraint_name,1,30) ) a
  ( 
select table_owner ownersubstr(table_name,1,30table_namesubstr(index_name,1,30index_name
           
max(decode(column_position1,     substr(column_name,1,30),NULL)) || 
           
max(decode(column_position2,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position3,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position4,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position5,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position6,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position7,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position8,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position9,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,10,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,11,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,12,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,13,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,14,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,15,&#039;, '||substr(column_name,1,30),NULL)) || 
           
max(decode(column_position,16,&#039;, '||substr(column_name,1,30),NULL)) columns
      
from dba_ind_columns 
     group by table_owner
substr(table_name,1,30), substr(index_name,1,30) ) b
  where a
.owner b.owner (+)
    and 
a.table_name b.table_name (+)
    and 
b.columns (+) like a.columns || &#039;%' 
s
where status 
<> &#039;ok' and owner = '&OWNER' 

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.