Jeśli PERSON_RECORD_TYPE jest używany jako argument lub typ wyniku jakiejś procedury lub funkcji, możesz zapytać ALL_ARGUMENTS. Informacje są tam trochę zaszyfrowane (hierarchia wielopoziomowej enkapsulacji rekordów i kolekcji jest zakodowana w kolumnach POSITION,SEQUENCE i DATA_LEVEL), jednak jest ona obecna.
Nie sądzę, aby takie pytanie wskazywało na złą architekturę. W przypadku automatycznego generowania kodu PLSQL jest to całkowicie uzasadnione żądanie, niestety z bardzo słabą obsługą języka PLSQL.