مشاوره و پشتیبانی #پایگاه داده #هوش تجاری

۱۱۱ مطلب با موضوع «پایگاه‌داده :: Oracle DBA» ثبت شده است

حذف آرشیولاگها در ASM به صورت دستی از طریق ASMCMD

لاگین به سرور با کاربر سیستم‌عامل grid

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

(در این ابزار دستورات پایه خط فرمان همانند خط فرمان لینوکس قابل استفاده هستند)

به ترتیب برای حذف آرشیولاگها از دستورات زیر استفاده میکنیم:

[grid@mdc-dwh-pri ~]$ asmcmd
ASMCMD> cd fra/dwh/archivelog
ASMCMD> ls
2017_06_28/
2017_06_29/
ASMCMD> rm -rf *
۰۸ تیر ۹۶ ، ۰۵:۵۴ ۰ نظر
مهدی غفاری

خاموش کردن 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
۱۵ خرداد ۹۶ ، ۱۳:۴۴ ۰ نظر
مهدی غفاری

پاک کردن آرشیو لاگ‌ها بدون استفاده از 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ها

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

انتقال 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/#

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

نمایش کل متن 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

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

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

نحوه حذف UNDO Tablespace

خب همونطور که می‌دونید حذف کردن tablespace undo به این سادگی‌ها نیست. یه بار که میخواستم به دلایلی اینکارو انجام بدم فهمیدم که اصلاً حذف tablespace undo راحت نیست و همش با خطای زیر مواجه میشدم:

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ---------------------------------------------------------------------
USERS                          D:\ORACLE\ORADATA\NOIDA\USERS01.DBF
UNDOTBS1                       D:\ORACLE\ORADATA\NOIDA\UNDOTBS01.DBF
SYSAUX                         D:\ORACLE\ORADATA\NOIDA\SYSAUX01.DBF
SYSTEM                         D:\ORACLE\ORADATA\NOIDA\SYSTEM01.DBF
EXAMPLE                        D:\ORACLE\ORADATA\NOIDA\EXAMPLE01.DBF

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

راهنمای سریع بازیابی گام به گام بلاک‌های خراب با استفاده از RMAN

میخواهیم مثال ساده‌ای از چگونگی به کارگیری ویژگی بازیابی بلاک‌های خراب با RMAN را ارائه دهیم. اگر دیتابیسی تمام وقت 24/7 دارید و نمی‌توانید آن را خاموش کنید می‌توان از بازیابی بلاک برای رفع خرابی بلاک‌های دیسک استفاده کنید. این ویژگی همچنین راهی سریع برای چک کردن بودن یا نبودن بلاک‌های خراب در دیتابیس را فراهم میکنه. یادتون باشه بک‌آپ‌های گرفته شده با RMAN صحت کارکردن دیتابیس را تایید نمیکنن.

خب پس rman را در حالت nocatalog یا catalog-mode اجرا کنید و به دیتابیس از طریق rman وصل شوید.

اگه لازمه از یه بک‌آپ قدیمی که کنترل فایل اون در repository اطلاعات RMAN شناخته سده نیست بازیابی رو انجام بدید، ممکنه لازم باشه از از catalog-mode استفاده کنید.

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

$ rman target / nocatalog
or
$ rman target sys/<sys_password> nocatalog

دستور تایید اعتبار که شامل “check logical” است را اجرا کنید.

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

دستورات کاربردی لینوکس برای DBAها

تو لینوکس همه چی به صورت فایل‌ه (دایرکتوری، فایل، دیوایس‌ها، پراسس‌ها و ...) خب از کجا بفهمیم یک فایل به صورت دایرکتوری هستش یعنی فایلی که فایلهای دیگه رو درون خودش آدرس‌دهی کرده برای اینکار از دستور زیر استفاده می‌کنیم:

[root@db01 ~]# ls -l
total 104
-rw-------. 1 root root  1808 May 17 11:06 anaconda-ks.cfg
drwxr-xr-x. 2 root root  4096 May 17 11:11 Desktop
drwxr-xr-x. 2 root root  4096 May 17 11:11 Documents
drwxr-xr-x. 2 root root  4096 May 17 11:11 Downloads
-rw-r--r--. 1 root root 51955 May 17 11:06 install.log
-rw-r--r--. 1 root root 10033 May 17 11:04 install.log.syslog
drwxr-xr-x. 2 root root  4096 May 17 11:11 Music
drwxr-xr-x. 2 root root  4096 May 17 11:11 Pictures
drwxr-xr-x. 2 root root  4096 May 17 11:11 Public
drwxr-xr-x. 2 root root  4096 May 17 11:11 Templates
drwxr-xr-x. 2 root root  4096 May 17 11:11 Videos

تو اطلاعات permision‌ فایل اگه اولین حرف d بود یعنی دایرکتوری‌ه و اگه - یعنی فایل‌ه

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

برگزاری ورکشاپ تخصصی مدیریت پایگاه داده اوراکل

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

https://evand.ir/events/oracle

۳۱ شهریور ۹۵ ، ۱۲:۰۴ ۰ نظر
مهدی غفاری