کلید Delete در Mac OS X

یکی از بزرگترین مشکلاتی کاربرانی که از ویندوز به مک او اس سوییچ می‌کنند عدم وجود کلید Delete است چون این کلید با اینکه در صفجه کلید تعریف شده اما عملکرد backward داره اکثر کاربرهای مک هم تمایلی به استفاده از کیبرد full size ندارند.

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

- حذف متن از جلوی کرسر با نگه داشتن fn و delete ممکنه

- همچنین با دکمه‌های ترکیبی control + d

- همچنین هر کلمه رو می‌تونید با نگه داشتن کلید control + delete یا option + delete انجام بدید

- برای پاک کردن هر لاین یا پاراگراف می‌تونید از دکمه‌های command + delete استفاده کنید


حالا چرا به عملکرد یک دکمه آنقدر حساس شدیم؟ اصلا فرق بین عملکرد backward با delete چیه؟

اگه با Toad For Oracle تعامل داشته باشید می‌دونید که در صفحه New Connection شما مشخصات اتصال به پایگاه داده‌ها سیو میشه مثل عکس زیر:

و ما اگه بخواین یکی از این کانکشنها رو حذف کنید باید از عملکرد دکمه delete در ویندوز استفاده کنیم و اگه توی مک باشید باید از command + delete استفاده کنید

در نهایت کار به همین سادگیه شما مجبور نیستید از یک صفحه کلید full-size در لپ تاپ‌های اپل استفاده کنید

۳۱ فروردين ۹۸ ، ۱۹:۵۸ ۰ نظر
مهدی غفاری

سناریوی 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 - قسمت یازدهم (سرویس Pump)

خب الان باید سمت مبدا یک سرویس Pump ایجاد بکنیم که فایلهای Trail سمت مقصد فرستاده بشوند

برای اینکار اول باید سرویس Pump رو بسازیم بعد به سرویسهامون اضافه‌اش کنیم.

GGSCI (lx-02-oracle) 13> edit param pora1
EXTRACT pora1 
passthru
DECRYPTTRAIL AES128 KEYNAME supermaskey
RMTHOST 192.168.92.183 ,MGRPORT 65324, COMPRESS
ENCRYPTTRAIL AES128 KEYNAME supermaskey
RMTTRAIL dirdat/l2
TABLE TEST_USER.*;

خط اول: می‌گیم این پیکربندی مربوط به سرویس از جنس Extract هستش و اسمش pora1 نامگذاری شده

خط دوم: آپشن passthru به درد سولوشن‌های oltp به oltp میخوره یعنی همه‌ی structre مبدا در مقصد هستش اینجوری گلدن‌گیت دیگه دنبال تغییر structre نمیره ولی اگه ساختار مبدا و مقصد شما یکی نیست نباید از این آپشن استفاده کنید

خط سوم: وقتی trail fileهای ما رمزنگاری شده باشن اول از همه pump باید اونها رو DECRYPT کنه تا بتونه داخل اونها رو بخونه

خط چهارم: اتصال به سرور و manager مقصد به صورت فشرده هستش 

خط پنجم: بعد از انتقال به سرور مقصد دوباره فایلهای trail رو رمزنگاری کن

خط ششم: گفتم وقتی pump میاد trail میسازه جنسش rmttrail میشه پس اینجا مسیر ساخت این فایلها با نامگذاری رو مشخص می‌کنیم

خط هفتم: می‌تونیم توی pump هم مشخص کنیم که از tarilهای ما فقط جداول مشخصی رو انتقال بده

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

سناریوی 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 - قسمت هشتم (Initial Load)

انجام initial load به روش‌های گوناگونی امکان پذیر است. اگه دیتای زیادی ندارید می‌تونید به صورت دستی اسکریپت‌های ساخت جداول و داده‌ها رو بر روی دیتابیس مقصد اعمال کنید.

اگه نیاز داشتید از initail load گلدن‌گیت استفاده کنید بهتره بدونید structure آبجکتها رو خودتون باید انتقال بدید و فقط دیتا رو با این روش می‌تونید انتقال بدید.

ولی در صورتی که دیتای زیادی دارید من توصیه میکنم از روشهای دیگه‌ای برای انتقال دیتا برای بار اول استفاده کنید.

خروجی  گرفتن از اسکیما

من تو این سناریوی تست قصد دارم اسکیمای 'TEST_UNIDIRECTIONALGGS' رو به دیتابیس مقصد منتقل کنم پس یک dump از اسکیمای مبدا با مشخصات زیر می‌گیرم:

