728x90

도커 설치 후 오라클 공식 홈페이지에 접속하여 최신 데이터 베이스 확인해 보았습니다.

주로 사용하던 버전이 11~12였던거 같은데 벌써 23버전이 나와있네요.

( 최신건 서비스가 잘 안돌아 가는것 같습니다. 구동은 되는데 원격접속 확인이 안되네요.)


1차 시도는 docker search를 믿고 적용했는데 실행 파라메타 설명이 없어서 실행시 옵션을 못 맞춰준것 같습니다.

2차 시도한 것을 적어 봅니다.

*********** 2차시도 ***** 성공사례 ********************
# 1.오라클사에서 23c버전을 개발자용으로 무료 배포하고 있다고 하니까 해당 이미지를 검색해 보았습니다.
*** google에서 검색 oracle23c docker ***
 gvenzl/oracle-free

# 이미지가 있네요. 
# 2.도커이미지 파일을 다운받아 보겠습니다.
> docker pull  gvenzl/oracle-free

# 3.받은 이미지를 컨테이너에 사용포트를 선언하면서 올리고 백그라운드로 실행합니다.
>docker run -d -p 1521:1521 --name oracle23c -e ORACLE_PASSWORD=<your password> -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-free

>docker exec oracle23c resetPassword <your password>

# 4.이후에 컨테이너에 접속은 다음 명령어로 접근이 가능합니다.
> docker exec -it oracle23c /bin/bash
[root@oracle23c /]#

# 유저를 오라클로 변경하여 오라클 리스너를 시작하도록 하겠습니다.
> source .bash_profile
> lsnrctl status
# 리스터 실행/멈춤
> lsnrctl start
> lsnrctl stop

------------------
# su 명령어가 권한 부족이라고 나오면 컨테이너 만들때 권한 명령어가 빠진거라고 합니다.
# 컨테이너 삭제하고 다시 이미지를 올리세요
> docker container ls
> docker stop [컨테이너id]
> docker rm [컨테이너id]
------------------

# 리스너가 정상 가동중인지 들어가서 확인해 보도록 하겠습니다.
> sqlplus / as sysdba
--- 오라클 기본 스키마 정보 조회 등등
sql> select instance_name, status from v$instance;

sql> startup
sql> shutdown immediate;

기타 설정
language utf-8 적용
select * from sys.props$ where name like '%LANGUAGE%';
SQL > update sys.props$ set value$='KOREAN_KOREA.UTF8' where name='NLS_LANGUAGE';
charset utf-8 적용
SQL > update sys.props$ set value$='UTF8' where name='NLS_CHARACTERSET';
nchar charset utf-8 적용
SQL > update sys.props$ set value$='UTF8' where name='NLS_NCHAR_CHARACTERSET';

 클라이언트 접속정보는 다음과 같습니다. 도커 특성상 이미지를 항시 유지해주는 것이 아니라 참고 바랍니다.

SID = FREE

Host : localhost

Port : 1521

username : sys

Role : sysdba

password : <your password>

 

이상입니다.

 

---------- 아래쪽은 참고용으로 남겨 놓은 자료입니다. 막판에 서비스 연결 부분에 문제가 있었습니다. ---------------


https://www.oracle.com/database/free/

 

Oracle Database Free | Oracle

Oracle Database Free

www.oracle.com

 개발용으로는 무료이기 때문에 공부용으로 사용하신다면 자유롭게 설치해서 사용하실 수 있습니다.

 해당 내용은 항상 공식 홈페이지에서 확인 바랍니다.

 전에는 개발 할때마다 시스템을 별도록 설치해서 사용했지만 도커를 이용하게 되면 좀 더 이동이 편하게 되고 사용하지 않을 때 DB가 활성화되어 자원을 사용하게 되는 경우를 줄일 수 있기 때문에 도커를 이용하려 합니다.

 도커를 활용할때는 도커 이미지 여부를 검색하고 있으면 도커 이미지를 다운받아 사용하고 없으면 리눅스나 우분투 OS가 올라가 있는 도커 이미지를 다운받아서 오라클을 설치해 주면 됩니다.

 

