ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Oracle Database Change Notification

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΠ»ΠΈΠ΅Π½Ρ‚ — это интСрфСйсный (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ графичСский) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, собствСнно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ прямых связСй с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠΎ Ρ‚рСбованиям бСзопасности), Π±Ρ‹Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ основной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ (ΠΏΠΎ Ρ‚рСбованиям ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ) ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС прилоТСния (ΠΏΠΎ Ρ‚рСбованиям надСТности). На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Oracle Database Change Notification (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Oracle Database Change Notification

ВсС Ρ‡Π°Ρ‰Π΅ Π² Π½Π°ΡˆΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. На Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ прСдприятий для этих Ρ†Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”). Но Ρ‡Π΅ΠΌ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π΅ΠΌ большС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… рСсурсов. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ сокращСния этих Π·Π°Ρ‚Ρ€Π°Ρ‚ ΠΏΠΎΠ΄Π²ΠΈΠ³Π»Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… являСтся тСхнология Database Change Notification

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Database Change Notification ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Oracle, основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ… Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’ Π·Π°Π΄Π°Ρ‡ΠΈ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ рассмотрСниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ комплСксом Oracle Database Enterprise Edition 11g ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Oracle ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ исслСдования Π½Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° информация ΠΎ Π±Ρ‹ΡΡ‚родСйствий ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ выявлСна основная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹:

Β· Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ раскрываСт Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, опрСдСляСт ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π΅ΠΌΡ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚, Ρ†Π΅Π»ΡŒ, Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования, раскрываСт Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Β· Π“Π»Π°Π²Π° пСрвая — здСсь Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠ΅ вопросы ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ области Π‘Π£Π‘Π”, способы хранСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Β· Π“Π»Π°Π²Π° вторая — рассматриваСт Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярный ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния сСмСйства Oracle Database ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Oracle. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ изучаСтся ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Oracle Database Enterprise Edition — БистСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Β· Π’Ρ€Π΅Ρ‚ΡŒΡ Π³Π»Π°Π²Π° — Π² Π½Π΅ΠΉ рассматриваСтся практичСская Ρ‡Π°ΡΡ‚ΡŒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ созданиС Ρ‚Π°Π±Π»ΠΈΡ†, слСТСниС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Database Change Notification/

Β· Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ — подводятся ΠΈΡ‚ΠΎΠ³ΠΈ исслСдования, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅ΠΌΠ΅.

1. Π‘Π£Π‘Π”: Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅?

БистСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”) — ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈ Π»ΠΈΠ½Π³Π²ΠΈΡΡ‚ичСских срСдств ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ созданиСм ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Π£Π‘Π”:

Β· ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структуры создаваСмой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Β· ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ возмоТности манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вычислСний, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйса Π²Π²ΠΎΠ΄Π° / Π²Ρ‹Π²ΠΎΠ΄Π°, визуализация).

Β· ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ логичСской ΠΈ Ρ„изичСской нСзависимости Π΄Π°Π½Π½Ρ‹Ρ….

Β· Π—Π°Ρ‰ΠΈΡ‚Π° логичСской цСлостности Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Β· Π—Π°Ρ‰ΠΈΡ‚Π° физичСской цСлостности.

Β· Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ полномочиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Β· Бинхронизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Β· Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами срСды хранСния.

Β· ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмного пСрсонала.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ соврСмСнная Π‘Π£Π‘Π” содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

Β· ядро, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ,

Β· процСссор языка Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ запросов Π½Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, машинно-нСзависимого исполняСмого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°,

Β· подсистСму ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния, которая ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс с Π‘Π£Π‘Π”

Β· Π° Ρ‚Π°ΠΊΠΆΠ΅ сСрвисныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (внСшниС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹), ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ измСнСния Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, хранимая Π² Π‘Π” ΠΎΡ‡Π΅Π½ΡŒ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π»ΠΈΠ±ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ. ИмСнно поэтому Π² Π‘Π£Π‘Π”, Π° Π² Ρ‡Π°ΡΡ‚ности Π² Π‘Π£Π‘Π” ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ORACLE ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ PLSQL Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° — Ρ‚ΠΈΠΏ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, содСрТащая описаниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° дСйствий.

