# ORACLE 18C XE ์ ‘์†๋ฐฉ๋ฒ•

(๋‚˜์˜ ๊ฒฝ์šฐ ํšŒ์‚ฌ ๋„คํŠธ์›Œํฌ์—์„œ 127.0.0.1์ด ์•„๋‹ˆ๋ผ ์ •ํ™•ํ•œ ip๋ฅผ ์ž…๋ ฅํ•ด์„œ ๋จ)
https://www.youtube.com/watch?v=jMzhxbiFXtM

sqlplus / as sysdba
SELECT name, open_mode, cdb FROM v$database;
show pdbs;
exit

lsnrctl status (์˜ค๋ผํด์˜ ServiceNameํ™•์ธํ•˜๊ธฐ)

services.msc oracle์ด ์ผœ์ ธ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

C:\app\f5074\product\18.0.0\dbhomeXE\network\admin\tnsnames.ora  SERVICE_NAMEํ™•์ธํ•˜๊ธฐ

# ์˜ค๋ผํด sqlํŒŒ์ผ ์ž„ํฌํŠธ ๋ฐฉ๋ฒ•

https://enspring.tistory.com/517
https://blog.naver.com/PostView.nhn?blogId=kimdj217&logNo=221405032563&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=false&from=postView
cmd ์—์„œ sqlplus system
@C:\Users\f5074\Documents\ex.sql

# 1๋ถ„๋‹จ์œ„๋กœ ๋‚ ์งœ ์ƒ์„ฑ

SELECT TO_CHAR(TO_DATE(START_DTTM, 'YYYYMMDDHH24MI') + (((LEVEL / 60)) / 24), 'YYYYMMDDHH24MI') TIME_STR
FROM (
	SELECT '202012291300' AS START_DTTM
		, '202012301430' AS END_DTTM
	FROM DUAL
	) connect BY TO_DATE(START_DTTM, 'YYYYMMDDHH24MI') + (((LEVEL / 60)) / 24) <= TO_DATE(END_DTTM, 'YYYYMMDDHH24MI');

# x์ผ ๋‹จ์œ„๋กœ ๋‚ ์งœ ์ƒ์„ฑ

SELECT TO_CHAR(DUM_DAYS, 'YYYYMMDD') DUM_DAYS
FROM (
    SELECT TO_DATE('20200101', 'YYYYMMDD') - 1 + ROWNUM AS DUM_DAYS
    FROM ALL_OBJECTS
    WHERE TO_DATE('20200101', 'YYYYMMDD') - 1 + ROWNUM < TO_DATE('20200120', 'YYYYMMDD')
    )
 WHERE TO_CHAR(DUM_DAYS, 'D') = '7'

# X์ผ ๋‹จ์œ„ ํ™œ์šฉ

WITH TB_DATE AS (
	SELECT TO_CHAR(DUM_DAYS, 'YYYYMMDD') DUM_DAYS
	FROM (
	    SELECT TO_DATE('20200101', 'YYYYMMDD') - 1 + ROWNUM AS DUM_DAYS
	    FROM ALL_OBJECTS
	    WHERE TO_DATE('20200101', 'YYYYMMDD') - 1 + ROWNUM <= TO_DATE('20200120', 'YYYYMMDD')
	    )
), TB_CODE AS(
		SELECT GENE_CD_DESC
		FROM T_CD_GENE_DATA
		WHERE 1 = 1
		  AND GENE_DV = 'STAT_EQP_SET'
)
SELECT TD.DUM_DAYS, TC.GENE_CD_DESC
  FROM TB_DATE TD, TB_CODE TC
ORDER BY DUM_DAYS

# ์„ค๋น„๋ฐ์ดํ„ฐ

