تبلیغات
قطره (ای از زندگی یک درگیر کامپیوتر) - مطالب دیتابیس
 
اگر قادر نیستی خود را بالا ببری ،همانند سیب باش تا با افتادنت اندیشه ای بالا برود.

اجرای query با sqlplus

نوشته شده توسط :سعید كلانتری
پنجشنبه 25 مرداد 1397-04:53 ب.ظ

یه پستی تو موضوع دیتابیس دارم که توش به نحوه اجرای دستور sqlplus و کانکت شدن به دیتابیس بصورت مستقیم نوشتم.
حالا می خوام یه کم بیشتر بنویسم

شما می توانید یک query را در یک فایل ذخیره کنید و اون رو با یه خط کامند اجرا کنید. حتما اون یه خط را هم تو یک اسکریپت بزارید و اون اسکریپت رو هم cron tab بکنید


برای اجرای یک فایل با sqlplus باید روش زیر را بکا رببرید
ابتدا دستورات را در یک فایل با هر پسوندی ذخیره می کنید. مثلا test.sql
مثال :

select sysdate from dual;
exit;

بعد که فایل رو ذخیره کردید به نام test.sql   دستور زیر را می نویسید یا تو یه بچ فایل ذخیره می کنید

sqlplus username/password@dbname @test.sql


که در اینجا dbname اسمی است که در tnsnames.ora  سیستمی که قرار است وصل شود قرار دارد.


ORA-65096: invalid common user or role name

نوشته شده توسط :سعید كلانتری
شنبه 11 آذر 1396-05:09 ب.ظ

در اراکل 12 اگه بخواهید به سادگی یک یوزر بسازید مانند اراکل 11. به مشکل می خورید و اررور بالا را می گیرید
مثلا اگه بخواهید با دستور
 create user saeed identified by saeed ;

یک ارور

ORA-65096: invalid common user or role name
  دریافت می کنید که این ظاهرا بخاطر قابلیتهای اراکل 12 است که می گوید دیتابیس پلاگین می توانید داسته باشید( دقیق نمی دونمی یعنی چی)
خلاصه برای حل مشکل از دستور زیر استفاده کنید

 alter session set "_ORACLE_SCRIPT"=true;



اتصال به دیتابیس اراکل در سی شارپ

نوشته شده توسط :سعید كلانتری
دوشنبه 1 آبان 1396-05:32 ب.ظ

یکی از کارهای سختی که بالاخره شد( شاید خیلی هم سخت نباشه ولی برای من سخت بود) همین اتصال به اراکل با سی شارپ بود
البته هنوز همه اتفاقهای خوب نیفتاده و اول راهم
ولی خوب تجربیاتم و مشکلات و راه حلها رو  خلاصه می نویسم ،انشالله به درد بخوره

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

ولی بعد با ارور زیر مواجه شدم:

ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

این ارور بخاطر این است که یک پارامتری که برای امنیت دیتابیس است. من چون نتونستم حلش کنم دورش زدم.
اول بگم که من برای اتصال از یوزر sys استفاده می کردم که چون گسوردش یادم رفته بود از دستور

alter user sys identified by password

پسوردش را عوض کردم.

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

 show parameter O7_DICTIONARY_ACCESSIBILITY

( دستور فوق را باید در شل sqlplus بزنید )
من با دستور alter system set o7_dictionary_accessibility=true scope=spfile ;
تغییرش دادم.
شاید اگه یه بار دیتابیس را استوپ و استارت می کردم درست می شد ولی من سیستم رو ریست کردم.

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

ORA-12541: TNS:no listener

لذا دوباره به سیستم وصل شدم. با یوزر اراکل  (                   su - oracle  )

سپس دستور  lsnrctl status  را وارد می کنیم. بدیهی است که فعال نیست

لذا با دستور    lsnrctl start
انرا فعال کرده و به ان وصل می شویم.

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




لاگین به دیتابیس با shelll

نوشته شده توسط :سعید كلانتری
دوشنبه 1 آبان 1396-09:40 ق.ظ

سلام
فرض کنید می خواهید با استفاده از shell و putty به یک دیتابیس اراکل ( oracle )  لاگین کنید. از کامند زیر می توانید استفاده کنید

sqlplus  user/userpass@dbsid

لازم به ذکر است که dbsid اسمی است که در tnsnames.ora بر روی ماشینی که داری ازش وصل میشی نوشته شده  و بر مبنی ان مشخص می  گردد


record is locked by another user oracle

نوشته شده توسط :سعید كلانتری
شنبه 4 شهریور 1396-05:22 ب.ظ

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

لذا برای اینکه بفهمید اطلاعات بیشتری بدست بیاورید پیشنهاد من استفاده از query زیر است

select
   c.owner,
   c.object_name,
   c.object_type,
   b.sid,
   b.serial#,
   b.status,
   b.osuser,
   b.machine
from
   v$locked_object a ,
   v$session b,
   dba_objects c
where
   b.sid = a.session_id
and
   a.object_id = c.object_id;

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

ALTER SYSTEM KILL SESSION 'sid,serial#';


در صورتیکه اینجا به شما ارور دسترسی داد باید به سرور فوق با دسترسی root لاگین کنید سپس su - oracle بنمایید
وو سپس با دستورات sqlplus  / as sysdba
 وارد محیط کامند اراکل بشوید و سپس کامند بالا را دوباره اجرا کنید.

موفق باشید





درباره وبلاگ:



آرشیو:


طبقه بندی:


آخرین پستها:


پیوندها:


پیوندهای روزانه:


صفحات جانبی:


نویسندگان:


ابر برچسبها:


آمار وبلاگ:







The Theme Being Used Is MihanBlog Created By ThemeBox