۲۹ مطلب با کلمه‌ی کلیدی «oracle» ثبت شده است

خاموش و روشن کردن listener

اگر listener oracle شما خوابیده است ابتدا وارد Oracle Net Manager شوید و از وجود Service Namingها به ازای هر مخزن اطمینان حاصل کنید (اگر ۲ مخزن دارید به ازای هر مخزن باید یک SN موجود باشد). مانند شکل زیر:

با زدن show advanced می‌توانید تنظیمات مختلف شنونده را برای مخزن موردنظر انجام دهید.

برای اضافه یا حذف listenerها به ابزار Net Configuration Assistant مراجعه می‌کنیم. Listener configuration را انتخاب و Next می‌کنیم.

(برای اجرای این ابزار می‌توانید بر روی shortcut این نرم‌افزار در سیستم‌عامل خود کلیک کنید و یا با زدن netca در شل سیستم‌عاملتون این نرم‌افزار را اجرا کنید.)

 

به طور معمول برای stop کردن listener من خودم شخصاً deleteاش می‌کنم و دوباره add می‌کنم.

بعد از انتخاب delete بر روی Next کلیک می‌کنیم:

نکته: اگر پورت listener را عوض کرده‌اید، الزاماً باید وارد Net Manager شوید و از این طریق پورت مخزن مورد نظر را به پورت جدید listener اتصال دهید.

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

مقدمه‌ای بر Oracle Streams

همانطور که گفتم در نسخه‌های اخیر Oracle GoldenGate جایگزین Oracle Streams شده

در بحث Oracle DataGuard قضیه sync بین primaryها و standbyها یکطرفه است. ولی در سناریو Streaming شما می‌تونید sync دوطرفه داشته باشید. یعنی ۲ تا پایگاه داده داشته باشید که در هر ۲ وقتی کاربران اطلاعات وارد و یا آپدیت می‌کنن اطلاعات نوشته میشه و در نهایت این ۲ سرور اط نظر اطلاعات یکی هستند.

همچنین شما می‌تونید کاربرد خاص‌تری از streaming بگیرید و فقط یکسری از جداول و schema های خاص رو در هر ۲ باهم sync کنید.(از سرور مبدا به سرور مقصد)

Oracle Streams یا Oracle GoldenGate قابلیت انعطاف‌پذیری بسیار بالایی داره، شما می‌تونید حتی دیتابیس اوراکل رو با پایگاه‌‌داده‌های دیگه‌ای غیر از اوراکل (مثل DB2, SQL Server, ...) بیاین و sync کنید.

۰۲ خرداد ۹۴ ، ۱۲:۲۲ ۰ نظر
مهدی غفاری

مقدمه‌ای بر معماری Oracle Data Guard

خب میخوایم یه ذره راجع به DataGuard و انواع اون صحبت کنیم.

پرکاربردترین نوع Oracle Data Guard نوع Physical Standby هست. توی Physical Standby دیتابیس شما در وضعیت readonly قرار می‌گیره و تضمین میکنه که داده‌های شما از بین نمیره در صورتی که دیتابیس‌ها باهم sync باشند.

نحوه کپی اطلاعات برای sync کردن توسط Archive Redo Logsها هستش. در حقیقت وقتی Archive Redo Log File ها در سمت دیتابیس primary ساخته میشه به سمت سرور standby فرستاده میشه و با استفاده از standby Redo Log File ها بر روی سرور standby قرار می‌گیرند (apply می‌شوند)

همچنین شما می‌تونید از سرور physical standby بک‌آپ هم بگیرید.

به شکل زیر توجه کنید:

خب همانطور که گفتم physical standby به صورت readonly هستش، حالا اگر شما می‌خواهید تغییراتی در سرور standby داشته باشید باید این دیتابیس در وضعیت read/write قرار بگیره.

برای انجام اینکار باید سرور physical خود را به سرور logical تبدیل کنید. توی این حالت redo فایلها تبدیل به دستروات sql میشه و بعد بر روی سرور logical شما apply میشه.

