oracle streams - azerbaijani
DESCRIPTION
Oracle Streams - Azerbaycan dilindeTRANSCRIPT
Oracle Streams – ümümi anlayışlar və praktik demo
Ülfət Tanrıverdiyev
1-Dec-2012
İçindəkilər
• Oracle Streams nədir?• Oracle Streams nə üçün istifadə olunur?• Replikasiya nədir?• Oracle Streams -in üstünlükləri• Oracle Streams -in iş prinsipi• Streams-in konfiqurasiyası• Advanced Queues (AQ) nədir?• Change Data Capture (CDC) nədir?• Logical Change Record (LCR) nədir?• Streams necə çalışır?• Oracle Streams – Praktik demo
1-Dec-2012
Oracle Streams nədir?
Oracle 9i da ilk dəfə yaradılıb
Oracle verilənlər bazaları arasında məlumat paylaşımı
Digər verilənlər bazaları ilə Oracle verilənlər bazaları arasında məlumat paylaşımı
Verilənlərin və hadisələrin yaxalanması (detect) Aşkar (explicitly): proqramlaşdırma
Gizli (Implicitly): redo log
1-Dec-2012
Oracle Streams nə üçün istifadə olunur?
Replikasiya
Mesaj növbəsi (Message Queuing)
Data Warehouse da məlumatın yüklənməsində
Hadisələrin bildirişi (Event Notification)
Məlumatın qorunmasında
1-Dec-2012
REPLİKASİYA NƏDİR?
Məlumatın replikasiyası dedikdə məlumatın distrubut systemlərdə dəyişilməsi nəzərdə tutulur və bu dəyişiklik sinxronlaşdırılır. Replikasiya manual və ya avtomatik olaraq gercəkləşdirilir.
1-Dec-2012
REPLİKASİYA metodlarıReplikasiya metodlari məlumatların necə replikasiya ediləcəyini göstərir:
Sinxron Asinxron Birbaşa (direction) Bir tərəfli (unidirection) Qarşılıqlı (bi-direction N-Way) Hibrid (Hybrid)
ORACLE STREAMS
Bir çox replikasiya üsulları var və onlardan biri də Oracle Streams-dir.
Burada ən çox verilən suallar: Hardan başlayım? Nələrdən istifadə edim, nələrdən yox və nə zaman? Və ən çoxda soruşulan sual - Streams necə kömək edə bilər?
Dəyişiklikləri trigger(before-after insert/update/delete) ilə tutmaq yerinə (Oracle's Advanced Replicationda olduğu kimi), Streams LogMiner-dən istifadə edərək commit edilmiş verilənlərin bazanın REDO loglarından və ya Arxiv loglarından istifadə edərək tutur.
1-Dec-2012
Oracle Streams üstünlükləri
• Replikasiya və “message queue” Oracle ilə digər VB (MSSQL, DB2 və s) arasında mümkündür
• Verilənlərin və hadisələrin avtomatik olaraq LCR-a emal edilmə imkanı(Ability to set up automatic processing of data and events into a LCR)
• LCR-ların avtomatik istifadə və istehlak qurmaq bacarığı
• Sistem resurslarından istifadənin optimallaşdırılması(Lower system resource usage)
DWH üçün müntəzəm dəyişikliklər (updates for Data Warehousing)
1-Dec-2012
STREAMS DƏSTƏKLƏMİR
Aşağıdakı spesifik objectləri (DDLs) Streams dəstəkləmir.
1-Dec-2012
DBA_STREAMS_UNSUPPORTED view vasitəsi ilə Streams-in hansı obyektlərin dəstəklənmədiyini görmək olar. Streams-ə keçidə hazırlıq üçün bu view çox faydalı olacaq.
SELECT * FROM DBA_STREAMS_UNSUPPORTED;
ORACLE STREAMS-in İŞ PRİNSİPİ
Aşağıdakı proseslər Streams-in iş prinsipləridir:
1-Dec-2012
Propagation
Capture
Apply
CAPTURE PROSESİ
Capture prosesi bazadakı tranzaksiyaların böyük əksəriyyətini tutacaq.
Bu proses həm DML, həm də DDL-i dəstəkləyir.
Streams Capture prosesi ancaq aşağıdakı tipli sütunlardakı dəyişiklikləri tuta bilir:
1-Dec-2012
Capture
Capture prosesi aşağıdakı DDL ləri tutur (“capture” edir).
Capture prosesi aşağıdakı DDL əmrlərini tutmur (“capture” etmir.)
PROPAGATE PROSESİ
Propagate prosesi hər 2 tərəf arasındakı real daşıma əməliyyatını yerinə yetirir.
1-Dec-2012
Propagation(daşıma) prosesi və əməliyyat barədə məlumatları aşağıdakı view obyektlərindən əldə etmək olar:
• DBA_PROPAGATION• V$BUFFERED_SUBSCRIBERS • V$BUFFERED_PUBLISHERS• V$PROPAGATION_RECEIVER• V$PROPAGATION_SENDER• DBA_SCHEDULER_JOBS
Propagation
APPLY PROSESİ
Apply prosesi növbədən LCR və ya mesajları götürür, onları ya hədəf bazadakı obyektə tətbiq edir, ya da Apply handler prosesinə ötürür. Apply handler istifadəçi tərəfindən yazılmış PL/SQL prosedurdur, giriş parametri olaraq LCR mesajını alır və lazımi LCR dəyişikliklərini hədəf bazada tətbiq edir. Capture və Propagation proseslərində olduğu kimi Apply prosesi də hansı LCR-ların tətbiq olunacağını müəyyən etmək üçünı öncədən təyin edilmiş qaydalar əsasında qərar verir. Bir neçə Apply prosesi ola bilər. Apply reader və server prosesləri əməliyyat sistemində background proses kimi görünür(ASnn).
1-Dec-2012
Apply prosesi haqda aşağıdakı view-larda faydalı məlumatlar var:
• DBA_APPLY• DBA_APPLY_CONFLICT_COLUMNS• DBA_APPLY_DML_HANDLERS• DBA_APPLY_ENQUEUE• DBA_APPLY_ERROR• DBA_APPLY_EXECUTE• DBA_APPLY_INSTANTIATED_GLOBAL• DBA_APPLY_INSTANTIATED_OBJECTS• DBA_APPLY_INSTANTIATED_SCHEMAS• DBA_APPLY_KEY_COLUMNS
Apply
• DBA_APPLY_PARAMETERS• DBA_APPLY_PROGRESS• DBA_APPLY_SPILL_TXN• DBA_APPLY_TABLE_COLUMNS• DBA_HIST_STREAMS_APPLY_SUM• V$STANDBY_APPLY_SNAPSHOT• V$STREAMS_APPLY_COORDINATOR• V$STREAMS_APPLY_READER• V$STREAMS_APPLY_SERVER
STREAMS-in Konfiqurasiyası
Aşağıdakı parameterlər STREAMS konfiqurasiya olunmasında istifadə olunur:
• COMPATIBLE• PROCESSES• SHARED_POOL_SIZE• STREAMS_POOL_SIZE• TIMED_STATISTICS• GLOBAL_NAMES• JOB_QUEUE_PROCESSES• LOG_ARCHIVE_DEST_n
1-Dec-2012
STREAMS-in Konfiqurasiyası
COMPATIBLE:• 9.2.0 Oracle 9i Release 2• 10.1.0 Oracle 10g Release 1• 10.2.0 Oracle 10g Release 2• sonraki
PROCESSES:Streams də capture və apply prosesləri arxa (background) prosesslərdən və paralel proseslərdən istifadə edirlər. (>=2)
SHARED_POOL_SİZE:Hər capture prosesi 10MB shared_pool (şərik hovuz sahəsi) ehtiyac duyulur, lakin Streams bu shared pool-un 10% istifadə edə bilmə məhdudiyyətindədir.
1-Dec-2012
STREAMS-in Konfiqurasiyası
STREAMS_POOLS_SİZE:Əgər verilənlər bazasında capture prosesi varsa başlanğıc üçün gərək 100MB bu parameter üçün təyin edilsin. Sonrada ehtiyac yarandıqda artırıla bilər. ORACLE Automatic Shared Memory Management özəlliyi əgər VB da SGA_TARGET <> 0 olarsa streams_pool_size parametrini tənzimləyir.
TIMED_STATISTICS:Streams-lə əlaqəli data dictionary view-larda icra müddətini təyin edilməsi lazımdırsa bu parameter təyin edilməlidir. Aşağıdakı view lar vasitəsi ilə statistikanı görmək olar:
• V$STREAMS_CAPTURE • V$STREAMS_APPLY_COORDINATOR• V$STREAMS_APPLY_READER• V$STREAMS_APPLY_SERVER.
1-Dec-2012
STREAMS-in Konfiqurasiyası
GLOBAL_NAMES:• VB arasında Streams istifadə edirsinizsə parameterin dəyəri TRUE olmalıdır.• Bu parameter verilənlər bazasındakı bağlantının (db_link) adının bağlanacağı
hostun adı ilə eyni olmasını tələb edir.
JOB_QUEUE_PROCESSES:Bu proses DBMS_JOBS və ya DBMS_SCHEDULER paketleri vasitəsi ilə yaranmış proseslərin sorğu emalında istifadə olunan proseslərin sayını müəyyən edir.
LOG_ARCHIVE_DEST_n:Verilənlər bazası Arxivlogun da çalışmalıdır və bu log-ların fiziki diskdəki yerini göstərir. Qeyd: Yalnız Capture proses olan verilənlər bazasında VB arxivlog modunda çalışmalıdır. Apply proses olan VB arxiv log modunda olmaya bilər.
1-Dec-2012
ƏSAS TERMİNLƏR
• AQ (Advanced Queue) – Mükəmməl növbə• CDC (Change Data Capture) – Dəyişikliyin tutulması• LCR (Logical Change Record) – Məntiqi Dəyişiklik Qeydi• Instantiation (başlanğıc SCN nömrəsinin təyini)• Mesaj (Message) – növbəyə daxil edilən və oxunan ən kiçik məlumat• Növbə (Queue) – Mesajlar üçün repozitoridir. Növbələr növbə cədvəllərində yerləşirlər• Enqueue – Növbədə yerləşən mesajın yeri• Dequeue – İstehlakçı mesaj
1-Dec-2012
AQ nədir?
Streams dəyişiklikləri hədəf bazaya daşımaq üçün AQ istifadə edir.
Bu növbələr ya yaddaşda yerləşir(buffered queues), ya da disk sistemində cədvəllərdə
saxlanılır(persistent queues). Oracle Streams hər 2 növbədən istifadə edir.
Buffered queue yalnız ANYDATA tipli məlumatları saxlaya bilər, persistent queue
isə həm ANYDATA, həm də istifadəçinin bildirdiyi tipdə(TYPED) məlumatları
saxlaya bilər. Növbədəki məlumatların tipini müəyyən etmək üçün DBA_QUEUE_TABLES view-dakı OBJECT_TYPE sütununu yoxlamaq lazımdır.
select owner, queue_table, object_type from dba_queue_tables;
Buffered queue-lar SGA yaddaşda STREAMS_POOL adlı yerdə yerləşir.
Captured və buffered tipli LCR-lar buffered queue-da, persistent (daimi) LCR-lar isə
persistent queue-da saxlanılır.
1-Dec-2012
CDC nədir?
• CDC effektiv şəkildə dəyilmiş məlumatları müəyyənləşdirir və dərhal bu dəyişiklikləri istifadə etməyək imkan verir.
• CDC DWH məlumatlarının effektiv şəkildə yüklənməyinə imkan verir: Flat faylların olmaması Məlumatların bir başa daşınması
• Dəyişikliklər növbədə saxlanılır.• Çox istifadəçi rejimi dəstəklənir.• Üzv olmuş istifadəçilər dəyişilmiş məlumatları dərhal əldə edə bilir.• Məlumatlar transformasiya edilə bilər.• Həm DDL həmdə DML dəyişikliklər daxildir.
1-Dec-2012
LCR nədir?
• LCR = Logical Change Record (Məntiqi Dəyişlik qeydi)
• Commit edilmiş dəyişikliklər REDO logların əsasında LCR generasiya edir.
• LCR mövcud və yeni məlumatlar arasındakı fərqi əks etdirir.
• DDL üçün - verilənlər bazasında obyektlər
• DML üçün - cədvəllərdəki sətirlər
1-Dec-2012
INSTANTIATION nədir?
Instantiation prosesi 3 ardıcıl addımdan ibarətdir: • Hədəf tərəfdə obyektlərin yaradılması• Metadata ilə Stream data dictionary-də dəyişikliklərin edilməsi• Obyektlər üçün başlanğıc SCN-in verilməsi
Cədvəl və ya digər baza obyektləri hər 2 tərəfdə(source-target) mövcud olmalıdır.
Əgər transformasiya tətbiq edilibsə, bu halda cədvəllərin strukturu fərqli ola bilər.
Amma adətən tranformasiya tətbiq edilmir və hər 2 tərəfdə cədvəllərin strukturu,
onlardakı məlumatlar eyni olur.
1-Dec-2012
Instantiation səviyyələriCədvəl (Table Level)Sxema (Schema Level) Verilənlər Bazası (Database (Global) Level)Tablespace (bu spesifik addımlar tələb edir)
Instantiation MetodlarıData PumpTransportable TablespacesRMAN tam verilənlər bazası üçünManual method
STREAMS komponentleri
Stream prosesi zamanı aşağıdakı Oracle komponentləri istifadə olunur: Log Miner: Hədəf tərəfdə dəyiikliklərin tutulması üçün istifadə olunur. Advanced Queuing: Tərəflər arasında dəyişikliklərin daşınması üçün istifadə olunur. Capture, Propagate, Apply prosesləri: Capture, Propagation və Apply işlərini yerinə yetirən proseslər. Capture, Propagate, Apply qaydalarının və transformasiyaların PL/SQL vasitəsilə idarə olunması: İstifadəçinin
yazdığı PL/SQL proseduları müxtəlif proseslərdə məlumatların necə manipulyasiya edilməsinə qərar verir. LCR tipləri: Streams istifadəsi üçün dəyişikliklərin saxlanılması və idarə edilməsi məqsədilə xüsusi tiplər
yaradılmışdır. Database link/Oracle Net: Bazalar arasında əməliyyat sistemindən asılı olmadan bağlantı yaradır. İstifadəçi haqları(authentication/authorization): Baza əlaqəsi və obyektlər səviyyəsində təhlükəsiz istifadə
hüquqlarını təmin edir Konfliktlərin aşkarlanması: Dəyişikliyin tətbiq olunacağı sətirin cari vəziyəttinin qaynaq bazadakı vəziyyəti ilə
eyni olduğunu yoxlayan xüsusi daxili protokol mövcuddur. Bunun sayəsində məlumatların sinxronlaşdırılması təmin edilir.
PL/SQL vasitəsilə konfliktlərin həll olunması – istifadəçinin yazdığı PL/SQL proseduru konfliktin həll olunması üçün istifadə edilir.
1-Dec-2012
STREAMS də qaydalar (RULES)
• Qaydalar hansı məlumatların və harda paylaşılacağını (share) təyin edir• Qaydalar həm Capture, həm Propagate eyni zamanda Apply proseslərində təyin edilə bilər• Qaydalar aşağıdakı səviyyələrdə təyin edilir:
– Cədvəl– Sxema– Global (VB)
1-Dec-2012
STREAMS arxitekturası
Tək instance-lı verilənlər bazası (Single database, No Oracle RAC)
Tək instance-lı konfiqurasiyada Capture və Apply prosesləri eyni bazada olur. Bu halda Propagation prosesinə
ehtiyac yoxdur, çünki Apply prosesi Capture prosesinin növbəsindən istifadə edir. Lazım gələrsə, hər biri üçün
ayrı növbə konfiqurasiya etmək mümkündür. Bu halda hər 2 növbə arasında Propagation prosesi də
konfiqurasiya edilməlidir.
1-Dec-2012
STREAMS arxitekturası
Bir tərəfli (Uni-directional)
single-source to single-target konfiqurasiyada Capture və Propagation prosesləri qaynaq bazada, Apply prosesi
isə hədəf bazada yerləşir.
1-Dec-2012
STREAMS arxitekturası
Cascaded/bir başa şəbəkə (directed network)Bir başa şəbəkə konfiqurasiyasında Capture və Propagation prosesləri və Capture növbəsi mənbədə (source) yerləşir. Növbə yönləndirməsində (Queue forwarding), yönləndirmə sahəsinin özünün növbəsi var, lakin Apply prosesi yoxdur.
1-Dec-2012
STREAMS arxitekturası
Hub-və-SpokeHub-və-Spoke konfiqurasiyasında, məlumat stream olur bir mənbədən birdən artıq olan hədəf-təyinat (destinations- targets) tətbiq olunur. Bu daha çox mərkəz-filal konfiqurasiyalarında ("Headquarter to Branch (or Regional)") rast gəlinir. Apply prosesləri və növbə hər təyinatı (destination) olan yerdə təyin edilir.
1-Dec-2012
STREAMS arxitekturası
Qarşılıqlı (Bi-directional)/N-way/Master-to-Master Qarşılıqlı (Bi-directional), N-way, Master-to-Master confiqurasiyasında bütün adlar mahiyyətcə eynidir. Bu yanaşma bütün tərəflərdə məlumat dəyişikliyinə izin verir və eyni zamanda bütün mənbələrə replikasıya imkanı tanıdır. Bununlada Capture, Propagation və Apply prosesləri eyni zamanda növbələr bütün mənbələrdə təyin edilir.
1-Dec-2012
STREAMS arxitekturası
Bir tərəfli (Uni-directional) Spokes-to-HubBu konfiqurasiyada SPOKE-lar məlumatların original dəyişilmiş olan yerlərdir, HUB isə təyinatdır (destination). Capture və Propagation proseslər eyni zamanda Capture növbəsi mənbələrdə müəyyən edilir(SPOKE sights). Apply prosesi ilə növbə isə hər mənbə üçün HUB da təyin edilir.
1-Dec-2012
STREAMS arxitekturası
Qarşılıqlı (Bi-directional) Spoke-to-HubBu konfiqurasiya uni-directional Spoke-to-Hub konfiqurasiyasının inkişaf etdirilmiş versiyasıdır hansı ki, dəyişikləri hər mənbəyə göndərmək üçün HUB-a izin verir. Bu isə o deməkdir ki, ən azı bir Capture proses və növbə HUB-da təyin edilməlidir və hər mənbədə (spoke) Propagation prosesi təyin edilməlidir. Son olaraq Apply prosesi və növbə hər bir mənbədə (SPOKE) təyin edilməlidir.
1-Dec-2012
STREAMS arxitekturası
Hibrid - HeterogeneousHeterogen konfiqurasiyada tərəflərdən hər hansı biri Oracle bazası deyil. Gateway Oracle SQL və qeyri Oracle SQL sintaksisləri arasında tərcüməçi rolunu oynayır. Bunun sayəsində istifadə şəffaf şəkildə Oracle bazasından SQL əmrlərini qeyri Oracle bazasına daşıya bilir. Oracle 11gR2-dəki gateway aşağıdakı bazaları dəstəkləyir:• Informix • ODBC • SQL Server • Sybase • Teradata
və s
1-Dec-2012
NECƏ İŞLƏYİR
1-Dec-2012
Source Database Target Database
Table
VERİLƏNLƏRİN DƏYİŞİLMƏSİ
1-Dec-2012
Source Database Target Database
Table
LogWriter
Data Manipulation
DB yazır ƏS faylına – REDO loglara
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
Writes To
Streams Capture Proses
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
StreamsCapture
Capture Process Reads Redo and
Extracts the Logical Change Record
(LCR)
Streams Növbə - LCR
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
StreamsCapture
Streams Queue
Streams Capture Process writes the LCR to a local OR REMOTE Streams Queue
Table
LCR Propagate Proses - Daşınma
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
StreamsCapture
Streams Queue
Streams Capture Process writes the LCR to a local OR REMOTE Streams Queue
Table
Streams Queue
Dəyişikliklər tətbiq olunur - apply
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
StreamsCapture
Streams Queue
Streams Capture Process writes the LCR to a local OR REMOTE Streams Queue
Table
Streams Queue
StreamsApply
Streams Apply can also transform for one record to
many, add columns, etc.
HƏDƏF (Target) Verilənlər Bazasında tətbiq
1-Dec-2012
Source Database Target Database
Table
LogWriter
REDO LOG
StreamsCapture
Streams Queue
Streams Capture Process writes the LCR to a local OR REMOTE Streams Queue
Table
Streams Queue
StreamsApply
Table
Table
Table
Praktik Demo-nun senarisi
Praktikada edəcəyimiz ssenari:
– HR.Employee cədvəli üzərindəki dəyişikliklərin tutulması(Oracle 10g R2)
– Dəyişikliklərin eyni bazada DEMO.EMP cədvəlinə tətbiq edilməsi
– Nəticənin yoxlama
1-Dec-2012
ZƏRURİ DİNAMİK VİEW-LAR
Capture procesini monitorinq etmək üçün zəruri olan view-lar:
DBA/ALL_CAPTUREDBA/ALL_CAPTURE_PARAMETERSDBA/ALL_CAPTURE_EXTRA_ATTRIBUTESV$STREAMS_CAPTUREV$STREAMS_TRANSACTIONDBA/ALL_STREAMS_RULES
DBMS_APPLY_ADM digər tərəfə obyektlərin daşınması üçün aşağıdakı paketləri özündə birləşdirir:
SET_TABLE_INSTANTIATION_SCN SET_SCHEMA_INSTANTIATION_SCN SET_GLOBAL_INSTANTIATION_SCN
Aşağıdakı view –lar vasitəsi ilə qaynaq verilənlər bazasında baantiation hansı səviyyədə təyin edilib:
DBA/ALL_CAPTURE_PREPARED_TABLES DBA/ALL_CAPTURE_PREPARED_SCHEMAS DBA/ALL_CAPTURE_PREPARED_DATABASE
1-Dec-2012
Və digər zəruri view-lar :
• DBA/ALL_APPLY• DBA/ALL_QUEUES• DBA/ALL_CAPTURE_PREPARED_TABLES• DBA/ALL_CAPTURE_PREPARED_SCHEMAS• DBA_CAPTURE_PREPARED_DATABASE• DBA_APPLY_KEY_COLUMNS• DBA_APPLY_DML_HANDLERS• DBA_APPLY_VALUE_DEPENDENCIES• DBA_APPLY_OBJECT_DEPENDENCIES• DBA_APPLY_CONFLICT_COLUMNS• DBA_APPLY_INSTANTIATED_OBJECTS• DBA_APPLY_INSTANTIATED_SCHEMAS • DBA_APPLY_INSTANTIATED_GLOBAL
1-Dec-2012
VİDEO
• Blog : http://ulfet.blogspot.com/• Email : [email protected]• Skype : ulfet.tanriverdiyev• Facebook : http://www.facebook.com/ulfet.tanriverdiyev
1-Dec-2012
ƏLAQƏ
SQL>Select ‘TƏŞƏKKÜRLƏR’ From Dual;
1-Dec-2012
SON