وبلاگ امیررضا رستنده



این قابلیت در نسخه 12.1.0.2 (Enterprise) اضافه شد. این قابلیت در واقع یک property برای جداول است و مشخص می کند که سطرها با چه ترتیبی و چگونه باید کنار هم (به صورت فیزیکی) بر اساس مقادیر یک یا چند ستون دسته بندی و ذحیره شوند.

(توجه کنید که این قابلیت با Table Cluster تفاوت دارد)

با این کار اطلاعاتی که به طور متناوب آنها را با هم می خواهیم در بلاک های پشت سر هم ذخیره می شوند و بنابراین باعث افزایش چشمگیر سرعت اجرای دستورات خواهیم بود.

ادامه مطلب

سلام

میخواهیم یک جدول را از یک اسکیما به اسکیمای دیگر کپی کنیم. مثلاً فرض کنید که جدول source_tbl  را می خواهیم به جدول با نام target_tbl در اسکیمای دیگر منتقل کنیم. می دانیم که این کار به روش های متفاوتی قابل انجام است:

  • استفاده از دستور create table as select
  • استفاده از ابزار data pump
  • استفاده از قابلیت exchange

دو روش اول شناخته شده تر و متداول تر هستند اما روش سوم به ندرت استفاده می شود و خیلی ها از این ویژگی مطلع نیستند. با استفاده از این روش با سرعت بالا می توانید نسبت به جابجایی اطلاعات اقدام کنید. در اینجا می خواهم روش سوم را به شما دوستان نشان دهم.

ادامه مطلب

خطای ORA-01950: no privileges on tablespace در زمان اجرای Export Datapump

 

به هنگام اجرای دستور expdp خطای زیر در log مشاهده شد:

ORA-31642: the following SQL statement failes:

Begin SYS”.”DBMS_RULE_EXP_RULES” SCHEMA_CALLOUT …

ORA-01950: no privileges on tablespace ‘SYSAUX’

 

این خطا در حالی رخ می داد که عملیات expdp با استفاده از کاربر sys اجرا می شد و این خطا غیر عادی به نظر می رسید. این خطا تنها زمانی رخ می داد که full export تهیه می شد. به نظر می رسید که این خطا مربوط به بخشی از دیتابیس (یک یا چند اسکیما) است، اما پیدا کردن قسمتی که موجب بروز مشکل شده با توجه به میزان log قابل تشخیص نبود، پس لازم بود تا مشخص شود دقیقاً چه دستوری موجب بروز این خطا می شود. برای این کار ابتدا دستور زیر اجرا شد:

$ sqlplus / as sysdba

SQL> alter system set events '1950 trace name ERRORSTACK level 3';

سپس دستور expdp مجدد اجرا شد. پس از آنکه در log خطای مذکور مشاهده شد، job مربوط به expdp را متوقف کردم و با دستور زیر هم trace را غیر فعال کردم:

SQL> alter system set events '1950 trace name ERRORSTACK off';

در مسیر فایل های trace فایل مربوطه را شناسایی شد و سپس در این فایل دنبال خطای ora-01950 گشتم. پس از این خطا، دستور SQL که موجب بروز خطا شده است مشخص است:

insert into dmuser.my_table …

 

پس متوجه شدم که کاربر dmuser دسترسی لازم را روی sysaux tablespace ندارد که با اعطا دسترسی مشکل برطرف شد.


نحوه برطرف کردن خطای ora-02437 cannot validate primary key violated

 

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

 

@?/rdbms/admin/utlexpt1.sql

 

با اجرای دستور بالا، جدول EXCEPTIONS ایجاد می شود. (در اسکیمای sys)

**************************************************************

SQL> alter table MY_INFORMATIONS add constraint MY_TAB_PK primary key (COL1, COL2, COL3, COL4) exceptions into SYS.EXCEPTIONS;

select * from exceptions

 

حالا مشخصات سطرهایی که مشکل ایجاد کرده اند در جدول EXCEPTIONS وجود دارد.

**************************************************************

SQL> create table copy_cons as select * from MY_INFORMATIONS where rowid in (select ROW_ID from exceptions);

SQL> SELECT * FROM copy_cons

 

در این جدول اطلاعات کامل از سطرهایی که مشکل ایجاد کرده اند وجود دارد.

**************************************************************


SQL> delete MY_INFORMATIONS where rowid in (select ROW_ID from exceptions)

COMMIT;

 

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

**************************************************************

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


SQL> alter table MY_INFORMATIONS add constraint MY_TAB_PK primary key (COL1, COL2, COL3, COL4);
 

**************************************************************

در نهایت می توانیم اطلاعات ایجاد شده را از دیتابیس حذف نماییم:

 
SQL> TRUNCATE TABLE EXCEPTIONS;