Ѐункция — это Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, которая послС своСго выполнСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Trigger — это хранимая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° особого Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ нСпосрСдствСнно, Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ обусловлСно дСйствиСм ΠΏΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ столбцС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для обСспСчСния цСлостности Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ запускаСтся сСрвСром автоматичСски ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ измСнСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΡΠ²ΡΠ·Π°Π½. ВсС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ выполняСмыС Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ дСйствиС, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π΅ срабатываниС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°. БоотвСтствСнно, Π² ΡΠ»ΡƒΡ‡Π°Π΅ обнаруТСния ошибки ΠΈΠ»ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ цСлостности Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π”Π°Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ описанных инструмСнтов Π½Π΅ ΡΡ€Π°Π·Ρƒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΎΠ½ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ, для сниТСния Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΊ Π‘Π”. Но ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС измСнСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ компания ORACLE Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Change Notification.

2. ОписаниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification

ORACLE — амСриканская компания, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ систСм управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”). БСмСйство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ORACLE ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС Π² ΠΌΠΈΡ€Π΅ ΠΈ, Π² Ρ‡Π°ΡΡ‚ности, Π² Π ΠΎΡΡΠΈΠΈ.

Компания ORACLE основана Π² 1977 Π³ΠΎΠ΄Ρƒ, сСгодня Π² Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 115 тыс. Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Компания являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² Π² ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΠΈ Π‘Π£Π‘Π”. По Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌ, Π΅Ρ‘ Π΄ΠΎΠ»Ρ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌ Ρ€Ρ‹Π½ΠΊΠ΅ Π‘Π£Π‘Π” Π² 2010 Π³ΠΎΠ΄Ρƒ прСвысила 45%. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ORACLE Database Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» сСбя ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ.

На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь самым популярным ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ORACLE являСтся ORACLE Database. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ впущСнная Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ Π² 1979 Π³ΠΎΠ΄Ρƒ, ΠΎΠ½Π° быстро Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° сСбя. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡΡΡŒ, ORACLE Database обзавСлась ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, присущими Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΉ Ρ‚Схнологиями. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ тСхнология Real Application Cluster, появившаяся Π² 9-ΠΉ вСрсии Π‘Π£Π‘Π” Oracle, позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ сСрвСра, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π‘Π£Π‘Π” Π² ΠΎΠ΄Π½Ρƒ <οΏ½Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…>. Или тСхнология Real Application Testing позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния.

ВсС Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°, вносимыС Π² Π‘Π£Π‘Π” ΠΎΡ‚ ORACLE лишь Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, ΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π½Π° Ρ„ΠΎΠ½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ стала ΠΈ Ρ‚Схнология Change Notification.

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ORACLE эта тСхнология появилась Π² 10 вСрсии ORACLE Database. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ сСрвСра, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Π°Π½Π½ΠΎΠ³ΠΎ измСнСния сразу ΠΆΠ΅ отправляСт ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, подписанным Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.

ВСхнология Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ измСнСния ΠΊΠ°ΠΊ:

Β· DML (insert/update/delete)

Β· DDL (alter table add)

Β· Π‘Ρ‚Π°Ρ€Ρ‚ / ΠžΡΡ‚Π°Π½ΠΎΠ² (startup /shutdown)

Β· ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° слСТСния ΠΏΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ям Начиная с 11g вСрсии, тСхнология нСсколько измСнилась, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° отслСТиваСт измСнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (select), Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° зависит. Но Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ select Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

Β· НСльзя ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…

Β· НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Β· Поля Ρ‚ΠΎΠ»ΡŒΠΊΠΎ NUMBER ΠΈ VARCHAR2

Для слСТСния Π·Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification появились ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, это структуры SYS. CHNF$_DESC ΠΈ SYS. CHNF$_REG_INFO, Π° Ρ‚Π°ΠΊΠΆΠ΅ систСмная Ρ‚Π°Π±Π»ΠΈΡ†Π° USER_CHANGE_NOTIFICATION_REGS. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° SYS. CHNF$_DESC содСрТит ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ… происходящих Π² Π‘Π”, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ

Β· Имя ΠΈ ΡΡ…Π΅ΠΌΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½

Β· Π’ΠΈΠΏ события, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ Π΄Π°Π½Π½Ρ‹Π΅

