--특정 사용자 테이블별 용량 확인#1
SELECT
owner, segment_name, segment_type, sum(bytes)/1024/1024 AS MB
FROM
DBA_SEGMENTS
WHERE
segment_type='TABLE'
AND owner = [사용자 아이디]
GROUP BY
owner, segment_name, segment_type
ORDER BY
mb desc;
--특정 사용자 테이블별 용량 확인#2
SELECT
A.segment_name, ROUND(SUM(A.bytes)/1024/1024) "SIZE_MB", A.segment_type
FROM
DBA_SEGMENTS A, DBA_TABLES B
WHERE
A.segment_name = B.TABLE_NAME
AND A.segment_type IN ('TABLE', 'TABLE_PARTITION')
AND A.owner = [사용자 아이디]
GROUP BY
A.segment_name, A.segment_type
ORDER BY
2 DESC;
--특정 사용자 테이블별 인덱스 용량
SELECT
A.segment_name, ROUND(SUM(A.bytes)/1024/1024) "SIZE_MB", A.segment_type
FROM
DBA_SEGMENTS A, DBA_INDEXES B
WHERE
A.segment_name = B.index_name
AND A.segment_type IN ('INDEX', 'INDEX PARTITION')
AND A.owner = [사용자 아이디]
GROUP BY
A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY
2 DESC;
--특정 사용자 테이블별 1행당 소요 용량
SELECT
table_name, SUM(data_length) AS byte
FROM
ALL_TAB_COLUMNS
WHERE
owner = [사용자 아이디]
GROUP BY
table_name
ORDER BY
byte DESC;
8. alter session set "_ORACLE_SCRIPT"=true; 실행 / 일반 계정 생성 활성화
- false는 특수 계정 만들 때 ##userid 식으로 샵을 넣어 만듬. 넣지 않으면 오류 발생
- 해당 설정을 해주지 않고 계정 생성 시 "ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다." 오류 발생
- 이경우 create user c##{사용자 아이디} identified by {사용자 비밀번호}; 식으로 생성 필
9. 사용자 계정 생성 실행
create user {사용자 계정명} identified by {비밀번호};
10. 사용자 DBA 권한 부여
grant dba to {사용자 계정명};
11. 일반 사용자 권한 부여 / 접속 및 테이블 테이블 생성(리소스 사용) 권한
grant connect, resource to {사용자 계정명};
12. 사용자 삭제
drop user {사용자 아이디} cascade;
※ c##{사용자 아이디} 사용자 계정
- ##은 보통 시스템 계정에 붙는 규칙이며 c는 공통 사용자(common user) 명시적 표기
- 오라클 12c 버전부터 생김
- 위에는 특수 목적이라 했지만, 개인 사용자와 공통으로 쓰는 사용자 계정을 명시적으로 분리하여 쓰기 위함
- 즉 c##로 시작하는 계정은 나 혼자 쓰는 것이 아닌 공용(common) 계정이라는 뜻을 명시적으로 표시
- c## 사용자는 여러개 CDB(Container Database)에서 계정이 공유되어 CDB의 모든 PDB(Public DB)에 접근 할 수 있음
(C##가 없는 계정 경우 해당 DB만 사용)
※ connect, resource, dba 같은 role 부여 지양
- create session, create table, create procedure, select, update, all, index, alter... 등 권한을 묶어 놓은 connect, resouce 같은 것(=role)으로 일괄 권한 부여가 아닌 필요한 권한(craete table..)만 직접 부여하여 보안을 제고하는 것을 선호
- role이 아닌 rule은 SQL Optimization 동작 원리. RBO(Role-Base Optimization) vs CBO(Cost-Base Optimization). 혼동 주의
- 윈도우 계정으로 로그인 후 SQL Query 실행하는 방법으로 "SP_ReadErrorLog" 실행
- 계정이 잠겨서 발생하는 문제 경우 아래 실행
ALTERLOGINsaWITHPASSWORD = '비번'UNLOCK
● Sequence 사용
CREATE SEQUENCE tempUid AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
NO MAXVALUE;
CREATE TABLE TEMP(
uid BIGINT NOT NULL DEFAULT (NEXT VALUE FOR tempUid) PRIMARY KEY,
name VARCHAR(100)
)
SELECT * FROM TEMP;
INSERT INTO TEMP(name) VALUES
('최길동'),
('박길동');
SELECT * FROM TEMP;