SQL> drop table copy_cons;


فایل های patch را دانلود کنید و آنها را به دایرکتوری مورد نظر بر روی سرور منتقل کنید.

به روز رسانی OPatch:

$ $ORACLE_HOME/OPatch/opatch version

$ cd /u01/source/patch/OPatch

$ cp p6880880_122010_Linux-x86-64.zip $ORACLE_HOME

$ cd $ORACLE_HOME

$ mv OPatch/ OPatch_old/

$ unzip p6880880_122010_Linux-x86-64.zip

$ rm -rf p6880880_122010_Linux-x86-64.zip

$ $ORACLE_HOME/OPatch/opatch version

 

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

$ lsnrctl stop

$ sqlplus / as sysdba

SQL> shutdown immediate;

 

$ cd /u01/source/patch/PSU

$ unzip p28163133_122010_Linux-x86-64.zip

$ cd 28163133

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

$ $ORACLE_HOME/OPatch/opatch apply

به سوالاتی که پرسیده می شود پاسخ مثبت دهید و منتظر باشید تا patch مورد نظر اعمال شود و در نهایت باید چیزی شبیه به خروجی زیر دریافت کنید:

Patch 28163133 successfully applied.

Log file location: /u01/oracle/product/12.2.0/dbhome_1/cfgtoollogs/opatch/opatch2018-12-02_15-41-48PM_1.log

 

OPatch succeeded.


 

برای اطمینان از اعمال patch:

$ $ORACLE_HOME/OPatch/opatch lsinventory

 

$ sqlplus / as sysdba

SQL> startup upgrade

برای اعمال pacth در دیتابیس:

$ cd $ORACLE_HOME/OPatch

$ ./datapatch -verbose

SQL> @?/rdbms/admin/utlrp.sql

SQL> shutdown immediate

SQL> startup

$ lsnrctl start

SQL> alter system register;

SQL> select * from dba_registry_sqlpatch

order by action_time desc;

 

چنانچه محیط شما multitenant است، سعی کنید PDB ها را باز کنید:

SQL> show pdbs

   CON_ID   CON_NAME                    OPEN MODE RESTRICTED

----------      ------------------------------   ---------- ----------

        2 PDB$SEED                         READ ONLY NO

        3 HRPDB                              READ WRITE YES

        4 HRPDB2                            READ WRITE YES

 

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

$ ./datapatch -verbose -pdbs PDB\$SEED,CDB\$ROOT,HRPDB,HRPDB2


 

SQL> shutdown immediate

SQL> startup

SQL> show pdbs

   CON_ID   CON_NAME                    OPEN MODE RESTRICTED

----------      ------------------------------   ---------- ----------

        2 PDB$SEED                         READ ONLY NO

        3 HRPDB                              READ WRITE NO

        4 HRPDB2                            READ WRITE NO


استفاده از Block Change Tracking

همانطور که می دانید به هنگام تهیه Incremental backup، کلیه block های یک دیتافایل خوانده می شود و چنانچه تغییر کرده باشد از آن backup گرفته می شود. برای بهینه کردن این فرایند، می توان فایلی را در نظر گرفت که آدرس block هایی که تغییر کرده اند را در خودش نگه می دارد و به هنگام backup گرفتن فقط به سراغ این block ها می رود، بنابراین سرعت backup گرفتن افزایش قابل ملاحظه ای خواهد داشت. البته در مواقعی که full backup می گیریم، این کار کاربردی ندارد و فقط برای مواقعی است که incremental backup می گیریم.

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

select d.RECID,d.SET_COUNT,d.FILE#,d.CREATION_TIME,d.INCREMENTAL_LEVEL,d.BLOCKS as "Backed up Blocks",d.BLOCKS_READ "Blocks That Read for Backup" from v$backup_datafile d

where trunc(d.COMPLETION_TIME) = trunc (sysdate );

چنانچه در خروجی دستور بالا، مقدار blocks_read (نشان دهنده تعداد بلاک هایی که خوانده شده اند) خیلی بیشتر از blocks (تعداد بلاک هایی که از آنها Backup گرفته شده است) باشد، یعنی راه اندازی block change tracking به عملکرد سیستم ها کمک بسیاری خواهد کرد.

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

alter database enable block change tracking using file '/u01/oracle/block_change_tracking_dir/block_change_tracking.bct';

 

چنانچه از OMF استفاده می کنید نیازی به ذکر کردن مسیر فایل نیست و خود به خود در مسیر مشخص شده در پارامتر db_create_file_dest و در پوشه changetracking ساخته می شود:

alter database enable block change tracking;

 

برای غیر فعال سازی block change tracking از دستور زیر استفاده می شود:

alter database disable block chnage tracking;

 

