بتاريخ: 30 يوليو 200619 سنة comment_75423 سوف أشرح لكم في هذا الموضوع عن حل معظم مشاكل الإتصال مع قاعدة البيانات سواءً كانت هذه المشاكل من جهة السيرفر أوجهة الكلينت:أولاً : حل مشاكل الإتصال (Connection) من جهة السيرفر# المشكلة الأولى: عمل Check لجهاز السيرفر للتأكد من عمله وأنه مفتوح وحلها كما يلي :>>>التأكد من فعالية السيرفر للتمكن من الإتصال به، فإذا كنت تستخدم TCP/IP network فقم بإستخدام أداة ال Ping وكما في المثال الأتي الذي يشيك ان السيرفر omarcom يعمل : C:\users\default>ping omarcom Pinging omarcom [10.69.30.113] with 32 bytes of data: Reply from 10.69.30.113: bytes=32 time=10ms TTL=248 Reply from 10.69.30.113: bytes=32 time=10ms TTL=248 Reply from 10.69.30.113: bytes=32 time<10ms TTL=248 Reply from 10.69.30.113: bytes=32 time=10ms TTL=248 الReply تشير أن الشبكة ترى الجهاز الذي أسمه omarcom****************************************************************# المشكلة الثانية: عمل Check لقاعدة البيانات(Database) وحلها كما يلي:>>>التأكد من قاعدة البيانات في حالة Running ويتم ذلك من خلال الاتصال بOracle server بإستخدام إحدى الأدوات ومن ضمنها SQL* Plusواليك المثال الاتي الذي يحاول الإتصال بقاعدة البيانات من خلال الجهاز (reyati ) :- D:\oracle\ora10g\BIN>sqlplus system/manager SQL*Plus: Release 10.1.0.2.0 - Production on Thu Jun 10 10:08:16 2004 Copyright (c) 1982, 2004, Oracle. All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist هنا لم تتم عملية الاتصال بقاعدة البيانات الخطأ رقم ORA-01034 للدلالة على أن الOracle Instace ليس شغالالخطأ رقم ORA-27101 للدلالة على أنه لا يتوفرInstance لعمل connection****************************************************************# المشكلة الثالثة: التأكد من قاعدة البيانات(Database) مفتوحة ومتوفرة لجميع الUsers وحلها كما يلي:>>>في بعض الحالات يتم وضع قاعدة البيانات في حالة RESTRICTED ولايتم اعطاء هذه الصلاحية الا لمستخدمين معيين ، فعندما يحاول مستخدم الإتصال بقاعدة البيانات وتكون في حالة RESTRICTED وهذا المستخدم ليس لديه هذه الصلاحية فإنه يظهر له المسج رقم ORA-01035 للدلالة على أن قاعدة البيانات في حالة RESTRICTED وهو ليس هذه الصلاحية ، وكما في المثال الاتي : D:\>sqlplus scott/tiger@ORCL SQL*Plus: Release 10.1.0.2.0 - Production on Thu Jun 10 10:09:19 2004 Copyright (c) 1982, 2004, Oracle. All rights reserved. ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege كما يلاحظ ان اليوزر Scott يحاول الاتصال بORCL service لكن بما أن قاعدة البيانات في حالة RESTRICTED وليس لديه هذه الصلاحية فلايمكن له الاتصال بقاعدة البيانات إلا أن يتم فتح قاعدة البيانات لجميع اليوزر كما يلي : ALTER SYSTEM DISABLE RESTRICTED SESSION او من خلال اعطاء اليوزر صلاحية Restricted Session وكما يلي : GRANT RESTRICTED SESSION TO SCOTT ****************************************************************# المشكلة الرابعة: عمل Check لصلاحيات الUser وحلها كما يلي:>>>إن أي يوزر يحاول الإتصال بقاعدة البيانات يجب أن يكون لديه على الأقل صلاحية تدعى Create Session وهي مهمة لليوزر الذي يرديد الاتصال بOracle server وإذا لم يكن لديه هذه الصلاحية تظهر المسج الاتية عند محاولة الاتصال ORA-01045 وكما في المثال الأتي : D:\oracle\ora10g\BIN>sqlplus scoot/tiger SQL*Plus: Release 10.1.0.2.0 - Production on Thu Jun 10 10:09:19 2004 Copyright (c) 1982, 2004, Oracle. All rights reserved. ERROR: ORA-01045: user MATT lacks CREATE SESSION privilege; logon denied ولحل هذه المشكلة يجب إعطاء اليوزر scott هذه الصلاحية وكما في المثال الاتي: SQL> grant create session to matt; Grant succeeded ملاحظة : اليوزر DBA هو الموكل لإعطاء هذه الصلاحية فقط****************************************************************# المشكلة الخامسة: التأكد من الListener وحلها كما يلي:>>>وهنايجب التأكد من أن الListener يعمل ، ويتم ذلك من خلال الأداة تسمى lsnrctl وكما في المثال الاتي : D:\oracle\ora10g\BIN>lsnrctl status LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 10-JUN- 2004 10:00:36 Copyright (c) 1991, 2004, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=mweishandell. corp.goxroads.net)(PORT=1522))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production Start Date 10-JUN-2004 09:58:47 Uptime 0 days 0 hr. 1 min. 50 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File D:\oracle\ora10g\network\admin\listener.ora Listener Log File D:\oracle\ora10g\network\log\listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mweishandell. corp.goxroads.net)(PORT=1522))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "orcl.com" has 1 instance(s). Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service... The command completed successful وهنا باستخدام الباراميتر lsnrctl status يتضح لنا ان الlsnrctl يعمل ، ومن خلال نتائج هذا الكود يمكن معرفة مواصفات هذا الlsnrctl (اسمه، اصداره،تاريخ بدايته......)****************************************************************# المشكلة السادسة: التأكد من Global_DBname وحلها كما يلي :>>>وهنا يجب التأكد من إسم الGlobal_DBname هو نفس إسم host machine وذلك من النظر في الملف Listener.ora وكما في المثال الاتي : SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = programmer) – machine listener is on (ORACLE_HOME = d:\oracle\ora10g) (SID_NAME = orcl) ****************************************************************# المشكلة السابعة: التأكد منConnection Timeouts وحلها يلي :>>>إذا ظهرت لك إحدى رسالتي الخطأ(ORA-12535 or ORA-12547) أعلم أن المشكلة هي حصولTiming out قبل عمل الإتصال الصحيح ، وحلها بزيادة وقت الListener للإنتظار لعمل أتصال صحيح وذلك من خلال الباراميتر INBOUND_CONNECT_TIMEOUT والموجود ضمن الملف Lisrener.ora واذا لم يكن هذا الباراميتر موجود يمكنك أضافته الى Lisrener.ora والوقت يكون بالثواني .****************************************************************هذا ما لدي من حلول للمشاكل التي قد تظهر من خلال الاتصال بقاعدة البيانات من جهة السيرفر والدرس القادم سوف يكون في حلول للمشاكل التي قد تظهر من خلال الاتصال بقاعدة البيانات من جهة الكلينت .إن أصابت فمن الله وإن أخطأت فمن نفسي ومن الشيطان ولا تنسونا من صالح دعاءكم تم تعديل 30 يوليو 200619 سنة بواسطة omar-alreyati تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.