도커가 설치가 안되어 있다면 도커 설치를 하시고 시작하시면 됩니다.

2023.04.15 - [프로그램/짜투리상식] - Dorker 윈도우에 설치하기( 2023.04 )

 

도커 이미지는 dockerhub에서 검색해서 Tags 내용까지 확인하시는 것을 추천합니다.

https://hub.docker.com/r/lhrbest/oracle23cfree/tags

 

Docker

 

hub.docker.com

이미지 가져오는 명령어는 복사 버튼만 눌러서 복사해서 사용하시면 됩니다. 

# 1.오라클사에서 23c버전을 개발자용으로 무료 배포하고 있다고 하니까 해당 이미지를 검색해 보았습니다.

> docker search oracle23c ( 실행이 잘안됨 )
NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
lhrbest/oracle23cfree                 2

# 이미지가 있네요. 
# 2.도커이미지 파일을 다운받아 보겠습니다.
> docker pull lhrbest/oracle23cfree

# 3.받은 이미지를 컨테이너에 사용포트를 선언하면서 올리고 백그라운드로 실행합니다.
docker run -itd -h oracle --name oracle --privileged -p 1521:1521 -p 5500:5500  oracledb19c/oracle.19.3.0-ee:oracle19.3.0-ee /bin/bash

# 4.이후에 컨테이너에 접속은 다음 명령어로 접근이 가능합니다.
> docker exec -it gvenzl/oracle-free /bin/bash
[root@oracle23c /]#

# 유저를 오라클로 변경하여 오라클 리스너를 시작하도록 하겠습니다.
> su - oracle
> cd $home
> source .bash_profile
> lsnrctl status
# 리스터 실행/멈춤
> lsnrctl start
> lsnrctl stop

------------------
# su 명령어가 권한 부족이라고 나오면 컨테이너 만들때 권한 명령어가 빠진거라고 합니다.
# 컨테이너 삭제하고 다시 이미지를 올리세요
> docker container ls
> docker stop [컨테이너id]
> docker rm [컨테이너id]
------------------

# 리스너가 정상 가동중인지 들어가서 확인해 보도록 하겠습니다.
> sqlplus / as sysdba
--- 오라클 기본 스키마 정보 조회 등등
sql> startup

sql> select instance_name, status from v$instance;

sql> shutdown immediate;

기타 설정
language utf-8 적용
SQL > update sys.props$ set value$='KOREAN\_KOREA.UTF8' where name='NLS\_LANGUAGE';
charset utf-8 적용
SQL > update sys.props$ set value$='UTF8' where name='NLS\_CHARACTERSET';
nchar charset utf-8 적용
SQL > update sys.props$ set value$='UTF8' where name='NLS\_NCHAR\_CHARACTERSET';

도커 이미지가 정상적으로 다운받아지면 GUI 를 통해 도커 프로그램에서 확인할 수 있습니다.

2번 이미지 파일을 다운 받았다면, 이미지 텝을 누르면 다음과 같이 나옵니다.

Images 탭

아직 컨테이너에 이미지를 올리지 않았기 때문에 컨테이너 탭을 눌렀을때는 없을 것입니다.

3번 컨테이너에 이미지를 올리면 다음과 같이 나옵니다.

Containers 탭

이제 정상적으로 리눅스에 접속해서 리스너 확인을 하고 DB 툴을 사용해서 보시면 될것입니다.

오랜만에 글을 적다보니 새롭네요.

새로운 마음으로 하나하나 적었습니다.

 

이후 응용프로그램과 DB툴에서 정보를 확인 후 tnsname 파일에 반영하면 됩니다.

1. tns리스너 명과 포트 정보를 확인

2. userid, db정보

 


정보확인하다보니 이곳저곳 잊었던 기억들을 찾아다니고 있네요. ^^*

귀찮아서 이곳에 정리해 봅니다.

sql> show linesize
sql> set linesize 300
sql> set 컬럼명 format a30