์„ค๋น„๋ฐ์ดํ„ฐ๋ฅผ ์ฐจํŠธ๋กœ ๋งŒ๋“ค๋•Œ, ๊ฐ ๋ถ„๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๋Š” ์ƒํ™ฉ
์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ถ„๋‹จ์œ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์— ๋น ์งˆ ๋•Œ ๋นˆ๊ฐ’์ด ์—†๋„๋ก ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•
1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์—†์„ ๊ฒฝ์šฐ ์ด์ „๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌํ˜„
2. ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•
3. ์„ค๋น„์—์„œ ์ธก์ •ํ•˜๋Š” ํ•ญ๋ชฉ๋ณ„(ITEM_CD)๋กœ ๋‚ ์งœ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•จ
4. ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๋นˆ๊ฐ’์˜ ๊ฒฝ์šฐ ์ด์ „ ํ˜น์€ ์ดํ›„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ ๊ฐ’์„ ๋ฎ์–ด์”Œ์›Œ์•ผ ํ•จ
JOIN ์ž์ฒด๋ฅผ ์™ธ๋ถ€ DB์—์„œ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด, /*+ DRIVING_SITE(EXT_TABLE) */ ์„ ์‚ฌ์šฉํ•œ๋‹ค.

-> ๋ณดํ†ต ์™ธ๋ถ€ DB์˜ TABLE์ด ํฐ ๊ฒฝ์šฐ, ์ž‘์€ ๋‚ด๋ถ€ DB DATA ๋ฅผ ๊ทธ์ชฝ์œผ๋กœ ๋ณด๋‚ธํ›„ JOIN ์ดํ›„์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ์‹

LEADING ๋“ฑ์˜ ํžŒํŠธ๊ฐ€ ์•ˆ ๋จน์„๋•Œ๋Š”? ๊ทธ๋ƒฅ ํ…Œ์ด๋ธ”, ๋ทฐ ์ˆœ์„œ ๋ฐ”๊พธ๊ณ  ORDERED ํžŒํŠธ ์ ์šฉํ•˜๋ฉด ๋จนํž˜

-> Query Transformation ๋“ฑ์œผ๋กœ ์ธํ•ด Query Block ์ด ๋ฐ”๋€”์ˆ˜ ์žˆ์–ด ๋ช…์‹œ์ ์œผ๋กœ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” LEADING ํžŒํŠธ๊ฐ€ ์•ˆ๋จน์„ ๋•Œ๊ฐ€

์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 10053 Trace ํ™•์ธํ•˜๋ฉด ์ •ํ™•ํ•œ BLOCK ๋ช…์ด ๋‚˜์˜ค๋ ค๋‚˜?

# DumpํŒŒ์ผ Import

1. ๋จผ์ € emt.dmpํŒŒ์ผ์„ C:\DEV์— ์ €์žฅ
2. cmd์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ์„ ํ•˜๋ฉด ๋จ

1) C:\Users\hkedu>sqlplus "/as sysdba"
2) SQL> create user emt identified by emt default tablespace users;
3) SQL> grant connect, resource to emt;
4) SQL> create directory save as 'c:/dev';
5) SQL> grant read, write on directory save to emt;
6) SQL> exit
7) C:\Users\hkedu>impdp emt/emt directory=save file=emt.dmp


์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ๊ฒฝ์šฐ

1) C:\Users\hkedu>sqlplus "/as sysdba"
2) SQL> drop user emt cascade;
3) SQL> drop directory save;
4) SQL> create user emt identified by emt default tablespace users;
5) SQL> grant connect, resource to emt;
6) SQL> create directory save as 'c:/dev';
7) SQL> grant read, write on directory save to emt;
8) SQL> exit
9) C:\Users\hkedu>impdp emt/emt directory=save file=emt.dmp

# ORDER BY

GROUP BY SITE, CUR_DT, EQP_DESC, EQP_NO, EQP_ID, STATUS, STATUS_D
ORDER BY SITE, CUR_DT, EQP_DESC ASC, EQP_NO, EQP_ID, STATUS, DECODE(STATUS_D, 'ChangePowder', 1, 'ChangeMold', 2, 'SampleProduction', 3)

# ์ผ,์ฃผ,์›”,๋…„ ๋‹จ์œ„ ๊ฐ’ ๊ตฌํ•˜๊ธฐ

๋‚ ์งœ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ ํ›„ ์ผ, ์ฃผ, ์›”, ๋…„ ๋‹จ์œ„๋กœ GROUP BY๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

SELECT TO_CHAR(TO_TIMESTAMP('20200209 13595500', 'YYYYMMDD HH24MISSFF3'), 'YYYY-MM-DD') AS YEAR_MONTH_DAYS
	, TO_CHAR(TO_TIMESTAMP('20200209 13595500', 'YYYYMMDD HH24MISSFF3'), 'YYYY-WW') || ' W' AS YEAR_WEEKS
	, TO_CHAR(TO_TIMESTAMP('20200209 13595500', 'YYYYMMDD HH24MISSFF3'), 'YYYY-MM') AS YEAR_MONTHS
	, TO_CHAR(TO_TIMESTAMP('20200209 13595500', 'YYYYMMDD HH24MISSFF3'), 'YYYY') AS YEARS