EXPDP SYSTEM/... \
DUMPFILE="TEST_UNIDIRECTIONALGGS.dmp"\
LOGFILE="EXP_TEST_UNIDIRECTIONALGGS.log"\
DIRECTORY=DATA_PUMP_DIR\
FLASHBACK_TIME=SYSTIMESTAMP\
COMPRESSION=METADATA_ONLY\
CONTENT=ALL\
SCHEMAS=('TEST_UNIDIRECTIONALGGS')

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

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

خب من برای راه‌اندازی سناریوی تست‌امون یک ماشین دیگه با مشخصات زیر آماده کردم که به عنوان مقصد ازش استفاده کنم:

همیشه یک DBA قبل اینکه گلدن‌گیت رو راه‌اندازی بکنه باید نقشه راهش رو بکشه و قوانین نامگذاری‌های سرویسها و مسیرهاش رو هم مشخص و داکیومنت بکنه

من نقشه راه سناریوی تستمون رو با Microsoft Visio به صورت زیر کشیدم:

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

سناریوی Unidirectional - قسمت ششم (سرویس Capture)

برای ساخت این سرویس اول از همه باید فایل پیکربندی اون رو بسازیم:

edit param eora1

و پیکربندی زیر رو درون اون قرار بدیم:

EXTRACT eora1 
USERID ggs, &
PASSWORD ggs
TRANLOGOPTIONS EXCLUDEUSER ggs, asmuser sys@ASM, asmpassword sys
ENCRYPTTRAIL AES128 KEYNAME supermaskey
EXTTRAIL dirdat/l1
DDL INCLUDE MAPPED
TABLE TEST_USER.*;

خط اول: ما مشخص میکنیم که یک سرویس extract به اسم eora1 میخوایم

خط دوم: مشخص میکنیم که نام‌کاربری ما چیه

خط سوم: پسورد رو کاربر گلدن‌گیتمون رو وارد میکنیم (می‌تونیم به صورت هش شده اون رو وارد کنیم)

نکته: توی گلدن‌گیت برای اضافه کردن سرویسها باید به صورت اسکرپت‌نویسی عمل کنیم یعنی هر خط اینجا یک دستور جدید محسوب میشه برای اینکه ادامه‌ی دستوری رو خط بعدش بنویسیم از & استفاده می‌کنیم 

خط چهارم: با دستور TRANLOGOPTIONS ما بر روی TRAIN Fileها مدیریت انجام می‌دیم یکی از آپشنهای این دستور EXCLUDEUSER هستش که با دادن کاربر ggs من از ایجاد loop جلوگیری کردم.

نکته: اگه دیتابیس شما با ASM پیکربندی شده چون Redo Log های ما در دیسک گروه‌های ASM وجود دارن و گلدن‌گیت نیاز داره به طور مستقیم با Online Redo Log Fileها کار بکنه ما باید مشخصات کاربر ASM رو هم بهش بدیم که اینکار رو با آپشنهای asmuser, asmpassword در دستور TRANLOGOPTIONS انجام می‌دیم.

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

هدف در زندگی - پله اول

هدف

هدف تو زندگی خیلی مهمه، اهداف هر شخص نشان دهنده شخصیت و خواسته‌های درونی اوست که حالات بیرونی او را شکل میدهد. نداشتن هدف از شما یک انسان بی هویت و پوچ میسازه که همیشه در حال زندگی کردن با حرف بقیه است،‌ داشتن هدف‌های مشخص باعث میشه شما بتونید با ایجاد مسیر گام به گام و همچنین سعی و تلاش به نتیجه مطلوب برسید.

اهداف در زندگی دارای درجه اهمیت گوناگون هستند و اولویت برخی از هدفها ممکنه در محور زمان برای انسان جا به جا شود و یا حتی انسان بخواهد برای دستیابی به هدفی هدف دیگری را قربانی کند، مثلا ممکنه شما هدفی با اولویت بالا برای مهاجرت/ ازدواج یا ... نداشته باشید اما شرایط محیطی را به شکلی جمع بندی کنید که موضوع در اهدافتان در اولویتی بالاتر قرار بگیرد.

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

سناریوی Unidirectional - قسمت پنجم (پیکربندی GLOBAL)

GLOBAL یک فایل بدون پسوند هستش که ما می‌تونیم تعدادی از پارمترهای عمومی رو درون اون مشخص کنیم و با بالا اودن سرویس‌های گلدن‌گیت این تنظیمات اعمال می‌شوند. تا نسخه‌های قبلی می‌تونستیم اسم CheckpointTable رو همینجا درون این فایل مشخص کنیم اما تو نسخه‌های جدید گلدن‌گیت دیگه به این پارمتر کاری نداره و ازش تبعیت نمیکنه و شما حتما باید موقع ساخت CheckpointTable اسمی رو هم براش انتخاب کنید

نمونه‌ای از فایل GLOBALS

CHECKPOINTTABLE CHKTABLE
GGSCHEMA GGS
ENABLEMONITORING

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