Je souhaite synchroniser l'accès à un insert particulier. Par conséquent, si plusieurs applications exécutent cette insertion "un", les insertions doivent se produire une à la fois. La raison derrière la synchronisation est qu'il devrait y avoir seulement une instance de cette entité. Si plusieurs applications tentent d'insérer la même entité, une seule doit réussir et d'autres échouer. Une option envisagée consistait à créer une clé unique composite, qui identifierait l'entité de manière unique et s'appuierait sur une contrainte unique. Pour certaines raisons, le département dba a rejeté cette idée. Une autre option qui m'est venue à l'esprit était de créer un proc stocké pour l'insert et si le proc stocké peut obtenir un verrou global, alors plusieurs applications invoquant le même proc stocké, bien que dans leurs sessions séparées, on s'attend à ce que le proc stocké peut obtenir un verrou global et donc sérialiser les inserts. Ma question est-il possible pour un proc stocké dans Oracle version 10/11, pour obtenir un tel verrou et tout pointeur vers la documentation serait utile.Verrouillage global Oracle sur le processus
Répondre
Si vous voulez que les entités insérées soient uniques, vous n'avez pas besoin de sérialiser quoi que ce soit dans Oracle - une contrainte unique est parfaitement conçue et adaptée à cet effet. Oracle gère tout le verrouillage requis pour s'assurer qu'une seule entité est insérée.
Je ne peux pas penser à une raison pour laquelle le département dba a rejeté l'idée d'une contrainte unique, c'est assez basique - peut-être qu'ils ont rejeté un autre aspect de votre solution proposée. Si vous voulez sérialiser l'accès pour une raison quelconque (et je ne vois pas pourquoi vous le feriez), vous pourriez (a) obtenir un verrou sur toute la table, ce qui sérialiserait tous les DML sur la table; ou (b) obtenir un verrou nommé par l'utilisateur en utilisant DBMS_LOCK - qui ne ferait que sérialiser le ou les processus particuliers dans lesquels vous obtenez le verrou. Les deux options ont des avantages et des inconvénients.
- 1. Question sur le verrouillage et la récapitulation Oracle
- 2. Verrouillage inter-processus en C#
- 3. Mécanisme de verrouillage entre processus sur plusieurs machines
- 4. /tables Masquage de verrouillage dans oracle
- 5. Code de verrouillage de processus Illustration nécessaire
- 6. Verrouillage sur l'insert
- 7. Verrouillage de la chaîne via le verrouillage
- 8. SQL Server 2005 est bloqué sans processus de verrouillage ou de verrouillage
- 9. verrouillage de la mémoire partagée et plantage du processus
- 10. Nhibernate Generat mal SQL pour Oracle avec verrouillage
- 11. Qu'est-ce que le verrouillage et le chaînage de ligne dans Oracle?
- 12. état global du processus de longue durée dans django
- 13. Oracle: Qualificateur d'espace de noms global pour la fonction?
- 14. Oracle de verrouillage avec SELECT ... POUR MISE À JOUR DE
- 15. Filetage: verrouillage sur dictionnaire générique
- 16. ASP.NET CultureInfo le changer sur une page le rendre global
- 17. valgrind sur le processus serveur
- 18. besoin d'aide sur le processus
- 19. "La transaction (ID de processus 56) était bloquée sur les ressources de verrouillage avec une autre"
- 20. Watching Global Events créé par un processus natif dans un processus .NET
- 21. Verrouillage de fichier Java sur un réseau
- 22. Recherche dans le catalogue global
- 23. Déchargement de la DLL de tous les processus après le décrochage du hook global CBT
- 24. Comment activer/désactiver le verrouillage des majuscules, le verrouillage du défilement et le verrouillage numérique par programme
- 25. mysql question de verrouillage
- 26. obtenir le nom global d'erreur
- 27. Enregistrer le verrouillage dans vba
- 28. Filtrer le site global par le tag
- 29. Verrouillage de sqlalchemy
- 30. Pourquoi AbstractQueuedSynchronizer interruption sur acquring verrouillage
Je ne peux pas imaginer pourquoi le groupe DBA a dit "n'utilisez pas une contrainte unique pour sérialiser l'accès à un groupe de colonnes" considérant que c'est l'une des principales raisons d'avoir une contrainte unique. La seule raison que je peux éventuellement proposer est que si la session A insère une ligne qui bloque les sessions B, C et D, les sessions B-D se bloqueront en attendant que la session A commette ou annule l'instruction de blocage. Vous pouvez également affirmer que vous avez besoin de l'index unique pour la cohérence des données, et qu'ils n'auront aucune jambe sur laquelle s'appuyer. –