mageed_ahmed بتاريخ: 26 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 مايو 2010 السلام عليكم ورحمة الله وبركاته استقبلت اليوم طلب من أحد الاعضاء يطلب فيه شرح بالعربية عن ال Materialized Views والشرح ليس من كتابتي انما هو للمهندس حسام فيصل وقد نقلته عنه نظرا لشرحه الوافي فجزاه الله خيرا علي مجهوده الطيبMaterialized Viewsفي الاصدارات السابقة علي جيل ابائنا كانت تدعي ب بــsnap shots . تستخدم لتخزين نسخ عن كامل جدول معين أو نتيجة إستعلام من أكثر من جدول و قد يحوي على Group by أو Sub query .. إلخ ..يوجد عدة أنواع : نوع يتم تحديد فواصل زمنية يقوم بتحديث البيانات خلالها ، و نوع آخر أفضله هو Transaction-Based و فيه يقوم الجدول الأساسي بإرسال التغييرات إلى القاعدة الثانية عندما تتم عمليات التغيير على البيانات و يتم الحفظ ، و يمكنك حتى منع عمليات التغيير على النسخ أي تصبح العملية عملية حفظ فقط و لا تسمح بالتغيير ، و نوع آخر يقوم بإرسال التغييرات التي تجرى عليه إلى الجدول الأساسي أي تصبح العملية عكسية و يتم إجراء التعديلات بالإتجاهين و هنا تبدأ المشاكل :ماذا لو قمنا بحذف سجل من الجدول المنسوخ و كان هذا السجل في الجدول الأساسي يرتبط بعلاقة مفتاح أجنبي ( foreign key ) في الجدول الأساسي ؟؟؟؟ ما الذي سيتم عمله ؟؟ كل هذه الأمور يجب أن تبقى في فكرنا عندما نريد إنشاء Materialized View ...لإنشاء Materialized View يجب على المستخدم أن يملك إحدى الصلاحيتين :CREATE MATERIALIZED VIEW or CREATE SNAPSHOT و طبعاً صلاحيات إنشاء الجداول لتخزين النسخ CREATE TABLE or CREATE ANY TABLE .. الإنشاء : create materialized view [ user.] name [ organization index iot_clause] [ { { segment attributes clauses } | cluster cluster ( column [, column] ...) } [ { partitioning clause | parallel clause | build clause } ] | on prebuilt table [ {with | without} reduced precision ] ] [ using index [ { physical attributes clauses| tablespace clause } [ physical attributes clauses| tablespace clause ] | using no index ] [ refresh clause ] [ for update ] [{disable | enable} query rewrite] as subquery; سنقسم تعليمة الإنشاء إلى أربعة أقسام رئيسية :1- اسم Material view :create materialized view [ user.] name2- هنا نحدد قيم عبارة storage التي يعلمها الجميع في إدارة Segments و Extents في الجدول الجديد الذي سنقوم بتخزين البيانات داخله و إذا كان هذا الجدول موجود فإننا نستخدم عبارة on prebuilt table .. [ organization index iot_clause] [ { { segment attributes clauses } | cluster cluster ( column [, column] ...) } [ { partitioning clause | parallel clause | build clause } ] | on prebuilt table [ {with | without} reduced precision ] ] [ using index [ { physical attributes clauses| tablespace clause } [ physical attributes clauses| tablespace clause ] | using no index ] -الآن :إذا كان Materialized view من النوع الذي يقوم بتحديث نفسه خوال فواصل زمنية فإننا نحدد عبارة[ refresh clause ] حيث : { refresh { { fast | complete | force } | on { demand | commit } | { start with | next } date | with { primary key | rowid } | using { default [ master | local ] rollback segment | [ master | local ] rollback segment rollback_segment } [ default [ master | local ] rollback segment | [ master | local ] rollback segment rollback_segment ]... } [ { fast | complete | force } | on { demand | commit } | { start with | next } date | with { primary key | rowid } | using { default [ master | local ] rollback segment | [ master | local ] rollback segment rollback_segment } [ default [ master | local ] rollback segment | [ master | local ] rollback segment rollback_segment ]... ]... | never refresh نحدد خيار التحديث إما fast فبالتالي سيقوم بإنشاء log يقوم بتسجيل السجلات داخله ثم يقوم بوضعها داخل الجدول بالتالي سيقوم فقط بنقل التغييرات أما complete فيقوم بإعادة خلق re-create لــMaterialized View لإدخال البيانات من جديد أما خيار force فإنه يجبر أوراكل على إستخدام الخيار fast إذا كان ذلك ممكناً و إلا فإنه سيتم إستخدام Complete ...2- إذا كان النسخ من جدول واحد فإننا نستطيع تحديد on commit بالتالي سيتم نقل التغييرات حفظها على الجدول الرئيسي مباشرة أما الخيار on demand فلن يتم نقل التغييرات إذا طلبنا نقلها يدوياً ..3- نحدد الفواصل الزمنية لعملية التحديث في عبارة start with date ..4- نحدد rollback الذي نريد استخدامه ...4- نحدد إذا كان Materialized من النوع updateable أي التغييرات التي ستتم عليه سيتم نقلها إلى الجدول الرئيسي و إذا لم نحدد ذلك فإنه سيكون Read only أي سيتم نقل التغييرات بإتجاه واحد من الرئيسي إلى المنسوخ فقط .. [ for update ] [{disable | enable} query rewrite] as subquery; سنقوم بإنشاء Materialized View من النوع Read only لنقوم بنسخ البيانات من الجدول employees لدى المستخدم hr في القاعدة db2 إلى حساب scott في القاعدة الثانية orcl بالتالي سنستخدم الوصلة db2hrlink لتنفيذ ذلك ، و سيكون التحديث كل يوم :1- أولاً نقوم بمنح الصلاحيات للمستخدم Scott من أجل القيام بعملية الإنشاء : SQL> connect system/oracle@orcl SQL> grant create Materialized view to scott; Grant succeeded. SQL> 2- ننشئ Materialized View SQL>connect scott/tiger@orcl SQL> create materialized view copy_fromHRDB2 2 storage (initial 100K next 100K pctincrease 0) 3 tablespace users 4 refresh force 5 start with sysdate next sysdate+ 1 6 as 7 select * from employees@db2hrlink; و السؤال كيف سنحضر البيانات ؟؟ SQLl> select * from copy_fromHRDB2; البيانات أصبحت في القاعدة orcl بعد نسخها من القاعدة db2 ....التحديث سيتم كل يوم و السب أن حددنا أننا نريد البدء من اللحظة الحالية start with sysdate و التحديث كل يوم sysdate + 1 ... و لكي تتوضح الفكرة لنقم بعملية بسيطة :1- سنجري تعديلات على الجدول employees في حساب hr في القاعدة db2 : SQL> connect hr/hr@db2 Connected. SQL> insert into employees (employee_id , first_name , last_name , job_id , department_id , email, hire_date ) values(1000 , 'arabteam', 'arabteam','IT_PROG',60,'[email protected]', sysdate); 1 row created. - سنرى الآن هل سيتم نقل التغيرات إلى النسخة copy_fromhrdb2 الموجودة في القاعدة orcl ؟؟ SQL> connect scott/tiger@orcl Connected. SQL> select first_name from copy_fromhrdb2 where first_name='arabteam'; no rows selected إذاً سجل مستخدمنا arabteam قد تمت إضافته على الأساسي و لكنه لم ينتقل إلى النسخة copy_fromhrdb2 و إنما سينتقل بعد فترة زمنية قدرها 24 ساعة ... ما ذا لو أردنا نقل التغييرات كل 1 دقيقة ؟؟ SQL> create materialized view copy_fromHRDB2 2 storage (initial 100K next 100K pctincrease 0) 3 tablespace users 4 refresh force 5 start with sysdate next sysdate+ 1/3600 6 as 7 select * from employees@db2hrlink; و لكن يجب أن نضع في بالنا مقدار الضغط الذي قد ينتج عن هذه العمليات ....و السؤال الذي سيطرح نفسه : هل نستطيع إجراء التعديلات على النسخة copy_fromhrdb2 ؟؟؟لنجرب : SQL> connect scott/tiger@orcl Connected. SQL> insert into copy_fromhrdb2 (employee_id , first_name , last_name , job_id , department_id , email, hire_date ) values(1200 , 'arabteam2', 'arabteam2','IT_PROG',60,'[email protected]', sysdate); insert into copy_fromhrdb2 (employee_id , first_name , last_name , job_id , department_id , email, hire_date ) values(1200 , 'arabteam2', 'arabteam2','IT_PROG',60,'[email protected]', sysdate) * ERROR at line 1: ORA-01732: data manipulation operation not legal on this view SQL> طبعاً فشلت عملية الإضافة و السبب أن هذا Materialized view هو Read only .... انتهي الشرح اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
shmna2007 بتاريخ: 26 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 26 مايو 2010 السلام عليكم ورحمة الله وبركاته بارك الله فيك طيب لو انا عاوزة اعمل materialize view ( read & write ) وشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 26 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 مايو 2010 ممكن حضرتك تبحثي في المصادر المتوافره وعند عدم وجود اي نتائج سنحاول معك باذن الله A writeable materialized view is one that is created using the FOR UPDATE clause but is not part of a materialized view group. Users can perform DML operations on a writeable materialized view, but if you refresh the materialized view, then these changes are not pushed back to the master and the changes are lost in the materialized view itself. Writeable materialized views are typically allowed wherever fast-refreshable read-only materialized views are allowed. materialized_views_10gr2_0505.pdf اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 29 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 س : ما هو الفرق بين a database and an instanceج : لمعرفة الفرق بينهما يلزم تعريف كل منهما وكذلك العلاقة بينهما قاعدة البيانات تعرف بأنها مجموعة من الملفات محفوظة علي القرص * A database is a set of files stored on disk.أما instanc فهو تأليفه من Oracle background processes و الذاكرة المشاركة* An instance is a collection of Oracle background processes and shared memory. العلاقة بينهما ال instance يمكنه تحميل وفتح قاعدة بيانات واحدة في نفس الوقت* An instance can mount and open one and only one database.قاعدة البيانات يمكن فتحها بواسطة Instance واحد أو أكثر في نفس الوقت* A database may be mounted and opened by one or more instances. مثال في Real Application Clusters(or RAC) تفتح وتحمل قاعدة البيانات بأكثر من instance أرجوا أن تكون المعلومة مفيده اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 29 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 س : ما هو الفرق بين V$ and GV$ , also V$and V_$? ج: These “$” views are called dynamic performance views. They are continuously updated while a database is open and in use, and their contents relate primarily to performance.The actual dynamic performance views are identified by the prefix V_$. Public synonyms for these views have the prefix V$. You should access only the V$ objects, not the V_$ objects.For almost every V$ view, Oracle has a corresponding GV$ (global V$) view. In addition to the V$ information, each GV$ view contains an extra column named INST_ID of datatype NUMBER. The INST_ID column displays the instance number from which the associated V$ view information was obtained. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 29 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 س: كيف يمكنني معرفة حجم قاعدة البيانات؟ج: سهله select round(sum(bytes)/(1024*1024*1024)) GB from dba_extents / 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
King Oracle بتاريخ: 29 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 السلام عليكم ورحمة اللهاخي الحبيب ماجد موضوع مميز وجهد وعطاء كبيرين , أسأل الله عزوجل أن يزدك علما ونورا ...تابع على بركة الله ... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
المقنع2005 بتاريخ: 29 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 المهندس ماجد موضوعك روعة وبجد استفدنا كثير من هذا الموضوع المميز ويا ريت تكمل بارك الله بكعندي استفسارات أتمنى الرد عليها من قبلكم ...1- ما هي الاضافات الجديدة في database 11g ولم تكن موجودة ب database 10g يا ريت التوضيح بأمثلة لتسهيل الفهم ؟2- ما أفضل طريقة في backup لقاعدة البيانات سواء كانت archive او not archive ؟3- هل من الممكن وضع شرح تفصيلي لل RMAN في عملية أخذ نسخة احتياطية والاسترجاع ؟4- ما هو ال RAC ؟5- ما هي الأفضل أن تكون قاعدة البيانات في وضع ال archive او not archive ولماذا ؟6- هل من الممكن شرح تفصيلي لتنزيل قاعدة البيانات والفورم على ال LUNIX REDHAT ؟أنا أعلم أن استفساراتي تحتاج وقت للاجابة عليها ولكن صدقني هذه الاسئلة كثير من الاعضاء بحاجة للاجابة عليها من قبل مشرف رائع مثل حضرتك يسهل طريق العلم والمعرفة علينا سائلين المولى عزوجل أن يسهل بهذا العلم طريقه الى الجنة . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 29 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 مايو 2010 السلام عليكم ورحمة الله وبركاته سمعا وطاعة للاخ الفاضل المقنع وتباعا وبالترتيب سوف أجيب علي أسئلته س: ما هي أم الاضافات الجديدة في 11g عن ال 10g ج: كثير من التحسينات والاضافات لدرجة انها تصل الي 482 ميزة محتلفة ما بين جديد وتحسين في الاصدارات السابقةأهمها هي أن سرعة تحزين واسترجاع البيانات في الحقوق الضخمة مثل LOBS أصبحت تساوي سرعة ال file System ناهيك عن الثبات والسرعة واوتوماتيكية الضبط الذاتيالملف المرفق يوضح كثير من هذه الاختلافات في ملفين وورد و عرض تقديمي يرجي الاطلاع عليهما الي الملتقي في الاجابة علي السؤال عن أفضل طريقة في backup لقاعدة البيانات سواء كانت archive او not archive أستودعكم الله الذي لا تضيع ودائعه 11g_new_faetures.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 30 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 30 مايو 2010 السلام عليكم ورحمة الله وبركاته مع السؤال الثاني لاخينا الفاضل المقنع ما أفضل طريقة في backup لقاعدة البيانات سواء كانت archive او not archive ؟الاجابة : بعد قراءة الملف المرفق أرجوا منك أن تجيبنا علي سؤالك بنفسك وفي انتظارك تحياتي أحمد Archive vs noarchive log mode.doc اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
المقنع2005 بتاريخ: 31 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 اخي الغالي بارك الله بك أتمنى الاستمرار بجد تفضلت علينا بكرمك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
scince بتاريخ: 31 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 ماذا أقول كلمة رائع قليلة في حق الشرح المرتب والمنظم بل كل الروعة اللي في العالم شكر خاص لك من كل قلبي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 31 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 جزاكم الله خيرا ولا يستحق الثناء الا الله تعالي ثم أهل هذا المنتدي وأعضاؤه لانكم عامل النجاح الاول بجديتكمالسؤال الثالث لاخي المقنع : س: - هل من الممكن وضع شرح تفصيلي لل RMAN في عملية أخذ نسخة احتياطية والاسترجاع ش أقصد ج: بفضل الله دعنا نذكر ما يسر الله لنامقدمما هو RMAN او recovery managerRecovery Manager is a tool that: manages the process of creating backups andAlso manages the process of restoring and recovering from them.لماذا نستخدمه ؟1. No extra costs …Its available free2. RMAN introduced in Oracle 8 it has become simpler with newer versionsand easier than user managed backups3. Proper security4. You are 100% sure your database has been backed up.5. Its contains detail of the backups taken etc in its central repository6. Facility for testing validity of backups also commands like crosscheckto check the status of backup.7. Faster backups and restores compared to backups without RMAN8. RMAN is the only backup tool which supports incremental backups.9. resulted in improvement of performance during backup and recovery time10. Parallel operations are supported11. Better querying facility for knowing different details of backup12. No extra redo generated when backup is taken. Compared to onlineأسئلة متداوله عن RMANس : كيف تحتفظ أوراكل بالبيانات Every time a change in the database occurs, Oracle generates a record ofthe change in the redo log buffer in memory. Oracle records both committedand uncommitted changes in redo log buffers.Oracle constantly writes the redo log buffers to the online redo log,which is on disk. Depending on whether Oracle runs in ARCHIVELOG orNOARCHIVELOG mode, the system can then archive this redo information bycopying the online redo log to other locations on disk. Archived redo logsare crucial for recovery since they constitute a record of changes to thedatabase.س : ماذا عن عمليات النسخ والاسترجاع BACKUP AND RECOVERY OPERATIONSA backup is a snapshot of a datafile, tablespace, or database at a certaintime. If periodic backups of the database have been made and data is lost,users can apply the stored redo information to their latest backup to makethe database current again.س : ما حدود هذه الاستيراتيجية ELEMENTS OF A BACKUP AND RECOVERY STRATEGYAlthough backup and recovery operations can be intricate and vary from onebusiness to another, the basic principles follow these four simple steps:1. Multiplex the online redo logs2. Run the database in ARCHIVELOG mode and archive redo logs to multiplelocations3. Maintain multiple concurrent copies of the control file4. Take frequent backups of physical datafiles and store them in a safeplace, making multiple copies if possibleAs long as users have backups of the database and archive redo logs insafe storage, the original database can be recreated, even if a firedestroyed the server hardware.نأتي للتطبيق وخطوة بخطوة كما طلب أخونا أم أخينا لا أخونا لأنه فاعل ويرفع هنا بالواويجب اتباع التعليمات التالية1- قم بالدخول علي sql كمستخدم sys1)Create tablespace RMAN_TSDatafile ‘Oracle\xxxxx\RMAN_TS.dbf’Size 40mAutoextend OnEXTENT MANAGEMENT LOCAL/DICTIONARYSEGMENT SPACE MANAGEMENT AUTO2)By default there is an existing user in the Database Call RMANHow to find outSelect username from all_users where username like 'RMA%';If the rman exist then make sure he has the proper permission by issueingthe commandTo see if RMAN has a SYSDBA permessionSELECT * FROM SYS.V_$PWFILE_USERSBy default RMAN has no sys privileges3)Make sure the RMAN user has the required permissionDBACONNECTRESOURCERECOVERY_CATALOG_OWNERselect grantee,granted_role from dba_role_privs where grantee ='RMAN';If RMAN user does not have those permission then issue this Statement togrant the RMAN user the required permission.Grant RMAN the required permissionGrant CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER,SYSDBA to RMAN;4)Assign RMAN_TS tablespace to RMAN user as the default tablespace, whitunlimited Quota by issuing this statementAlter user RMANDefault tablespace RMAN_TSQuota unlimited on RMAN_TS5)If you know the password then loging as RMAN user, if you don’t know thepassword, while your sill in the sysdba session, issue this commandAlter user RMAN identified by xyz6)Login as RMAN USERConn RMAN/pwd as sysdbaConnecting to RMANOpen the command prompt. from the run command type CMD Set your Oracle Database SET ORACLE_SID=YOURDBNAME Create a catalogConnect to RMAN using Catalog Recovery RMAN catalog rman Create catalog. Exist RMAN Exit. Connect to the Target Database. rman catalog rman/ target rman/ Resynchronize the control file and recovery catalog. resync catalog;. Make sure you get this messegestarting full resync of recovery catalogfull resync completeبعد الاعداد نذهب لاخذ نسخة احتياطيةNote: Whole database backups automatically include the current controlfile, but the current control file does not contain a record of the wholedatabase backup. To obtain a control file backup with a record of thewhole database backup, make a backup of the control file after executingthe whole database backup.Include a backup of the control file within any backup by specifying theinclude current controlfile option.Run once a week every Thursday night at 12:00 AM وهو المفضل 1)Full Backup RMAN> RUN { ALLOCATE CHANNEL CH TYPE DISK; BACKUP FORMAT '\BK\FULL\%d%s%p' (DATABASE); RELEASE CHANNEL CH; } After the successful backup you should get something like thischannel dbbackup: starting piece 1 at 09-MAR-05channel dbbackup: finished piece 1 at 09-MAR-05piece handle= \BK\FULL\FULLDBSUP21 comment=NONEchannel dbbackup: backup set complete, elapsed time: 00:02:58Finished backup at 09-MAR-05released channel: dbbackupFull Backup with Control File RMAN> RUN { ALLOCATE CHANNEL CH TYPE DISK; BACKUP FORMAT '\BK\FULL\CF\%d%s%p' (DATABASE INCLUDE CURRENT CONTROLFILE); RELEASE CHANNEL CH; } 2)Incremental BackupRecommendation:Three times a week every Saturday, Monday and Wednesday run { allocate channel ch1 type disk; backup incremental level = 0 database; release channel ch } Note: This script makes a differential level 1 backup of the SYSTEMtablespace and datafile yoseph. It will only back up those data blockschanged since the most recent level 1 or level 0 backup: run { allocate channel ch type disk; backup incremental level = 1 tablespace system datafile '/oracle/dbs/yoseph.dbf'; release channel ch } Note: This script makes a cumulative level 2 backup of the tablespaceTBS_2. It will only back up those data blocks changed since the mostrecent level 1 or level 0 backup: run { allocate channel ch type disk; backup incremental level = 2 cumulative # specify cumulative option tablespace tbs_1; release channel ch } 3)TableSpace BackupRecommendation:It depends on the need of each organization run { allocate channel ch type disk backu fromat '\ '\backup\tablespace\tspcbuk_%d_%t_%S.bak'; backup (tablespace MyTableSpace); release channel ch } 4)Datafile BackupRecommendation:It depends on the need of each organizationNote: Before taking a backup of a Datafile you should query the Dynamicperformance View V$DATAFILE to get the number of the Datafiles.Connect to Oracle SQL>select file#, Name from V$Datafile; Then go back to the RMan Prompt run { allocate channel ch type disk format 'dfile_%D_%T_%S.bak'; backup (datafile 11); release channel ch } Archived Redo Logs BackupNote: The archived redo logs are the key to successful recovery. Back themup regularly.You can specify the delete input option in the backup command, which willdelete the archived redo logs after you have backed them up. Thus, you canback up archived logs to tape and clear your disk space of the old logs inone step.Recommendation:Run 3 times a day during business hoursكما يوجد لدي عرض تقديمي تم عمله للمنتدي الرائع هذا بواسطة الاخ أحمد حسين جعله الله خالصا لوجهه وأثابه علي عرضه الممتع وهو مرفق تحياتي orcl_arab_1.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
King Oracle بتاريخ: 31 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 ما شاء الله عليك تميز ... عطاااااااء اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 31 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 مع السؤال الرابع ما هو ال RAC ؟الملف مرفق لاحتوائه صور كذلك يوجد ملف فلاش عن الراك Oracle_RAC.doc Oracle_RAC.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
المقنع2005 بتاريخ: 31 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 31 مايو 2010 بجد انك مميز جداااااااا وهلا تأكدت انه لازم قاعدة البيانات تكون archive حتى اضمن كل الحركات وما يروح من البيانات شي .وبالنسبة لل RMAN الله يعيني على تطبيقها بس بسألك بتفرق اذا كانت قاعدة البيانات archive او no archive ؟؟؟وراح اقرأ ملف ال RAC اللي وضعته مع العلم مش عارف كيف بتم تنصيبه على الجهاز او عمل الاعداد له .بجد جهد كبير بارك الله بك . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 1 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 1 يونيو 2010 بخصوص سؤالك نعم ممكن أن تكون قاعدة البيانات في none archive mode علاوة علي نفعها في ال archive mopde ومع ذلك يمكن أن تأخذ cold backup via RMAN)ولاخذ cold backup أيضا RMAN> run { shutdown immediate; startup mount; backup database; alter database open; } اخيرا أيهما أفضل كل منهما له احتياجاته فمطلوب منك تارة هذا وتارة هذا ويوقوموا بنفس النتيجة في النهاية الا أن noarchive لا بد أن توقف قاعهدة البيانات اما اذا لم يمكنك ايقافها كما هو الحال في كثير من طبيعة الاعمال ف archive mode هو الامثل المقارنة مرة أخري1-no archive mode Must backup entire database.DB must be shut down.Only entire DB can be restoredIn case of a failure, all changes sinces the last backup will be lost All commited transactions will be restorablearchive modeCan backup parts of database (datafiles tablespaces) hot backups possible Tablespaces can be restoredبالنسبة للراك سوف نقوم بعمله في دروس عملية قادمه ربما خلال شهر من الان حسب خطتنا في بعض المشاريع التدريبية القادمة لكننا نحضر العتاد المطلوب والله الموفق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 1 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 1 يونيو 2010 السؤال السادس هل من الممكن شرح تفصيلي لتنزيل قاعدة البيانات والفورم على ال LUNIX REDHAT ؟قاعدة البيانات المستحسن لها أن تعمل علي لينكس أما الفورم المستحسن لها أن تنزلها علي ويندوز أبو صالح الرجل الصالح الطيب يهديك شرح وافي لانزال قاعدة البيانات اوراكل علي لينكس فله دعائنا بالتوفيق علي مجهوده الرائع مثلهوباتباع طريقة الفك للاخ عروة في نفس الموضوع ستتكمن ان شاء الله من الحصول علي ملف PDF يشرح ما تريدفي حال عدم المقدرة علي فك الملفات يرجي المتابعة من هناك لمساعدتكالرابط اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 2 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يونيو 2010 السلام عليكم ورحمة الله وبركاته متنيا أن يرحم شهداء فلسطين وقافلة المساعدات وأن ينصرنا علي عدونا نصرا مبينا اللهم أمينس: سمعنا عن خاصية جديدة في 11g أن هناك ما يعرف ب Read Only tables فما حقيقة الموضوعج : نعم فهي ميزة شيقة اضيفت الي 11g كان في الاصدارات السابقة بالامكان جعل جدول read only باعطاء هذا المستخدم خاصيةselect للمستخدم الا أن المالك الاصلي owner لازال قادر علي read write أما هنا تتضح لنا الخاصية CREATE TABLE read_only_table( Readid NUMBER ); INSERT INTO read_only_table VALUES (1); ALTER TABLE read_only_table READ ONLY; SQL> INSERT INTO read_only_table VALUES (2); INSERT INTO read_only_table VALUES (2) * ERROR at line 1: ORA-12081: update operation not allowed on table "KUMAR"." read_only_table " SQL> DELETE FROM read_only_table; DELETE FROM read_only_table * ERROR at line 1: ORA-12081: update operation not allowed on table "KUMAR"." read_only_table " SQL> UPDATE read_only_table SET Readid = 2; UPDATE read_only_table SET Readid = 2 * ERROR at line 1: ORA-12081: update operation not allowed on table "KUMAR"." read_only_table " 11g DDL statements that affect the table data are also restricted. SQL> ALTER TABLE read_only_table ADD (readdesc VARCHAR2(50)); ALTER TABLE read_only_table ADD (readdesc VARCHAR2(50)) * ERROR at line 1: ORA-12081: update operation not allowed on table "KUMAR"." read_only_table " SQL> TRUNCATE TABLE read_only_table reuse storage; TRUNCATE TABLE read_only_table * ERROR at line 1: ORA-12081: update operation not allowed on table "KUMAR"." read_only_table " وبجرد تغييره ل read write SQL> DELETE FROM read_only_table; 1 row deleted. SQL> ALTER TABLE read_only_table READ WRITE; Table altered. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 2 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يونيو 2010 س : كيف يمكنني استرجاع بيانات من جدول وبعد حفظها؟؟ج : تريد يعني أن تعمل FLASHBACK TABLE الله المستعانسنقوم باسترجاع بيانات من جدول تم حذفها من وقت معروف Create table Test_tmp as select * from emp where 1=2; Insert some values and issue a commit. Now select the systimestamp from the database. Select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 09-FEB-07 03.10.47.906882 PM +05:00 Now delete data from the Test_tmp table and commit it. Delete from test; Commit; Now select the systimestamp again from the database. select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 09-FEB-07 03.15.47.906882 PM +05:00 Now you know that table was truncated at 3:15. So we will perform recovery / Flashback till 3:11 INSERT INTO TEST_TMP (SELECT * FROM TEST AS OF TIMESTAMP TO_TIMESTAMP(\'09-FEB-07 03:11:00\',\'DD-MON-YY HH24: MI: SS\')) Commit; Now you can see the data has been restored in the table. SQL> Select * from TEST_TMP; تم ذلك علي 10G r2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 2 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 يونيو 2010 س: تم تعييني مدير قواعد بيانات في منشاة وأول ما اريد معرفته هل الاوراكل الحالي64 أم 32 بت الحل : اذا كان عدد الخرج 16 حرف فهو 64 select distinct address from v$sql where rownum<2; ADDRESS ---------------- 0000000386D3E060 SQL> وان كان 8 فهو 32 SQL> select distinct address from v$sql where rownum<2; ADDRESS -------- 826A774C تحياتي اليكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
King Oracle بتاريخ: 5 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 5 يونيو 2010 مشاركات قيمة جدا .......بارك الله بك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
kamal2902796 بتاريخ: 6 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 6 يونيو 2010 السلام عليكم ورحمة الله وبركاته. أود ان أشكر استاذي العزيز م/ أحمد عبد المجيد. وعلى رأي المثل المشهور "من علمنى حرفا ......." وكم علمني من صفحات وليس حروف. جزاكم الله خيرا وجعله الله في ميزان حسناتك. وبارك الله لكم في روان وعمر .ر - عاوز اقول كلمة لجميع زوار المنتدي ان المهندس أحمد عبد المجيد من الشخصيات الجميله جدا اللي نادرا جدا لما الواحد يقابلها في حياته. وخدوم جدا ولا يبخل بأي معلومه. تلميذك / محمد كمال أحمد. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 8 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 8 يونيو 2010 السلام عليكم وجزاكم الله خيرا لكني والله لست أهلا لهذا الثناء س : حاول أحد المبرمجين احراجي بسؤال رغم أني مدير قواعد بيانات وقال ان لديه جدول وفيه أرقام 1 2 3 4 5 و .....وطلب مني تحويل هذه الارقام ل لحروف يعنيone two three وهكذا قلت له يا بني هذا خارج نطاقي فأصر فأجبته بما يليلنفرض أن جدولك الذي يحوي الارقام اسمه n2wووللترجمة قمت بعمل التالي set linesize 100 set recsep off column numbers format a12 column words format a80 word_wrapped set null '(null)' select to_char(i,'999,999,999') numbers , to_char( to_timestamp( lpad(i,9,'0'), 'FF9' ), 'FFSP' ) as words from n2w where i between 0 and 9999999 order by i ; سيكون الناتج NUMBERS WORDS ------------ -------------------------------------------------------------------------------- 0 ZERO 1 ONE 12 TWELVE 123 ONE HUNDRED TWENTY-THREE 1,234 ONE THOUSAND TWO HUNDRED THIRTY-FOUR 12,345 TWELVE THOUSAND THREE HUNDRED FORTY-FIVE 123,456 ONE HUNDRED TWENTY-THREE THOUSAND FOUR HUNDRED FIFTY-SIX 1,234,567 ONE MILLION TWO HUNDRED THIRTY-FOUR THOUSAND FIVE HUNDRED SIXTY-SEVEN 1,721,057 ONE MILLION SEVEN HUNDRED TWENTY-ONE THOUSAND FIFTY-SEVEN 1,721,058 ONE MILLION SEVEN HUNDRED TWENTY-ONE THOUSAND FIFTY-EIGHT 1,721,300 ONE MILLION SEVEN HUNDRED TWENTY-ONE THOUSAND THREE HUNDRED 1,721,423 ONE MILLION SEVEN HUNDRED TWENTY-ONE THOUSAND FOUR HUNDRED TWENTY-THREE 1,721,424 ONE MILLION SEVEN HUNDRED TWENTY-ONE THOUSAND FOUR HUNDRED TWENTY-FOUR 5,373,484 FIVE MILLION THREE HUNDRED SEVENTY-THREE THOUSAND FOUR HUNDRED EIGHTY-FOUR 5,373,485 FIVE MILLION THREE HUNDRED SEVENTY-THREE THOUSAND FOUR HUNDRED EIGHTY-FIVE 7,777,777 SEVEN MILLION SEVEN HUNDRED SEVENTY-SEVEN THOUSAND SEVEN HUNDRED SEVENTY-SEVEN 9,999,999 NINE MILLION NINE HUNDRED NINETY-NINE THOUSAND NINE HUNDRED NINETY-NINE ولبعض الحالات مثل هذا الرقم select CAST( to_char( to_timestamp( lpad(i,9,'0'), 'FF9' ), 'FFSP' ) AS VARCHAR2(100) ) as words from n2w where i = 777777011 ; كذلك For Numbers Between -999,999,999 and 999,999,999 To transform nulls and negative numbers as well as positive number we can use the following technique. select to_char(i,'999,999,999') numbers , case sign( i ) when -1 then 'NEGATIVE ' else null end || case when i is null then 'NOT ASSIGNED' else cast ( to_char ( to_timestamp( lpad(abs(i),9,'0'), 'FF9' ), 'FFSP' ) as varchar2(100) ) end as words from n2w order by i ; أو select to_char(&number,'999,999,999') numbers , to_char( to_timestamp( lpad(&number,9,'0'), 'FF9' ), 'FFSP' ) as words from dual where &number between 0 and 9999999 / 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 8 يونيو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 8 يونيو 2010 س : ماذا عن RECYCLEBIN in Oracleج تعريف Oracle has introduced "Recycle Bin" Feature Oracle 10g to store all the dropped objects.If any table in Oracle 10g is dropped then any associated objects to this table such as indexes,constraints and other dependant objects are simply renamed with a prefix of BIN$$. الفائدة منها A user drops a very important table--accidentally, of course--and it needs to be revived as soon as possible.Oracle9i Database introduced the concept of a Flashback Query option to retrieve data from a point in time in the past, but it can't flash back DDL operations such as dropping a table.The only recourse is to use tables pace point-in-time recovery in a different database and then recreatethe table in the current database using export/import or some other method.This procedure demands significant DBA effort as well as precious time, not to mention the use of a different database for cloning.But with Oracle 10g Recycle bin Feature the user can easily restore the Dropped Object.تشغيلها وايقافهامعرفة وضعها الحالي SQL > SELECT Value FROM V$parameter WHERE Name = 'recyclebin'; Value ----- On للتشغيل أو الايقاف SQL > ALTER SYSTEM SET recyclebin = ON; or SQL > ALTER SESSION SET recyclebin = ON; SQL > ALTER SYSTEM SET recyclebin = OFF; or SQL > ALTER SESSION SET recyclebin = OFF; لمعرفة ما بداخلها SQL > SHOW RECYCLEBIN; Or SQL > SELECT * FROM USER_RECYCLEBIN; مثال لحذف جدول لنجده داخلها SQL > CREATE TABLE TEST_RBIN(VAL NUMBER); SQL > INSERT INTO TEST_RBIN(VAL) VALUES(10); SQL > COMMIT; SQL > DROP TABLE TEST_RBIN; Print the Recycle bin Entries, SQL > SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ --- ------------ ------------------- TEST_RBIN BIN$7fq9jEy8RSadimoE4xGjWw==$0 TABLE 2010-05-26:11:27:12 استرجاع الجدول SQL > FLASHBACK TABLE <<Table_Name >> TO BEFORE DROP; Example, SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP; SQL > SELECT * FROM TEST_RBIN; VAL --- 10 ويمكن أن يسترجع الجدول باسم غير اسمه الاول SQL > FLASHBACK TABLE << Dropped Table Name >> TO BEFORE DROP RENAME TO <<New Table Name >>; SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN1; ماذا لو تم عمل الجدول ثم تم حذفه ثم تم عمله مجددا ثم حذفه ماذا عن البيانات وهل يمكنني الاسترجاع من الجدول بالاسم الاقدم؟نعم : يتم الاسترجاع في حالة تصاعدية كما سنري وهذه هي فائدة استرجاع الجدول باسم اخر QL > CREATE TABLE TEST_RBIN (COL1 NUMBER); SQL > INSERT INTO TEST_RBIN VALUES (1); SQL > COMMIT; SQL > DROP TABLE TEST_RBIN; SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER); SQL > INSERT INTO TEST_RBIN VALUES (2); SQL > COMMIT; SQL > DROP TABLE TEST_RBIN; SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER); SQL > INSERT INTO TEST_RBIN VALUES (3); SQL > COMMIT; SQL > DROP TABLE TEST_RBIN; SQL > SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TEST_RBIN BIN$2e51YTa3RSK8TL/mPy+FuA==$0 TABLE 2010-05-27:15:23:43 TEST_RBIN BIN$5dF60S3GSEO70SSYREaqCg==$0 TABLE 2010-05-27:15:23:43 TEST_RBIN BIN$JHCDN9YwQR67XjXGOJcCIg==$0 TABLE 2010-05-27:15:23:42 SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN1; SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN2; SQL > FLASHBACK TABLE TEST_RBIN TO BEFORE DROP RENAME TO TEST_RBIN3; SQL > SELECT * FROM TEST_RBIN1; COL1 ---------- 3 SQL > SELECT * FROM TEST_RBIN2; COL1 ---------- 2 SQL > SELECT * FROM TEST_RBIN3; COL1 ---------- 1 تنظيفهالتنظيف جدول معين SQL > PURGE TABLE << Table_Name >> وهذا الامر سيقوم بحذف الجدول ومتعلقاته مثل index لحذف index مثلا QL > PURGE INDEX <<Index_Name >>; أخري SQL > PURGE TABLESPACE <<Table Space Name>>; or QL > PURGE TABLESPACE <<Table Space Name>> USER <<User Name>>; لحذف كل ما بداخلها SQL > PURGE Recyclebin; يمكن حذف جدول منها حتي أثناء عملية ال drop SQL > DROP TABLE << Table_Name >> PURGE; الان عرفنا معنا PURGE وهو حذفه من ال R Binمثال أخير علي حذف جدول واسترجاعه SQL > CREATE TABLE TEST_RBIN (COL1 NUMBER); SQL > INSERT INTO TEST_RBIN VALUES (1); SQL > COMMIT; SQL > DROP TABLE TEST_RBIN; View the recycle bin entries with show recycle bin option, SQL > SHOW RECYCLEBIN; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TEST_RBIN BIN$2e51YTa3RSK8TL/mPy+FuA==$0 TABLE 2010-05-27:15:23:43 Clear the table by executing the following Statement SQL > PURGE TABLE TEST_RBIN; or SQL > PURGE TABLE “BIN$2e51YTa3RSK8TL/mPy+FuA==$0” Verify the Recycle bin, it will not have any entries for the table TEST_RBIN, SQL > SHOW RECYCLEBIN; من هنا نعلم أن عمل purge لجدول معناه ان البيانات لا يمكن استرجاعها بواسطة أمر FLASHBACK لانه تم حذفه من السلة بنفس مفهوم أنظمة التشغيل عند عمل drop لجدول وأختنا مفعلة يتم حفظه في قاعدة البيانات حتي يتم عمل purge هام جدايتم الحذف الاوتوماتيكي للبيانات منها عند حدوث تعديل اوتوماتيكي للذاكرة وهي حالتان1. A user creates a new table or adds data that causes his/her quota to be exceeded.2. The tablespace needs to extend its file size to accommodate create/insert operationsأرجوا أن يكون الموضوع مفيدتحياتي والي لقاء متجدد باذن الله تعالي أراكم علي خيرمهندس أحمد عبد المجيد 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.