Database/Oracle 32

[Oracle/Error] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.

오라클에서 계정을 생성하려고 할 때 ORA-65096 에러가 발생하였다. sys as sysdba 계정이 아닌 계정 생성 권한이 있는 다른 계정에서 만들어야 했는데, 저런 오류가 발생하여 구글링을 해봤다. Oracle 12g부터 발생하는 오류인가 싶어 계정명 앞에 C##을 붙여봤지만 또다른 오류만 발생할 뿐이었다. 기억은 잘 안나지만 '~~ PDB1가 ~~~~' 뭐 이런 오류였다. 문제는 Oracle 11g로 돌리고 있었다.... ㅋㅋㅋ 이리저리 헤매다 결국 해결했다. alter session set "_ORACLE_SCRIPT"=true; 위의 구문을 먼저 실행시켜 세션에 있는 _ORACLE_SCRIPT값을 true로 변경시킨 후 계정 생성구문을 실행시키니 정상적으로 계정이 생성되었다. 저 구문이 Or..

Database/Oracle 2023.03.23

[Oracle] 데이터 타입 CLOB

다음의 경우가 발생하였을 때 해당 사용자에게 이메일을 보내야 했다. 사용자가 어떠한 작업을 담당자에게 결재 요청하였을 경우 담당자가 그 작업을 결재 승인하였을 경우 작업이 수행되다가 에러가 발생하였을 경우 이때, 첫 번째와 두 번째 경우는 발송 내용에 어떤 작업인지만 넣어 보내면 되므로 파일 크기가 크지 않다. 그러나 세 번째의 경우에는 어떤 작업인지, 언제 에러 떴는지, 어떤 로그를 찍어냈는지, 담당자가 누구인지 등 담아야할 내용이 많다. 그래서 발송 내용의 데이터 타입으로 문자열 데이터를 DB 외부에 저장하는 CLOB을 사용하였다. (CLOB는 '씨로브'라고 읽어야 한다.. '클롭' 아님) CLOB이란? 문자열 데이터를 DB 외부에 저장하기 위한 데이터 타입으로, 쉽게 말하면 대용량 텍스트 데이터를 ..

Database/Oracle 2023.03.23

[Oracle] LISTAGG - 여러 행을 하나로 묶어 조회하기

위의 ROOM_JOIN 테이블을 보면 JOIN_NAME 컬럼과 USER_NO 컬럼, ROOM_NO 컬럼이 있다. 여러 행들을 하나로 묶어서 보여주고 싶을 땐, LISTAGG(합칠 컬럼, '구분자') WITHIN GROUP (ORDER BY 합칠 컬럼) "별칭" FROM 해당 테이블 GROUP BY 합칠 컬럼에 대한 기준이 되는 컬럼; 이때, GROUP BY는 무조건 작성해야 한다. 만약 ROOM_NO을 기준으로 USER_NO 컬럼의 행들을 하나로 묶고 싶다면? SELECT LISTAGG(USER_NO, ', ') WITHIN GROUP (ORDER BY USER_NO) "USER_NO" FROM ROOM_JOIN GROUP BY ROOM_NO; ◎ 실행 결과 만약 SELECT절에 ROOM_NO를 추가하고..

Database/Oracle 2022.07.10

[ORACLE] Oracle SQL Developer 완전 삭제하기

1. 제어판 - 프로그램 제거 - Oracle Database 11g 제거하기 2. C 드라이브 - 폴더 속성 숨김을 보기로 체크 - ProgramData 폴더에 Oracle 삭제하기 3. 워크플레이스에서 sqldeveloper 툴 삭제하기 4. C 드라이브 - 사용자 폴더 - 본인 계정이름으로 된 폴더 - AppData 폴더 - Roaming 폴더 - SQL Developer 폴더 및 sqldeveloper 폴더 삭제하기 5. EE SE 버전일 경우에는 레지스트리까지 삭제하기

Database/Oracle 2022.06.15

[SQL]OBJECT(SEQUENCE)

SEQUENCE : 번호를 순차적으로 발생시켜주는 객체이다. - ex) 회원 번호, 사원 번호, 게시글 번호 → 순차적으로 겹치지 않는 숫자로 정의할 때 사용한다. (1) SEQUENCE 객체 생성 구문 ① CREATE SEQUENCE 시퀀스명 ② START WITH 시작숫자 (생략 가능) : 처음 발생시킬 시작값을 설정한다. ③ INCREMENT BY 증가값 (생략 가능) : 시퀀스를 증가시킬 때마다 몇 씩 증가시킬 것인지 설정한다. ④ MAXVALUE 최댓값 (생략 가능) : 최댓값을 지정한다. ⑤ MINVALUE 최솟값 (생략 가능) : 최솟값을 지정한다. ⑥ CYCLE / NOCYCLE (생략 가능) : 값의 순환 여부를 결정한다. ⑦ CACHE 바이트 크기 / NOCACHE (생략 가능) : 캐..

