with fks as( select pk.owner o1, pk.table_name t1, fk.constraint_name, fk.owner o2, fk.table_name t2 from all_constraints fk, all_constraints pk where fk.r_owner= pk.owner and fk.r_constraint_name = pk.constraint_name and fk.constraint_type = 'R' ), pths as ( select o1,t1,constraint_name,o2,t2,'-<' dir from fks union all select o2,t2,constraint_name,o1,t1,'>-' dir from fks ), rcte(o1,t1,constraint_name,o2,t2,dir,lvl,pth) as ( select o1,t1,constraint_name,o2,t2,dir,1,o1||'.'||t1||dir||constraint_name||'-'||o2||'.'||t2 from pths where o1 = :owner1 and t1 = :table1 union all select s.o1,s.t1,s.constraint_name,s.o2,s.t2 , s.dir,lvl+1 , prio.pth||s.dir||case when s.constraint_name not like 'SYS\_%' escape '\' then s.constraint_name||'-' end||s.o2||'.'||s.t2 from rcte prio inner join pths s on prio.o2=s.o1 and prio.t2=s.t1 and prio.constraint_name != s.constraint_name where prio.lvl < 7 ) cycle o1,t1 set cycle to 1 default 0 select lvl,cycle,pth from rcte where o2 = :owner2 and t2 = :table2 order by lvl,pth ;
2019-01-09
Access Path Suggestor
Reverse engineering an existing schema or creating a new sql query. Join access paths are often following foreign keys. Here is a query that searches foreign key dependency paths between two tables.
Subscribe to:
Post Comments (Atom)
About Me
- Rafu
- I am Timo Raitalaakso. I have been working since 2001 at Solita Oy as a Senior Database Specialist. My main focus is on projects involving Oracle database. Oracle ACE alumni 2012-2018. In this Rafu on db blog I write some interesting issues that evolves from my interaction with databases. Mainly Oracle.
No comments:
Post a Comment