FROM DUAL



SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')
	 , TO_CHAR(SYSDATE, 'YYYY-WW') || ' W'
	 , TO_CHAR(SYSDATE, 'YYYY-MM')
	 , TO_CHAR(SYSDATE, 'YYYY')
  FROM DUAL

# ORA-01000์ตœ๋Œ€ ์—ด๊ธฐ ์ปค์„œ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค.

> ์œ„์™€๊ฐ™์€ ์—๋Ÿฌ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ํ…Œ์ด๋ธ”์— Lock๊ฐ€ ๊ฑธ๋ฆด ํ™•๋ฅ ์ด ๋†’์Œ

SELECT SID
	, USER_NAME
	, COUNT(SID) CURSOR
FROM V$OPEN_CURSOR
WHERE 1 = 1
--  AND user_name = 'SCOTT'
GROUP BY SID
	, USER_NAME
ORDER BY CURSOR DESC

# Procedures

##### 1. ํ…Œ์ด๋ธ”์ƒ์„ฑ
CREATE TABLE TABLE3
(
 COLUMN1 VARCHAR2(100)
,COLUMN2 VARCHAR2(100)
)

##### 2. ํ”„๋กœ์‹œ์ ธ ์ƒ์„ฑ
CREATE OR REPLACE PROCEDURE EX_PROC
(
   PARA1 IN VARCHAR2
  ,PARA2 IN VARCHAR2
)
IS
	RETURN_MESSAGE VARCHAR2(100) := 'test';
	RETURN_MESSAGE2 VARCHAR2(100) := 'test';
BEGIN
	dbms_output.put_line(RETURN_MESSAGE);
	INSERT INTO TABLE3 (COLUMN1, COLUMN2) VALUES(PARA1, PARA2);
END EX_PROC;

##### 3. ์‹คํ–‰ (EXEC๊ฐ€ ์•ˆ๋  ๊ฒฝ์šฐ ํ•˜๋‹จ์˜ ๋ฐฉ์‹)
EXEC EX_PROC('test','test');

BEGIN
 	EX_PROC('test','test');
END;

# Oracle sequence

CREATE SEQUENCE TEST.SQ_ID INCREMENT BY 1 MINVALUE 1 MAXVALUE 999999999999999 CYCLE NOCACHE NOORDER;

-- ์‹œํ€€์Šค ํ˜„์žฌ๊ฐ’ ๋ณ€๊ฒฝ-1
DROP SEQUENCE SEQ_X;
CREATE  SEQUENCE SEQ_X START WITH 10001 INCREMENT BY 1 MAXVALUE  1E28 MINVALUE  1 NOCYCLE CACHE  20 NOORDER;

-- ์‹œํ€€์Šค ํ˜„์žฌ๊ฐ’ ๋ณ€๊ฒฝ-2
ALTER SEQUENCE SEQ_X INCREMENT BY 10000;
SELECT SEQ_X.NEXTVAL FROM DUAL;
ALTER SEQUENCE SEQ_X INCREMENT BY 1;


-- 7๋งŒ 8๋งŒ ๊ฑด์ด ๋„˜์–ด ๊ฐˆ ๊ฒฝ์šฐ ํ•˜๋‹จ์˜ sequence ์„ฑ๋Šฅ์ด ๋” ์ข‹์Œ
INSERT INTO TABLE1 (
	  SEQ
	, INST_DTM
)
VALUES (
	  (SELECT NVL(MAX(TO_NUMBER(SEQ)) + 1, 1) AS SEQ FROM TABLE1)
	, SYSDATE
)

-- ์—ฐ๋„ ์ถ”๊ฐ€ํ›„ NEXTVAL
TO_CHAR(SYSDATE,'YYYY') || LPAD((SELECT NVL(TO_NUMBER( SUBSTR(MAX(SEQ), 5) + 1), 1) AS SEQ FROM TABLE1), 5,'0')


<selectKey resultType="java.lang.String" keyProperty="SEQ" order="BEFORE">
	SELECT SQ_ID.NEXTVAL AS SEQ FROM DUAL
