نصب پایگاه داده اوراکل 12c بر روی فدورا 20

قبل از خواندن این راهنما، اوراکل را بر روی فدورا نصب نکنید!!
این مقاله نصب پایگاه داده اوراکل 12c ریلیز 1 نسخه 64 بیتی را بر روی فدورا ۲۰ نسخه ۶۴ بیتی توضیح می‌دهد. این مقاله بر مبنای نصب اوراکل بر روی سرور با حداقل ۲ گیگابایت swap و لینوکس امن در حالت permissive را آموزش می‌دهد برای نمونه ای از این نوع نصب می‌توانید اینجا را ببینید.

دانلود نرم افزار

با توجه به شرایط پشتیبانی‌تان، نرم افزار اوراکل را از اوتی‌ان یا ام‌او‌اس دانلود کنید.

(OTN: Oracle Database 12c Release 1 (12.1.0.1) Software (64-bit

(edelivery: Oracle Database 12c Release 1 (12.1.0.1) Software (64-bit

بازکردن فایل‌ها
فایل ها را از حالت زیپ خارج کنید.

unzip linuxamd64_12c_database_1of2.zip
unzip linuxamd64_12c_database_2of2.zip

حالا شما می‌بایست یک دایرکتوری به نام database داشته باشید که شامل فایل‌های نصبی شود.

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

قبل از خواندن این راهنما، اوراکل را بر روی فدورا نصب نکنید!!

مقالات زیادی درباره‌ی چگونگی نصب محصولات اوراکل بر روی نسخه‌های متعدد لینوکس وجود دارد، که توزیع فدورا هم یکی از آنها محسوب می‌شود. پیش از شروع فرآیند نصب هر گونه محصول اوراکل بر روی فدورا، حتما نکاتی که در زیر به آنها اشاره شده است را در نظر بگیرید.
 
س: آیا توزیع فدورا پشتیبانی هم می‌شود؟
ج: نه، این‌طور نیست. شما هرگز نباید نصب‌ محصولات اوراکل بر روی فدورا را جدی بگیرید!
 
س: چرا مقالاتی برای نصب محصولات اوراکل بر روی فدورا وجود دارد؟
ج: بسته‌های فدورا به زودی جایگزین بسته‌های RHEL می‌شوند؛ به همین خاطر من(یا بقیه) به شکل تفننی این‌جور چیزها را بر روی فدورا نصب می‌کنیم که ببینیم نتیجه‌شان چه می‌شود. چنین حرفی اصلا و ابدا رابطه‌ای با منطقی بودن این کار ندارد.
 

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

مقدمه‌ای بر High Availability و Oracle Active Data Gurd

تغییر شرکتها و وابستگی روز افزون آنها به راه‌کارهای فناوری اطلاعات

در حال حاضر سازمانها دارن به سمت اتوماسیون و راهکارهای فناوری اطلاعات پیش می‌روند. علت آن نیز این است که با استفاده از فناوری اطلاعات می‌توان هزینه‌ها را کم و سرعت کارها را بالا و فرآیندهای شرکت رو بهبود بدیم و در کل نظم و کنترل بیشتری روی کارها داشته باشیم به همین علت است که شرکتها به راهکارهای فناوری اطلاعات رو آوردند.

نیاز به دسترسی پایدار و سریع

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

افزایش حجم اطلاعات به مرور زمان و اهمیت نگهداری آنها

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

اهمیت حداکثر پایداری

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

هزینه‌های مستقیم: از دست دادن بهره‌وری و درآمد
هزینه‌های غیر مستقیم: لطمه زدن به روابط ذینفعان و مشتریان سازمانی، تبلغات بد و بروز شکایت از سازمان به سازمانهای نظارتی و بالادستی

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

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

نحوه برطرف کردن خطای ORA-12560

برای رفع خطای زیر:

ORA-12560: TNS:protocol adapter error

ابتدا:

  1. با استفاده از run در ویندوز برنامه مدیریت سرویس‌ها را باز کنید: Services.msc
  2. با جستجو در سرویس‌ها، سرویس OracleServiceORCL را پیدا و اگر سرویس stop بود با کلیک بر روی start آن را اجرا نمایید
  3. با زدن دستور زیر در cmd از عملکرد سرویس اوراکل مطمئن شوید:
tnsping < tnsalias >

یافتن tnsalias

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

F:\app\Mahdi\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora

با بازکردن این فایل، پیکربندی‌های مربوط به شبکه را باید مانند زیر ببینید:

# tnsnames.ora Network Configuration File: F:\app\Mahdi\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mghaffari)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

عبارت جلوی HOST همان آدرس سرور اوراکل شماست.
نکته: اگر مقادیر موردنظر را در این فایل نمی‌بینید با استفاده از این نوشته listener را دوباره کانفیگ نمایید.

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

C:\Users\Mahdi>tnsping ORCL

TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 16-SEP-2
014 18:22:38

Copyright (c) 1997, 2013, Oracle. All rights reserved.

Used parameter files:
F:\app\Mahdi\product\12.1.0\dbhome_1\network\admin\sqlnet.ora

Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTO
COL=TCP)(HOST=fe80::d11c:66bf:7c73:17c0%8)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HO​
ST=fe80::d11c:66bf:7c73:17c0%8)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=169.254.​
23.192)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=169.254.23.192)(PORT=1521))(ADDR​
ESS=(PROTOCOL=TCP)(HOST=192.168.1.6)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192​
.168.1.6)(PORT=1521)))
OK (0 msec)

