شرح خطا: خطای ORA-01034: ORACLE not available ممکن است در زمان اتصال به دیتابیس از طریق ابزارهایی چون Sqlplus، Sql Developer و … رخ دهد:
[oracle@stb ~]$ sqlplus “usef/p”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 00:52:20 2019
Version 18.3.0.0.0
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
راه حل: این خطا ممکن است به دو دلیل زیر اتفاق بیفتد:
1.استاپ بودن دیتابیس اوراکل
[oracle@stb ~]$ sqlplus “usef/p”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 00:56:31 2019
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 – Production
Version 18.3.0.0.0
SQL> exit
[oracle@stb ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 00:56:57 2019
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 – Production
Version 18.3.0.0.0
SQL> shut abort
ORACLE instance shut down.
SQL> exit
[oracle@stb ~]$ sqlplus “usef/p”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 00:57:14 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4150
Additional information: 1681155291
Process ID: 0
Session ID: 0 Serial number: 0
Enter user-name:
پس برای برطرف کردن خطا در چنین شرایطی، صرفا باید دیتابیس را استارت کرد:
[oracle@stb ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 00:58:06 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1845493712 bytes
Fixed Size 8658896 bytes
Variable Size 553648128 bytes
Database Buffers 1275068416 bytes
Redo Buffers 8118272 bytes
Database mounted.
Database opened.
2.تنظیم نادرست متغیر ORACLE_SID
خطای ORACLE not available همیشه به دلیل down بودن دیتابیس رخ نمی دهد بلکه در مواردی ممکن است متغیر ORACLE_SID به درستی تنظیم نشده باشد.
برای مثال، با دستور ps خواهیم دید که نام instance برابر با stb می باشد:
[oracle@stb ~]$ ps -eaf|grep smon
oracle 3094 1 0 00:58 ? 00:00:00 ora_smon_stb
در صورتی که متغیر ORACLE_SID به مقداری غیر از stb تنظیم شود، باز هم به خطا ORACLE not available برخواهیم خورد.
[oracle@stb ~]$ export ORACLE_SID=stb2
[oracle@stb ~]$ sqlplus “usef/p”
SQL*Plus: Release 18.0.0.0.0 – Production on Fri Oct 4 01:03:11 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
بسیار عالی