기록을 합시다.
[Oracle] 데이터베이스 생성 및 계정 생성 본문
이전 게시물
[Oracle] Oracle 21C XE Windows11에서 설치하기 + SQL Developer
ORACLE DATABASE 기본 생성 구문
CREATE DATABASE(데이터 베이스 생성)
CREATE DATABASE database_name
CHARACTER SET (텍스트 인코딩 설정)
CREATE DATABASE database_name
CHARACTER SET AL32UTF8;
//참고로 AL32UTF8은 UTF-8보다 확장된 문자들인 emoji, 한자 등을 저장해줄 수 있다.
DATAFILE SIZE (파일의 위치 및 크기 설정)
DATAFILE 및 SIZE 옵션은 데이터 파일의 위치와 크기를 적절하게 설정하여, 데이터베이스의 성능을 최적화 할 수가 있으며, 데이터 파일 백업을 통해 데이터 손실을 예방하기 위해 사용된다. 아래의 쿼리에서는 SIZE를 200mb로 설정해주었다.
CREATE DATABASE database_name
CHARACTER SET AL32UTF8
DATAFILE '/u01/app/oracle/oradata/mydb/system01.dbf' SIZE 200M;
AUTOEXTEND ON
AUTOEXTEND ON은 설정한 데이터 파일이 자동으로 확장하도록 설정하는 옵션이며, MAXSIZE 옵션을 통해 최대 확장 용량을 정해줄 수 있다. 아래의 쿼리에서는 200mb짜리 파일을 100mb씩 자동 확장 해주며, 500mb까지 확장할 수 있다.
CREATE DATABASE database_name
CHARACTER SET AL32UTF8
DATAFILE '/u01/app/oracle/oradata/mydb/system01.dbf' SIZE 200M
AUTOEXTEND ON NEXT 100MB MAXSIZE 500M;
DEFAULT STORAGE
DEFAULT STORAGE는 테이블이나 인덱스를 생성할 때, 데이터 파일에 저장될 때의 저장 옵션을 설정할 수 있다.
DEFAULT STORAGE는 다음과 같은 하위 옵션들로 구성된다.
- INITIAL : 테이블/인덱스가 생성될 때, 처음 할당 되는 저장소 공간의 크기 설정한다.
- NEXT : 테이블/인덱스의 저장 공간 확장을 할 때, 저장소 공간의 크기를 설정한다.
- MINEXTENTS : 테이블/인덱스가 사용할 최소 저장소 공간 개수를 설정한다.
- MAXEXTENTS : 테이블/인덱스가 사용할 최대 저장소 공간 개수를 설정한다.
- PCTINCREASE : 테이블/인덱스가 저장소 공간을 확장할 때, 증가하는 비율을 설정한다.
- FREELISTS : 테이블/인덱스가 사용 공간 관리를 위해 공간 관리자의 개수를 설정한다.
CREATE DATABASE database_name
CHARACTER SET AL32UTF8
DATAFILE '/u01/app/oracle/oradata/mydb/system01.dbf' SIZE 200M
AUTOEXTEND ON NEXT 100MB MAXSIZE 500M
DEFAULT STORAGE(INITIAL 128K NEXT 64K PCTINCREASE 10;
위의 쿼리는 데이터베이스 저장소 공간의 크기를 128KB로 설정하고, 저장소 공간이 부족하여 저장소 공간을 추가로 저장소를 할당 될 때의 할당 저장소의 크기는 64KB이다. 또한, 저장소 공간을 추가로 할당할 때, 현재 저장소 공간 크기에 비례하여 증가하는 비율을 10퍼센트로 지정하였다. 즉, 처음에는 128KB 를 다 사용하면 128KB+64KB가 저장소의 크기고, 128KB+68KB를 다 사용하게 되면, (128KB+68KB) + (128KB+68KB)*0.01만큼의 저장소 크기를 할당받게 된다.
ORACLE DATABASE USER 생성 구문
USER 생성하기 전, 설정해야 할 것
ALTER SESSION SET "_ORACLE_SCRIPT" = true;
위의 구문은 CREATE USER 문 실행시의 오류를 방지하고, 새로운 유저를 정상적으로 생성할 수 있게 해준다. 일반적으로 Oracle 데이터베이스를 설치하고 새로운 유저를 생성할 때 사용한다.
USER 생성 기본 구문
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace_name
TEMPORARY TABLESPACE temp_tablespace_name
- CREATE USER은 생성할 유저의 이름을 설정해준다.
- IDENTIFIED BY는 유저가 사용할 비밀번호를 설정해준다.
- DEFAULT TABLESPACE는 유저의 기본 테이블 스페이스를 설정해준다.
- TEMPORARY TABLESPACE는 유저의 임시 테이블 스페이스를 설정해준다.
참고로, 테이블 스페이스와 테이블은 다른 개념이다.
테이블은 데이터를 저장하기 위한 논리적인 단위이며, 테이블 스페이스는 데이터베이스의 데이터 파일 및 관련 파일들을 포함하여 저장하는 물리적인 공간이다.
직접 쿼리문 작성해서 DATABASE 및 USER 생성해보기
DATABASE 생성하기
CREATE tablespace springdev
DATAFILE 'c:\oracle\data\springdev.dbf' size 500m
autoextend on next 100m maxsize unlimited
default storage(initial 128k next 64k pctincrease 10);
database 이름으 springdev이고, c:\oracle\data\springdev.dbf 파일에 size 500mb를 설정해주었다. 또한, 500mb를 다 사용하게 되면, 끊임없이 100mb씩 저장 공간을 추가 할당해준다. 초기 저장소 공간은 128KB로 시작하고, 그 다음에는 64kb를 추가 할당하다가, 10퍼센트씩 추가해준다.
DATABASE 생성 오류
oracle 폴더 아래에 data 폴더가 있어야만 오류가 발생하지 않는다.
폴더를 만든 후에 다시 명령문 실행(Ctrl+Enter)를 해보면, 잘 실행이 된다.
유저 생성 구문
alter session set "_ORACLE_SCRIPT" = true;
create user webmaster identified by "12345"
default tablespace springdev
temporary tablespace temp;
위에 작성했던 내용들과 동일하고, 쉬워서 설명은 생략한다.
유저 권한 설정 구문
grant all privileges on springdev to webmaster;
유저에게 table의 모든 권한을 부여하기 위해 grant all privileges on 구문을 이용하였다.
이건 MySQL과 mariaDB와 방식이 비슷하여, 설명은 생략하겠다.
마지막으로, 접속이 잘 되는지만 확인하면 끝!
CREATE DATABASE문이 생각보다 복잡해서 당황했다.
mariaDB와 MySQL은 참 선녀구나..
'공부 > DB' 카테고리의 다른 글
[SQL] ORACLE SQL 공부 -1- (0) | 2023.07.26 |
---|---|
[docker] 팀원들이랑 사용할 oracle 도커 이미지 만들기 (1) | 2023.05.30 |
[Oracle] Oracle 21C XE Windows11에서 설치하기 + SQL Developer (1) | 2023.04.25 |
Email은 Primary Key가 될 수 있을까?(feat. 스택오버플로우) (0) | 2023.04.13 |
NoSQL에 대한 기본적인 개념 (0) | 2023.04.12 |