- μ°Έκ³ : https://backendcode.tistory.com/266
- νλ¨μ λ°μ΄ν°λ² μ΄μ€ > Database Enterprise/Standard Edition ν΄λ¦
- Oracle Database Enterprise Edition >
Oracle Database 19c for Microsoft Windows x64 (64-bit)
ZIP λ€μ΄λ‘λ λ° μμΆ ν΄μ
- Oracle νκ²½ λ³μ μ€μ
- μ¬μ©μ λ³μ > ORACLE_BASE:
C:\Users\YNJCH\Oracle\Oracle
/ ORACLE_HOME: C:\Users\YNJCH\Oracle\Oracle\product\19.3.0\dbhome
setup.exe
μ€ν (κ΄λ¦¬μ κΆνμΌλ‘ μ€ν - 54% λ©μΆ€ νμ λ°©μ§)
λ¨μΌ μΈμ€ν΄μ€ λ°μ΄ν°λ² μ΄μ€ μμ± λ° κ΅¬μ±
> μλ² ν΄λμ€
> νμ€ μ€μΉ
> κ°μ κ³μ μ¬μ©
- Oracle Base :
C:\Users\YNJCH\Oracle\Oracle
- μ μ₯ μμ μ ν : νμΌ μμ€ν
- μ μ λ°μ΄ν°λ² μ΄μ€ μ΄λ¦ : orcl
- λΉλ°λ²νΈ : 1111
- Oracle κΈ°λ³Έ Port : 1521 / SID : orcl
- μλ λͺ
λ Ήμ΄λ‘ μ€μΉ λ° μ μ μλ£ νμΈ
sqlplus system/1111
- μλ λͺ
λ Ήμ΄λ‘ κΈ°λ³Έ μ€μ νμΈ
-- SID νμΈνκΈ°
select name from v$database;
-- Port λ²νΈ νμΈνκΈ°
select dbms_xdb.gethttpport() from dual;
-- 1521μ΄ μλλ©΄ Port λ²νΈλ₯Ό 1521λ‘ λ³κ²½
exec dbms_xdb.sethttpport(ν¬νΈλ²νΈ);
1-1. Oracle μ€μΉ μμ
- C:\Users\YNJCH\Oracle\Oracle\WINDOWS.X64_193000_db_home\deinstall > deinstall.bat
- [LISTENER]μμ ꡬμ±μ ν΄μ ν λ¨μΌ μΈμ€ν΄μ€ 리μ€λ λͺ¨λ μ§μ
β
μ무κ°λ μ
λ ₯νμ§ μκ³ μν°λ₯Ό μ
λ ₯νλ€.
- μ΄ Oracle νμ ꡬμ±λ λ°μ΄ν°λ² μ΄μ€ μ΄λ¦ λͺ©λ‘μ μ§μ νμμμ€. [ORCL]
β
ORCL μ
λ ₯
- λ°μ΄ν°λ² μ΄μ€μ μ§λ¨ λμ μμΉλ₯Ό μ§μ νμμμ€. [C:\app\hojun.jung\diag\rdbms\orcl]
β
μμ μ orcl κ²½λ‘ μ
λ ₯ ( C:\app\hojun.jung\diag\rdbms\orcl )
- ASM|FS λ°μ΄ν°λ² μ΄μ€μμ μ¬μ©νλ μ μ₯ μμ μ νμ μ§μ νμμμ€.
β
FS μ
λ ₯
- 곡μ νμΌ μμ€ν
μ λ°μ΄ν°λ² μ΄μ€ νμΌμ΄ μ‘΄μ¬ν κ²½μ° λλ ν 리 λͺ©λ‘μ μ§μ νμμμ€. 'ORCL' νμ λλ ν λ¦¬κ° λ°κ²¬λ κ²½μ° μμ λ©λλ€. κ·Έλ μ§ μμ κ²½μ° μ§μ λ λλ ν λ¦¬κ° μμ λ©λλ€. λλ μ 체 κ²½λ‘μ ν¨κ» λ°μ΄ν°λ² μ΄μ€ νμΌ λͺ©λ‘μ μ§μ ν μλ μμ΅λλ€.
β
곡백 ν μν°
- νλμ 볡ꡬ μμ μμΉ(νμΌ μμ€ν
μ ꡬμ±λ κ²½μ°)λ₯Ό μ§μ νμμμ€. 'ORCL' νμ λλ ν λ¦¬κ° λ°κ²¬λ κ²½μ° μμ λ©λλ€.
β
κ·Έλ₯ μν°
- λ°μ΄ν°λ² μ΄μ€ spfile μμΉλ₯Ό μ§μ νμμμ€.
β
곡백 ν μν°
- κ³μνκ² μ΅λκΉ(y - μ, n - μλμ€)? [n]
β
y μ
λ ₯
- κ²½λ‘ λ΄ ν΄λ λ° νμΌ μμ C:\Users\YNJCH\Oracle\oradiag_ynjch\diag\clients
- λ μ§μ€νΈλ¦¬ νΈμ§κΈ° μμ
- HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE μμ
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Service\Oralce ν€μλ μμ
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Service\Oracle ν€μλ μμ
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Oracle ν€μλ μμ
- HKEY_CLASSES_ROOTμμ Oraλ‘ μμλλ λͺ¨λ κ² μμ
- μλΉμ€ μμ
sc delete OracleJobSchedulerORCL
sc delete OracleOraDB19Home1TNSListener
sc delete OracleRemExecServiceV2
sc delete OracleServiceORCL
sc delete OracleVssWriterORCL
2. μ¬μ©μ μμ± λ° κΆν λΆμ¬
- Oracle μ€μΉ λ° λ°μ΄ν°λ² μ΄μ€ μμ± μ΄ν, μ¬μ©μ μμ± λ¨κ³
- κ΄λ¦¬μ κΆνμΌλ‘ cmd μ°½ μ€ν
C:\Windows\system32> sqlplus
μ¬μ©μλͺ
μ
λ ₯: SYSTEM
λΉλ°λ²νΈ μ
λ ₯: [λΉλ°λ²νΈ μ
λ ₯]
2-1. μ¬μ©μ μμ±
- μ¬μ©μ IDμ PWλ₯Ό μ
λ ₯
CREATE USER [ID] IDENTIFIED BY [PW];
-- μμ±λ μ¬μ©μ νμΈ
SELECT USERNAME FROM DBA_USERS;
-- μ¬μ©μ λΉλ°λ²νΈ λ³κ²½
ALTER USER [ID] IDENTIFIED BY [PW];
- μμ±λ μμ΄λλ‘ μ μνμ¬
SHOW USER;
μ
λ ₯ μ, μ¬μ©μ νμΈ κ°λ₯
- sqlplus μμλ
CONN [ID]
λ₯Ό μ΄μ©ν΄ SYSTEM κ³μ μμ ν κ³μ μΌλ‘ μ μ κ°λ₯
2-1-1. μ¬μ©μ μμ
CASCADE
: μ¬μ©μμ κ°μ²΄λ₯Ό λͺ¨λ μμ ν κ²½μ°
DROP USER [ID] ['CASCADE'];
2-2. κΆν λΆμ¬
- λΆμ¬ν κΆνμ μ½€λ§(,)λ‘ κ΅¬λΆνμ¬ λμ΄
WITH ADMIN OPTION
: νμ¬ GRANT λ¬Έμ ν΅ν΄ λΆμ¬λ°μ κΆνμ λ€λ₯Έ μ¬μ©μμκ² λΆμ¬ν μ μλ κΆνμ λΆμ¬
- νμ¬ μ¬μ©μ κΆνμ΄ μ¬λΌμ Έλ κΆνμ μ¬λΆμ¬ν λ€λ₯Έ μ¬μ©μ κΆνμ μ μ§λ¨
GRANT [κΆν] TO [ID] [WITH ADMIN OPTION]; /* GRANT CONNECT, RESOURCE, DBA TO [ID]; */
2-2-1. κΆν μ’
λ₯
CONNECT
: μ μ κΆν
RESOURCE
: κ°μ²΄ λ° λ°μ΄ν° μ‘°μ κΆν
- μμ€ν
κΆνμ μΌμ λΆλΆμ λΆμ¬
- CREATE TABLE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE λΆμ¬ κ°λ₯
DBA
: DB μμ, μ’
λ£ κΆνμ μ μΈν λͺ¨λ μμ€ν
κΆν
- μ μ μμ± λ° κΆν λΆμ¬, μ€ν€λ§ μ€λΈμ νΈ μμ±, μμ , μμ λ±
2-2-2. κΆν μ·¨μ
REVOKE [κΆν] FROM [ID]; /* REVOKE CONNECT, RESOURCE, DBA FROM [ID]; */
2-2-3. κ°μ²΄ κΆν λΆμ¬
- κ°μ²΄ κΆν : μ½€λ§(,)λ‘ κ΅¬λΆνμ¬ μ¬λ¬ κΆνμ λΆμ¬νκ±°λ
ALL PRIVILEGES
λ₯Ό μ΄μ©νμ¬ λͺ¨λ κΆν λΆμ¬
GRANT [κ°μ²΄ κΆν/ALL PRIVILEGES]
ON [μ€ν€λ§, κ°μ²΄ μ΄λ¦]
TO [ID]
[WITH GRANT OPTION];
-- μμ) ynjchμκ² USER_INFO ν
μ΄λΈμ SELECT, INSERT κΆν λΆμ¬
GRANT SELECT, INSERT ON USER_INFO TO ynjch;
2-3. μ μ© μ¬ν νμΈ
- μλ λͺ
λ Ήμ΄λ‘ commit ν, μμ±λ μ¬μ©μ νμΈ
COMMIT;
SELECT * FROM ALL_USERS;
3. ν
μ΄λΈ
3-1. ν
μ΄λΈ μμ±
CREATE TABLE [ν
μ΄λΈλͺ
]
(
[컬λΌλͺ
] NUMBER(10) NOT NULL
, [컬λΌλͺ
] VARCHAR2(20)
);
-- μμ : DROP TABLE USER_INFO;
3-1-1. κΈ°λ³Έν€ μμ±
- ν
μ΄λΈμ μμ±νλ©΄μ PK μ§μ (μ»¬λΌ μμ μ΅μ
μΆκ°)
CREATE TABLE TAB1(
COL1 NUMBER NOT NULL PRIMARY KEY,
COL2 VARCHAR2(10)
);
- ν
μ΄λΈμ μμ±νλ©΄μ PK μ§μ (νλ¨μ μ μ½ μ‘°κ±΄ μΆκ°)
CREATE TABLE TAB1(
COL1 NUMBER NOT NULL,
COL2 VARCHAR2(10),
CONSTRAINT PK_TAB1 PRIMARY KEY(COL1)
-- CONSTRAINT [PKλͺ
] PRIMARY KEY([PK 컬λΌλͺ
])
);
- ν
μ΄λΈ μμ± ν PK μ§μ
ALTER TABLE TAB1
ADD CONSTRAINT PK_TAB1 PRIMARY KEY(COL1);
3-1-2. κΈ°λ³Έν€ μμ
ALTER TABLE TAB1
DROP CONSTRAINT PK_TAB1;
3-1-3. μΈλν€ μμ±
- ν
μ΄λΈμ μμ±νλ©΄μ FK μ§μ
/*
CREATE TABLE TAB1(
COL1 NUMBER NOT NULL PRIMARY KEY,
COL2 VARCHAR2(10)
);
*/
CREATE TABLE TAB2 (
COL3 NUMBER NOT NULL PRIMARY KEY,
COL4 NUMBER NOT NULL,
COL5 VARCHAR2(10),
CONSTRAINT FK_TAB2 FOREIGN KEY(COL4) REFERENCES TAB1 (COL1)
-- CONSTRAINT [FKλͺ
] FOREIGN KEY([FK 컬λΌλͺ
]) REFERENCES [PKκ° μλ ν
μ΄λΈ] ([PK 컬λΌλͺ
])
);
- ν
μ΄λΈ μμ± ν FK μ§μ
ALTER TABLE TAB2
ADD CONSTRAINT FK_TAB2 FOREIGN KEY(COL4) REFERENCES TAB1 (COL1);
3-1-4. μΈλν€ μμ
ALTER TABLE TAB2
DROP CONSTRAINT FK_TAB2;
3-1-5. μ μ½μ‘°κ±΄ νμΈ
SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = '[ν
μ΄λΈλͺ
]';
-- κΈ°λ³Έν€(PK) μ 보 μ‘°ν
SELECT A.TABLE_NAME
, A.CONSTRAINT_NAME
, B.COLUMN_NAME
, B.POSITION
FROM ALL_CONSTRAINTS A
, ALL_CONS_COLUMNS B
WHERE A.TABLE_NAME = '[ν
μ΄λΈλͺ
]'
AND A.CONSTRAINT_TYPE = 'P'
AND A.OWNER = B.OWNER
AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
ORDER BY B.POSITION;
3-2. μ»¬λΌ λ°μ΄ν° νμ
3-2-1. λ¬Έμ λ°μ΄ν° νμ
- CHAR(n) : κ³ μ κΈΈμ΄ λ¬Έμ(μ΅λ 2000byte, λν΄νΈκ° 1byte)
- VARCHAR2(n) : κ°λ³κΈΈμ΄ λ¬Έμ(μ΅λ 4000byte, λν΄νΈκ° 1byte)
- NCHAR(n) : κ³ μ κΈΈμ΄ μ λμ½λ λ¬Έμ(μ΅λ 2000byte, λν΄νΈκ° 1byte, λ€κ΅μ΄ μ
λ ₯ κ°λ₯)
- NVARCHAR(n) : κ°λ³κΈΈμ΄ μ λμ½λ λ¬Έμ(μ΅λ 2000byte, λν΄νΈκ° 1byte, λ€κ΅μ΄ μ
λ ₯ κ°λ₯)
- LONG : μ΅λ 2GB ν¬κΈ°μ κ°λ³κΈΈμ΄ λ¬Έμν
- CLOB : λμ©λ ν
μ€νΈ λ°μ΄ν° νμ
(μ΅λ 4GB)
- NCLOB : λμ©λ ν
μ€νΈ μ λμ½λ λ°μ΄ν° νμ
(μ΅λ 4GB)
3-2-2. μ«μ λ°μ΄ν° νμ
- NUMBER(P,S) : κ°λ³μ«μ(μ΅λ 22byte, P : 1~38, λν΄νΈκ° 38 / S : -84~127, λν΄νΈκ° 0)
- FLOAT(P) : NUMBER μ νμ νμ
(μ΅λ 22byte, μ΄μ§μ κΈ°μ€, P : 1~128, λν΄νΈκ° 128)
- BINARY_FLOAT : 32λΉνΈ λΆλμμμ μ(μ΅λ 4byte)
- BINARY_DOUBLE : 64λΉνΈ λΆλμμμ μ(μ΅λ 8byte)
3-2-3. λ μ§ λ°μ΄ν° νμ
- DATE : μ°, μ, μΌ, μ, λΆ, μ΄κΉμ§ μ
λ ₯(BC 4712λ
1μ 1μΌλΆν° 9999λ
12μ 31μΌ)
- TIMESTAMP : μ°, μ, μΌ, μ, λΆ, μ΄ + λ°λ¦¬μ΄κΉμ§ μ
λ ₯ κ°λ₯
3-2-4. LOB λ°μ΄ν° νμ
- λμ©λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ°μ΄ν° νμ
μ LOB(Large Object) μ΄λΌκ³ ν¨
- CLOB : λ¬Έμν λμ©λ κ°μ²΄ κ³ μ κΈΈμ΄μ κ°λ³κΈΈμ΄ λ¬Έμμ§ν© μ§μ
- NCLOB : μ λμ½λλ₯Ό μ§μνλ λ¬Έμν λμ©λ κ°μ²΄
- BLOB : μ΄μ§ν λμ©λ κ°μ²΄(κ·Έλν½, μ΄λ―Έμ§, λμμ λ±μ λ°μ΄ν° μ μ₯ μ μ¬μ©)
- BFILE : λμ©λ μ΄μ§ νμΌμ λν μμΉ, μ΄λ¦ μ μ₯
3-3. μ»¬λΌ μ μ΄
- μ»¬λΌ μΆκ° :
ALTER TABLE [ν
μ΄λΈλͺ
] ADD([컬λΌλͺ
] ([λ°μ΄ν°νμ
], [μ¬μ΄μ¦]));
- μ»¬λΌ μμ :
ALTER TABLE [ν
μ΄λΈλͺ
] MODIFY([컬λΌλͺ
] ([λ°μ΄ν°νμ
], [μ¬μ΄μ¦]));
- μ»¬λΌ μμ :
ALTER TABLE [ν
μ΄λΈλͺ
] DROP COLUMN [컬λΌλͺ
];
- 컬λΌλͺ
λ³κ²½ :
ALTER TABLE [ν
μ΄λΈλͺ
] RENAME COLUMN [κΈ°μ‘΄ 컬λΌλͺ
] TO [λ³κ²½ 컬λΌλͺ
];
ALTER TABLE TAB1 ADD (COL1 NUMBER(10,0));
3-3-1. μ»¬λΌ μμ μ μ΄
- COL2, COL3 μ»¬λΌ λ€μ μΆκ°λ COL1 컬λΌμ COL2 μμΌλ‘ μμΉμν€κ³ μΆμ λ
- COL2 μ΄νμ 컬λΌλ€μ λͺ¨λ INVISIBLE μ²λ¦¬νλ€κ° VISIBLE μ²λ¦¬ν¨μΌλ‘μ μμ μ μ΄ κ°λ₯
ALTER TABLE TAB1 MODIFY COL2 INVISIBLE;
ALTER TABLE TAB1 MODIFY COL3 INVISIBLE;
ALTER TABLE TAB1 MODIFY COL2 VISIBLE;
ALTER TABLE TAB1 MODIFY COL3 VISIBLE;
4. μνμ€
4-1. μνμ€ μμ±
CREATE SEQUENCE [μνμ€λͺ
]
START WITH 1 /* μμκ° */
INCREMENT BY 1 /* μ¦κ°κ° */
MINVALUE 1 /* μ΅μκ° */
MAXVALUE 10000000 /* μ΅λκ° */
CYCLE /* μνμ€ μ΅λκ° λλ¬ μ μ΅μκ°λΆν° λ€μ μμν μ§ μ¬λΆ (CYCLE, NOCYCLE) */
NOCACHE /* CACHE μ¬μ© μ¬λΆ (CACHE, NOCACHE) */
;
4-2. μνμ€ μ‘°ν
- μνμ€ μ 보λ₯Ό μ‘°ννκ±°λ, μνμ€ μΌλ ¨λ²νΈλ₯Ό μ‘°νν μ μμ
- μ¦κ° μμ΄ νμ¬ μνμ€ μλ²μ κ°μ Έμ€λ €λ©΄
[μνμ€λͺ
].CURRVAL
μ¬μ©
SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME = '[μνμ€λͺ
]';
SELECT [μνμ€λͺ
].CURRVAL FROM DUAL;
SELECT [μνμ€λͺ
].NEXTVAL FROM DUAL;
4-2-1. μνμ€λ₯Ό μ΄μ©ν INSERT
INSERT INTO [ν
μ΄λΈλͺ
] values([μνμ€λͺ
].NEXTVAL, 'test');
4-3. μνμ€ μμ
- μνμ€ μλ² μ΄κΈ°ν μ μλ λ΄μ© μ
λ ₯
ALTER SEQUENCE [μνμ€λͺ
] INCREMENT BY -1000;
ALTER SEQUENCE [μνμ€λͺ
] INCREMENT BY 1;
- μνμ€ μ¦κ°κ°, μ΅λκ° λ±μ μ‘°μ ν μ μμ
ALTER SEQUENCE [μνμ€λͺ
] INCREMENT BY [μ¦κ°κ°];
ALTER SEQUENCE [μνμ€λͺ
] MAXVALUE [μ΅λκ°];
4-4. μνμ€ μμ
DROP SEQUENCE [μνμ€λͺ
];
5. μΈλ±μ€(Index)
- λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ°ΎκΈ° μν΄ μ€λ¦μ°¨μμΌλ‘ μ λ ¬λ μ£Όμ 체κ³
- μλ ν₯μμ μν΄ μ¬μ©λ¨
- Full Scan μΌλ‘ ν
μ΄λΈμ λͺ¨λ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ°©λ²μ΄ μλ ROOT - BRANCH - LEAF - DATA BLOCK μ΄ 4λ²μ IOλ₯Ό ν΅ν΄ μ κ·Ό κ°λ₯
- λͺ¨λ ν
μ΄λΈμλ ROWID 컬λΌμ΄ μ‘΄μ¬νλ©°, μΈλ±μ€λ ROWIDλ₯Ό ν΅ν΄ DATA BLOCKμ μ κ·Ό
- ROWID = FILE λ²νΈ + BLOCK λ²νΈ + ROW λ²νΈ
5-1. μΈλ±μ€ ꡬ쑰
- ROOT, BRANCH, LEAFλ‘ κ΅¬μ±λμ΄ μλ κ³μΈ΅μ ꡬ쑰
- μ€λΌν΄ μλ²μμ FULL SCANλ³΄λ€ INDEX SCANμ΄ μ 리νλ€κ³ νλ¨λμμ λ INDEXμ ROOTλΆν° μ°Ύμ
- ROOTμλ BRANCH λΈλμ μμμ μ 보λ₯Ό, BRANCHμλ LEAF λΈλμ μμμ μ 보λ₯Ό, LEAFμλ λ°μ΄ν°μ ROWIDλ₯Ό μ μ μμ
- μ°Ύκ³ μ νλ λ°μ΄ν°μ μμΉλ₯Ό λΉ λ₯΄κ² κ²μ κ°λ₯
!μΈλ±μ€ ꡬ쑰
5-2. μΈλ±μ€ μλ
- μ€λΌν΄ μλ²λ FULL SCAN, INDEX SCAN μ€ λ μ 리ν λ°©λ²μΌλ‘ Scan μμ
μ μ§ν
- INDEX μμ± μ μ μ₯ 곡κ°μ΄ νμ (λ§μ 컬λΌμ μΈλ±μ€ μ€μ νλ€κ³ μ’μ κ²μ μλ)
- μ§μμ μΈ INSERTκ° μ΄λ£¨μ΄μ§λ ν
μ΄λΈμ μΈλ±μ€μ ν¬κΈ°λ 컀μ§
- SELECT ꡬ문μμ κ²μ μλλ₯Ό ν₯μμμΌμ£Όλ μν
5-2-1. μΈλ±μ€ μ¬μ©
- κ²μνλ €λ λͺ¨λ λ°μ΄ν°κ° κ³ μ ν κ°(PK)μ΄λ©΄ κ°μ₯ μ΅μ νλ μν
- WHERE μ μ μ¬μ©λμ§ μλ 컬λΌμ κ΅³μ΄ μΈλ±μ€ μμ±ν νμκ° μμ
- μ€λ³΅λλ λ°μ΄ν°μ¬λ WHERE μ μ μμ£Ό μ¬μ©λλ 컬λΌμ΄λΌλ©΄ INDEX SCAN μ΄ ν¨κ³Όμ
- λλμ λ°μ΄ν° μ€ μ μ μμ λ°μ΄ν°(νΉμ 쑰건)κ° νμν λ μ¬μ©
5-3. μΈλ±μ€ μμ± λ° μ‘°ν
CREATE INDEX μΈλ±μ€λͺ
ON μ€ν€λ§λͺ
.ν
μ΄λΈλͺ
(컬λΌ1, 컬λΌ2, ...);
SELECT
A.TABLE_OWNER
, A.TABLE_NAME
, A.INDEX_NAME
, A.COLUMN_NAME
FROM ALL_IND_COLUMNS A
WHERE A.TABLE_NAME = 'ν
μ΄λΈλͺ
'
ORDER BY A.INDEX_NAME, A.COLUMN_POSITION
5-4. μΈλ±μ€ μ©λ μ‘°ν
- DBA_SEGMENTS μ
INDEX
, TABLE
μ λ£μ΄ μΈλ±μ€, ν
μ΄λΈμ μ©λ μ‘°ν κ°λ₯
- SEGMENT_NAME μ μΈλ±μ€λͺ
λλ ν
μ΄λΈλͺ
κΈ°μ¬
/* μ μ , μΈλ±μ€ λ³ μ©λ νμΈ */
SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,SUM(BYTES)/1024/1024 AS MB
FROM DBA_SEGMENTS
WHERE SEGMENT_TYPE='INDEX' -- TABLE or INDEX
AND OWNER = '[μ€ν€λ§λͺ
]'
AND SEGMENT_NAME = '[μΈλ±μ€λͺ
λλ ν
μ΄λΈλͺ
]'
GROUP BY OWNER,SEGMENT_NAME,SEGMENT_TYPE;
6. ν
μ΄λΈ λ° μ»¬λΌ μ 보
- νμ¬ λ°μ΄ν°λ² μ΄μ€ μ‘°ν :
SELECT NAME FROM V$DATABASE;
-- OBJECT μ‘°ν
SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = [μ€λΈμ νΈλͺ
];
-- SYNONYM μ‘°ν
SELECT * FROM ALL_SYNONYMS WHERE SYNONYM_NAME = [μλ
Έλλͺ
];
-- INDEX μ‘°ν
SELECT * FROM USER_INDEXES WHERE INDEX_NAME = [μΈλ±μ€λͺ
];
-- INDEX μ΄ μ‘°ν
SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = [μΈλ±μ€λͺ
];
-- μ μ½μ‘°κ±΄μ΄ μλ μ΄ μ‘°ν
SELECT * FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = [μ μ½μ‘°κ±΄λͺ
];
-- λ·° ν
μ΄λΈ μ‘°ν
SELECT * FROM USER_VIEWS WHERE VIEW_NAME = [λ·°ν
μ΄λΈλͺ
];
6-1. ν
μ΄λΈ μ 보 μ‘°ν
SELECT * FROM ALL_TABLES;
SELECT * FROM DBA_TABLES;
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE';
- μ μν κ³μ μ ν
μ΄λΈ λͺ©λ‘ μ‘°ν
SELECT * FROM TABS;
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE';
SELECT * FROM USER_TABLES;
-- νΉμ ν
μ΄λΈ μ‘°ν
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE '%%';
6-2. μ»¬λΌ μ 보 μ‘°ν
SELECT * FROM COLS WHERE TABLE_NAME LIKE '%%';
SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME LIKE '%%'; /* λλ USER_TAB_COLUMNS */
6-3. ν
μ΄λΈ λ° μ»¬λΌ μ½λ©νΈ
COMMENT ON TABLE [ν
μ΄λΈλͺ
] IS 'μ½λ©νΈ';
COMMENT ON COLUMN [ν
μ΄λΈλͺ
].[컬λΌλͺ
] IS 'μ½λ©νΈ';
-- ν
μ΄λΈ μ½λ©νΈ μ‘°ν
SELECT * FROM ALL_TAB_COMMENTS
WHERE TABLE_NAME LIKE '%USER_INFO%';
-- ν
μ΄λΈ μ»¬λΌ μ½λ©νΈ μ‘°ν
SELECT * FROM ALL_COL_COMMENTS
WHERE TABLE_NAME LIKE '%USER_INFO%';
6-3-1. ν
μ΄λΈ, μ»¬λΌ μ 보 μ‘°ν 쿼리
SELECT
TC.TABLE_NAME
, TC.COMMENTS
, CC.COLUMN_NAME
, CC.COMMENTS
, C.DATA_TYPE
, C.DATA_LENGTH
, C.NULLABLE
, C.DATA_DEFAULT
FROM ALL_TAB_COMMENTS TC
LEFT JOIN ALL_TAB_COLUMNS C
ON TC.OWNER = C.OWNER
AND TC.TABLE_NAME = C.TABLE_NAME
LEFT JOIN ALL_COL_COMMENTS CC
ON TC.OWNER = CC.OWNER
AND TC.TABLE_NAME = CC.TABLE_NAME
AND C.COLUMN_NAME = CC.COLUMN_NAME
WHERE TC.TABLE_NAME LIKE '[ν
μ΄λΈλͺ
]';
7. λ°μ΄ν° λ³ν
7-1. λ¬Έμμ΄ μ«μ λ³ν
TO_NUMBER()
: λ¬Έμμ΄μ μ μ, μ€μλ‘ λ³ν
CAST()
: μλ¦Ώμλ₯Ό μ μνμ¬ μ μ, μ€μλ‘ λ³ν
SELECT TO_NUMBER('123') FROM DUAL; /* 123 */
SELECT CAST('123' AS NUMBER(3)) FROM DUAL; /* 123 */
SELECT TO_NUMBER('123.5') FROM DUAL; /* 123.5 */
SELECT CAST('123.55' AS NUMBER(3)) FROM DUAL; /* 124 */
SELECT CAST('123.55' AS NUMBER(5, 2)) FROM DUAL; /* 123.55 */
7-1-1. λ¬Έμμ΄ μ«μ λ³ν μ€λ₯ μ²λ¦¬
- λ¬Έμμ΄μ λ³ν λΆκ°ν λ¬Έμκ° ν¬ν¨λμ΄ μμΌλ©΄ μ€λ₯κ° λ°μν¨
SELECT TO_NUMBER('13,000,000') FROM DUAL;
REPLACE()
ν¨μ λλ REGEXP_REPLACE()
μ κ·μ ν¨μλ₯Ό μ΄μ©νμ¬ ν΄λΉ λ¬Έμμ΄ μ κ±°
REGEXP_REPLACE()
λ Oracle 10g μ΄μλΆν° μ¬μ© κ°λ₯
-- μ§μ ν΄λΉ λ¬Έμμ΄μ μ κ±° (λ§μ§λ§ μΈμ μλ΅ κ°λ₯)
SELECT REPLACE(REPLACE('* 13,000,000', ','), '*') FROM DUAL;
-- μ κ·μμΌλ‘ μ«μ(μμμ , μμ ν¬ν¨) μΈ λ¬Έμ λͺ¨λ μ κ±°
SELECT REGEXP_REPLACE('* -13,000,000', '[^0-9.-]', '') FROM DUAL;
7-1-2. λ¬Έμμ΄ μ«μ λ³ν κ°λ₯ μ¬λΆ 체ν¬
TRANSLATE('λ¬Έμμ΄', 'λμλ¬Έμ', 'λ³νλ¬Έμ')
: λ¬Έμμ΄ μΉν ν¨μ(Oracle 8i μ΄μ μ¬μ© κ°λ₯)
- λμλ¬Έμμ λ³νλ¬Έμκ° 1:1λ‘ λ³νλλ©°, λμλ¬Έμμλ μμ§λ§ λ³νλ¬Έμμ μλ λ¬Έμλ μ κ±°λ¨
- μλμ κ²½μ° λμλ¬Έμ 'A'λ κ·Έλλ‘ 'A'λ‘ λ³νλμ§λ§, μ«μμ λΆνΈλ€μ λ³νλ¬Έμμ μκΈ° λλ¬Έμ μ κ±°λ¨
SELECT
CASE WHEN TRANSLATE('-123.456', 'A1234567890.+-', 'A') IS NULL
THEN TO_NUMBER('-123.456') END
FROM DUAL;
REGEXP_INSTR('λ¬Έμμ΄', 'ν¨ν΄')
: νΉμ ν¨ν΄μ΄ μΆννλ 첫 μμΉ κ°μ λ°ν(Oracle 10g μ΄μ μ¬μ© κ°λ₯)
SELECT
CASE WHEN REGEXP_INSTR('-123.456','^[+-]?\d*(\.?\d*)$') = 1 /* μ«μμΌ κ²½μ° 1 λ°ν */
THEN TO_NUMBER('-123.456') END
FROM DUAL;
VALIDATE_CONVERSION()
: Oracle 12c λΆν° μκΈ΄ νλ³ν μ²΄ν¬ ν¨μ
SELECT
CASE WHEN VALIDATE_CONVERSION('-123.456' AS NUMBER) = 1
THEN TO_NUMBER('-123.456') END
FROM DUAL;
7-1-3. λ¬Έμμ΄ μ«μ λ³ν μ€λ₯ λμ²
- νλ³ν μ€λ₯ λ°μ μ μ§μ ν λ체 κ°μ μΆλ ₯νλλ‘ ν¨
SELECT
TO_NUMBER('12345' DEFAULT -1 ON CONVERSION ERROR) AS res1 /* 12345 */
, TO_NUMBER('12345A' DEFAULT -1 ON CONVERSION ERROR) AS res2 /* -1 */
, CAST('12345' AS NUMBER(10) DEFAULT -1 ON CONVERSION ERROR) AS res3 /* 12345 */
, CAST('12345A' AS NUMBER(10) DEFAULT -1 ON CONVERSION ERROR) AS res4 /* -1 */
FROM DUAL;
7-1-4. λ¬Έμμ΄λ‘ μ«μ μ‘°ν
TO_CHAR([컬λΌλͺ
], [ν¬λ§·])
ν¨μ μ΄μ©
SELECT TO_CHAR('123', 'FM00000') FROM DUAL; /* 00123 */
SELECT TO_CHAR('100000', 'FM999,999,999,999') FROM DUAL; /* 100,000 */
SELECT TO_CHAR('100000', 'FML999,999,999') FROM DUAL; /* οΏ¦100,000 */
SELECT TO_CHAR('3.1415926', 'FM990.99') FROM DUAL; /* 3.14 */
7-2. λ¬Έμμ΄ λ μ§ λ³ν
- νμ¬ μΌμ μΆλ ₯ :
SELECT SYSDATE FROM DUAL;
TO_DATE([λ¬Έμμ΄], [λ μ§ ν¬λ§·])
λ₯Ό μ΄μ©νμ¬ λ¬Έμμ΄μ λ μ§ λ°μ΄ν°λ‘ λ³ν κ°λ₯
- λ μ§ ν¬λ§·μ λμλ¬Έμ κ΅¬λΆ μμ
- 12μκ° λ¨μλ
HH
, 24μκ° λ¨μλ HH24
λ‘ νκΈ°
SELECT
TO_DATE('2022-08-12 13:50:00', 'YYYY-MM-DD HH24:MI:SS')
, TO_DATE('11.08.2022', 'DD.MM.YYYY')
, TO_DATE('220810', 'YYMMDD')
FROM DUAL;
- μμ€ν
μ€μ λ μ§ νμκ³Ό λμΌνλ©΄ λ μ§ ν¬λ§·μ μ
λ ₯νμ§ μμλ λ¨
SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_DATE_FORMAT'; /* κ²°κ³Ό : RR/MM/DD */
SELECT TO_DATE('2022/08/12') FROM DUAL; /* μ μ μΆλ ₯ */
SELECT TO_DATE('12/08/2022') FROM DUAL; /* μ€λ₯ λ°μ */
7-2-1. λ¬Έμμ΄λ‘ λ μ§ μ‘°ν
- λ€μκ³Ό κ°μ΄ μ μ₯ν λ°μ΄ν°λ₯Ό μΆλ ₯
-- λ°μ΄ν° INSERT
INSERT INTO TAB3 VALUES (TO_DATE('2022-08-12 13:50:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TAB3 VALUES (TO_DATE('2022-08-11', 'YYYY-MM-DD'));
- λ μ§μ μκ° μ‘°ν
FM
μ¬μ©νμ¬ λ μ§μ '0' νκΈ° μλ΅ κ°λ₯
SELECT TO_CHAR(COL4, 'YYYY-MM-DD HH24:MI:SS') FROM TAB3;
-- 2022-08-12 13:50:00 / 2022-08-11 00:00:00
SELECT TO_CHAR(COL4, 'YYYY-FMMM-DD') FROM TAB3;
-- 2022-8-12 / 2022-8-11
- μ€μ , μ€ν κ° μ‘°ν
TO_CHAR([컬λΌλͺ
], 'AM')
λ₯Ό μΈ λ²μ§Έ μΈμ μμ΄ μ¬μ© μ Oracleμ nls_date_language μ€μ νμμ λ§λ λ°μ΄ν°κ° μΆλ ₯λ¨
SELECT TO_CHAR(COL4, 'PM HH:MI:SS') FROM TAB3;
-- μ€ν 01:50:00 / μ€μ 12:00:00
SELECT TO_CHAR(COL4, 'AM', 'nls_date_language=american') FROM TAB3;
-- PM / AM
SELECT TO_CHAR(COL4, 'AM', 'nls_date_language=korean') FROM TAB3;
-- μ€ν / μ€μ
- μμΌ κ° μ‘°ν
- μΌμμΌλΆν° '1'μΌλ‘ μμνλ©°, Oracle μΈμ΄ μ€μ μ λ§λ λ°μ΄ν°κ° μΆλ ₯λ¨
SELECT TO_CHAR(COL4, 'D') FROM TAB3;
-- 6 / 5
SELECT TO_CHAR(COL4, 'DY') FROM TAB3;
-- κΈ / λͺ©
SELECT TO_CHAR(COL4, 'DAY') FROM TAB3;
-- κΈμμΌ / λͺ©μμΌ
SELECT TO_CHAR(COL4, 'DDD') FROM TAB3; /* 224 (365μΌ κΈ°μ€ 224μΌ μ§Έ) */
SELECT TO_CHAR(COL4, 'WW') FROM TAB3; /* 32 (1λ
κΈ°μ€ 32μ£Ό μ§Έ) */
SELECT TO_CHAR(COL4, 'Q') FROM TAB3; /* 3 (3λΆκΈ°) */
SELECT TO_CHAR(COL4, 'MON') FROM TAB3; /* 8μ */
SELECT TO_CHAR(COL4, 'DL') FROM TAB3; /* 2022λ
8μ 12μΌ κΈμμΌ */
7-2-2. λ μ§ λ°μ΄ν°
SYSDATE
: λ
μμΌμλΆμ΄ νν
SYSTIMESTAMP
: λ°λ¦¬μΈμ»¨λκΉμ§ νν κ°λ₯
- μ»¬λΌ λ°μ΄ν° νμ
μ TIMESTAMPλ‘ μ§μ ν΄μΌ μ¬μ© κ°λ₯
SELECT SYSDATE FROM DUAL; /* 22/08/18 */
SELECT TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') FROM DUAL; /* 2022.08.18 11:34:44 */
SELECT SYSTIMESTAMP FROM DUAL; /* 22/08/18 11:47:08.541000000 +09:00 */
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY.MM.DD HH24:MI:SS:FF') FROM DUAL; /* 2022.08.18 11:47:52:329000 */
- λ μ§λ₯Ό λνκ±°λ λΊ μ μμ
SELECT SYSDATE + 1 FROM DUAL; /* 22/08/19 */
SELECT TO_DATE('1997.10.16 15:00:30', 'YYYY.MM.DD HH24:MI:SS') + 3 FROM DUAL; /* 97/10/19 */
SELECT TO_CHAR(SYSDATE - 1/24 * 2, 'YYYY.MM.DD HH24:MI:SS') FROM DUAL; /* 2022.08.18 09:46:11 (2μκ° μ ) */
SELECT TO_CHAR(SYSDATE + 1/24/60, 'YYYY.MM.DD HH24:MI:SS') FROM DUAL; /* 2022.08.18 11:45:32 (1λΆ λ€) */
SELECT TO_CHAR(SYSDATE + 1/24/60/60 * 8, 'YYYY.MM.DD HH24:MI:SS') FROM DUAL; /* 2022.08.18 11:45:32 (8μ΄ λ€) */
7-2-3. λ¬Έμμ΄ λ μ§ λ³ν μ€λ₯ μ²λ¦¬
REGEXP_INSTR()
μ κ·μ ν¨μ μ¬μ©(Oracle 10g μ΄μ)
- λ μ§ νμ 체ν¬λ κ°λ₯νμ§λ§, μ ν¨ν κ°μΈμ§ νλ¨νμ§ λͺ»ν¨
VALIDATE_CONVERSION()
νμ μ²΄ν¬ ν¨μ μ¬μ©(Oracle 12c R2 μ΄μ)
- λ μ§ νμμ΄ λ§μΌλ©΄ '1', ν리면 '0' λ°ν
SELECT REGEXP_INSTR('2022-08-08', '^\d{4}-\d{2}-\d{2}') FROM DUAL;
SELECT VALIDATE_CONVERSION('2022-08-12' AS DATE, 'YYYY-MM-DD') FROM DUAL;
IS_DATE()
μ¬μ©μ μ μ ν¨μ μ¬μ©
-- DATE νμμ΄ λ§μ κ²½μ° '1'μ λ°ννλλ‘ ν¨
CREATE FUNCTION IS_DATE(dStr VARCHAR2, dFormat VARCHAR2)
RETURN NUMBER
IS
resDate DATE;
BEGIN
resDate := TO_DATE(dStr, dFormat);
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
/
-- ν
μ€νΈ
SELECT IS_DATE('2022-08-12', 'YYYY-MM-DD') FROM DUAL;
SELECT IS_DATE('2022-08-12', 'YYYYMMDD') FROM DUAL;
-- ν¨μ μ‘°ν
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
DROP FUNCTION IS_DATE_TEST7;
7-2-4. νλ‘μμ μμ λ μ§ λ³ν μ€λ₯ μ²λ¦¬
- TO_DATE, TO_CHAR ν¨μ μ¬μ© μ λ λ²μ§Έ μΈμμΈ λ μ§ ν¬λ§·μ μ§μ νμ§ μμ κ²½μ°
ORA-01861: literal does not match format string(리ν°λ΄μ΄ νμ λ¬Έμμ΄κ³Ό μΌμΉνμ§ μμ)
μ€λ₯ λ°μ
TO_DATE('2023-09-22', 'YYYY-MM-DD')
μ΄μ κ°μ΄ λ μ§ ν¬λ§· μ§μ νμ
8. νΈλμμ
- μΌκ΄μ± μλ μνΈμμ©μ μν λ¨μ
- λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ ACID(Atomicity, Consistency, Isolation, Durability)λ₯Ό 보μ₯νκΈ° μν΄ νΈλμμ
μ λ
Όλ¦¬μ μμ
λ¨μλ‘ μ¬μ©
- νΈλμμ
μ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€λ νμ μΌκ΄μ± μλ μνλ₯Ό μ μ§ν΄μΌ ν¨
8-1. COMMIT
- λ°μ΄ν°λ² μ΄μ€ μ°μ°μ΄ μ νν μ’
λ£λμ΄ λ³κ²½ λ΄μμ μ€μ λ°μ΄ν°λ² μ΄μ€μ λ°μ
- 컀λ°νκΈ° μ , μλ²μ λ‘€λ°± μΈκ·Έλ¨ΌνΈ λ²νΌκ° λ§λ€μ΄μ§λ©° μν₯ λ°μ νλ€μ΄ LOCK λ¨
- SELECTλ¬Έμ μ¬μ©νμ¬ νΈλμμ
μ ν¨κ³Όλ₯Ό λ³Ό μ μμ
- μ»€λ° ν, μν₯ λ°μ νμ μμ©λ LOCKμ΄ ν΄μ λλ©° μλ² λ΄λΆ νΈλμμ
ν
μ΄λΈμ΄ μμ€ν
λ³κ²½ λ²νΈλ₯Ό μμ±, νΈλμμ
μ λμ
, ν
μ΄λΈμ μ μ₯ν¨
8-2. ROLLBACK
- λ°μ΄ν°λ² μ΄μ€ μ°μ° μ€ λ¬Έμ λ°μ μ§μ μ COMMIT μ§μ κΉμ§ λλλ¦Ό
ROLLBACK TO SAVEPOINT
λ₯Ό μ΄μ©ν΄ μΌλΆλ§ ROLLBACK κ°λ₯
ROLLBACK [WORK] [TO [SAVEPOINT] μΈμ΄λΈν¬μΈνΈλͺ
];
8-2-1. SAVEPOINT
- ROLLBACK μν μ λ§μ§λ§ COMMIT μ§μ κΉμ§ λλμκ°
- SAVEPOINT μ§μ νλ©΄ κ·Έ λΆλΆμμ νΈλμμ
μ·¨μ κ°λ₯
9. μΈμ
(Session)
- μΈμ
μ μ¬μ©μκ° μ€λΌν΄ λ°μ΄ν°λ² μ΄μ€μ μ μνμ¬ μ’
λ£ν λκΉμ§ κ³μ μ μ§λ¨
- κ° μΈμ
μλ κ³ μ ν SID(Session identifier)μ SERIAL#(serial number)μ κ°μ§
- λ½(Lock) : νΉμ μΈμ
μ΄ ν
μ΄λΈμ λ°μ΄ν°λ₯Ό λ³κ²½νκ³ COMMIT/ROLLBACK νκΈ° μ κΉμ§ λ€λ₯Έ μΈμ
μ΄ μ‘°μ λΆκ°λ₯ν μν
- λ°λλ½(DeadLock) : κ΅μ°© μν, λ κ° μ΄μμ μμ
μ΄ μλ‘μ νΈλμμ
μ΄ μλ£λ λκΉμ§ 무νμ λκΈ°νλ μν
9-1. μΈμ
μ‘°ν
- νμ¬ μ μ μ :
SELECT * FROM V$RESOURCE_LIMIT WHERE RESOURCE_NAME IN ('processes', 'sessions', 'transactions');
- μΈμ
νμΈ :
SELECT * FROM V$SESSION;
- μΈμ
KILL :
ALTER SYSTEM KILL SESSION '[SID], [SERIAL#]';
9-1-1. μΈμ
μ¬μ© μ€μΈ ν
μ΄λΈ μ‘°ν
-- μΈμ
μ¬μ© μ€μΈ ν
μ΄λΈ λͺ
νμΈ κ°λ₯
SELECT O.OBJECT_NAME, S.STATUS, S.SID, S.SERIAL#, P.SPID, S.PROGRAM, SQ.SQL_FULLTEXT, S.LOGON_TIME
FROM V$LOCKED_OBJECT L,
DBA_OBJECTS O,
V$SESSION S,
V$PROCESS P,
V$SQL SQ
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID
AND S.PADDR = P.ADDR
AND S.SQL_ADDRESS = SQ.ADDRESS;
-- μλ 쿼리λ‘λ μ‘°ν κ°λ₯
SELECT /*+ PARALLEL(64) */
a.sid, -- SID
a.serial#, -- μ리μΌλ²νΈ
a.status, -- μνμ 보
a.process, -- νλ‘μΈμ€μ 보
a.username, -- μ μ
a.osuser, -- μ μμμ OS μ¬μ©μ μ 보
b.sql_text, -- sql
c.program -- μ μ νλ‘κ·Έλ¨
FROM
v$session a,
v$sqlarea b,
v$process c
WHERE
a.sql_hash_value=b.hash_value
AND a.sql_address=b.address
AND a.paddr=c.addr
AND a.status='ACTIVE';
9-1-2. μ€ν μ€μΈ 쿼리μ μ§ν μν μ‘°ν
- SQL_ID λ₯Ό μ΄μ©ν΄ SQL Monitoring List μ‘°ν
-- μ°ΎμΌλ €λ 쿼리μ SQL_ID νμΈ
select dbms_sqltune.report_sql_monitor_list(type=>'TEXT', report_level=>'ALL', active_since_sec=>60) as report from dual;
-- SQL_ID μ
ννμ¬ μ€νμν νμΈ κ°λ₯
select DBMS_SQLTUNE.report_sql_monitor(sql_id => '&sql_id', type=>'TEXT' , report_level => 'ALL') from dual;
- DBA_SEGMENTS ν
μ΄λΈμμ μ‘°ν
SELECT * FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'ν
μ΄λΈλͺ
';