کاربرد این حالت بیشتر روی سرورهای گزارش‌گیر هستش که شما می‌تونید indexهای متفاوت و یا materialized view های متفاوت تعریف کنید و یا برای تیم‌های دولوپ که فرضاً احتیاج به یسری بک‌آپ از سرور دارند می‌تونند از این سرور logical استفاده کنند و بک‌آپ‌ها رو روی این سرور import کنن و ازش استفاده کنند.

مثال

فرض کنید database primary شما در تهران است، می‌خواهیم ۲تا سایت داشته باشیم و به صورت ریموت از این ۲تا سایت استفاده کنیم که اگر زمانی مشکلی برای سرور تهران پیش اومد شما به physical standby که در تبریز هست سوییچ کنید بدون اینکه مشکلی توی سیستم به وجود بیاد همچنین می‌تونیم یک logical standby توی یک شهر دیگه فرضاً شیراز داشته باشیم و از این logical برای گزارش‌گیری استفاده کنیم و یا حتی از logical به عنوان یک سرور standby دیگه استفاده کنیم و روش سوییچ بزنیم.

قابلیت Far Sync - Road Map

این قابلیت در نسخه 12c معرفی شده که در این تکنولوژی دیگه instance اهمیتی نداره و پهنای باند شما هر چقدر باشه با استفاده از این تکنولوژی می‌تونید سرور stanby رو راه‌اندازی و مدیریت کنید.

در این قابلیت شما می‌تونید چندین دیتابیس stanby داشته باشید که سرور primary اونها رو سرویس میده.

در این حالت شما می‌تونید هم سرور Physiacl Standby داشته باشید و هم Logical Standby

معماری این حالت هم شبکه ۱ به n هست یعنی شما می‌تونید n تا سرور داشته باشید که از سمت primary به standby ها آرشیوها ارسال بشود.

همچنین در سرعت‌های پایین شبکه نیز این معماری قابل استفاده است.

به طور خلاصه:

  • پشتیبانی از چند دیتابیس standby
  • استفاده از Pgusical & Logical Standby
  • معماری شبکه یک به چند
  • پشتیبانی در سرعت‌های پایین شبکه
۰۲ خرداد ۹۴ ، ۱۱:۲۰ ۰ نظر
مهدی غفاری

تفاوت SQLj و PL/SQL

دید ما در SQLj این است که در اصل جاوا می‌نویسیم، بعد برنامه جاوایی‌مون رو به عنوان procedure یا function به دیتابیس معرفی می‌کنیم. خب با زبانی مانند جاوا دست شما بسیار بازتر از PL/SQL است.

در حقیقت می‌توان تو سطح خود دیتابیس اوراکل میشه procedure یا function نوشت که از spring ioc استفاده کند. پس می‌توان از تمام کتابخانه‌ها، فریم‌ورک‌ها، ابزارهای جاوا در داخل اوراکل استفاده کرد.

حتی می‌توان تو سطح خود اوراکل RMI سرور راه‌اندازی کرد و از بیرون innovaction رو انجام داد و اصلاً از JDBC استفاده نکرد. فقط مدل کانکشن شما عوض میشه و دیگه به صورت jdbc:oracle:thin:@localhost:1521 نیست و باید به صورت Internal Connection به دیتابیس وصل شوید. (jdbc:default)

بعد زیر ساخت خود اوراکل هم SQL-j است یعنی خیلی از functionهای رمزنگاری و Hashingای که خود اوراکل استفاده می‌کنه SQL-j است.

باید توجه داشته باشید که در خیلی از پروژه‌ها PL/SQL راهکار مناسبی ارائه نمی‌دهد و حتماً باید از SQLj استفاده کرد:

مثال راه‌اندازی کلاستر دستی (نه خود دیتابیس اوراکل رو کلاستر کنید) و load balancer ایجاد کنید نمی‌توانید از PL/SQL استفاده کنید و حتماً باید از SQL-j استفاده کنید. 

همچنین به عنوان مثال می‌توان از Hibernate در خود دیتابیس استفاده کرد.

همچنین در DB2 ما Store Procedure و SQL-j را داریم و جالبه بدونید SQL-j محصول شرکت IBM است.

