Проблема с подключением к базе oracle - PullRequest
0 голосов
/ 18 июня 2020

Я создал одно соединение в Oracle с именем Oracle18 c. Всякий раз, когда я пытаюсь открыть раздел Таблицы , появляется всплывающее окно ниже. Мой Oracle сервер работает в контейнере Docker. Я пытался найти решение в inte rnet, но не нашел. Я новичок в базе данных Oracle. Пожалуйста, помогите мне.

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Мой контейнер был создан с нуля Oracle 18 xe source: github .

$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                 PORTS                                                                          NAMES
13afebdbdbdc        oracle/database:18.4.0-xe   "/bin/sh -c 'exec $O…"   8 hours ago         Up 7 hours (healthy)   



   $ docker exec -it xedb  ps -ef | grep xe
    oracle    1736     1  0 09:42 ?        00:00:01 xe_pmon_XE
    oracle    1738     1  0 09:42 ?        00:00:00 xe_clmn_XE
    ------------------------
    59 lines......
$ docker exec -it --user=oracle xedb sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Thu Jun 18 15:45:11 2020
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> show con_name   -- container name

NAME
------------------------------
CDB$ROOT



 SQL> show pdbs

        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 XEPDB1                         READ WRITE NO
    SQL>

Экземпляр запущен и работает, а также подключаемая база данных

Если вы не можете войти в систему как sysdba из терминала docker. Вы можете попробовать с помощью bash команды

$ docker exec -it --user=oracle xedb  bash
[oracle@13afebdbdbdc /]$

Если это не работает как параметр Oracle user exclude --user, используйте bash команда

$ docker exec -it xedb  bash
bash-4.2# su oracle   -- switch oracle user 
[oracle@13afebdbdbdc /]$ echo $ORACLE_HOME   -- verify environment
/opt/oracle/product/18c/dbhomeXE
[oracle@13afebdbdbdc /]$ echo $ORACLE_SID
 XE

Если ваша среда ничего не возвращает, вы можете установить среду с помощью следующей команды

    [oracle@13afebdbdbdc /]$ . oraenv   -- dot space oraenv
    ORACLE_SID = [XE] ?
    The Oracle base remains unchanged with value /opt/oracle
    [oracle@13afebdbdbdc /]$ rlwrap sqlplus / as sysdba

    SQL*Plus: Release 18.0.0.0.0 - Production on Thu Jun 18 15:58:39 2020
    Version 18.4.0.0.0

    Copyright (c) 1982, 2018, Oracle.  All rights reserved.

    Connected to an idle instance

     SQL> startup    -- start the database
    ORACLE instance started.

     Total System Global Area 1610609288 bytes
     Fixed Size                  8897160 bytes
     Variable Size             620756992 bytes
     Database Buffers          973078528 bytes
     Redo Buffers                7876608 bytes
     Database mounted.
     Database opened.
SQL> select open_mode from v$database;  -- check database status 

OPEN_MODE
--------------------
READ WRITE


SQL> show pdbs     -- check pdb open mode is read write

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

Если вы видите подключаемую базу данных в состоянии монтирования

SQL> show pdbs      -- pdb xepdb1 is in mount state 

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         MOUNTED
SQL> alter pluggable database xepdb1 open;   -- open pdb 


Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

SQL> alter pluggable database xepdb1 save state ; --------next restart pdb will be opened automagically 


Pluggable database altered.
0 голосов
/ 18 июня 2020

По умолчанию подключаемые базы данных не открываются автоматически при запуске их контейнерной базы данных. Пользователь sysdba должен выполнить команду «изменить подключаемую базу данных, полностью открытую», чтобы перевести их в режим чтения-записи. Ваша ошибка говорит о том, что здесь этого не произошло. Проверьте эту ссылку, чтобы узнать, как это сделать: https://oracle-base.com/articles/12c/multitenant-startup-and-shutdown-cdb-and-pdb-12cr1#: ~: text = Pluggable% 20Database% 20 (PDB)% 20Automatic% 20Startup, -The% 2012.1. & Text = Prior% 20to% 2012.1., Или % 20all% 20of% 20the% 20PDBs .

...