۸ مطلب با کلمه‌ی کلیدی «ریپلیکیشن» ثبت شده است

سناریوی Unidirectional - قسمت دوازدهم (Replicat مقصد)

برای ساخت سرویس replicat در مقصد اول فایل پیکربندی سرویس رو ایجاد می‌کنیم:

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 60> edit param rora1
REPLICAT rora1
USERID ggs,PASSWORD ggs
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA1.DSC, PURGE
DECRYPTTRAIL AES128 KEYNAME supermaskey
MAP hr.*, TARGET test.*;

ادامه مطلب...
۳۰ بهمن ۹۷ ، ۱۵:۲۱ ۱ نظر
مهدی غفاری

سناریوی Unidirectional - قسمت دهم (Manager مقصد)

اولین کار بررسی وضعیت سرویس Manager هستش:

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 9> info all
Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

خب اینجا باید طبق نقشه راهمون نامگذاری‌ها رو انجام بدیم:

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 10> edit param mgr
PORT 65324
autostart extract rora1
autorestart extract rora1 , RETRIES 10, WAITMINUTES 1, RESETMINUTES 5
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3

چون سناریو فعلی یکطرفه است من فقط سرویس replicat رو اضافه کردم در ادامه برای راه‌اندازی سناریوی ۲ طرفه باید capture, pump هم راه‌اندازی بشه.

خب برای اینکه پیکربندی ما اعمال بشه یکبار سرویس رو stop, start می‌کنیم:

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 11> stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)?y
Sending STOP request to MANAGER ...
Request processed.
Manager stopped.

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 12> start mgr
Manager started.

خب الان سرویس داره به صورت درست کار میکنه:

GGSCI (lx-01-oracle.roshak.org as GGS@orcl) 59> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING

۳۰ بهمن ۹۷ ، ۱۳:۰۹ ۰ نظر
مهدی غفاری

سناریوی Unidirectional - قسمت نهم (TRANDATA مقصد)

راه‌اندازی TRANDATA (اختیاری)

اگه بخوایم سناریوی یکطرفه راه‌اندازی کنیم اصلاً نیازی به اینکار نیست چون ما پروسه capture رو راه‌اندازی نمی‌کنیم ولی چون من میخوام سناریو رو در ادامه ۲ طرفه راه‌اندازی بکنم پس این کار رو انجام میدم:

GGSCI>ADD TRANDATA TEST_UNIDIRECTIONALGGS.*

نکته: اگه به خطای زیر برخوردید یکبار trandata رو پاک کنید و دوباره برای جدول trandata بسازید:

Logging of supplemental redo log data is already enabled for table TEST_UNIDIRECTIONALGGS.TEST_GGS_2.

2017-11-10 12:59:20 WARNING OGG-00706 Failed to add supplemental log group on table TEST_UNIDIRECTIONALGGS.TEST_GGS_2
due to ORA-32588: supplemental logging attribute primary key exists SQL ALTER TABLE "TEST_UNIDIRECTIONALGGS"."TEST_GGS_2"
ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS /* GOLDENGATE_DDL_REPLICATION */.
delete trandata TEST_UNIDIRECTIONALGGS.TEST_GGS_2
add trandata TEST_UNIDIRECTIONALGGS.TEST_GGS_2

۳۰ بهمن ۹۷ ، ۱۲:۵۵ ۰ نظر
مهدی غفاری

سناریوی Unidirectional - قسمت سوم (اسکیمای TEST)

برای راه‌اندازی سناریوی تست من یک اسکیما با تعدادی جدول میسازم:

DROP USER TEST_UNIDIRECTIONALGGS CASCADE;
CREATE USER TEST_UNIDIRECTIONALGGS
IDENTIFIED BY <password>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for TEST_UNIDIRECTIONALGGS
GRANT CONNECT TO TEST_UNIDIRECTIONALGGS;
GRANT DBA TO TEST_UNIDIRECTIONALGGS;
ALTER USER TEST_UNIDIRECTIONALGGS DEFAULT ROLE ALL;
-- 2 System Privileges for TEST_UNIDIRECTIONALGGS
GRANT CREATE SESSION TO TEST_UNIDIRECTIONALGGS;
GRANT UNLIMITED TABLESPACE TO TEST_UNIDIRECTIONALGGS;
-- 1 Tablespace Quota for TEST_UNIDIRECTIONALGGS
ALTER USER TEST_UNIDIRECTIONALGGS QUOTA UNLIMITED ON USERS;

ادامه مطلب...
۱۰ آذر ۹۷ ، ۱۰:۲۷ ۰ نظر
مهدی غفاری

سناریوی Unidirectional - قسمت اول (راه‌اندازی مبداء)

راه‌اندازی مبدا

بردن دیتابیس به حالت ArchiveLog

اول از همه یادمون باشه ما دیتابیس اوراکلی رو می‌تونیم به حالت آرشیو ببریم که وقتی دیتابیس‌امون رو shutdown می‌کنیم تا به حالت mount برسیم instance recovery ای اتفاق نیوفتد یعنی لازمه حتما SCNها یکی شده باشند.