۲۹ ارديبهشت ۹۴ ، ۱۶:۵۹ ۰ نظر
مهدی غفاری

ایجاد پروفایل

مستند اوراکل

CREATE PROFILE

مقدمه

نکته: role دلالت بر قدرت یک کاربر دارد در حالی که profile دلالت بر ضعف یک کاربر دارد. شما با دادن role های مختلف به کاربر آن کاربر را قوی می‌کنید و با ایجاد profile برای کاربر آن کاربر را محدود خواهید کرد.

profile بر ۲ دسته تقسیم می‌شود. یعنی ۲ نوع تنظیم(محدودیت) را می‌تواند در داخل خودش داشته باشد.

  1. تنظیمات سخت‌افزاری و physical
  2. تنظیمات امنیتی

نکته: توی اوراکل ما با profile می‌توانیم محدود کنیم یک کاربر را که چند بلاک از cpu‌ را توی سرور ما اشغال کند.

نکته: با ایجاد Profile به این نکته پی خواهید برد که چقدر دیتابیس در اپلیکیشن تاثیر گذار است.

ادامه مطلب...
۱۹ ارديبهشت ۹۴ ، ۱۸:۱۹ ۰ نظر
مهدی غفاری

ساختار کامل ایجاد کاربر همراه با تعریف Default Tablespace

به مستند زیر توجه کنید:

CREATE USER

CREATE USER sidney 
    IDENTIFIED BY out_standing1 
    DEFAULT TABLESPACE example 
    QUOTA 10M ON example 
    TEMPORARY TABLESPACE temp
    QUOTA 5M ON system 
    PROFILE app_user 
    PASSWORD EXPIRE;

این ساختار کلی و کامل تعریف یوزر در اوراکل است. همونطور که می‌بیندی هر یوزر موقع ایجاد یک DEFAULT TABLESPACE دارد که اگر مقداردهی نشود با DEFAULT TABLESPACE پیش‌فرض خود اوراکل مقداردهی می‌شود.

پس اگر table در این یوزر تعریف بشود و این یوزر schema یک جدول باشد (مالک یک جدول باشد) و آن جدول به یک tablespace اتصال داده نشده باشد اوراکل از DEFAULT TABLESPACE استفاده می‌کند.

تمامی یوزرها در اوراکل به صورت پیش‌فرض DEFAULT TABLESPACE اشون tablespace یوزر 01 است که محدودیتی ندارد.  

نکته: اگر خودتان به صورت دستی جدولی را به tablespace ای اتصال دهید دیگر جدول وارد default tablespace نمی‌شود و وارد آن tablespace موردنظرتان می‌شود.

نکته: اگر بخواهیم temporary tablespaceها را زمانی که پر شده خالی کنیم در وقتی که به هر دلیلی توسط دیتابیس به طور خودکار clear نمی‌شوند

باید به صورت دستی temporary tablespace را drop کنیم. 

temporary tablespace زمانی توسط اوراکل استفاده میشه که tablespace اصلی ما به مشکل بخوره (آفلاین بشه،‌مشکلی براش پیش بیاد)

temporary tablespace یه واحدیه بعد از Redo و قبل از DataFile که زمانی که مشکلی برای DataFile شما پیش بیاید temporary tablespace سریع جایگزین خواهد شد.

چند مثال از نحوه ایجاد کاربر:

Create user mahdi identified by 123 password expire;

در این صورت کاربر بعد از اولین ارتباط با بانک باید دستور password را جهت تغیر password وارد نماید.

Create user mahdi identified by 123 password expire account lock;

در این صورت بعد از تغییر پسورد توسط کاربر اکانت کاربر قفل می‌شود.

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

Oracle Users

۱۷ ارديبهشت ۹۴ ، ۲۰:۴۱ ۰ نظر
مهدی غفاری

Partitioning