</selectKey>
INSERT INTO TABLE1 (
	SEQ
	, INST_DTM

)
VALUES (
	#{SEQ}
	, SYSDATE
)

# ๋‚ ์งœ๊ด€๋ จ

SELECT
	TO_DATE('20220901'||'235959', 'YYYYMMDDHH24MISS')
	, TO_DATE('20220901', 'YYYYMMDD') - 0.99999
	, TO_DATE('20220901', 'YYYYMMDD') - 0.00001
	, TO_DATE('20220901', 'YYYYMMDD') + 0.99999
	, TO_DATE('20220901', 'YYYYMMDD') + 0.00001
FROM DUAL

-- ์ปฌ๋Ÿผ์ด DATE์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” 235959๊นŒ์ง€ ํ™•์ธํ•˜๋„๋ก ์ง„ํ–‰ํ•ด์•ผํ•จ
(x) AND REGISTER_DATE BETWEEN TO_DATE('20220901', 'YYYYMMDD') AND TO_DATE('20220901', 'YYYYMMDD')
(o) AND REGISTER_DATE BETWEEN TO_DATE('20220901'||'000000', 'YYYYMMDDHH24MISS') AND TO_DATE('20220901'||'235959', 'YYYYMMDDHH24MISS')

# ๊ถŒํ•œ๊ด€๋ จ

SELECT *
FROM DBA_TAB_PRIVS
WHERE 1 = 1
 AND GRANTEE = 'TEST'

# ROWNUM ์—ญ์ˆœ

SELECT  NUM
  FROM (
	SELECT ROW_NUMBER() OVER (ORDER BY PK_KEY DESC) AS NUM
	FROM TEMP
)
WHERE 1 = 1
 AND NUM <= 1

# oracle function

PLS-00306: 'TEST_OBJ' ํ˜ธ์ถœ ์‹œ ์ธ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋‚˜ ์œ ํ˜•์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค function์—์„œ object์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ• ๋•Œ types์— ์„ ์–ธ๋œ object์˜ ๊ฐ’์„ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•จ

CREATE OR REPLACE TYPE TEST_OBJ AS OBJECT
(
    TEST_A VARCHAR2(15),
    TEST_B VARCHAR2(7)
);

# oracle package

CREATE OR REPLACE PACKAGE TEST.PACKAGE_TEST
AS
	-- ํŒจํ‚ค์ง€์— ๋“ค์–ด์˜ฌ ํ”„๋กœ์‹œ์ €, ํ•จ์ˆ˜ ์ •์˜
	PROCEDURE PROC_TEST;

	PROCEDURE PROC_TEST2(NAME IN VARCHAR2, AGE IN NUMBER);

	FUNCTION examFunc(getGender IN VARCHAR2) RETURN VARCHAR2;

END PACKAGE_TEST;







-- ํŒจํ‚ค์ง€ ๋ฐ”๋”” ๋ถ€๋ถ„
CREATE OR REPLACE PACKAGE BODY TEST.PACKAGE_TEST
AS
	 -- ํŒจํ‚ค์ง€ ๋‚ด ํ”„๋กœ์‹œ์ €, ํ•จ์ˆ˜ ๋‚ด์šฉ ์ •์˜
     PROCEDURE PROC_TEST
	 IS
	 BEGIN
	 	 INSERT INTO TABLE_TEST(COL1,COL2) VALUES('TEST', 1);
     END PROC_TEST;

     PROCEDURE PROC_TEST2(NAME IN VARCHAR2, AGE IN NUMBER)
	 IS
	 BEGIN
	 	 INSERT INTO TABLE_TEST(COL1,COL2) VALUES(NAME, AGE);
     END PROC_TEST2;

	 FUNCTION examFunc -- ํ•จ์ˆ˜๋ช…
	 (getGender IN VARCHAR2) -- ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ๋ฐ›์•„์˜ฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •์˜
	 RETURN VARCHAR2 -- ํ•จ์ˆ˜ ์ˆ˜ํ–‰ ์‹œ ๋ฐ˜ํ™˜ํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…
	 IS -- ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜ ์ •์˜
	 	setGender VARCHAR2(100);
	 BEGIN -- ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ํ•จ์ˆ˜ ์ˆ˜ํ–‰
	     IF getGender = '๋‚จ' THEN setGender := '๋‚จ์ž';
	     ELSIF getGender = '์—ฌ' THEN setGender := '์—ฌ์ž';
	     ELSE setGender := '์˜ค๋ฅ˜';
	     END IF;
	 RETURN setGender; -- ๋ฐ˜ํ™˜
	 END examFunc;