پس اگه ما shutdown abort کنیم و رو حالت mount ببریم و بخوایم دیتابیس رو به حالت آرشیو ببریم امکانش وجود نخواهد داشت.

دیتابیس رو shutdown می‌کنیم:

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

دیتابیس رو به حالت mount می‌بریم:

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size 2253784 bytes
Variable Size 1543506984 bytes
Database Buffers 100663296 bytes
Redo Buffers 7094272 bytes
Database mounted.

دیتابیس رو روی حالت آرشیو می‌ذاریم:

SQL> alter database archivelog;
Database altered.

حالا دیتابیس رو open می‌کنیم تا instance تشکیل بشه

SQL> alter database open;
Database altered.

برای چک کردن این موضوع که دیتابیس ما تو حالت آرشیو لاگ هستش یا نه از دستور زیر در SQLPLUS استفاده می‌کنیم:

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 109
Next log sequence to archive 111
Current log sequence 111

خب همونطور که می‌بینید مکانیزم آرشیو لاگ در این سرور فعال هستش و مقصد ذخیره آرشیوها در پارامتر db_recovery_file_dest تنظیم شده که اینجا همون فضای FRA ما هستش

حالا اگه یک Switch Logfile دستی بزنیم مشاهده می‌کنیم Online Redo Log File ما آرشیو شده

SQL> alter system switch logfile;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 110
Next log sequence to archive 112
Current log sequence 112

ادامه مطلب...
۲۴ تیر ۹۷ ، ۱۳:۰۹ ۰ نظر
مهدی غفاری

سناریوی Unidirectional در Oracle GoldenGate - مقدمه

ادامه مطلب...
۲۳ تیر ۹۷ ، ۱۷:۰۰ ۰ نظر
مهدی غفاری

نگاهی بر معماری Oracle GoldenGate - قسمت چهارم

خب فکر کنید ما نیاز داریم join چند جدول از مبدا رو در یک جدول در دیتابیس مقصد بنویسیم خب در گلدن‌گیت برای این مورد ما باید شروع به نوشتن اسکریپت‌نویسی با REM کنیم که جزو موارد advanced گلدن‌گیت محسوب میشه، البته شما می‌تونید از یه راهکار به مراتب ساده‌تر اسفاده کنید اونم اینکه جداول مورد نیازتون رو بدون join بیارید به سمت سرور مقصد و روی جدول آخری که میخواد آپدیت بشه شما یک Triger می‌نویسید که وقتی ۲ تا رکورد از ۲ جدول اومدن join‌ بزنه و روی جدول نهایی بنویسه پس تا stage io رو با گلدن‌گیت جلو میاریم و از Stage I/O به DWH رو با تریگر جلو می‌بریم بعد شما چون فقط یک تریگر روی جدول آخر دارید performance بالایی خواهید داشت.

قابلیت‌ها

Filtering

ادامه مطلب...
۲۰ تیر ۹۷ ، ۱۵:۰۵ ۰ نظر
مهدی غفاری

نگاهی بر معماری Oracle GoldenGate - قسمت دوم

بعد از اینکه با معماری اوراکل خوب آشنا شدید و شناخت این موضوع که اوراکل گلدن‌گیت کجای سازمان ما میتونه باشه و چه راه‌کارهایی رو میتونه به ما ارائه بده به معماری خود گلدن‌گیت می‌رسیم. در کل همین اول کار بهتره بدونید گلدن‌گیت عملاً از یکسری سرویس تشکیل شده یعنی اینکه اگه فکر می‌کنید اپلیکیشن گرافیکی هستش و دیتابیسی پشتش قرار می‌گیره نه این اتفاق در گلدن‌گیت صورت نمی‌گیره.

گلدن‌گیت در اصل یکسری سرویسه اینکه من تو پست‌های قبلی همش تاکید می‌کردم ما CDC داریم این سرویس‌ها هستن که اینکار رو انجام میدن و تغییرات رو میفهمن و تو شبکه جا به جا میکنن و در نهایت اعمال می‌کنن یا باز همین سرویسها هستن که منتظر تغییرات می‌مونن و به محض دریافت اونها رو اعمال میکنن و خودشون رو SYNC نگه میدارن درکل ما با یکسری سرویس سر و کار داریم و تمام فعالیت‌های ما هم روی همین سرویسهاست حالا این سرویسها هر کدوم برای خودشون آرگومانهایی دارند که ما Config Fileهای موجود آرگومانهای مختلفی رو براشون در نظر می‌گیریم و در نهایت این کانفیگ‌ها هستن که شما با اونها بسیار کار دارید.

سناریوهای قابل پیاده‌سازی در گلدن‌گیت

- DB: database
- EDW: Enterprise Data Warehouse
- ETL: Extract, Transform, and Load
- HW: Hardware (Intel 32-bit, Intel 64-bit, SPARC, and so on)
- ODS: Operational Data Store
- OLTP: Online Transaction Processing
- OS: operating system (Linux, Windows, and so on)

ادامه مطلب...
۱۳ خرداد ۹۷ ، ۱۳:۰۴ ۰ نظر
مهدی غفاری