Здравствуйте, уважаемые коллеги. Хочу поделиться сегодня с вами ситуацией, с которой столкнулся при подключении к базе данных Oracle 12c из стороннего клиентского приложения (архитектура клиент-сервер). При отладке приложения и запуске команды running fnd_nodes cleanup получил ошибку:
ERROR:
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist SVR4 Error: 2: No such file or directory
При этом я вполне мог подключиться к базе данных и выполнить autoconfig на стороне базы. Но на стороне приложения все также вылетали ошибки и я не смог подключиться к БД из приложения. При этом база данных Oracle запущена и работает штатно.
Честно говоря, я не особо понял причину этой ошибки. Я проверил файлы XML и DBC, файл TNSNAME и listener, но я понять ничего не смог. Все в норме.
Причина ошибки ORA-01034 и ORA-2710
Поколупавшись еще немного в интернете и своих мозгах, я понял эти ошибки связаны с ограниченной сессией к базе данных (db restricted session). Для того, чтобы запустить adstats.sql в приложении, я должен был разрешить ограниченную сессию к ДБ (restricted session). Но я забыл закрыть ее после того, как запустил adstats.sql. Это и вызывало ошибки.
Как исправить ошибки ORA-01034 и ORA-2710
Просто я отключился от БД один раз (закрыл сессию), так как я не мог выяснить причину проблемы сразу в процессе устранения неполадок. После этого эта ошибка исчезла.
Также вы можете выполнить следующую команду, чтобы избежать этой ошибки и без необходимости в закрытии сессии:
SQL> alter disable restricted session;
Вас заинтересует / Intresting for you:
I hit the same shared memory realm does not exist
symptom (on Windows) but for a different reason. I had just installed Oracle (XE) and after some troubleshooting, established that my installation was corrupt due to the presence of an ORACLE_HOME environment property at the time I installed it.
If this is TLDR, skip to ‘So to resolve:’!
My initial symptom was:
Message 850 not found; No message file for product=NETWORK, facility=NL
Apparently the Windows install reads the ORACLE_HOME from the registry and doesn’t need (and certainly in my case shouldn’t have…) an environment property.
Remove it, as follows:
- Edit the system environment settings (Windows key and start
typing ‘env’ and you should see this option come up. - Delete any User and System Environment Variables called ORACLE_HOME, if
present. (make a note of their values, mainly out of interest, but may be of
use if you want to put them back for some reason!) - Restart your machine. Don’t muck around with just a log off — restart your
machine. The Windows Oracle install uses Windows services by default
and your installation is currently very bad — it needs a restart.
Following the restart I was then able to get error messages other than ‘No message file…’ and could start looking at what the issue was.
Setting the ORACLE_SID to XE and connecting @XE I got as far as the errors in this page, namely the following symptoms:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Another symptom was:
When launching the ‘Get started’ page it failed to connect, giving a not found error (if I recall correctly), despite the Windows listener & XE services being started. As noted in another answer, this could be due to the windows services not being started. In my case those services were started, so something else was misconfigured.
At this point, I figured maybe my install had just gone so badly wrong due to the presence of my bad ORACLE_HOME environment property that I should reinstall. (Previous reinstalls hadn’t helped, but those had all been before I noticed the ORACLE_HOME system environment property (probably set up by me a year ago!).
So to resolve:
- Close any app looking at the Oraclexe install directory (editors/explorer/cmd prompts)
- A quick trip to Add/Remove programs and uninstall OracleXe
- Double-check you have no ORACLE_HOME environment property set anywhere, remember — Windows will use registry entries to get it.
- Restart (take no chances — we’re in this for the long term!)
- Did you make sure there was no ORACLE_HOME property?
- Run the Oracle installer again (as local admin account if applicable)
- You should be able to rejoice in a working install. I did, at least!
ORA-01034 means that the command you want to perform cannot be done in a stop, idle or shutdown database. If you’re surprised by the error, maybe you should check the database status immediately. It maybe someone or something turn it off without notification.
Connect to Local Database
Let’s see a case. Tried to connect to the local database.
[oracle@test ~]$ sqlplus system
...
Enter password:
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: 4376
Additional information: -1649756641
Process ID: 0
Session ID: 0 Serial number: 0
Because the database is stop there’s no way to do authentication.
Let’s see another case.
[oracle@test ~]$ sqlplus / as sysdba
...
SQL> alter database begin backup;
alter database begin backup
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
Although we can connect to the database by OS authentication, we cannot perform any database operation.
The solution is to startup the database.
Data Guard
If you saw ORA-01034 in the alert log, don’t panic, it’s not generated from the database that you are currently running. It’s usually from the standby Database.
...
Tue Oct 13 14:35:08 2008
Errors in file /oracle/admin/ORCL1/bdump/orcl1_arc1_3295892.trc:
ORA-01034: ORACLE not available
In such case, the primary database tried to transport redo log to the standby database, but the standby database is stop for some reason. You need to check what’s going on.
# 2- Ошибка ORA-01034: ORACLE недоступен ORA-27101: область общей памяти не существует
Я получаю указанную выше ошибку при попытке подключиться к базе данных сервера от клиента с использованием имени службы orcl
. Он подключается, когда я использую другое имя службы, т.е. dms
Ниже мой listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = dms) (SERVICE_NAME = dms) (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1) # (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = orcl) (SERVICE_NAME = dms) # (GLOBAL_DBANME = orcl) (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1) # (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /home/oracle/app/oracle and tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) #(SERVICE_NAME = orcl.localdomain) (ORACLE_SID = dms) (SERVICE_NAME = orcl) ) ) DMS = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dms) (ORACLE_SID = dms) ) )
Подскажите пожалуйста что делать?
Откройте командную строку и выполните следующие команды:
set oracle_sid=DATABASE NAME sqlplus /nolog conn sys/sys as sysdba shutdown abort startup
- 2 Можете ли вы помочь мне с тем же набором команд в Linux? Я использую RHEL.
- 3 @EKta: для Linux: просто используйте
export ORACLE_SID=
вместо этого, а остальное то же самое - 2 почему, когда я пытаюсь подключиться с помощью cmd «connect», я получаю ORA-27101, но когда я выполняю conn sys / sys как sydba, я могу подключиться ??
Иногда база данных не может быть смонтирована правильно, поэтому нам нужно смонтировать ее вручную. Для этого выключите его и запустите, затем смонтируйте. Войдите как пользователь oracle, затем выполните следующие команды:
sqlplus / as sysdba; shutdown immediate; startup nomount; alter database mount; alter database open;
- смонтируйте, затем вернитесь к предыдущей точке восстановления, исправьте это для меня
Убедитесь, что ваши ORACLE_HOME и ORACLE_SID верны. Чтобы увидеть текущие значения в Windows, введите в командной строке
echo %ORACLE_HOME%
затем
echo %ORACLE_SID%
Если значения не соответствуют вашему текущему дому оракула и идентификатору безопасности, вам необходимо исправить их. Это можно сделать в переменных среды Windows.
Посетите эту страницу для получения дополнительной информации
- Этот ответ был достаточно близок к моему решению. Хотя мои переменные $ ORACLE_HOME и $ ORACLE_SID были правильными, мой процесс вызывал файл параметров с неправильным SID.
ORA-01034 и ORA-27101 обычно указывают на то, что экземпляр базы данных, к которому вы пытаетесь подключиться, выключен и что вы не подключены как пользователь, у которого есть разрешение на его запуск. Войдите на сервер 192.168.1.53 и запустите orcl
например, или попросите администратора базы данных сделать это за вас.
Была такая же проблема в Windows XP. Решено. Ошибка возникла из-за переполнения системного журнала. Панель управления -> Администрирование -> Средство просмотра событий Щелкните правой кнопкой мыши журнал приложения, очистите все события, при необходимости сохраните журнал. Тот же процесс для системного журнала. Перезагрузите, и он должен работать.
SQL> sqlplus '/ as sysdba' SQL> startup Oracle instance started ------ Database mounted. Database opened. SQL> Quit [[email protected] ~]$ lsnrctl start
-
startup
не работает, кажется, проблема с настройкой БДSQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/opt/oracle/product/12.2.0.1/dbhome_1/dbs/initxe.ora'
Запускаем в cmd:
sqlplus / as sysdba;
Затем:
SQL> create pfile='c:/init.ora' from spfile;
удалять sga_target
линия в init.ora
файл, затем:
SQL> create spfile from pfile='c:/init.ora'; SQL> startup;
Эта же ошибка возникла у меня, хотя ORACLE_HOME
а также ORACLE_SID
вроде правильно настроили.
Проблема была в ORACLE_HOME
, который не должен заканчиваться косой чертой. Когда я удалил концевую косую черту, все заработало.
# ❌ INCORRECT export ORACLE_HOME=/usr/local/oracle/11gR2/ # ✔️ CORRECT export ORACLE_HOME=/usr/local/oracle/11gR2
Итак, даже если кажется, что все настроено нормально, проверьте для этого свои переменные.
Я столкнулся с той же проблемой при создании соединения с SQLDeveloper: «ORA-01034: ORACLE недоступен. ORA-27101: область общей памяти не существует»
Решение:
1. Обновите файл listene.ora, включив в него SID.
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:oraclexeapporacleproduct11.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:oraclexeapporacleproduct11.2.0server) (PROGRAM = extproc) ) (SID_DESC = ((GLOBAL_DBNAME = XE.DB) ((ORACLE_HOME = C:oraclexeapporacleproduct11.2.0server) ((SID_NAME = XE) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = USMUMTBALAKDAS2.us.deloitte.com)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE)
Для каталога Oraclexe может быть установлено разрешение «Только чтение». Измените разрешение каталога / подкаталога на чтение / запись и перезапустите службы прослушивателя. Проблема решена.
Я ударил то же самое shared memory realm does not exist
симптом (в Windows), но по другой причине. Я только что установил Oracle (XE) и после некоторого устранения неполадок установил, что моя установка была повреждена из-за наличия свойства среды ORACLE_HOME во время его установки.
Если это TL; DR, перейдите к «Итак, чтобы решить:»!
Мой первоначальный симптом был:
Message 850 not found; No message file for product=NETWORK, facility=NL
По-видимому, установка Windows считывает ORACLE_HOME из реестра и не требует (и, конечно, в моем случае не должно иметь …) свойства среды.
Удалите его следующим образом:
- Отредактируйте настройки системной среды (клавиша Windows и начните вводить «env», и вы должны увидеть эту опцию.
- Удалите все переменные пользователя и системной среды с именем ORACLE_HOME, если они есть. (запишите их значения, в основном из интереса, но они могут пригодиться, если вы по какой-то причине захотите вернуть их обратно!)
- Перезагрузите вашу машину. Не теряйте время, просто выходя из системы — перезагрузите компьютер. Установка Windows Oracle по умолчанию использует службы Windows, и ваша установка в настоящее время очень плохая — требуется перезапуск.
После перезапуска я смог получать сообщения об ошибках, кроме «Нет файла сообщений …», и мог начать искать, в чем проблема. Установив ORACLE_SID в XE и подключив @XE, я дошел до ошибок на этой странице, а именно следующих симптомов:
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
Еще один симптом: при запуске страницы «Начало работы» не удалось подключиться, что привело к ошибке «Не найдено» (если я правильно помню), несмотря на то, что прослушиватель Windows и службы XE были запущены. Как отмечено в другом ответе, это может быть связано с тем, что службы Windows не запускаются. В моем случае эти службы были запущены, поэтому что-то еще было настроено неправильно.
В этот момент я подумал, что, возможно, моя установка просто пошла неправильно из-за наличия у меня плохого свойства среды ORACLE_HOME, которое я должен переустановить. (Предыдущие переустановки не помогли, но все они были до того, как я заметил свойство системной среды ORACLE_HOME (вероятно, настроенное мной год назад!).
Итак, чтобы решить:
- Закройте все приложения, просматривающие каталог установки Oraclexe (запросы редакторов / проводника / cmd)
- Краткое руководство по установке и удалению программ и удалению OracleXe
- Дважды проверьте, что у вас нигде не установлено свойство среды ORACLE_HOME, помните — Windows будет использовать записи реестра, чтобы получить его.
- Перезагрузите (не рискуйте — мы в этом надолго!)
- Вы убедились, что свойство ORACLE_HOME отсутствует?
- Снова запустите установщик Oracle (если применимо, под учетной записью локального администратора)
- Вы должны иметь возможность радоваться рабочей установке. По крайней мере, я!
Ваш listener.ora неправильно настроен. Службы orcl нет.
Надеюсь, вы решили свою проблему. Если проблема не исчезла, проверьте еще раз, устанавливаете ли вы Oracle под учетной записью домена. Я нашел поток, в котором говорится, что Oracle XE дает такую же ошибку при установке под учетной записью домена. Вместо этого используйте локальную учетную запись.
Источник:
https://community.oracle.com/thread/2141735?start=0&tstart=0
В моем случае здесь мне просто нужно было воскресить сервер, которому было 9 лет, и Oracle выдавала мне эту ошибку.
По какой-то причине сервер переименовали, но app/oracle/product/10.2.0/server/network/admin/listener.ora
файл все еще объявлял LISTENER со старым HOST.
Мне пришлось поставить то же имя, что и в /etc/hostname
в /etc/hosts
, а также исправить имя, используемое в listener.ora
.
Также попробуйте запустить сразу:
sqlplus /nolog conn / as sysdba startup
SQL> sqlplus «/ как sysdba»
SQL> запуск
Oracle instance started ------ Database mounted. Database opened.
SQL> Выйти
У меня тоже возникла такая же проблема. Я попробовал описанные выше шаги, и у меня это сработало. Вы можете попробовать.
- Что ваш ответ добавляет к существующим идентичным ответам?
- Ох … Я не читал комментарии выше
Tweet
Share
Link
Plus
Send
Send
Pin
I was running a delete script on a table with around 80 million records, the script ran for two days and eventually failed and the hard disk space (in which Oracle was installed) was reduced to 300MB (available) from 50GB (available). Then I truncated the table. The database was up and running until this point. Then I did a system restart, after that Oracle services are up, but I am not able to connect to the database from SQL*Plus or SQL Developer. When I try to connect it gives following error:
ERROR: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
After that I increased my D drive memory to 100GB (available space) and restarted the Oracle services, but still was not able to connect to yjr database.
Then I tried all the approaches in this link like
1) Restarting Oracle
2) Setting ORACLE_SID environment variable
3) Verified the ORACLE_HOME from listener.ora and ORACLE_HOME from system properties.
4) Cleared windows event logs
When I run below sequence of commands:
set oracle_sid=DATABASE NAME
sqlplus /nolog
conn sys/sys as sysdba
shutdown abort
startup
the startup step produces the following error:
ORACLE instance started.
Total System Global Area 3892314112 bytes
Fixed Size 3084576 bytes
Variable Size 1388318432 bytes
Database Buffers 2361393152 bytes
Redo Buffers 139517952 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 6996
Session ID: 7 Serial number: 21027
The SID of the database I am trying to connect is PSPRODDB. Below is a screenshot of my environment variables:
Here is my listerner.ora file.
# listener.ora Network Configuration File: D:oracleproduct12.1.0.2dbhome_1networkadminlistener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:oracleproduct12.1.0.2dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:oracleproduct12.1.0.2dbhome_1binoraclr12.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.244.45.240)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
Let me know if you need any further info. Please help.