END PACKAGE_TEST;

# oracle procedure

-- IN ๋ณ€์ˆ˜๋งŒ ์žˆ๋Š”๊ฒฝ์šฐ ์‹คํ–‰
EXEC TEST_PROC();
EXEC TEST_PROC(213, 'DDOL');

-- OUT ๋ณ€์ˆ˜ ์žˆ๋Š”๊ฒฝ์šฐ ์‹คํ–‰
DECLARE
    param1 varchar2(200);
    param2 varchar2(200);
BEGIN
    TEST_PROC('123', param1, param2);
END;

# https://studyingazae.tistory.com/59

# ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์ฐพ๊ธฐ

/ํ…Œ์ด๋ธ” ๋‚ด ์ปฌ๋Ÿผ ์ฐพ๊ธฐ/ SELECT * FROM USER_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%ATT_FL_GRP_ID%';

# ์˜ค๋ผํด

SELECT * FROM DBA_OBJECTS WHERE OWNER = 'CCIP' AND OBJECT_TYPE = 'TABLE' AND OBJECT_NAME LIKE '%MBSH%';

# oracle charset to java


SELECT LENGTHB(LTRIM(RTRIM('๋˜ ๋ฐฉ๊ฐํ•˜ํ–ฌ์Š'))) AS A11
  FROM DUAL
;

SELECT *
FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER = 'NLS_CHARACTERSET'
;


import java.io.UnsupportedEncodingException;

public class TestCode {

    public static void main(String[] args) throws UnsupportedEncodingException{

        String charset;
        String test;
        int length;

        test = "[ 30%ํ• ์ธ! ]์…€ํ‹ฐ์•„๋ผ ํ”„๋ฆฌ์Šคํ‹ด ์•ฐํ”Œ ์ˆ˜๋ถ„ํฌ๋ฆผ, ์•ˆํ‹ฐ์—์ด์ง•, ๋ณด์Šต ํƒ„๋ ฅ, ์ค„๊ธฐ์„ธํฌ ๋ฐฐ์–‘์•ก ํ™”์žฅํ’ˆ (50ml X 1ea)";

        charset = "MS949";
        length = test.getBytes(charset).length;
        System.out.println(charset + " length : " + length + " Bytes");

        charset = "UTF-8";
        length = test.getBytes(charset).length;
        System.out.println(charset + " length : " + length + " Bytes");

        charset = "euc-kr";
        length = test.getBytes(charset).length;
        System.out.println(charset +" length : " + length + " Bytes");

        test = "๋˜ ๋ฐฉ๊ฐํ•˜ํ–ฌ์Š";

        charset = "MS949";
        length = test.getBytes(charset).length;
        System.out.println(charset + " length : " + length + " Bytes");

        charset = "UTF-8";
        length = test.getBytes(charset).length;
        System.out.println(charset + " length : " + length + " Bytes");

        charset = "euc-kr";
        length = test.getBytes(charset).length;
        System.out.println(charset + " length : " + length + " Bytes");
    }
}

# oracle merge๋ฌธ ๊ด€๋ จ

๋ฐ์ดํ„ฐ๊ฐ€ null์ธ๊ฒฝ์šฐ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ ์ด ๊ฒฝ์šฐ NVL ์ฒ˜๋ฆฌ๋กœ null์ด ์•„๋‹ˆ๋„๋ก ๋ณ€๊ฒฝ t.DTL_ADDR = s.DTL_ADDR => and nvl(t.DTL_ADDR, '1') = nvl(s.DTL_ADDR, '1')

MERGE INTO TABLE1 T
USING (
	SELECT  ALLN_ORD_MST_ID
		  , ALLN_ORD_ID
	FROM TEMP1
	WHERE INST_ID = I_INTG_MEM_ID
	AND ALLN_ORD_MST_ID = I_ALLN_ORD_MST_ID
) S
ON (    T.ALLN_ORD_MST_ID = S.ALLN_ORD_MST_ID
	AND NVL(T.DTL_ADDR, '1') = NVL(S.DTL_ADDR, '1')
)
WHEN MATCHED THEN
UPDATE
SET   T.MDF_DTM = SYSDATE
	, T.MDF_ID = S.INST_ID