C:\Users\Mahdi>
۰۸ ارديبهشت ۹۴ ، ۲۰:۵۱ ۳ نظر
مهدی غفاری

Stop-Start سرویس‌های ویندوزی با استفاده از کاربر محدود شده

بدون شرح

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

نمایش لیست تمام کاربران

برای نمایش لیست تمام کاربران می‌توانید از کوئری زیر استفاده کنید:

select * from all_users;

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

select * from dba_users;
۰۸ ارديبهشت ۹۴ ، ۲۰:۳۵ ۰ نظر
مهدی غفاری

نحوه بک‌آپ گیری با RMAN به صورت TimeBase

برای بک‌آپ گیری با RMAN ابتدا باید محل ذخیره‌سازی پیش‌فرض فایل‌های بک‌آپ رو مشخص کنیم.

مرحله اول

دایرکتوری مورد نظر رو ایجاد می‌کنیم:

C:\Users\Mahdi>md F:\app\Backup

C:\Users\Mahdi>dir F:\app
Volume in drive F has no label.
Volume Serial Number is 76E1-CF78

Directory of F:\app

09/18/2014 01:31 AM <DIR> .
09/18/2014 01:31 AM <DIR> ..
09/14/2014 08:19 PM <DIR> Backup
09/12/2014 06:41 AM <DIR> Mahdi
0 File(s) 0 bytes
4 Dir(s) 304,982,249,472 bytes free

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

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

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

مقدمه

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

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

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

تراکنش‌های خودمختار

تراکنش‌های خودمختار به شما اجازه می‌دهند که محیط یک تراکنش فراخوانی را ترک کنید، تراکنش‌های خودمختار انجام دهید، و بدون تاثیرگذاری بر روی شرایط یک تراکنش فراخوانی به آن برگردید. تراکنش‌های خودمختار با تراکنش‌های فراخوانی پیوندی ندارند، بنابراین تنها داده‌های متعهد را می‌توان بین هر دو تراکنش به اشتراک گذاشت. 
انواع بلوک‌های PL/SQL می‌توانند به عنوان تراکنش‌های خودمختار تعریف شوند: 
پروسه ها و توابع ذخیره شده 
روش های محلی و توابع تعریف شده در یک بلوک اعلان PL/SQL. 
پروسه‌ها و توابع بسته‌بندی شده. 
روش‌های تایپ
بلوک‌های ناشناس در سطح بالا 
ساده‌ترین راه برای درک معاملات خودمختار این است که در عمل آنها را ببینید. برای این کار، ما یک جدول آزمون ایجاد و آن را با دو ردیف پر می‌کنیم. توجه کنید که داده‌ها متعهد نیستند.

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

