문서의 이전 판입니다!
docker run -d --name==oracle11gr2 \ -p 49161:1521 \ -p 49180:8080 \ -e ORACLE_ALLOW_REMOTE=true -e ORACLE_DISABLE_ASYNCH_IO=true wnameless/oracle-xe-11g-r2
hostname: localhost port: 49161 # container port 1521 sid: xe username: system password: oracle
http://localhost:<dockerport>/apex/apex_admin
접속# container port 8080 username: ADMIN password: admin
docker exec -it -u oracle:dba oracle11gr2 /bin/bash # sqlplus 실행 sqlplus "SYS/oracle" AS SYSDBA
-- Table Sapace 추가 CREATE TABLESPACE <tablespace_name> DATAFILE '<tablespace_name>.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M; CREATE USER <username> IDENTIFIED BY <password> DEFAULT TABLESPACE <tablespace_name> QUOTA UNLIMITED ON <tablespace_name> TEMPORARY TABLESPACE TEMP; GRANT CONNECT, RESOURCE TO <username>;
<username>
사용자로 접속해서 작업한다.system
계정으로는 작업하지 말 것.SELECT * FROM V$VERSION; SELECT version FROM V$INSTANCE;
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; -- NLS_CHARACTERSET : AL32UTF8 -- NLS_NCHAR_CHARACTERSET : AL16UTF16 SELECT VALUE$ FROM sys.props$ WHERE name='NLS_LANGUAGE'; SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_LANGUAGE' -- AMERICAN
KO16MSWIN949
로 변경하는 예인데, 되도록 AL32UTF8
사용할 것.UPDATE props$ SET VALUE$='KO16MSWIN949' WHERE name='NLS_CHARACTERSET'; UPDATE props$ SET VALUE$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET'; UPDATE sys.props$ SET VALUE$='KOREAN_KOREA.UTF8' WHERE name='NLS_LANGUAGE'; commit; -- 모든 데이터베이스에 일괄 적용. 아래 작업을 안하면 오류 발생했음. -- ORA-06552: PL/SQL: Compilation unit analysis terminated -- ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다 -- ORA-06553: PLS-553: character set name is not recognized ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16; -- 재시작 shutdown IMMEDIATE startup
KO16KSC5601
: 완성형 한글, 한글2350글자. 한글 2bytes 차지KO16MSWIN949
: CP949, 모든 한글 표현, 한글 2bytes 차지AL32UTF8
: UTF-8, 한글 3bytes 차지