Seu usuário precisa receber SELECT ON DBA_TAB_COLUMNS. Observe que a concessão por meio de uma função não funcionará - ela precisa ser uma concessão direta ao usuário para você criar uma função/procedimento.