Partitioning تو ۹۰ درصد مواقع به درد ما نمی‌خوره ولی زمانی که روی (Very Large Database (VLDB کار می‌کنیم که یک جدول ممکنه ۱ گیگ باشه اونوقت باید از تکه تکه کردن یا همون Partitioning استفاده کنیم.

چرا از Partitioning استفاده می‌کنیم؟

یه جدول ۱۰۰ گیگی رو در نظر بگیرید برای کش جدولی که به صورت فیزیکی ۱۰۰ گیگه تقریباً حداقل ۱۶ گیگ رم نیاز داریم، اما وقتی ما ۲ گیگ بیشتر رم نداریم باید چی کار کنیم؟ تو این شرایط اوراکل نمی‌تونه کش رو یکجا انجام بده پس به صورت پیش‌فرض اوراکل کش را تکه تکه انجام میده یعنی قسمتی را وارد SGA می‌کند و پردازش می‌کند و بعد از پردازش قسمتی دیگر را وارد SGA می‌کند و پردازش می‌کند. حتی اگر where هم گذاشته باشید این اتفاق بازهم می‌افته کل جدول رو تیکه تیکه میاره تو فضای SGA و توسط PGA پردازش می‌کنه و به همین ترتیب تا پایان پردازش کل جدول ادامه میده.

توی ۹۰ درصد مواقع شاید من لازم داشته باشم به این روش عمل کنم:

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

نصب و راه‌اندازی Oracle Database 12C RAC در ویندوز سرور ۲۰۱۲ با استفاده از VirtualBox

این نوشته درباره چگونگی نصب و پیکربندی Oracle Database 12C RAC در ویندوز سرور ۲۰۱۲ ورژن Standard با استفاده از VirtualBox و بدون فضای ذخیره‌سازی مشترک اضافی به صورت یک پیکربندی کامل است.

مقدمه

یکی از بزرگترین مشکلات به هنگام آزمایش محیط‌های RAC، نیاز آنها به فضای ذخیره‌سازی مشترک است. در یک محیط عملی، فضای ذخیره‌سازی مشترک معمولاً توسط یک دستگاه پیشرفته‌ی NAS یا SAN تامین می‌شود، اما اگر قصد شما تجربه‌ی نصب و استفاده از RAC باشد، هر دوی این گزینه‌ها بسیار بیشتر از آن‌چه باید برای شما خرج برمی‌دارند. راهکار ارزان‌تر، استفاده از یک دیسک فایروایر (FireWire) متصل است تا امکان دسترسی، دیسک‌(های) یکسان برای ماشین‌ها فراهم شود. هر چند که این راهکار هم به پول احتیاج دارد و نیازمند حداقل ۲ سرور است. راهکار سوم، استفاده از مجازی‌سازی برای شبیه‌سازی فضای ذخیره‌سازی مشترک است.

با استفاده از VirtualBox می‌توان چندین ماشین‌مجازی (VM) را بر روی یک سرور اجرا کرد و اجرای هر دو گروه RAC بر روی یک ماشین را ممکن می‌سازد. به علاوه چنین‌کاری شما را در قادر خواهد ساخت دیسک‌های مجازی مشترک راه‌اندازی کنید و بر مشکلات مربوط بر گرانی فضاهای ذخیره‌سازی مشترک فائق بیابید.

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

session در اوراکل

هرگاه کاربری به بانک اطلاعاتی متصل گردد، بانک اطلاعاتی برای کاربر مذکور یک جلسه یا همان SESSION ایجاد می‌کند، با استفاده از دستور زیر می‌توان کاربرانی که با نام کاربری SYSTEM به اوراکل متصل شده‌اند را مشاهده کرد.

SELECT SERIAL# , SID , USERNAME , MACHINE , STATUS , PROGRAM FROM V$SESSION WHERE USERNAME =’SYSTEM’;

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

ALTER SYSTEM KILL SESSION ’75,20’;

دقت داشته باشید که عدد 75 به SID اشاره کرده و عدد 20، SERIAL# است. برای یافتن تعداد SESSION های فعال می‌توان از دستور زیر استفاده کرد.

SELECT SESSIONS_CURRENT FROM V$LICENSE;
۱۷ فروردين ۹۴ ، ۱۹:۱۵ ۰ نظر
مهدی غفاری