select * from all_users;
alter user [user_name] identified by [password];

 프로그래머의 경향이 또 발생되네요. 귀찮니즘에 예정 정리해 두었던 내용을 여기에 가져와 봅니다. 

 버전에 맞추어 재확인이 필요한 자료이지만 기본 명령어는 문제가 없을것이기에 [오라클 계정 생성 (12G 주의점 추가)]내용을 아래가져다 놓았습니다. 참고하세요

더보기

CREATE TABLESPACE user10space

   DATAFILE 'D:\oracle10g\pubdata01\200802\TS_ora_02_001.dbs' size 20M
   DEFAULT STORAGE (initial 128k next 64k pctincrease 10);
  
   SELECT tablespace_name, status, contents
   FROM dba_tablespaces
   WHERE tablespace_name LIKE upper('user10space%')
   ORDER BY tablespace_name;

ALTER SESSION SET"_ORACLE_SCRIPT"=true;

  
create user user10g IDENTIFIED  by user10g  default tablespace user10space temporary tablespace temp;

 

   SELECT username, user_id FROM dba_users
   WHERE username LIKE 'USER10G' ORDER BY username;

   

GRANT connect, resource TO user10g;

commit
 

-------------------------------------------------------------------------

 

$sqlplus /nolog
sql>connect / as sysdba
sql>create user user1 identifed by user1passwd default tablespace user temporary tablespace temp;
sql>grant connect,resource to user1;

 

▩ Oracle Setting
---------------------------------------------------------------------------
1. 오라클 계정 설정 전체 작업

※C:\oracle\data\200703 폴더는 미리 만들어야 합니다.

-- 테이블 스페이스 생성
   CREATE TABLESPACE 테이블스페이스이름
   DATAFILE 'C:\oracle\data\200703\TS_ojt_03_239.dbs' size 20M
   DEFAULT STORAGE (initial 128k next 64k pctincrease 10);

 

-- 테이블 스페이스 자동 증가 생성

    CREATE TABLESPACE auto_seg_ts
    DATAFILE 'C:\ORADATA\auto_seg_ts.dbf' SIZE 1M 
    EXTENT MANAGEMENT LOCAL
    SEGMENT SPACE MANAGEMENT AUTO ;

 

-- 테이블 스페이스 목록
   SELECT tablespace_name, status, contents
   FROM dba_tablespaces
   WHERE tablespace_name LIKE '테이블스페이스이름%'
   ORDER BY tablespace_name;

 

--12G 계정이름앞에 C## 붙여줘야 한다고 하네요.. 그거 설정을 해제해주는 스크립트 사용할수 있다.

 

ALTER SESSION SET"_ORACLE_SCRIPT"=true;

 

-- 사용자 생성
   CREATE USER 사용자이름 IDENTIFIED BY 비밀번호
   DEFAULT TABLESPACE 테이블스페이스이름
   TEMPORARY TABLESPACE temp;

 

-- 등록된 계정 목록 보기
   SELECT username, user_id FROM dba_users
   WHERE username LIKE '사용자이름%' ORDER BY username;

-- 권한 주기
   GRANT connect, resource TO 사용자이름;

 

※  Oracle 설정 참고

1. 테이블 스페이스 생성
   - 테이블 스페이스 생성시 "C:\oracle\data\200703" 폴더는 미리 만들어야 합니다.

   CREATE TABLESPACE 테이블스페이스이름

   DATAFILE 'C:\oracle\data\200703\TS_ojt_03_239.dbs' size 20M
   DEFAULT STORAGE (initial 128k next 64k pctincrease 10);

 

2. 테이블 스페이스 목록 보기

   SELECT tablespace_name, status, contents
   FROM dba_tablespaces
   WHERE tablespace_name LIKE '테이블스페이스이름%'
   ORDER BY tablespace_name;

 

3. 테이블 스페이스의 사용 가능한 공간 보기
   SELECT tablespace_name, bytes, blocks
   FROM dba_free_space

   ORDER BY tablespace_name;

 