دو تا از ریف‌هایی که توسط جلسه‌ی کنونی ما (تراکنش) عقب کشیده شده اند، در حالیکه ردیف‌های قرارداده‌شده توسط تراکنش‌های خودمختار باقی مانده آند. حضور دستوردهنده‌ی کامپایلر PRAGMA AUTONOMOUS_TRANSACTION باعث شده که بلاک خودمختار در تراکنش خودش اجرا شود، و به همین خاطر جمله داخللی متعهد بر روی تراکنش فراخوانی تاثیری نداشته است. در نتیجه رول‌بک همچنان قادر به تاثیرگذاری بر روی دی‌ام‌ال اعمال شده توسط جمله‌ی کنونی بود
تراکنش‌های خودمختار عموما توسط روال لاگ‌کردن خطاها استفاده می‌شوند. در چنین جاهایی، پیام/ های خطا می‌بایست بدون توجه به وضعیت تعهد/رول‌بک تراکنش نگهداری شوند. برای نمونه، جدول زیر شامل پیام‌های خطای اساسی می‌شود.
ما بری لاگ کردن پیام های خطا به عنوان یک تراکنش‌های خودمختار، یک فرآیند تعریف می‌کنیم.
کد زیر بر روی خطا تمرکز می‌کند، که گرفته شده و لاگ شده است.
با توجه به این کادر می‌توانیم ببینیم که تراکنش LOG_ERRORS  از تراکنش خودمختار جدا بوده است. اگر چنین نبود، می‌توانستیم توقع داشه باشیم که اولین کد قرار داده شده در بلاک خودمختار توسط جمله متعهد در فرآیند theLOG_ERRORS نشان داده شود.
مراقب باشید که به چه شکلی ازتراکنش خودختار استفاده می‌کنید. اگر از آنها بدون ترتیب و آرایش خاصی استفاده شود می‌تواند منجر به ددلاک شده و در جلسه رهیابی اختلال ایجاد کنند. برای روشن کردن این نکته به این نقل قول از تام کایت توجه کنید:
«...در بیشتر مواقعی که شما مجبور به استفاده از تراکنش خودمختار هستید، این بدین معناست که احتمالا شما یک مشکل جدی در رابطه با تمامیت داده ها دارید که هنوز درباره‌اش فکری نکرده‌اید.
مردم کجاها از آنها استفاده می‌کنند؟
-در آن آغازگری که فرآیندی که متعهد می‌شود رافرا می‌خواند (نه یک روال لاگ‌کردن خطا). چنین چیزی موقع رول‌بک کردن دردناک است.
-در آن آغازگری که برای جدول در حال جهش، مانع ایجاد می‌کند. درد چنین چیزی حتی بیشتر از قبلی است Smile

با لاگ‌کردن خطاها مشکلی نیست؛
اما با بیشتر چیزهای دیگه، هست.

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

اجرای trigger همزمان با logon به سیستم

میخوام یه trigger بنویسم که با login هر کاربر اجرا بشه و مثلاً نام کاربر رو ذخیره کنه:

CREATE OR REPLACE TRIGGER logonauditing
AFTER LOGON ON application.schema
DECLARE
machinename VARCHAR2(64);
osuserid VARCHAR2(30);
session_id_part1 NUMBER;
session_id_part2 NUMBER;
CURSOR c1 IS
SELECT osuser, machine, sid, serial#
FROM v$session WHERE audsid = userenv( 'sessionid' );
BEGIN
OPEN c1;
FETCH c1 INTO osuserid, machinename, session_id_part1, session_id_part2;
INSERT INTO LOGON_table(osuser, machine, logon_time, session_id_1, session_id_2)
VALUES ( osuserid, machinename, sysdate,session_id_part1, session_id_part2);
CLOSE c1;
COMMIT;
END;

نکته: میشه از AUDIT CONNECT به جای trigger استفاده کرد (اوراکل فعالیت‌های ورود و خروج رو تو audit trail ذخیره می‌کنه)، می‌تونید پیشنهاد تام در این باره رو از اینجا ببینید.

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