2010-06-10 6 views
3

J'ai été chargé de comparer deux schémas d'oracle avec un grand nombre de tables pour trouver les différences structurelles dans le schéma. Jusqu'à présent, j'ai utilisé l'outil DB Diff dans Oracle SQL Developer, et cela a très bien fonctionné. Le problème est que maintenant j'ai besoin de comparer les tables dans un utilisateur que je ne peux pas connecter, mais je peux le voir à travers la section d'autres utilisateurs dans le développeur SQL. Le problème est que chaque fois que j'essaie d'utiliser l'outil diff pour comparer ces objets à l'autre schéma, cela ne fonctionne pas. Est-ce que quelqu'un a une idée de comment faire cela? Cela me permettrait d'économiser beaucoup de travail. J'ai quelques connaissances de SQL de base si c'est ce qui est nécessaire. Merci.Comparaison de deux schémas Oracle, d'autres utilisateurs

Répondre

2

Si vous avez des autorisations accordées dans cet autre schéma, émettre un

alter session set current_schema = OTHER_SCHEMA_NO_QUOTES_REQUIRED; 

la course quel que soit l'outil.

Sinon, il est select * from all_tables where owner = OTHER_USER;, « select * from all_indexes où ...` etc.

+0

J'ai essayé de faire une session alter, mais bien que cela semble réussi, le diff DB a donné les mêmes résultats, je suppose que je vais juste faire un tas de requêtes où propriétaire et diff manuellement les résultats. Merci. – Igman

0

Juste ranimant cette question avec une réponse correcte.

Si vous pouvez obtenir votre DBA pour vous accorder procuration à travers vous pouvez faire ce qui suit sans connaître le mot de passe du schéma final:

ALTER USER {use you do not have pw to - lets call it ENDSCHEMA} GRANT CONNECT THROUGH {user you have pw for - lets call it YOURSCHEMA}; 

Ensuite, vous créez une connexion dans SQL Developer où:

username: YOURSCHEMA[ENDSCHEMA] 
password: YOURSCHEMA password 

Ensuite, vous pouvez procéder et faire une base de données Diff sur les deux schémas et ne connaissant jamais le mot de passe pour ENDSCHEMA.