مشکلاتی با OBIEE 11.1.1.9.0

ممکنه شما هم مثل من بعد از stop کردن obi به مشکلات زیادی برای start اش بخورید

یه موضوعی که خیلی مهمه اینه که obi به فایلهاش خیلی حساسه مثلا اگه نتونه دایرکتوری زبان انگلیسی رو به هر دلیلی تو مسیر زیر ببینه OPMN استارت نمیشه:

/middleware/Oracle_BI1/bifoundation/web/msgdb

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

chown -R oracle:oinstall /middleware/

پس قبل اینکه شروع به بالا و پایین کردن اجزای obi کنید حتما چک کنید با کاربر oracle لاگین کرده باشید

یه موضوع حساس دیگه هم فایل host سیستم‌عامل‌ه اگه تغییر آی‌پی یا name داشتید حتما به فکر تغییرات عمده در کامپوننتهای obi و خصوصا وبلاجیکتون باشید

من به طور مرسوم از اسکریپت زیر برای استاپ و استارت کردن obi تو توزیع اوراکل لینوکس ۶ استفاده میکنم:

نکته: حتما حواستون باشه اسکریپت رو با کاربر اوراکل اجرا کنید.

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

خاموش کردن Oracle password expiration

برای اینکار کافیه پروفایل کاربر رو پیدا کنیم:

select profile from DBA_USERS where username = 'DBSNMP';

برای تغییر پروفایل به حالتی که پسوردها هیچوقت expire نشن از دستور زیر استفاده میکنیم:

alter profile MONITORING_PROFILE limit password_life_time UNLIMITED;

اگه میخواین چک کنید که تغییر درست اعمال شده:

select resource_name,limit from dba_profiles where profile='MONITORING_PROFILE';

از طریق em هم فقط کافیه با کاربر sys به مسیر زیر برید:

Server->Profiles->Default->Edit->Password->Expire in->Unlimited
۱۵ خرداد ۹۶ ، ۱۳:۴۴ ۰ نظر
مهدی غفاری

خطای اجرای OPMN در OBIEE 11.1.1.9.0

یه مشکلی که امروز بهش برخورد کردم این بود که بعد از start opmn به پیغام خطای زیر میخوردم:

"failed to start a managed process after the maximum retry limit"

هر بار بعد از ریبوت سیستم‌عامل هم این مشکل وجود داشت و کلاً این مشکل ساعتها وقتم رو گرفته

[bin]# ./opmnctl startall
opmnctl startall: starting opmn and all managed processes...
================================================================================
opmn id=newart.techpaste.com:6701
Response: 0 of 1 processes started.

ias-instance id=instance1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--------------------------------------------------------------------------------
ias-component/process-type/process-set:
webcache1/WebCache-admin/WebCache-admin/

Error
--> Process (index=1,uid=1508762676,pid=3781)
failed to start a managed process after the maximum retry limit
Log:
/home/oracle/Middleware/Oracle_WT1/instances/instance1/diagnostics/logs/WebCache/webcache1/console~WebCache-admin~1.log

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

پاک کردن آرشیو لاگ‌ها بدون استفاده از RMAN

عموماً ۲ تا روش برای پاک کردن آرشیو لاگ‌ها و باقی فایل‌های دیتابیس از دیسک گروپ‌های ASM بدون RMAN در اوراکل 10g/11g هستش

روش اولasmcmd - ASM command-line utility

ASMCMD> rm file_name
For ex:-
ASMCMD> rm '+dgroup2/testdb/archivelogs/thread_1_seq_363.510.1'
یا
ASMCMD> rm '+dgroup2/testdb/datafile/USERS.250.5334166963'

اگه از فرانویسه‌ها (Wildcard) استفاده می‌کنید، دستور rm میاد تمام فایلهای دارای تطبیق رو به غیر از دایرکتوریهای پر جستجو رو پاک میکنه مگر اینکه بیاین از آپشن r- استفاده کنید. دستور rm میتونه فایلها و aliasهایی رو پاک کنه که به صورت مستقیم توسط کلاینت و یا دیتابیس در حال استفاده نباشند.

روش دوم: SQLPLUS utility

SQL> ALTER DISKGROUP DROP file
For ex:-
SQL> ALTER DISKGROUP FLASH DROP FILE '+FLASH/testdb/archivelog/2009_08_11/thread_1_seq_363.510.1';