4. TableSpace의 삭제 : DROP TABLESPACE 테이블스페이스이름;
   - 테이블 스페이스를 삭제해도 하드디스크상에 데이터 파일은 남아 있음으로
     "D:\oracledata\200601" 상에서도 파일을 삭제해야 합니다.

   ALTER TABLESPACE 테이블스페이스이름 OFFLINE;
   DROP TABLESPACE 테이블스페이스이름 INCLUDING CONTENTS AND DATAFILES;

   SELECT tablespace_name, status, contents FROM dba_tablespaces ORDER BY tablespace_name;

 

5. 사용자 계정 생성 및 권한 지정
   - 계정의 종류
     . SYS: 오라클 데이터베이스 관리자
     . SYSTEM: 오라클 데이터베이스 관리자, 모든 권한이 SYS와 같으나 데이터베이스 생성 권한 없음
     . SCOTT, HR: SAMPLE 사용자 계정

   - 계정의 생성
     CREATE USER 사용자이름 IDENTIFIED BY 비밀번호
     DEFAULT TABLESPACE 테이블스페이스이름
     TEMPORARY TABLESPACE temp;

 

6. 등록된 계정 목록 보기
   SELECT username, user_id FROM dba_users
   WHERE username LIKE '사용자이름%' ORDER BY username;

 

7. 사용자 삭제
   DROP USER 사용자이름

 

8. 권한 주기
   - connect : 접속, 쿼리 실행, 테이블 생성
   - resource : view, stored Procedure 등 서버의 자원을 만들고 쓸수 있는 권한

   GRANT connect, resource TO 사용자이름;

 

#Oracle system 계정---------------------------------------------

SELECT * FROM tab;

--테이블 스페이스 생성(시 C:\oracle\data\200703 폴더는 미리 만들어야 합니다.)
CREATE TABLESPACE 테이블스페이스이름
DATAFILE 'C:\oracle\data\200703\TS_ojt_03_232.dbs' size 20M
DEFAULT STORAGE (initial 128k next 64k pctincrease 10);

 

--테이블 스페이스 목록
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name LIKE '테이블스페이스이름%'
ORDER BY tablespace_name;

 

--테이블 스페이스의 삭제, 파일은 탐색기에서 직접 삭제
DROP TABLESPACE 테이블스페이스이름;

 

--계정의 생성
CREATE USER ojt_03_232 IDENTIFIED BY oracle
DEFAULT TABLESPACE 테이블스페이스이름
TEMPORARY TABLESPACE temp;

 

--등록된 계정 목록 보기, 대문자(OJT_03)
SELECT username, user_id FROM dba_users
WHERE username LIKE '사용자이름%' ORDER BY username;

 

--권한주기
GRANT connect, resource TO 사용자이름;

 

--사용자 삭제
DROP USER 사용자이름;

 

--비번 변경

ALTER USER 사용자이름 IDENTIFIED BY 패스워드

※ 추가 작업했던 내용을 정리해 봅니다.

SQL> alter user system identified by "oracle23";

※ 이것도 변경해야 하나 고민하다가 작업해보는 중인 자료들입니다.

 [oracle@oracle23c admin]$ cd $ORACLE_HOME/network/admin
[oracle@oracle23c admin]$ more listener.ora
# listener.ora Network Configuration File: /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
# Generated by Oracle configuration tools.

DEFAULT_SERVICE_LISTENER = FREE

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = lhroel87)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

[oracle@oracle23c admin]$ vi listener.ora
[oracle@oracle23c admin]$ more listener.ora
# listener.ora Network Configuration File: /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
# Generated by Oracle configuration tools.

DEFAULT_SERVICE_LISTENER = FREE

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
  
[oracle@oracle23c admin]$ lsnrctl start

LSNRCTL for Linux: Version 23.0.0.0.0 - Developer-Release on 15-APR-2023 18:24:46

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Starting /opt/oracle/product/23c/dbhomeFree/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 23.0.0.0.0 - Developer-Release
System parameter file is /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/oracle23c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 23.0.0.0.0 - Developer-Release
Start Date                15-APR-2023 18:24:46
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           FREE
Listener Parameter File   /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/oracle23c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

 

728x90

+ Recent posts