o INSERT

o UPDATE

o DELETE

o ALTER TABLE

o DROP TABLE

Β· Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ события, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ STARTUP ΠΈ SHUTDOWN.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ DML ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ слСТСнии Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹: ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, подписанному Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π΅ ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Π΅, Π° ROWID ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… строк, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DML-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС фиксации Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

ΠšΡ€ΠΎΠΌΠ΅ мноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ слСТСниС, Change Notification позволяСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ запросов ΠΊΠ°ΠΊ:

β€’ Запросы ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚авлСниям (views)

β€’ БоСдинСния (join)

β€’ Запросы ΠΊ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ функциям

β€’ REF Cursors

ВСхнология Change Notification являСтся ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всС слСТСния Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° происходит Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (Рис. 1), Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π΅ основного ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Рис. 1

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ VAL_TEST:

1. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ запроса Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ создаСт Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ для запроса Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PLSQL интСрфСйс для Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ PLSQL ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ сСрвСра.

2. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… заполняСт Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡΠ»ΠΎΠ²Π°Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

3. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ измСняСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DML ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ Ρ„иксируСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ обновляСт строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ VAL_TEST Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π½Π½Ρ‹Π΅ для VAL_TEST ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ устарСли.

4. Oracle Database добавляСт сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ описываСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

5. Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ процСсс JOBQ увСдомляСт ΠΎ Π½ΠΎΠ²ΠΎΠΌ Change Notification сообщСнии.

6. ΠŸΡ€ΠΎΡ†Π΅ΡΡ JOBQ выполняСт Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ клиСнтским ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ JOBQ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ PLSQL ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ сСрвСра. РСализация PLSQL ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° опрСдСляСт, ΠΊΠ°ΠΊ нотификация Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ.

7. Π’Π½ΡƒΡ‚Ρ€ΠΈ PLSQL ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ сСрвСра, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ для увСдомлСния клиСнтского прилоТСния срСднСго уровня (сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня**) ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. НапримСр, увСдомляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ ROWID ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ строки Π² VAL_TEST.

8. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡ€Π΅Π΄Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ строкС.

9. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обновляСт кэш Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… CHANGE NOTIFICATION — это структура SYS. CHNF$_DESC которая содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

Β· REGISTRATION_ID — Π½ΠΎΠΌΠ΅Ρ€ рСгистрации

Β· TRANSACTION_ID — Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ которая ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

Β· DBNAME — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Β· EVENT_TYPE — Ρ‚ΠΈΠΏ измСнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Β· NUMTABLES — количСство Ρ‚Π°Π±Π»ΠΈΡ†, зарСгистрированных для слСТСния

Β· TABLE_DESC_ARRAY — массив содСрТащий Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

o OPFLAGS — Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ измСнившСй Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

o TABLE_NAME — Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

o NUMROWS — Π½ΠΎΠΌΠ΅Ρ€ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅

o ROW_DESC_ARRAY — массив содСрТащий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ измСнившСм строку ΠΈ ROWID ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ строки.