دستورات asmcmd و sqlplus هیچوقت ویوهای دیتابیسی V$ARCHIVED_LOG, V$FLASH_RECOVERY_AREA_USAGE و controlfileها و Recovery Catalog رو آپدیت نمیکنن

برای آپدیت ویوهای دیتابیس، control fileها و یا RMAN Catalogها شما نیاز به اجرای دستورات زیر در RMAN دارید

RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;

۱۰ خرداد ۹۶ ، ۰۹:۵۳ ۰ نظر
مهدی غفاری

ORAchk و EXAchk نسخه 12.2.0.1.3 بتا ریلیز شد

اخیراً ورژن بتایی از ORAchk 12.2.0.1.3 و EXAchk 12.2.0.1.3 ریلیز و برای دانلود در دسترس قرار داده شده

ORAchk:

https://support.oracle.com/epmos/faces/DocContentDisplay?id=1268927.2&parent=linkedin&sourceId=beta12_2_0_1_3

EXAchk:

https://support.oracle.com/epmos/faces/DocContentDisplay?id=1070954.1&parent=linkedin&sourceId=beta12_2_0_1_3

ویژگی‌های جدید:

  • آپگرید دیتابیس به 12.2 با اطمینان کامل
  • بهبود سرعت کوئری‌های SQL
  • ارسال ایمیل‌های هشدار و کنترل کننده با آنالیز دیتا
  • جلوگیری از خرابی‌ها و قطعی‌های Clusterware
  • محافظت در برابر مشکلات بحرانی در Exadataها و مشکلات دیسکهای پرسرعت Samsung NVM
  • جلوگیری از مشکلات و خرابی‌ها در file systemها و مشکلات حساس SuperClusterها

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

معرفی کتاب RMAN Recipes for Oracle Database 11g

از بهترین کتابهای موجود برای یادگیری RMAN همراه با انجام سناریوهای مختلف کتاب RMAN Recipes for Oracle Database 11g: A Problem-Solution Approach نوشته شده توسط Arup Nanda, Darl Kuhn و Sam R. Alapati انتشار یافته توسط انشارات Apress است.

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

انتقال SPFILE از file system به ASM در ORACLE RAC11g

  • ما یک رک ۲ نود داریم [rac1] و [rac2]
  • دستورات زیر رو از نود ۱ یعنی [rac1] اجرا میکنیم

مرحله اول: ساختن یک SPFILE در ASM و دیسک گروپ‌ه «RACDB_DATA+»

SQL> connect / as sysdba
SQL> show parameter spfile

NAME TYPE VALUE
------- ------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora

SQL> create pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initracdb11.ora' from spfile='/u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora';
#### OR Simply ####
SQL> create pfile from spfile
File created.

SQL> create spfile='+RACDB_DATA' from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initracdb11.ora';
File created.

SQL> exit

مرحله دوم: چک کردن SPFILE در ASM

[grid@rac1 ~]$ asmcmd

ASMCMD> ls RACDB_DATA/racdb1/spfile*
spfileracdb1.ora

ASMCMD> exit

مرحله سوم: ویرایش initracdb11.ora در rac1 و initracdb12.ora در rac2 برای اشاره به مسیر جدید SPFILE در ASM

[oracle@rac1 dbs]$ echo "SPFILE='+RACDB_DATA/racdb1/spfileracdb1.ora'" > /u01/app/oracle/product/11.2.0/db_1/dbs/initracdb11.ora
[oracle@rac1 dbs]$ ssh rac2 "echo \"SPFILE='+RACDB_DATA/racdb1/spfileracdb1.ora'\" > /u01/app/oracle/product/11.2.0/db_1/dbs/initracdb12.ora"

مرحله چهارم: آپدیت OCR با مسیر جدید SPFILE

[oracle@rac1 dbs]$ srvctl modify database -d racdb1 -p +RACDB_DATA/racdb1/spfileracdb1.ora

مرحله پنجم: ویرایش اسم‌های تمام SPFILEهای موجود در ORACLE_HOME/dbs$

[oracle@rac1 dbs]$ mv /u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora /u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora_bak

[oracle@rac1 dbs]$ ssh rac2 "mv /u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb12.ora /u01/app/oracle/product/11.2.0/db_1/dbs/spfileracdb12.ora_bak"

مرحله ششم: شروع مجدد تمام Instancesها برای سوییچ به SPFILE جدید

[oracle@rac1 dbs]$ srvctl stop database -d racdb1
[oracle@rac1 dbs]$ srvctl start database -d racdb1

