programing

도커 컨테이너 내 오라클 데이터베이스에서 sqlplus를 사용하는 방법은 무엇입니까?

bestprogram 2023. 7. 21. 21:47

도커 컨테이너 내 오라클 데이터베이스에서 sqlplus를 사용하는 방법은 무엇입니까?

도커 환경에 Oracle db 버전 12c를 설치했습니다.다음 명령을 사용했습니다.

docker run -d --name oracle -p 8080:8080 -p 1521:1521 quay.io/maksymbilenko/oracle-12c

DB에 연결하여 모든 것이 잘 진행되었지만 통합 감사를 활성화하고자 했습니다.그러기 위해서는 먼저 데이터베이스를 종료해야 합니다. 그리고 다음과 같이 sqlplus를 사용하라는 모든 지침이 나와 있습니다.

sqlplus / as sysoper
SQL> shutdown immediate
SQL> exit

다음 명령을 사용하여 DB에 성공적으로 연결했습니다.

docker exec -it oracle "bash"

그런 다음 sqlplus 명령을 실행하면 "command not found"라는 메시지가 표시됩니다.

[root@f30cc670f85f /]#   sqlplus / as sysoper
bash: sqlplus: command not found

제가 잘못하고 있나요?오라클 DB에 sqlplus를 설치하려면 어떻게 해야 합니까?저는 그것을 찾아봤지만 저에게 도움이 되는 것을 찾지 못했습니다.

관련이 있다면 Mac을 가지고 있습니다.

저는 도커 이미지가 데이터베이스일 뿐이며 데이터베이스를 실행하기에 충분한 OS라고 생각합니다.SQL*Plus와 같은 클라이언트 소프트웨어는 포함되어 있지 않은 것 같습니다.

Mac에 SQL*Plus를 설치해야 합니다.아직 다운로드하지 않은 경우 SQL*Plus 확장을 포함한 MacOS용 Oracle Instant Client를 다운로드하십시오.아니면 스스로 치료하고 새로운 sqlCL 도구를 설치하는 것이 어떻습니까?설치가 더 쉽고 모든 SQL*Plus 기능과 훨씬 더 많은 기능을 갖추고 있습니다.여기서 찾으세요.

어떤 클라이언트를 선택하든, 일단 Mac에 설치되면 다른 앱처럼 실행됩니다. 연결을 묻는 메시지가 표시되면 Macsym이 제공하는 문자열은 다음과 같습니다.

sqlplus user/password@ip:port/service-name
sqlplus system/oracle@//localhost:1521/xe 

다음과 같은 시스템으로 연결해야 하는 경우:

sqlplus sys/oracle@//localhost:1521/xe as sysdba

.bashrc 파일 sqlplus sysdba로 하는 데 사용됩니다.docker-compose exec db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"

이를 사용하여 이미지를 입력합니다.

docker exec -it oracle /bin/bash

그런 다음 다음을 사용할 수 있습니다.

sqlplus sys as sysdba

도커 이미지 저장소/오라클/데이터베이스-엔터프라이즈:12.2.0.1-slim sqlplus 및 sqlldr 도구는 컨테이너가 시작된 후에만 사용할 수 있습니다.도커 파일에서는 다음 작업을 수행할 수 없습니다.

RUN sqlplus sys/password AS SYSDBA @create_database.sql

설치 후 및 시작 시 스크립트를 실행하도록 컨테이너 이미지를 구성할 수 있습니다.현재 sh 및 sql 확장이 지원됩니다.

Docker 파일에서 SQL 스크립트를 시작 디렉토리에 복사합니다.

COPY create_database.sql  /opt/oracle/scripts/setup/01_create_database.sql

컨테이너를 처음 시작할 때 데이터베이스가 만들어집니다.

Windows OS의 경우:

docker ps명령행에서 실행 중인 컨테이너를 표시하고 컨테이너 ID를 확인합니다.

유형docker exec -it container_id //bin/bash

로그인 방법sqlplus지휘권

아니면 가장 간단한 방법.

docker exec -it container_id bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"

자세한 내용은 다음을 참조하십시오. https://docs.oracle.com/en/database/oracle/oracle-database/21/deeck/index.html#DEEDK-GUID-EDA557B2-B0D6-45E1-8FBD-C1D756803982

저는 도커에 대한 경험이 없지만, 당신이 배쉬 환경에 도달하는 것처럼 모든 세계를 찾아내기 때문에 우리는 확고한 기반에 있습니다.반환된 오류("bash: sqlplus: command not found")는 셸 환경 내에 존재하기 때문에 PATH 환경 변수에 나열된 디렉터리에서 실행 파일(sqlplus)을 찾을 수 없음을 의미합니다.실제로 세 가지 변수를 설정해야 합니다. 즉, ORACLE_SID를 데이터베이스 이름 값으로 설정해야 합니다.Oracle_HOME은 Oracle 바이너리가 설치된 디렉토리의 값으로 설정해야 합니다.또한 PATH에는 $ORACLE_HOME/bin이 추가되어야 합니다.

export PATH=$ORACLE_HOME/bin:$PATH

분명히 PATH 설정에 ORACLE_HOME 값을 사용하고 있으므로 ORACLE_HOME을 먼저 설정해야 합니다.

오라클 계정으로 연결해야 합니다.

su -oracle
sqlplus / as sysdba

언급URL : https://stackoverflow.com/questions/58857476/how-to-use-sqlplus-on-oracle-database-inside-a-docker-container