ВрСхуровнСвая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° — архитСктурная модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π°Ρ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Ρ‘ΠΌ Ρ‚Ρ€Ρ‘Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚: клиСнтского прилоТСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ «Ρ‚ΠΎΠ½ΠΊΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ» ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ), сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Β· ΠšΠ»ΠΈΠ΅Π½Ρ‚ — это интСрфСйсный (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ графичСский) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, собствСнно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ прямых связСй с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΠΎ Ρ‚рСбованиям бСзопасности), Π±Ρ‹Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ основной бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ (ΠΏΠΎ Ρ‚рСбованиям ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ) ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС прилоТСния (ΠΏΠΎ Ρ‚рСбованиям надСТности). На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вынСсСна ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выносится ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°: интСрфСйс Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠΎΠΎΡ‚вСтствиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ, нСслоТныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (сортировка, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, подсчСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

Β· Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ располагаСтся Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ сосрСдоточСна большая Ρ‡Π°ΡΡ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Π’Π½Π΅ Π΅Π³ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, экспортируСмыС Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹ (см. Π²Ρ‹ΡˆΠ΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹.

Β· Π‘Π΅Ρ€Π²Π΅Ρ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ся Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это стандартная рСляционная ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная Π‘Π£Π‘Π”. Если Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прСдставляСт собой Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… вмСстС с Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°ΠΌΠΈ ΠΈ ΡΡ…Π΅ΠΌΠΎΠΉ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ строится ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

3. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Database Change Notification

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Π±Ρ‹Π»Π° поставлСна Π·Π°Π΄Π°Ρ‡Π° изучСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification. Π”Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡŒ провСсти ΠΏΡƒΡ‚Π΅ΠΌ отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, происходящих Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ VAL_TEST ΠΈ Π·Π°ΠΏΠΈΡΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ MEASUREMENTS1. ΠšΡ€ΠΎΠΌΠ΅ этого для сравнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ внСсСнии записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ врСмя измСнСния ΠΈ Π½ΠΎΠΌΠ΅Ρ€ измСнСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ MEASUREMENTS.

Для Π½Π°Ρ‡Π°Π»Π° опишСм Π±Π»ΠΎΠΊ-схСму Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° Π±Π»ΠΎΠΊ-схСмС изучаСмая Π½Π°ΠΌΠΈ тСхнология Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сразу послС внСсСния записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST. Π­Ρ‚ΠΎ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΌΡ‹ Π²Π½ΠΎΡΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST, Π·Π°Ρ‚Π΅ΠΌ фиксируСм Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС измСнСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ, соотвСтствСнно, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, послС фиксации Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сСрвСром гСнСрируСтся ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… измСнСниях, ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ прСдставляСт ΠΈΠ· ΡΠ΅Π±Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° SYS. CHNF$_DESC, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π΄Π°Π»Π΅Π΅ нотификация пСрСдаСтся Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, которая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСго Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ рСгистрации ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, Π·Π° ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ слСТСниС, ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ слСТСния. ВсС это описываСтся ΠΏΡ€ΠΈ рСгистрации, Π² SQL-Π±Π»ΠΎΠΊΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСльзя ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ рСгистрации.

Π’ Ρ…ΠΎΠ΄Π΅ изучСния Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²Ρ‹ΡΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности, ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»Π° нСпонятна. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π² Ρ†ΠΈΠΊΠ»Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сразу нСсколько записСй, ΠΏΡ€ΠΈ этом гСнСрируя ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ максимального значСния Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† VAL_TEST, Ρ‚ΠΎ ΠΌΡ‹ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠ»ΡŽΡ‡Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ MEASUREMENTS1 ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ значСния эти Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ Π½ΠΎΠΌΠ΅Ρ€Ρƒ послСднСй внСсСнной записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ VAL_TEST (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Рис. 1). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Ссли слСТСниС установлСно Π·Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π° Π²Π½ΠΎΡΠΈΠΌΡ‹Π΅ измСнСния Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ запросу рСгистрации, ΠΎΠ½ΠΈ всС Ρ€Π°Π²Π½ΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈ ΠΏΠΎΡΠ»Π΅ измСнСния запроса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ вносятся Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Π”Π°Π»Π΅Π΅, Π² Ρ…ΠΎΠ΄Π΅ исслСдования, Π²Ρ‹ΡΠ²ΠΈΠ»Π°ΡΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этих особСнностСй. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ схСму ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ этих особСнностСй ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС:

1. ПослС измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, гСнСрируСтся ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅, Π° ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ заносятся Π² cash-ΠΏΠ°ΠΌΡΡ‚ΡŒ

2. ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ рСгистрируСтся.

3. Π”Π°Π»Π΅Π΅ оТидаСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Ρ„иксация Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

4. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ выполняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия.

5. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ· cash-памяти пСрСносятся Π² Π‘Π”.

Π­Ρ‚Π° схСма ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Π΄Π°Π»Π΅Π΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° CHANGE NOTIFICATION.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Change Notification ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ довольно просто. Для Π½Π°Ρ‡Π°Π»Π° создадим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΌΠΎΠ΅ΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ данная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΈ Π΄Π°Ρ‚Ρƒ ΠΈΠ·ΠΌΠ΅Π½ΠΎΠΉ записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ VAL_TEST Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ MEASUREMENTS1. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

CREATE OR REPLACE PROCEDURE Notification_procedure (ntfnds IN SYS. CHNF$_DESC) IS

regid NUMBER;

event_type NUMBER;

numtables NUMBER;

operation_type NUMBER;

val_ID number;

BEGIN

regid:= ntfnds. registration_id;

numtables:= ntfnds. numtables;

event_type:= ntfnds. event_type;

IF (event_type = DBMS_CHANGE_NOTIFICATION.EVENT_OBJCHANGE) THEN

operation_type:= ntfnds. table_desc_array (1). Opflags;

if (operation_type = DBMS_CHANGE_NOTIFICATION.INSERTOP) then

select nvl (MAX (m.id_ms), 0) + 1 INTO val_ID from measurements1 m;

insert into Measurements1

(ID_MS, DATE_RC)

values

(val_id, SYSTIMESTAMP);

commit;

end if;

END IF;

END;

Поясню ΠΊΠΎΠ΄ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹: ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ VAL_TEST, создаСтся ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ event_type помСщаСтся ΠΊΠΎΠ΄ измСнСния, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠΎΠ΄ равняСтся 6 (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ). Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΠ²ΡˆΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΄ измСнСния находится Π² ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ntfnds. table_desc_array (1). Opflags. Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° опСрация INSERT, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ntfnds пСрСдаСтся автоматичСски, ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈ Π² Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….

Π”Π°Π»Π΅Π΅ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ рСгистрируСм, ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для слСТСния. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ рСгистрации, Π² Π½Π°ΡˆΠ΅ΠΌ случаС слСТСниС Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π·Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ VAL_TEST:

DECLARE

regds sys. chnf$_reg_info;

regid number;

v_xId number;

qosflags number;

begin

qosflags:= DBMS_CHANGE_NOTIFICATION.QOS_RELIABLE +

DBMS_CHANGE_NOTIFICATION.QOS_ROWIDS;

REGDS:= SYS. CHNF$_REG_INFO (`Notification_procedure', qosflags, 0,0,0);

regid:= DBMS_CHANGE_NOTIFICATION.NEW_REG_START (REGDS);

select id_ms into v_xID from VAL_TEST where rownum=1;

DBMS_CHANGE_NOTIFICATION.REG_END;

END;

Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: рСгистрируСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ VAL_TEST, это происходит Π² SQL-Π±Π»ΠΎΠΊΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ прСдставлСниС, для слСТСния, ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ измСнСния, Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° SYS. CHNF$_REG_INFO ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ имя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события оповСщСния, врСмя рСгистрации, Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для слСТСния, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ нотификациями.

АрхитСктура прилоТСния

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ создано Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, я ΠΈΠΌΠ΅ΡŽ Π² Π²ΠΈΠ΄Ρƒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ рСгистрации, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ подсчСт количСства рСгистрации для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ВсС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства рСгистраций вСдСтся Ρ‡Π΅Ρ€Π΅Π· ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ user_change_notification_regs. Π­Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎ Ρ‚ΠΎΠΌ, Π·Π° ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ рСгистрируСтся слСТСниС, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡ‚ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΈ REGID-ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ рСгистрации. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ Π½ΠΈΠΆΠ΅ скрипты ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариями.

1. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, выводящая количСство рСгистрации Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² Ρ…ΠΎΠ΄Π΅ изучСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ»ΡƒΡ‡Π°Π»ΠΈΡΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ нСсколько рСгистраций, ΠΈ ΡΡ‚ΠΈ рСгистрации мСшали Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ прилоТСния.

create or replace procedure count_of_regs (name_table in varchar2) is

count_reg number;

begin

select count (regid)

into count_reg

from user_change_notification_regs

where table_name = name_table;

dbms_output.enable;

dbms_output.put_line (to_char (count_reg));

end;

На Π²Ρ…ΠΎΠ΄ подаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ схСма Π‘Π”. Π›ΠΎΠ³ΠΈΠΊΠ° этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ построСна Π½Π° ΠΏΠΎΠ΄ΡΡ‡Π΅Ρ‚Π΅ строк Π² Π·Π°ΠΏΡ€ΠΎΡΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ user_change_notification_regs, это Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТащая Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²ΡΠ΅Ρ… рСгистрациях Π² Π‘Π£Π‘Π”, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° являСтся систСмной, Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½Π΅ΠΉ нСльзя ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

2. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΡƒΠ΄Π°Π»ΡΡŽΡ‰Π°Ρ всС рСгистрации с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±Ρ‹Π»Π° создана для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΎΠ½Π° удаляСт всС рСгистрации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. На Π²Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ пСрСдаСтся Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ user_change_notification_regs всС строки рСгистрации Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΡ‚ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ DEREGISTER ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° DBMS_CHANGE_NOTIFICATION ΠΈ ΠΏΠΎ REGID ΠΊΠΎΠ΄Ρƒ происходит ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ рСгистраций.

create or replace procedure delete_regs (name_table in varchar2) is

reg_id number;

num_rows number;

i number;

begin

select count (regid)

into num_rows

from user_change_notification_regs

where table_name = name_table;

for i in 1. num_rows loop

select regid

into reg_id

from user_change_notification_regs

where table_name = name_table

and rownum = 1;

dbms_change_notification.DEREGISTER (regid => reg_id);

end loop;

end;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания рСгистрации.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания рСгистрации ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ. Данная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создаСт Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ ΠΎΡ‚слСТиваСт измСнСния всСх строк, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄Π°Π΅ΠΌ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ id ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ слСТСниС, Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слСТСния, ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ нСльзя ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ врСмя сущСствования рСгистрации ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ увСдомлСниями.

create or replace procedure registr_of_callback (table_name in varchar2,

operation_type in varchar2,

callback_name in varchar2,

id_name in varchar2) as

id_md number;

op_type number;

— sql_text varchar2 (4000);

begin

if (operation_type = 'insert') then

op_type:= 2;

end if;

if (operation_type = 'update') then

op_type:= 4;

end if;

if (operation_type = 'delete') then

op_type:= 8;

end if;

if (operation_type = 'all') then

op_type:= 0;

end if;

execute immediate 'declare' || ' regds sys. chnf$_reg_info; ' ||

' regid number; ' || ' id_md number; ' ||

' qosflags number; ' || 'begin' ||

' qosflags:= dbms_change_notification.QOS_RELIABLE + dbms_change_notification.QOS_ROWIDS; ' ||

' regds:= sys. chnf$_reg_info (''' || callback_name ||

''', qosflags, 0,' || op_type || ', 0);' ||

' regid:= DBMS_CHANGE_NOTIFICATION.NEW_REG_START (REGDS); ' ||

'select ' || id_name || ' into id_md from ' ||

table_name || ' where rownum=1;' ||

'DBMS_CHANGE_NOTIFICATION.REG_END;' || 'end;';

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Ρ‚Ρƒ измСнСния ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки.

Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ VAL_TEST вносится запись. Он Π±Ρ‹Π» создан для сравнСния быстродСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Change Notification ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°ΠΌΠΈ. Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

create or replace trigger vt_in

after insert on val_test

declare

id_s number;

begin

select nvl (MAX (m.id_ms), 0) into id_s from val_test m;

insert into measurements values (id_s, SYSTIMESTAMP);

end;

Π±Π°Π·Π° notification ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ database

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БущСствуСт мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ быстродСйствия Π‘Π£Π‘Π”. Одной ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ являСтся Change Notification. Но ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΌΠΎΠ΅ исслСдованиС, Π² Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹, сфСра примСнСния ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°. Она Π½Π΅ Π³ΠΎΠ΄ΠΈΡ‚ся для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая ΠΎΡ‡Π΅Π½ΡŒ часто мСняСтся.

Как Π½Π°ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ мСняСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния. Π’ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅ ΠΎΡ‡Π΅Π½ΡŒ часто случаСтся, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния вносят измСнСния, ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡƒΠ·Π½Π°ΡŽΡ‚ ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ, Change Notification Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΎΠ½Π° всСгда прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

1. ОписаниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Change Notification http://docs.oracle.com/cd/B1930601/appdev.102/b14258/d_chngnt.htm

2. ΠŸΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ Π˜Π³ΠΎΡ€Ρ МСльникова Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ http://www.oraclebi.ru/files/presentations/imelnikov/ChangeNotification.pdf

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