WHERE T.FAIL_RSN IS NULL

# oracle


SELECT *
  FROM TABLE1
START WITH UPR_GRP_ID IS NULL
CONNECT BY PRIOR UPR_GRP_ID = GRP_ID



SELECT *
  FROM TABLE1
START WITH UPR_GRP_ID IS NULL
CONNECT BY PRIOR GRP_ID = UPR_GRP_ID

# declare begin end

-- 1. declare begin end - PL/SQL ๊ธฐ๋ณธ์œผ๋กœ ์ฟผ๋ฆฌ, ๋ฌธ๋ฒ•์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
-- 2. declare [์„ ์–ธ๋ถ€] - ๋ณ€์ˆ˜, ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
-- 3. begin [์‹คํ–‰๋ถ€] - ์ œ์–ด, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๋กœ์ง ๊ธฐ์ˆ ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค
-- 4. end [์ข…๋ฃŒ๋ถ€] - ์‹คํ–‰๋œ ๋กœ์ง์˜ ์ข…๋ฃŒ๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค
-- 5. ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋Š” DBMS_OUTPUT์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
DECLARE
    TEST_NAME VARCHAR2(50); --์ดˆ๊ธฐ ๋ณ€์ˆ˜ ์„ ์–ธ
    BEGIN
       TEST_NAME := 'ํ…Œ์ŠคํŠธ'; --๋ณ€์ˆ˜์— ๊ฐ’ ๋Œ€์ž… ์‹ค์‹œ
       DBMS_OUTPUT.PUT_LINE('TEST_NAME : ' || TEST_NAME); -- ๊ฒฐ๊ณผ ์ถœ๋ ฅ
    END;

# oracle tablespace

-- Error updating database.  Cause: java.sql.SQLException: ORA-01653: TEST.TB_TEST1 ํ…Œ์ด๋ธ”์„ 128(์œผ)๋กœ TEST_DATA2 ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค์—์„œ ํ™•์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
-- ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ํ™•์ธ
SELECT TABLE_NAME,TABLESPACE_NAME
  FROM DBA_TABLES
 WHERE OWNER='TEST' AND TABLE_NAME='TB_TEST1';
 
 -- ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค์˜ ์ •๋ณด ํ™•์ธ
 SELECT TABLESPACE_NAME, FILE_NAME, BYTES, AUTOEXTENSIBLE
  FROM DBA_DATA_FILES
 WHERE TABLESPACE_NAME='TEST_DATA2';

-- ๊ฐ€์šฉ์šฉ๋Ÿ‰ ํ™•์ธ
SELECT DF.FILE_NAME "ํŒŒ์ผ๋ช…"
	, DF.TABLESPACE_NAME "ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค๋ช…"
	, TO_CHAR((DF.BYTES / 1024), '999,990,999') "์ด (KB)"
	, TO_CHAR((((DF.BYTES - SUM(NVL(FS.BYTES, 0)))) / 1024), '999,990,999') "์‚ฌ์šฉ(KB)"
	, TO_CHAR(((SUM(NVL(FS.BYTES, 0))) / 1024), '999,990,999') "๊ฐ€์šฉ(KB)"
	, TRUNC(((SUM(NVL(FS.BYTES, 0)) / (DF.BYTES)) * 100), 2) "๊ฐ€์šฉ %"
FROM DBA_FREE_SPACE FS
RIGHT JOIN DBA_DATA_FILES DF ON FS.FILE_ID = DF.FILE_ID
WHERE 1 = 1
-- AND DF.TABLESPACE_NAME = 'TEST_DATA2'
GROUP BY DF.TABLESPACE_NAME, DF.FILE_NAME, DF.BYTES
ORDER BY DF.TABLESPACE_NAME;

# Reference

https://m.cafe.daum.net/oraclesqltuning/8ACn/28 https://lawmin.tistory.com/58

ORA-01000์ตœ๋Œ€ ์—ด๊ธฐ ์ปค์„œ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. https://serendipity.tistory.com/65

oracle package: https://wakestand.tistory.com/173

Last Updated: 4/13/2025, 11:14:44 PM