Database/Oracle 2022.03.31

[SQL]OBJECT(VIEW)

OBJECT : 데이터베이스를 이루는 논리적 구조물들 - OBJECT의 종류에는 TABLE과 USER, VIEW, SEQUENCE, PACKAGE, TRIGGER, FUNCTION, PROCEDURE가 있다. VIEW : SELECT를 저장해놓을 수 있는 객체 (1) 장점 : 자주 사용할 SELECT문을 VIEW에 담아놓고 사용하면 매번 SELECT문을 작성할 필요가 없어진다. → 조회용 임시테이블(실제로 값이 담겨있는 것이 아니다.) (2) 생성 방법 ⓐ CREATE VIEW 뷰명 AS 서브쿼리; ⓑ CREATE OR REPLACE VIEW 뷰명 AS 서브쿼리; - 뷰 생성 시 기존에 중복된 이름의 뷰가 없으면 새로 생성하고, 있으면 해당 뷰에 덮어쓰기를 한다. - OR REPLACE 옵션은 생략할 수..

Database/Oracle 2022.03.31

[SQL]TCL - COMMIT, ROLLBACK, SAVEPOINT

TCL(TRANSACTION CONTROL LANGUAGE) : 트랜잭션을 제어하는 언어이다. (1) 트랜잭션(TRANSACTION) ① 데이터베이스의 논리적 작업 단위이다. ② 데이터의 변경사항(DML) 등을 하나의 트랜잭션으로 묶어서 처리한다. → 확정(COMMIT)하기 전까지의 변경사항들을 하나의 트랜잭션으로 담는다. ③ 트랜잭션의 대상이 되는 SQL : INSERT, UPDATE, DELETE (2) 트랜잭션의 종류 ① COMMIT; : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영한 후 트랜잭션은 비워진다.(확정) ② ROLLBACK; : 하나의 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영하지 않고 다 삭제한 후 마지막 COMMIT 시점으로 돌아간다. ③ SAVEPOINT 포인트..

Database/Oracle 2022.03.30

[SQL]DCL - GRANT, REVOKE

DCL(DATA CONTROL LANGUAGE) : 데이터 제어 언어로써 계정에게 시스템 권한 또는 객체 접근 권한을 부여(GRANT)하거나 회수(REVOKE)한다. (1) GRANT(권한 부여) ① 시스템 권한: 특정 DB에 접근하는 권한이며, 객체들을 생성할 수 있는 권한이다. ⓐ GRANT 권한1, 권한2, ... TO 계정명; ⓑ 종류 - CREATE SESSION: 계정에 접속할 수 있는 권한 GRANT CREATE SESSION TO SAMPLE; - CREATE TABLE: 테이블을 생성할 수 있는 권한 GRANT CREATE TABLE TO SAMPLE; - CREATE VIEW: 뷰를 생성할 수 있는 권한 GRANT CREATE VIEW TO SAMPLE; - CREATE SEQUENCE..

Database/Oracle 2022.03.29

[SQL]DDL(2) - ALTER, DROP

ALTER   : 객체 구조를 수정하는 구문이다.(테이블 수정)  - ALTER TABLE 테이블명 수정할 내용;  - 수정할 내용    ① 컬럼 추가 및 수정, 삭제    ② 제약조건 추가 및 삭제 (수정X → 수정하려면 삭제 후 새로 추가)    ③ 테이블명/컬럼명/제약조건명 수정  (1) 컬럼 추가 및 수정, 삭제   ① 컬럼 추가(ADD)      : ADD 추가할 컬럼명 자료형 DEFAULT 기본값 (DEFAULT값 생략 가능) -- DEPARTMENT 테이블을 복사한 테이블 만들기SELECT * FROM DEPT_COPY;ALTER TABLE DEPT_COPY ADD CNAME VARCHAR2(20);-- CNAME 컬럼을 추가하고 기본값인 NULL로 입력된다.ALTER TABLE DEPT_C..

Database/Oracle 2022.03.28

[SQL]DDL(1) - CREATE, INSERT, 제약조건

DDL(DATA DEFINITION LANGUAGE) : 데이터 정의 언어로써, Oracle에서 제공하는 객체(Object)를 새롭게 만들고(Create), 구조를 변경(Alter)하고, 삭제(Delete)하는 명령문이다. 즉, 구조 자체를 정의하는 언어로, DB관리자(설계자)가 사용한다. - Oracle에서의 객체(DB를 이루는 구조물) → 테이블(TABLE), 사용자(USER), 함수(FUNCTION), 뷰(VIEW) 등 CREATE TABLE : CREATE TABLE 테이블명( 컬럼명 자료형, 컬럼명 자료형, ... ); (1) 테이블(TABLE) : 행(ROW)과 열(COLUMN)로 구성되는 가장 기본적인 데이터베이스 객체 중 하나. 모든 데이터는 테이블을 통해 저장된다. → 데이터를 조작하려면..

Database/Oracle 2022.03.25