[oracle@rac1 dbs]$ srvctl status database -d racdb1
Instance racdb11 is running on node rac1
Instance racdb12 is running on node rac2

مرحله هفتم: اتصال به دیتابیس و چک کردن مسیر SPFILE جاری

[oracle@racdb1 dbs]$ connect / as sysdba

SQL> SHOW parameter spfile

NAME TYPE VALUE
------ ----------- ------------------------------
spfile string +RACDB_DATA/racdb1/spfileracdb 1.ora

امیدوارم مفید بوده باشه

منبع:

https://emarcel.com/moving-spfile-from-file-system-to-asm-oracle-rac11g/#

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

حذف کامل Cygwin

ممکنه نیاز داشته باشیم بعد از کلی کار که توی "deploy کردن agent ویندوز با cygwin در OEM 13C" انجام دادیم Cygwin رو پاک کنیم.

خب برای اینکار setup نرم‌افزار رو اجرا کنید و تو مرحله انتخاب پکیج‌ها تیک همه پکیج‌هایی که نصب کردیم رو بردارید و next, next, finish

متاسفانه یسری فایل‌ها رو نصاب پاک نمیکنه که ما باید دستی برای حذفشون اقدام کنیم:

C:\> takeown /f C:\cygwin /r /d y
C:\> icacls C:\cygwin /t /grant everyone:F
C:\> sc \\localhost delete sshd

حالا تمام فایل‌های نصب پاک شدن. آخرین مرحله پاک کردن متغیرهای cyg_server و sshd هستش که میتونیم از مسیر زیر بهشون برسیم(مطمئن بشید به صورت مطمئن پاک بشن):

HKEY_CURRENT_USER\Software\Cygwin and HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin

منبع:

http://www.carajandb.com/en/blogs/blog-swinkler-en/190-oem-12c-agent-deploy-on-windows-no-problem-with-cygwin

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

نمایش کل متن sql از v$sql

خیلی وقتها که میخوایم وضعیت SQL STATEMENTهایی که یوزرها زدن رو ببینیم از ویوی V$SQL و معمولاً از کوئری‌ای شبیه زیر استفاده میکنیم:

select v.SQL_TEXT,
v.PARSING_SCHEMA_NAME,
v.FIRST_LOAD_TIME,
v.DISK_READS,
v.ROWS_PROCESSED,
v.ELAPSED_TIME,
v.service
from v$sql v
where to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss')>ADD_MONTHS(trunc(sysdate,'MM'),-2)

نکته: WHERE تو کوئری بالا به صورت اختیاریه ولی درکل یادمون باشه میتونیم با استفاده از فیلد FIRST_LOAD_TIME رو تاریخ و زمان اجرای اون کوئری مانور بدیم تا گزارشهای بهتری داشته باشیم.

همونطور که می‌بینید ما اکثر مواقع از فیلد SQL_TEXT استفاده میکنیم ولی با توجه به اینکه میدونیم محدودیت کاراکتری VARCHAR2 دقیقا ۱۰۰۰ کاراکتره احتمالا خیلی از دستورات رو نمیتونیم به صورت کامل ببینیم

اینجاست که بهتره بدونیم V$SQL و V$SQLAREA شامل فیلدی به اسم SQL_FULLTEXT هستن که این فیلد تمام دستور SQL کاربر رو تو دیتاتایپ CLOB ذخیره میکنه پس میشه رشته‌ها رو تا حداکثر سایزی که یک STATEMENT میتونه باشه رو نشون داد(۴۰۰۰ کاراکتر) بیاین باهم ببینیم که چجوری میشه رشته‌ها رو از این فیلد استخراج کرد.

set linesize 132 pagesize 999
column sql_fulltext format a60 word_wrap
break on sql_text skip 1

select
replace(translate(sql_fulltext,'0123456789','999999999'),'9','')
SQL_FULLTEXT
from v$sql
where sql_text like '%TEXT IDENTIFIER%'
group by replace(translate(sql_fulltext,'0123456789','999999999'),'9','')
/

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

SQL_FULLTEXT 
------------------------------------------------------------ 
select /*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
... query text ...
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */ from b

امیدوارم براتون مفید باشه

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

مقدمه‌ای بر پلتفرم Oracle Fusion Middleware

میخوایم راجع به ارتباط Fusion Middleware با Weblogic صحبت کنیم و بیشتر با کاربردهای این ابزار آشنا بشیم:

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