| name | docker-oracle-sql |
| description | Runs Oracle SQL inside the local Docker XE container via docker exec and sqlplus. Use when the user asks to query Oracle with docker exec, TB_BPM_* tables, PAL_DB, sqlplus, or uengine-oracle-xe. Before any SELECT, follow the schema and container checks in this skill so queries target the correct owner (SYSTEM vs PAL_DB). |
Docker Oracle SQL (docker exec)
When this applies
docker exec์ OracleยทsqlplusยทTB_BPM_*ยทPAL_DBยทuengine-oracle-xe๊ฐ ํจ๊ป ์ธ๊ธ๋๊ฑฐ๋, ๋ก์ปฌ Docker Oracle๋ก ํ
์ด๋ธ์ ์กฐํยท๊ฒ์ฆํ ๋ ๋จผ์ ์ด ์คํฌ ์์๋ฅผ ๋ฐ๋ฅธ๋ค.
1. ์ฐ์ ํ์ธ (์คํ ์ ํ์)
-
์ปจํ
์ด๋
- ๊ธฐ๋ณธ ์ด๋ฆ:
uengine-oracle-xe (oracle/docker-compose.yml).
- ํ์ธ:
docker ps --format '{{.Names}}' | grep -E '^uengine-oracle-xe$' (์์ผ๋ฉด cd oracle && docker compose up -d ๋ฑ์ผ๋ก ๊ธฐ๋ ํ ์ฌ์๋).
-
์คํค๋ง(์ค๋ธ์ ํธ ์์ ์) โ ์ฌ๊ธฐ์ ์ค์ํ๋ฉด ORA-00942
- Docker์ฉ DDL (
oracle/scripts/schema-docker.sql): ํ
์ด๋ธ์ด SYSTEM ์คํค๋ง์ ์์ฑ๋จ. ์: TB_BPM_PROCDEF โ SELECT ... FROM TB_BPM_PROCDEF ๋๋ SYSTEM.TB_BPM_PROCDEF.
- ์ด์/ํ์ค DDL (
oracle/scripts/schema.sql): ํ
์ด๋ธ์ด PAL_DB ์คํค๋ง์ ์์ฑ๋จ. ์: PAL_DB.TB_BPM_PROCDEF. Docker์ ์ด ์คํฌ๋ฆฝํธ๋ง ์ ์ฉํ์ง ์์๋ค๋ฉด PAL_DB.*๋ ์กด์ฌํ์ง ์์ ์ ์์.
- ๊ท์น: ๋ก์ปฌ Docker XE๋ฅผ
schema-docker.sql๋ก๋ง ๊น์๋ค๋ฉด SYSTEM ์ชฝ ์ด๋ฆ์ ์ฐ์ ์ฌ์ฉํ๋ค. ๋ถํ์คํ๋ฉด dba_tables๋ก ํ์ธํ๋ค.
docker exec -i uengine-oracle-xe sqlplus -s system/oracle@//localhost:1521/XE <<'EOSQL'
SET PAGESIZE 50 LINESIZE 120
SELECT owner, table_name FROM dba_tables WHERE table_name = 'TB_BPM_PROCDEF';
EXIT;
EOSQL
-
์ ์ ๋ฌธ์์ด (๊ธฐ๋ณธ๊ฐ)
- ์ปจํ
์ด๋ ๋ด๋ถ์์:
system/oracle@//localhost:1521/XE
- ํ๊ฒฝ๋ณ์๋ก ๋ฎ์ด์ฐ๋ ๊ฒฝ์ฐ:
oracle/scripts/run-schema-docker.sh, oracle/scripts/README-DOCKER-SETUP.md ์ฐธ๊ณ (ORACLE_CONTAINER, ORACLE_USER, ORACLE_PASSWORD, ORACLE_SID).
2. ์กฐํ ์คํ ํจํด
sqlplus์ SQL์ ๋๊ธธ ๋๋ -i์ heredoc(๋๋ ํ์ดํ)์ ์ฌ์ฉํ๋ค.
LOB ์ ์ธ(์์ฝ ์กฐํ) โ ๋ก๊ทธยทํ์ธ์ฉ์ผ๋ก ์ ํฉ:
docker exec -i uengine-oracle-xe sqlplus -s system/oracle@//localhost:1521/XE <<'EOSQL'
SET PAGESIZE 200 LINESIZE 200 FEEDBACK ON HEADING ON
SELECT id, name, path, is_directory, resource_type, created_at, updated_at
FROM TB_BPM_PROCDEF;
EXIT;
EOSQL
์ ์ฒด ์ปฌ๋ผ( CLOB ํฌํจ ) โ ์ถ๋ ฅ์ด ๋งค์ฐ ๊ธธ ์ ์์:
docker exec -i uengine-oracle-xe sqlplus -s system/oracle@//localhost:1521/XE <<'EOSQL'
SET PAGESIZE 500 LINESIZE 200 LONG 4000 LONGCHUNKSIZE 4000 FEEDBACK ON HEADING ON
SELECT * FROM TB_BPM_PROCDEF;
EXIT;
EOSQL
PAL_DB๊ฐ ์ค์ ๋ก ์์ ๋๋ง (์คํค๋ง ํ์ธ ํ):
SELECT * FROM PAL_DB.TB_BPM_PROCDEF;
3. ์์ด์ ํธ ๋์ ์์ฝ
docker exec๋ก Oracle์ ๋ถ๋ ์์ฒญ์ด๋ฉด ๋จผ์ ์ปจํ
์ด๋ ๊ฐ๋ ์ฌ๋ถ์ ํ
์ด๋ธ owner(Docker=SYSTEM vs PAL_DB) ๋ฅผ ํ์ธํ ๋ค FROM ์ ์ ๊ณ ๋ฅธ๋ค.
- ๋์ผ ์ ์ฅ์์
oracle/scripts/schema-docker.sql vs oracle/scripts/schema.sql ์ฐจ์ด๋ฅผ ๊ทผ๊ฑฐ๋ก ์ผ๋๋ค.
- ๊ฒฐ๊ณผ๊ฐ ๋น์ด ์๊ฑฐ๋ ORA-00942์ด๋ฉด owner/์คํฌ๋ฆฝํธ ์ ์ฉ ์ฌ๋ถ๋ฅผ ์์ฌํ๊ณ
dba_tables๋ก ์ฌํ์ธํ๋ค.