도커 오라클 인스턴스에 연결하는 방법
저는 이 지침을 따르고 있습니다.
다음과 같은 도커 컨테이너를 만들었습니다.
docker run --name oracle \
-p 1521:1521 \
-e ORACLE_SID=ORASID \
-e ORACLE_PDB=ORAPDB \
-e ORACLE_PWD=F1f@f23_ \
-v /mnt_point/oradata:/home/oracle/oradata \
oracle/database:12.2.0.1-ee
출력은 다음과 같습니다.
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Completed: alter pluggable database ORAPDB open
2017-08-07T19:16:31.190780+00:00
ORAPDB(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORASID/ORAPDB/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ORAPDB(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORASID/ORAPDB/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ORAPDB(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORAPDB(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2017-08-07T19:16:32.867558+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORASID/control01.ctl' SCOPE=SPFILE;
ALTER PLUGGABLE DATABASE ORAPDB SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORAPDB SAVE STATE
ctrl+c로 죽입니다.그럼 다음을 실행합니다.
docker start oracle
docker logs -f oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORAPDB(3):Undo initialization finished serial:0 start:508498668 end:508498772 diff:104 ms (0.1 seconds)
ORAPDB(3):Database Characterset for ORAPDB is AL32UTF8
ORAPDB(3):Opatch validation is skipped for PDB ORAPDB (con_id=0)
2017-08-07T19:25:39.799508+00:00
ORAPDB(3):Opening pdb with no Resource Manager plan active
Pluggable database ORAPDB opened read write
Starting background process CJQ0
Completed: ALTER DATABASE OPEN
2017-08-07T19:25:40.536753+00:00
CJQ0 started with pid=38, OS id=239
2017-08-07T19:25:42.538433+00:00
Shared IO Pool defaulting to 64MB. Trying to get it from Buffer Cache for process 77.
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
그런 다음 다음 연결을 시도합니다.
docker exec -ti oracle sqlplus pdbadmin@ORAPDB
결과는 다음과 같습니다.
ORA-12154: TNS:could not resolve the connect identifier specified
그러면 사용자 이름을 묻습니다.어떤 사용자의 SYS, SYSTEM, PDBADMIN에 상관없이 연결이 되지 않습니다.오타가 아닌지 확인하기 위해 암호(F1f@f23_)를 여러 번 다시 입력했습니다.이에 대한 어떤 의견이라도 주시면 감사하겠습니다.
저도 그 사진들을 보고 이런 경험을 했습니다.먼저 플러그형 데이터베이스에 연결하려면 먼저 플러그형 데이터베이스를 열어야 합니다.
저는 이와 같은 것을 사용합니다.
docker exec -ti oracle sqlplus / as sysdba
alter pluggable database pdb1 open;
네, 저도 오라클 데이터베이스를 도커로 설정한 후 동일한 오류가 발생했습니다.
먼저 인스턴스가 실행 중인지 확인하고 ORACLE_SID를 찾습니다.
Oracle SID는 ORCLCDB입니다.
ORACLE_SID에 대해 환경을 설정하지 않은 경우 다음과 같은 이점을 얻을 수 있습니다.
연결에 실패했습니다.
그러나 ORACLE_SID를 설정한 후에는 다음을 수행합니다.
이제 더 이상 연결 실패 오류가 아니라 다른 SYSDBA가 발생합니다.
sqlplus 명령어 전체에 "/ as sysdba"만 추가하면 됩니다.
컨테이너가 시작되고 데이터베이스가 생성되면 다음 방법 중 하나로 다른 데이터베이스와 마찬가지로 컨테이너에 연결할 수 있습니다.
1) sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba
2) sqlplus system/<your password>@//localhost:1521/<your SID>
3) sqlplus pdbadmin/<your password>@//localhost:1521/<Your PDB name>
도커 컨테이너에서 SQL*Plus 실행
데이터베이스를 시작할 때 사용했던 것과 동일한 도커 이미지를 사용하여 sqlplus를 실행하여 데이터베이스에 연결할 수 있습니다.
docker run --rm -ti oracle/database:12.2.0.1-ee sqlplus pdbadmin/<yourpassword>@//<db-container-ip>:1521/ORCLPDB1
또 다른 옵션은 도커 Exec을 사용하고 데이터베이스를 이미 실행 중인 동일한 컨테이너 내에서 sqlplus를 실행하는 것입니다.
docker exec -ti <container name> sqlplus pdbadmin@ORCLPDB1
Oracle Database Docker 이미지를 실행하려면 다음과 같이 docker run 명령을 사용합니다.
docker run --name <container name> \
-p <host port>:1521 -p <host port>:5500 \
-e ORACLE_SID=<your SID> \
-e ORACLE_PDB=<your PDB name> \
-e ORACLE_PWD=<your database passwords> \
-e ORACLE_CHARACTERSET=<your character set> \
-v [<host mount point>:]/opt/oracle/oradata \
oracle/database:12.2.0.1-ee
Parameters:
--name: The name of the container (default: auto generated)
-p: The port mapping of the host port to the container port.
Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
-e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
-e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)
-e ORACLE_CHARACTERSET:
The character set to use when creating the database (default: AL32UTF8)
-v /opt/oracle/oradata
The data volume to use for the database.
Has to be owned by the Unix user "oracle" or set appropriately.
If omitted the database will not be persisted over container recreation.
-v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
Optional: A volume with custom scripts to be run after database startup.
For further details see the "Running scripts after setup and on startup" section below.
-v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
Optional: A volume with custom scripts to be run after database setup.
For further details see the "Running scripts after setup and on startup" section below.
유용한 : https://github.com/oracle/docker-images/tree/master/OracleDatabase
지침은 가 있었습니다. .
SQL*Plus 시작 및 데이터베이스 연결
https://docs.oracle.com/database/121/ADMQS/GUID-DE8A79BD-FAE4-4364-98FF-D2BD992A06E7.htm#ADMQS0361
기본적으로 오라클 컨테이너에 들어가서 sqlplus를 입력합니다.사용자 이름 프롬프트에 SYSAS SYSDBA를 입력한 다음 암호를 입력합니다.그런 다음 사용자와 테이블을 만듭니다.
TNS_ADMIN
문제를 일으키고 있었습니다.ORA-12154
. XE 컨테이너 내부의 인스턴스에 성공적으로 연결할 수 있었습니다.sqlplus test/test@//localhost:1521/XEPDB1
, 밖에서 온 건 아닙니다
제거후TNS_ADMIN
효과가 있었습니다.내 생각엔, sqlplus takes가TNS_ADMIN
setting, 그리고 그것이 존재할 경우, 연결을 해결하기 위해 tnsnames.또는 데이터를 사용합니다.그러나 물론 내부 도커의 Oracle XE 인스턴스는 여기에 나열되지 않습니다.
또는 이 구문을 사용할 수도 있습니다. 이 구문은 tnsname.ora가 정의되어 있지만 작동합니다.sqlplus test/test@'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XEPDB1)))'
당신이 이걸 찾고 있는 것 같습니다.
datasource:
url: jdbc:oracle:thin:@//localhost:1521/ORCLPDB1.localdomain
username: SYS as SYSDBA
password: Oradoc_db1
언급URL : https://stackoverflow.com/questions/45554498/how-do-i-connect-to-docker-oracle-instance
'programing' 카테고리의 다른 글
자식 지시 전에 부모 지시를 실행하는 방법? (0) | 2023.10.12 |
---|---|
문자열에 공백뿐만 아니라 문자와 공백이 포함되어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.10.12 |
Python : 문자열 크기(바이트)를 가져옵니다. (0) | 2023.10.12 |
최소 및 최대 날짜 (0) | 2023.10.12 |
글리폰을 크게 하려면 어떻게 해야 할까요?(크기 변경?) (0) | 2023.10.12 |