برای مشاهده اطلاعات مربوط به block change tracking می توانید از ویو زیر استفاده نمایید:

select * from V$BLOCK_CHANGE_TRACKING;


نصب پایتون 3 بر روی Oracle Linux

  1. به سایت ius.io بروید و rpm های زیر را دانلود کنید:

epel-release-latest-7.noarch.rpm

ius-release-1.0-15.ius.el7.noarch.rpm

 

  1. تنظیمات yum را بر روی سرور خود انجام دهید.

  2. فایل های rpm دریافت شده را نصب کنید:

rpm -ivh epel-release-latest-7.noarch.rpm

rpm -ivh ius-release-1.0-15.ius.el7.noarch.rpm

  1. در فایل /etc/yum.conf مقدار keepcache را به 1 تغییر دهید تا پکیج هایی که دانلود خواهند شد را نگهداری کند.

  2. با دستور زیر به دنبال پکیج نصب پایتون می گردیم: (توجه داشته باشید که باید به اینترنت متصل باشیم)

$ yum search python

  1. با دستور زیر عمل نصب را انجام می دهیم:

$ yum install python36u

$ yum install python36u-pip

 

  1. پکیج های دانلود شده در مسیر زیر قرار دارند و باید کلیه فایل های دانلود شده به سرور دیگر متنقل شود تا بدون نیاز به دانلود مجدد عمل نصب انجام شود:

/var/cache/yum/x86_64/7Server

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

find -name '*.rpm'

  1. در سرور مقصد، فایل های rpm پیدا شده در مرحله قبل را نصب کنید:

rpm -ivh *


به اطلاع میرسانم موسسه آموزشی آکادمی عصر اوراکل با مدیریت آموزشی اینجانب حمیدرضا قاسمی از ابتدای سال 1398 آغاز بکار کرده است. علاقه مندان میتوانند جهت اطلاع از دوره های آموزشی آکادمی عصر اوراکل به وبسایت AsreOracle.com مراجعه و یا با شماره تلفن 86084023 تماس حاصل نمایند.

دوره های قابل ارائه در آکادمی عصر اوراکل به شرح زیر میباشد:

 

 توسعه برنامه های کاربردی

نام دوره مدت دوره (ساعت) مدرس

Oracle Database 18c: Introduction to SQL

40  مهندس رستنده
Oracle Database 12c Program with PL/SQL 40 مهندس رستنده
Oracle Database: SQL Tuning for Developers> 16  مهندس رستنده
Oracle Application Express Workshop I 32 --
Oracle Application Express Workshop II 32 --

 پایگاه داده Oracle 18c

نام دوره مدت دوره بر ساعت مدرس
Oracle Database 18c: Admin, Install and upgrade Accelerated 48 مهندس رستنده
Oracle Database 18c: Data Guard Administration 32 مهندس رستنده/مهندس قاسمی
Oracle Database 18c: RAC and Grid Infrastructure Administration 32 مهندس رستنده/قاسمی
Oracle Database 18c: Security 32 مهندس رستنده
Oracle Database 18c: Performance Tuning 24 مهندس رستنده
Oracle Database 18c: New features 32 مهندس رستنده
Oracle Database 18c: Managing Multitenant 24 مهندس رستنده

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

نام دوره مدت دوره بر ساعت مدرس
Data Warehouse Fundamentals 16  مهندس قاسمی
Oracle Data Integrator 12c 40 مهندس قاسمی
Oracle Business Inteligence 12c: Create Dashboard & Build Repository  56 مهندس قاسمی
  Oracle Golden Gate 18c 24  مهندس قاسمی
Oracle Data Warehouse Performance Tuning 8 مهندس قاسمی
Oracle Business Intelligence 12c: Special Features 12  مهندس قاسمی

 علم داده (داده کاوی و بیگ دیتا)

نام دوره مدت دوره بر ساعت مدرس
Data Mining Concepts & Techniques with R 40  دکتر عشقی
Python Standard 40  مهندس سهامی
Machine learning with Python 40 مهندس سهامی
 Hadoop Big Data Fundamentals 40 مهندس نادری

 سیستم عامل لینوکس

نام دوره مدت دوره بر ساعت مدرس
Linux 7.x For Data Engineers 40 مهندس ثابتی مقدم
Linux 7.x Essentials and System Administration 16 مهندس ثابتی مقدم

تبلیغات

محل تبلیغات شما
محل تبلیغات شما محل تبلیغات شما

آخرین وبلاگ ها

آخرین جستجو ها

فروش انواع فولاد ابزار گرمکار و سردکار اسماء الحسنی درگز معلم:وب معلمان واساتيد ودانش آموزان ايران اسللامي Cody کتاب آیین زندگی اخلاق کاربردی شریفی Billy درخت نارون