Tibero Fundamental
Tibero 전체구조
TSM : 인스턴스에 대한 데이타와 제어 정보를 가지는 공유 메모리 영역, 사용자가 동시에 데이타를 공유, 데이타베이스 버퍼 캐쉬, redo 버퍼 캐쉬, SQL 캐쉬, 데이터 딕셔너리 캐쉬 같은 여러 형태의 메모리로 구성, TSM와 백그라운드 프로세스가 인스턴스가 시작될 때, TMS 영역을 할당하고, 인스턴스가 종료하면 할당 해제, TSM의 전체 크기는 고정, 인스턴스가 시작될 때 생성
Shared Cashe : 최초 사용자가 질의를 요청하였을때, 번역하는 작업을 하는 곳. 동일 내용 작업시 바로 보내주는 작업 제공
Batabase Buffer : 사용자가 최초 질의시, 작업한 데이터 내용을 저장하는 곳.(commit 시 database 영역에 쓴다.), 중요한 부분.
Redo Log Buffer : 데이타 유실을 막기위해서. 로그를 버퍼에 저장. 복구를 위한 용도.
Process
Listener : 최초 연결을 받는 곳, 새로운 접속 요청을 받아서 이를 적절한 WTHR로 넘겨주는 역할, (흐름 : 사용자가 접속 요청 -> 리스너를 현재 빈 WTHR이 있는 프로세스를 찾아서 이 사용자의 접속 요청을 넘겨줌, -> 리스너의 요청을 받은 CTHR은 자기 자신의 WTHR 상태를 체크해서 일하지 않은 WTHR에게 할당, -> WTHR은 클라이언트와 인증 절차를 걸쳐 세션 시작)
Backgroun Process : 사용자의 요청을 직접 받아들이지 않고, WTHR나 다른 배경 프로세스가 요청할 때, 혹은 정해진 주기에 따라 움직이며 주로 시간이 오래 걸리는 디스크 작업 담당, 독립된 프로세스로 , 사용자의 요청과 비동기적 동작
database Buffer Writer : 많은 양을 Database Buffer를 저장 불가능, commit 외 사용이 적어진 내용을 DB에 쓰기 위해서 기다리는 곳. Data Buffer cache의 dirty blocks의 내용을 주기적으로 disk에 기록
Redo Log Buffer Writer : Redo Log Buffer를 저장하기 위해.. (Log File DB에) => 순화 되면서. redo 로그 파일의 내용을 디스크에 기록
(Log Archiver) : 아카이브 로그. 아카이브 로그 DB에 저장 할때.. => 중복되는 것이 없이.(중요도가 높을 때 사용), redo 로그 파일을 아카이브 로그 파일로 생성
Checkpoint Process : 어떠한 손실에 대해서 맞추어 줄 때, 사용하는 것. rollback 이나 commit 수행시 , Redo 버퍼 수행 후, database 버퍼 수행, 체크포인트 관리, DBRW에게 Check point 요청
Sequence Writer(AGENT) : 티베로 유일한 정보를 부여하기 위해서. 그 외 작업도 지원, 시퀀스 개시의 값을 디스크에 저장
Monitor Process : 모니터링 용 프로세스, 최초로 뜨고, 마지막으로 죽는다. => 서비 시작 시 최초로 생성, 다른 모든 프로세를 생성, 종료시 마지막 종료, 서버 시작 시에 다른 프로세스 생성, 주기적 시스템 상태 점검, 데드락 검사
Working Process : 멀티 쓰래드 구조. 리스너로 정보를 받아서 작업을 수행하는 곳.
CTHR : 각 foreground process마다 하나씩 생성, 서버 시작 시에 지정된 객수의 WTHR 생성, 시스널 처리 당담, 새로운 접속 요청이 들어오면 현재 놀고 있는 WTHR에게 중계
WTHR : 각 foreground process마다 여러 개 생성, client가 보낸는 메시지를 받아 처리하고 그 결괄르 리턴, SQL 파싱, 최적화, 수행 등 DBMS가 해야 하는 대부분의 일 처리
Tibero Database
물리적으로 저장되는 곳, Data File과 Log File로 구성.
Data File은 Table space로 구성, Log File은 Redo Logfile과 Archive Logfile로 구성
흐름
리스너를 통해서 Control Thread(Working Thread를 모니터링)로 , Control Thread는 비활동 Working Thread와 Client를 연결
Shrader Cache에서 일차적으로 동일한 작업 유무 확인. 없다면, Data File에서 정보를 획득. Database Buffer에 올린다. 있다면 Database Buffer에서 내용을 찾아서 Client에게 제공
업데이트 요청시, 일차적으로 Database buffer에서 해당 내용을 찾아서 변경, Redo Log Buffer에 로그가 저장 => 미리 buffer에 저장 되어 있다고 확인
commit 시, Checkpoint process가 수행, 동기화 작업 시작, Redo Log를 Writer를 통해서 저장, Database buffer를 Writer를 통해서 저장, 수행후 Sequence Writer에서 Sequence를 발급.
쓰래드 기반 구조
client의 빠른 접속 시간,
세션 증가에도 부하 최소화,
프로세스 생성/소멸을 없앰,
시스템 리소스 최소 사용,
안정적 시스템 부화 관리
설치 및 기동과 종료
커널 파라미터 확인
root에서 확인.
sysctl -a
설정 값이 재대로 되어 있지 않으면 오류가 남..
커널 파라미터 수정
root 로 접속화여 아래 제시한 권장 값을 기준으로 각 사이트 운영 환경에 맞추어 설정
kernel parameter 동적 변경 : sysctl -w 키=값
kernel parameter 정적 변경 : vi /etc/sysctl.conf 수정
그룹 및 사용자 생성
그룹 추가(groupadd 그룹명), 사용자 추가(useradd -d 디렉토리 -g 그룹 -p 비밀번호 -s 사용쉘 유저명) => 권장 쉘 (bash shell)
Tibero 설치
사용자 환경 변수 설정 : 사용자 계정에서 .bash_profile 수정, => TIBERO ENV, TIBERO ALIAS 환경 설정 추가
Tibero 바이너리 설치 : 압축 해제, 초기 환경파일 생성(cd $TB_HOME/config => ./gen_tip.sh 실행), 초기 파라미터 파일에서 파라미터 수정, 라이센스 적용(.xml 파일)
Tibero 데이터베이스 생성
tibero를 nomount 모드로 부팅 : tbboot nomount (종료시 : tbdown)
systemp 유저로 접속 : tbsql sys/tibero
데이타 베이스 생성 : (꼼수로. $USER_HOME/tbinary/sql/cre_db.sql 를 tbsql 안에서 실행)
Tibero 제기동,
Data Dictionary 및 system 패키지 생성 : %TB_HOME/scripts/에서 system.sh 실행
Tibero 기동
tbboot [-h] [-v] [-t BOOTMODE]
option
[-h] : show this help
[-v] : show Tibero version
[-t BOOTMODE] : 해당 모드로 부트, BootMode는 NOMOUNT, MOUNT, NORMAL[default], RESETLOGS
Tibero 프로세스
tbsvr : MTHR : Monitor Process
tbsvr_WT001 : WTHR : boot, down 관련
tbsvr_WT002 : CTHR : Control Thread + Work Process
tbsvr_SEQW : ALBA : Sequence cache writeback
tbsvr_LOGW : LGWR : writes the redo log
tbsvr_LOGA : LARC : generates archived log files
tbsvr_CKPT : CKPT : handles checkpoint
tbsvr_BLKW000 : DBWR : writes dirty blocks
Tibero 종류
tbdown [-h] [-t DOWNMODE]
option
[-h] : show this help
[-t DOWNMODE] : 해당 모드로 다운, DownMode는 NORMAL(default), POST_TX(세션에 대한 모든 트랜잭션 종료 후 모두 종료), IMMEDIATE(즉시 죽여라, 로그에 정보가 있다.), ABORT(비정상 종료 => 로그에 정보가 없다.)
Tibero 제거
프로세스 종료 : tbdown 또는 tbdown immediate
$TB_HOME 에 해당하는 디렉토리를 포함한 하위 모든 디렉토리를 OS 명령으로 삭제 : rm -rf $TB_HOME
환경 설정
환경파일
설치후 환경파일에 추가해야 할 사항(Linux)
TB_HOME : Tibero 가 설치된 디렉토리
TB_SID : Tibero System identify 서비스 명
LD_LIBRARY_PATH : Tibero 서버 사용시 필요한 공유 라이브러리 패스 설정
PATH : Tibero 서버를 사용하기 위한 실행파일 경로 설정
Tibero 사용 유저의 환경파일에 설정(.profile 에)
초기화 파라미터 파일
$TB_HOME/config/$TB_SDI.tip
티베로는 데이터베이스의 접속 없이 OS에서 티베로를 실행시킬 수 있다. 이 때 티베로는 초기화 파리메터의 설정 값을 읽고, 해당되는 설정 값에 따라 인스턴스를 준비한다.
초기화 파리메터의 내용 : 데이터베이스 명, 데이터 블락(data block) 크기, 제어 파일(control file)의 위치, 시스템 로그의 위치, 인스턴스의 메모리
Tibero Client 접속 정보 설정
Network 설정 파일(.tbr)
Network를 이용하여 티베로 서버에 작업을 요청시 client와 통신 환경을 설정하는 파일
프로토콜은 주로 TCP/IP 사용
설정 파일 : $TB_HOME/client/config/tbnet_alias.tbr
정보는 키 = ( IP=값 PORT=값 DB_NAME=값) 형태로 있다.
Tibero Data Dictionary 개요
데이터 베이스에 대한 정보를 제공하는 읽기 전용 테이브 및 뷰의 집합
System Tablespace에 저장, Tibero 서버에 의해 유지 관리
소유자는 sys 사용자이만, syscat 이 sys 소유의 데이터를 VIEW 형태로 제공
데이터 사전 종류
정적 뷰(Static View) : 하나 이상의 기반 테이블을 이용하여 정의된 뷰이며, 정적 뷰에 따라 다른 정적 뷰 또는 동적 뷰에 기반하여 정의되기도 함
동적 뷰(Dynamic View) : 현재 티베로 시스템에서 동적으로 변경되는 데이터를 가상 테이블 집합에 기록하여, 이 가상 테이블은 데이터베이스가 실행되는 동안에만 메모리에 존재하여 데이터베이스 작업의 실시간 상태를 반영
데이터베이스 유지관리
구성
System Tablespace : System01.tbf, Segments Table과 Segments Undo 로 구성, 테이블 크리에트, 로그, 데이터 딕셔너리, 정보를.
Undo Tablespace : Undo01.tbf, Segments Undo와 Segments Undo 로 구성, Select, Update에 대한 정보, 그 작업에 대한 로그 정보, 대량의 데이터 작업시 큰 용량 필요
Temp Tablespace : Temp01.tbf, Segments Temp와 Segments Temp 로 구성, 조인 및 소팅에 대한 정보,
User Tablespace : User01.tbf, Segments Table과 Segments Table 로 구성, 유저가 사용하는 tablespace
논리적 단위 : Database > Tablespace > Segment > Extent > DB Block
물리적 단위 : Datafile > OS Block (하나의 Tablespace는 하나의 Datafile과 같다)
TableSpace 관리
개요
테이블스페이스라는 하나 이상의 논리적 저장 영역으로 구성되어 있으며 Tibero의 모든 데이터를 저장
각 테이블스페이스는 데이터파일이라는 하나 이상의 파일로 구성, 이 데이터 파일은 운영체제의 물리적인 저장영역,
테이블 스페이스 유형 : System Tablespace, Non System Tablespace,
테이블 스페이스 영역 관리 방법 : Locally Managed Tablespace 방식(autoallocate, uniform) - Segment 관리 (Auto 관리)
** 오라클과 비교( EXTENT 관리 방법 || SEGMENT 관리 방법)
오라클 : Dictionary 방식, Locally 방식(Bitmap) || Manual 방식(freelist), Auto 방식(Bitmap)
티베로 : Locally 방식(1.autoallocate, 2.uniform)) || Auto 방식 => Dictionary 방식를 제공하지 않음.
테이블스페이스 관리
생성 : System Tablespace는 데이터베이스가 생성될 때 생성,
Non System Tablespace 생성하기(일반 유저가 사용하는 Tablespace)
sql문 : CREATE TABLESPACE my_space DATAFILE '/home/tibero/data01/my_file001.tbf' SIZE 50M EXTEXT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
extent management local : 해당 테이블스페이스에서 각 extent 들에 대한 사용 가능 여부를 bitmap 형태로 각 구성 datafile에 저장하는 방식
uniform size 256 : 테이블스페이스 내의 Extent를 일정한 크기(256k)로만 생성
테이블스페이스 크기 변경
테이블스페이스의 크기는 물리적인 데이터파일의 크기 변경과 데이터파일 추가로 변경 가능
데이터파일의 크기 변경
sql문
ALTER DATABASE DATAFILE 'my_file02.tbf' RESIZE 100M ;
ALTER DATABASE DATAFILE 'my_file02.tbf' RESIZE 100M AUTOEXTEND ON NEXT 2M MAXSIZE 500M ;
데이터파일 추가
sql 문 : ALTER TABLESPACE my_space ADD DATAFILE 'my_file02.tbf' SIZE 20M ;
테이블스페이스 삭제
테이블스페이스의 제거에는 DROP TABLESPACE 명령을 사용
테이블스페이스 삭제 명령어 : DROP TABLESPACE my_space ;
테이블스페이스르 구성하는 데이터 파일을 함께 제거시 INCLUDING 절을 삽입
DROP TABLESPACE my_space INCLUDING CONTENS AND DATAFILES ;
테이블스페이스 정보 조회
티베로에서는 테이블스페이스에 대한 관리를 용이하게 하기 위하여, 여러가지 뷰를 정의하여 테이블스페이스에 대한 정보를 제공
뷰의 종류
DBA_TABLESPACES : 티베로내의 모든 테이블스페이스에 대한 정보
USER_TABLESPACES : 현재 유저에 속한 테이블스페이스에 대한 정보
V$TABLESPACE : 티베로내의 모든 테이블스페이스에 대한 간략한 정보
Redo Log File 관리
리투 로그 파일의 관리
리두 로그 버퍼에 기록된 내용을 디스크에 기록하는 데이터베이스 구성 요소
리두 로그 버퍼엔 데이터베이스 장애시 복수를 수행하기 위해 모든 DML에 대한 로그를 기록
리두 로그 파일의 구성 요소
Redo Log Group
Redo Log Member
리두 로그 파일의 생성
로그 그룹 생성
sql 문
ALTER DATABASE ADD LOGFILE ('/home/tibero/data01/redo30.log') SIZE 512K ;
ALTER DATABASE ADD LOGFILE GROUP 5 ('/home/tibero/data01/redo50.log') SIZE 512K ;
로그 맴버 생성
sql 문 : ALTER DATABASE ADD LOGFILE MEMBER '/home/tibero/data01/redo12.log' TO GROUP1, '/home/tibero/data01/redo22.log' TO GROUP 2 ;
로그 삭제
slq 문 : ALTER DATABASE DROP LOGFILE GROUP 5 ; => 파일은 남아 있다..
slq 문 : ALTER DATABASE DROP LOGFILE MEMBER ;
리두 로그 파일 정보 조회
티베로에서는 Redo 로그의 관리를 용이하게 하기 위하여 Redo 로그에 대한 정보를 제공하는 여러가지 뷰를 정의하고 있다.
뷰의 종류
V$LOG : 로그 그룹에 대한 정보
V$LOGFILE : 로그 파일에 대한 정보
제어 파일(Control File) 관리
제어 파일 관리
제어 파일은 데이터베이스 자체에 대한 메타 데이터를 보관하고 있는 바이너리 파일
제어 파일은 테베로 시스템에 의해서만 생성 및 갱신 가능하다
제어 파일에 포함된 내용
데이터베이스에 대한 정보
테이블스페이스에 대한 정보
데이터 파일에 대한 정보
Redo 로그에 대한 정보
체크포인트에 대한 정보
제어 파일 변경
UNIX 상에서 컨트롤 파일을 복사 (Tibero shutdown 후 작업)
$cp /user1/tibero/contorl01.ctl /usr3/tibero/contro003.ctl
컨트로 파일 SQL 백업
백업 복사본을 기본의 복사본과 다른 디스크에 저장하여햐 하므로, 절대경로를 포함해서
slq문 : ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tibero3/backup/ctrlfile1.sql' REUSE NORESETLOGS ;
제어 파일 관리
컨트롤 파일에 대한 정보 : 티베로에서는 여러가지 시스템 뷰를 정의하여 컨트롤 파일의 관리에 도움을 주고 있다.
뷰의 종류
V$DATABASE : ARCHIVELOG 모드인지 여부, 체크포인트 등의 정보
V$CONTROLFILE : 컨트롤 파일의 생태 및 파일이름 정보
Tibero Data Dictionary 개요
데이터 베이스에 대한 정보를 제공하는 읽기 전용 테이브 및 뷰의 집합
System Tablespace에 저장, Tibero 서버에 의해 유지 관리
소유자는 sys 사용자이만, syscat 이 sys 소유의 데이터를 VIEW 형태로 제공
데이터 사전 종류
정적 뷰(Static View) : 하나 이상의 기반 테이블을 이용하여 정의된 뷰이며, 정적 뷰에 따라 다른 정적 뷰 또는 동적 뷰에 기반하여 정의되기도 함 (_DD로 시작.)
동적 뷰(Dynamic View) : 현재 티베로 시스템에서 동적으로 변경되는 데이터를 가상 테이블 집합에 기록하여, 이 가상 테이블은 데이터베이스가 실행되는 동안에만 메모리에 존재하여 데이터베이스 작업의 실시간 상태를 반영(V$로 시작)
객체 관리
객체(Object)
티베로의 논리적 구조로 취급할 수 잇는 형식의 데이터로 구조상 또는 용법상 관점으로 분류한 것이다.
종류 : 테이블, 인덱스, 뷰, 시퀸스, 동의어, 트리거, 프로시저, 유저 생성 function, 사용자 생성 패키지
모든 객체는 한 스키마에 의해 생성되며, 그 스키마에 속하게 된다.
객체 중 실제 물리적 공간을 가지는 객체를 세그먼트라 한다.
세그먼트 : 테이블, 인덱스, 파티션 테이블, 언두(undo), 템포러리
객체 : 뷰, 시퀀스, 동의어 .
테이블 관리
테이블
테이블은 데이터베이스에서 실제 데이터가 저장되는 논리적 구조를 의미
테이블의 구성요소
컬럼(column) : 테이블에 저장될 데이터의 특성을 지정하는 구성요소
행(row) : 하나의 테이블을 구성하며 다른 유형의 데이터가 저장된다.
테이블 종류 : 일반 테이블, 파티션 테이블
테이블에 사용되는 컬럼 타입
CHAR(n) : 고정길이 문자 데이터, 최대 2000byte 까지 선언
VARCHAR(n) : 가변길이 문자 데이터, 최대 4000byte 까지 선언
NUMBER(p,s) : 가변길이 숫자 데이터, p는 정밀도 자리수, s는 소수점 이하 자릿수
DATA : 날짜 및 초 단위까지의 시간을 선언
TIME : 초 단위 소숫점 9자리까지 시간을 선언
TIMESTAMP : 날짜와 초 단위 소숫점 9자리까지의 시간을 선언
RAW : 임의의 바이너리 데이터를 저장하기 위한 타입, 최대 2000byte까지 선언
LONG : VARCHAR와 RAW 타입의 최대 길이를 2G까지 늘린 타입
BLOB : LONG과 LONG ROW 타입을 확장한 데이터 타입, chleo 4G까지 선언
제약조건(constraints)
테이블의 컬럼에 사용자가 원하지 않는 데이터가 입력, 변경, 삭제되는 것을 방지하는 방법 중 하나
제약조건 종류 : Not Null, Unique, Primary Key, Foreign Key, Check
제약조건 유형 : Column Level, Table Level
제약조건 설정 예 => oracle과 동일
제약조건의 상태
Enable : 제약조건이 활성화 되어 제약 조건을 적용시킨다,
Disable : 제약조건이 비활성화 되어 적용되지 않는다
Validate : 기존 저장되어 있는 데이터의 무결성을 보장한다.
Novalidate : 기존 저장되어 있는 데이터의 무결성을 보장하지 않는다.
제약조건 상태 변경 예 => oracle과 동일
제약조건의 변경 : ALTER TABLE 명령을 이용하여, 변경 간으한 테이블에 대해서만 제약조건을 변경도 가능
제약조건 변경의 예 => oracle과 동일
제약조건의 삭제 => orcale과 동일
제약조건에 대한 정보
뷰의 정류
DBA_CONSTRAINTS : 티베로내의 모든 제약조건에 대한 정보
USER_CONSTRAINTS : 현재 유저에 속한 제약조건에 대한 정보
ALL_CONSTRAINTS : 유저가 접근 사능한 제약조건에 대한 정보
DBA_CONS_COLUMNS : 티베로내의 모든 제약조건에 걸린 컬럼에 대한 정보
USER_CONS_COLUMNS : 현재 유저에 속한 제약조건에 걸린 컬럼에 대한 정보
ALL_CONS_COLUMNS : 유저가 접근 간으한 제약조건에 걸린 컬럼에 대한 정보
데이타 저장 영역
데이터 블록
블록은 데이터를 저장하는 물리적인 최소의 단위, 블록의 크기는 전체 데이터베이스에서 일정(db_block_size)
구조는 Header(INITRANS 설정) + Fress Space(PCTFREE 설정) + Data 로 되어 있다.
데이터 블록 설정
테이블을 생성할 때 블록 파라메터를 설정 : CREATE TABLE 뒤에 PCTFREE 와 INITRNS 로 설정 해준다.
테이블 설정 값을 변경 : ALTER TABLE table_name PCTFREE 10 ;
인덱스를 생성할 때에는 INITRANS 값의 설정만 가능(PCTFREE 는 사용 하지 않는다..)
테이블 관리
테이블의 생성
일반 테이블 생성 : CREATE TABLE 명령 뒤에 TABLESPACE, PCTFREE, INITRANS 로 나머지들 설정
TABLESAPACE : 테이블을 생성하면 이 테이블의 데이터가 저장될 저장소 지정
PCTFREE : 테이블의 각 데이터 블록에 있는 공간 비율로 행을 갱신하기 위해 예약해 두는 공간의 % 정도
INITRANS : 테이블에 할당된 데이터 블록 내의 초기 할당 트랜잭션 항목 수
파티션 테이블 생성 : CREATE TABLE 명령 뒤에 해당 컬럼에 대해서 PARTITION BY RANGE (column_name) PARTITION PART1 VALUES LESS THAN (condition) TABLESPACE tablespace_name, (PARTITION PART1 VALUES LESS THAN (condition) TABLESPACE tablespace_name.. ... )
테이블 삭제
DROP 구문 사용시 테이블의 모든 행이 삭제되고 사용된 공간이 해제 : DROP TABLE table_name ;
CASCADE 연산자와 함께 사용시 외래키에 의해 참조되는 키본키를 포함한 테이블일 경우 외래 키 조건도 같이 삭제 : DROP TABLE table_name CASCADE CONTRAINTS ;
테이블 삭제 구문은 자동 커밋 되므로 ROLLBACK 불가능
테이의 변경
사용중인 테이블의 속성을 변경하기 위해서 ALTER TABLE 문을 이용
다른 사용자가 소유한 테이블을 변경하려면 ALTER ANY TABLE 시스템 특권을 가지고 있거나 변경하려는 테이블에 대한 ALTER 객체 특권을 갖고 있어야 한다.
컬럼 정의 변경 : ALTER TABLE table_name MODIFIY (column_name 타입, 조건 등) ; (NOT NULL이나 CHECK 옵션은 여기서 수정)
컬럼 명 변경 : ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name ;
저장 영역 변경 : ALTER TABLE table_name PCTFREE 10 ;
== 이후에 기입
인덱스 관리
인덱스
인덱스는 테이블에서 원하는 데이터를 빠르게 검색하기 위하여 사용하는 데이터 구조
인텍스는 테이블과는 별도의 스키마 객체, 독립적으로 생성, 제거, 변경, 저장 할 수 있다.
인덱스 종루
단일 컬럼 : 하나의 컬럼
복합 : 하나 이상의 컬럼
유일 : 테이블에서 유일한 값을 가진 컬럼
비유일 : 중복되는 값을 인정하는 컬럼
인덱스의 구조
ROWID 생성 되어, 해당 데이터를 빠르게 가져올 수 있다.
인덱스 생성 지침
WHERE 조건절에서 자주 사용되는 컬럼을 대상
Query와 DML 요구 간의 균형
티베로는 기본키, UNIQUE 그리고 외래키 제약조건이 설정된 컬럼들 대해서 자동으로 인덱스 생성
인덱스의 생성
유일 인덱스는 자동 생성됨
비 유일 인덱스는 사용자가 생성해 주어야 함.
인덱스의 삭제
테이블과 같은 독립적인 스키마 객채 이므로 자유롭게 할 수 있다.
인덱스 삭제시 해당 컬럼의 데이타 조회시 조회 속도가 느려집
인덱스 정보 조회
DBA_INDEXES
기타 객체 관리
뷰 관리
SELECT 문장으로 표현된 가장의 테이블
테이블과 동일하게 사용
뷰를 통한 데이터 변경 : 단 불가능한 뷰가 존재한다. 갱신가능한 뷰는(updatable view)라 함
뷰 생성 : oracle 과 동일
뷰 삭제 : oracle 과 동일
뷰 정의 변경 : oracle 과 동일 (ALTER 가 아니라 대체 하는 것이기 때문에 CREATE OR REPLACE VIEW 을 이용)
시퀀스 관리
고유번호 자동 생성기
CREATE SEQUENCE 특권이 있어야 생성가능
생성 : oracle 과 동일
사용 : nextval, currval 이용(oracle 과 동일)
변경 : oracle 과 동일
삭제 : oracle 과 동일
시노님(Synonym) 관리
객체에 대한 별칭
생성 : oracle 과 동일
제거 : oracle 과 동일
수정 : 해당 시노님를 제거 후 새로 생성 하면 됨
공유 시노님을 생성 및 제거 시 PUBLIC 를 넣으면 된다.
기타 객제 정보 조회
뷰
DBA_VIEW
시퀀스
DBA_
시노님
DBA_
사용자 관리와 데이터베이스 보완
사용자 관리
사용자 관리
데이터베이스 내의 데이터 접근 또는 조작을 위해서는 권한을 가진 사용자(USER)로 접속 필요
각 사용자(USER)가 생성될 때 암호도 같은 생성하며, 이후 변경 가능
데이터사전(Data Dictionary)에 암호화된 형태로 암호를 저장
스키마
OBJECT의 모음을 의미(TABLE, INDEX, VIEW, SYNONYM ...)
한 사용자가 하나의 스키마를 가지며, 스키마 이름은 사용자의 이름과 동일
사용자 생성
사용자를 새로 생성하거나 변경 혹은 삭제하기 위해서는 DBA 특권을 가진 사용자로 접속해야 함
티베로에서는 기본적으로 SYS라는 사용자를 제공
사용자 생성은 아래와 같이 CREATE USER 명령을 사용하여 할 수 있다(테이블스페이스 미 지정시 자동으로 SYSTEM 테이블 스페이스를 사용하므로.. 넣어 주어라~)
sql문 : CREATE USER 유저명 IDENTIFIED BY 패스워드 DEFAULT TABLESPACE 테이블스페이스명
접속 권한 부여 : GRANT CONNECT TO 유저명
패스워드 변경
사용자의 패스워크 모르나 변경을 할 수 있는 권한 유저로 접속
변경 : ALTER UESR 유저명 IDENTIFIED BY 페스워드 ;
삭제 : DROP USER 유저명 CASCADE ;
사용자 정보 조회
데이터베이스 보안
SQL 문의 종류를 싱행하거나, 다른 스키마의 데이터를 조회 또는 변경하는 등을 실행 할 수 있는 것
권한 종류
SYSTEM 권한
데이터베이스를 관리하는 데에 필요한 시스템 명령어 사용을 위한 권한
시스템 특권은 기본적으로 SYS 유저가 소유, 다른 사용자에게 부여 가능
WITH ADMIN OPTION 옵셔과 함께 부여 하면, 부여 받은 시스템 권한을 다른 사용자에게 다시 부여 가능
ㅁ
권한 부여
스키마 객체 권한
스키마 객체에 대해 실행할 수 있는 명령어를 조절
GRANT 명령어 이용
권한 부여
권한 회수
REVOKE 명령을 사용하여 부여한 권한을 회수
시스템 권한 회수
스키마 객체 권한 회수
롤(ROLE)
여러 권한을 모아놓은 집합, 하나의 단위로서 사용자에게 부여
롤을 생성하거나 수정, 부여하기 위해서는 그에 맞는 권한이 필요
생성
부여
취소
기본 룰
사용자에게 부여한 룰은 한 세션 내에서 SET ROLE 명령을 사용함으로써 동적으로 변경 가능
권한과 룰 정보 조회
권한
룰
** == 실습 시작 == **
테이블 스페이스 생성 TMAX_DATA, datafile : tmax_data001.tdf
CREATE TABLESPACE TMAX_DATA
DATAFILE '/data01/tbdata3/tmax_data001.tdf' SIZE 50M
유저 생성(tmax/tmax) default tablespace TMAX_DATA
CREATE USER tmax
IDENTIFIED by tmax
DEFAULT TABLESPACE TMAX_DATA ;
권한 부여(resoource, connect)
GRANT RESOURCE, CONNECT to tmax ;
테이블 생성 : 책의 내용 대로(P. 47 컬럼 레밸 생성) => tmax 유저로 접속 했음
CREATE TABLE temp_prod
( prod_id number(6) constraint prod_id_pk primary key
, prod_name varchar2(50) constraint prod_name_nn not null
, prod_cost varchar2(30) constraint prod_cost_nn not null
, prod_pid number(6)
, prod_data date constraint prod_data_nn not null)
prod_cost의 제약 조건 삭제
ALTER TABLE temp_prod
DROP CONSTRAINT prod_cost_nn
인덱스 생성(복합기) prod_id & prod_name tablesapce : TMAX_DATA
CREATE INDEX prod_id_name
ON temp_prod (prod_id, prod_name)
TABLESPACE TMAX_DATA ; // tmax 유저는 tablespace 생략 가능
sequence 생성 1 ~ 100000 까지 증가 10 반복 사용
CREATE SEQUENCE temp_prod_seq
INCREMENT BY 10
MAXVALUE 100000
MINVALUE 1
NOCYCLE
모든 객체 및 테이블스페이스 삭제
DROP SEQUENCE temp_prod_seq ;
DROP TABLE temp_prod ;
DROP USER tmax CASCADE ;
DROP TABLESPACE TMAX_DATA INCLUDING CONTENTS AND DATAFILES ;
** == 종료 == **
tbSQL
개요
기능
일반적인 SQL 문장 및 tbPSM 프로그램을 입력, 편집, 저장, 실행
트랜잭션 설정 및 종료
스크립트를 통한 일괄 실행
DBA에 의한 데이터베이스 관리
외부 유틸리티 및 프로그램의 실행
tbSQL 환경 설정
환경 설정 및 변경
tbSQL 설정 확인
SHOW 명령어 사용 : SHOW [ALL | 명령어 변수]
tbSQL 설정 변경
SET 명령어 사용 : SET [명령어 변수] [변수 설정 값]
시작 및 종료
시작
SYS 유저로 접속 : tbsql sys/sys암호 OR sql내에서는 conn sys/sys암호
유저로 접속 : tbsql 유저명/유저암호 OR conn 유저명/유저암호
종료
exit OR quit
기본 기능
SQL 문장 입력 수행
tbPSM 프로그램의 입력 : oracle의 PL/SQL 와 동일
anonymous block (DECLARE, BEGIN)을 입력하거나 CREATE (OR REPLACE) PROCEDURE / FUNCTION / TRIGGER 등 프로시저 / 함수 / 트리거를 생성하면 tbSQL에서 tbPSM 프로그램 입력 모드로 변경
다수의 SQL문 또는 다수의 tbPSM으로 구성
한번 실행된 프로그램은 SQL 버퍼에 저장(입력을 마치려면 블록종료자(BLOCKTEMINATOR)를 입력
tbSQL 명령어
! [command] : tbSQL 내에서 운영체제 명령어 실행
@ [command] : 스크립트 파일 실행
/ : 현재 SQL 버퍼 내의 명령어 실행
CONN[ECT] [USER_ID/USER_PW] : 다른 유저로 티베로 데이터베이스에 연결
COL[UMN] [column_name [option]] : 128개의 컬럼 출력 속성을 지정할 수 있다
DESC[RIBE] [schema.]object : 지정된 객체의 컬럼 정보를 출력한다.
DISC[ONNECT] : 티베로 데이터베이스와 연결을 해제 한다.
ED[IT] [file_name] : 외부 에디터를 이용하여 운영체제 파일을 편집 및 버퍼에 저장된 내용을 편집한다.
HELP : 지정된 항동에 대한 도움말을 화면에 출력
HO[ST] : ! 와 같은 명령어
L[IST] : SQL 버퍼 내의 전체 라인을 화면에 출력
LS : 사용자가 소유한 데이터베이스 오브젝트 정보를 출력
RUN : / 와 같은 명령어
SET : tbSQL 시스템 변수 값을 설정
SHO[W] : tbSQL 시스템 변수의 정보를 출력
SPO[OL] : 화면에 출력되는 모든 내용을 파일에 저장(파일명 입력)하거나 중지(중지하려면 OFF를 주면 된다)
START : @ 와 같은 명령어
[TB]DOWN : 티베로 시스템을 종료
tbSQL 시스템 변수 : <추후 입력>
컬럼 포맷
tbSQL 컬럼 포맷은 COLUMN 명령어를 이용하여 설정하고, 또한 COLUMN 명령어를 이용하여 출력할 수 있다.
COLUMN CLEAR : 컬럼 출력 속성을 메모리에서 제거
HEDING text : 컬럼 제목을 지정
COLUMN ON | OFF : 컬럼 출력속성의 상태를 지정
COLUMN An COLUMN 9.....9 : 컬럼 출력 형태를 지정
tbAdmin
소개
오라클 데이터베이스를 이용하는 개발자와 관리자에게 필요한 필수적인 기능들을 제공
SQL Editor, PSM Editer, Schema Browser 다양한 기능 제공
데이터베이스 관리자를 세션과 Lock에 대한 모니터링을 통하여 현재 상태와 문제점들을 쉽게 파악
설치 및 실행
해당 파일의 압축을 풀면 바로 설치
기존의 tbadmin폴더가 존재하는 경우에는 전 폴더 삭제 후 , 설치
윈도우 OS에서 실행(tbadmin.bat 실행)
리눅스 OS에서 실행(tbadmin.sh 실행)
기능 설명
SQL Editor
PSM Editor
Schema Browser
Parameter Manager
Preferences
기타
사용시 유의사항
LONG과 CLOB 데이터에 대한 주의사항
tbExport
소개
개요
티베로 데이터베이스에 저장된 스키마 객체 전체 또는 일부를 추출해 tbExport에서 정의한 고유한 형식을 갖는 파일에 저장
JAVA로 구현됨
특징
논리적인 백업 : 데이터 존재 여부에 상관없이 Tibero의 내부 스키마 및 데이터를 SQL 문장 형태로 추출
Export 작업을 통해 추출한 각 테이블의 데이터를 동실 시점의 데이터가 아니라 순차적인 Exprot 작업 시점의 데이터
설치 및 실행
설치 : Tibero 서버 설치시 client 모듈과 같이 자동 설치됨
실행
JDK 1.4.2 이상
실행시 필요한 라이브러리(기본 위치 ; $TB_HOME/lib/jar 디렉토리) : tbexpimp3.jar(tbExport/tbImport 클래스파일), tbtoolcom.jar(티베로 공통 유일 드라이버), tibero-jdbc.jar(티베로 JDBC 드라이버)
tbexport 명령으로 실행 => tbexport username=유저명 password=페스워드 sid=DB_SID file=생성될파일명
파라미터
Export 모드
전체 데이터베이스 모드
SYS 사용자를 제외한 모든 사용자의 객체 추출
DBA 권한을 가진 사용자만 사용 가능
사용자 모드
Export 대상 사용자를 지정하고 지정한 사용자가 소유한 모든 스키마 정보 추출
DBA는 하나 이상의 사용자 지정 가능
테이블 모드
하나 이상의 테이블을 지정하여 지정한 테이블과 연관된 인덱스 등의 스키마 객체들을 함게 추출
테이블 지정시 소유자도 명시해야 함
** == 실습 시작== **
풀모드 실행
[tmaxsoft:/home/tibero]#tbexport USERNAME=sys PASSWORD=tibero IP=localhost PORT=8629 SID=tibero FILE=exp_data.dat LOG=exp_data.log FULL=y SCRIPT=y
USER MODE : tibero
[tmaxsoft:/home/tibero]#tbexport USERNAME=tibero PASSWORD=tmax IP=localhost PORT=8629 SID=tibero FILE=exp_data01.dat LOG=exp_data01.log USER=tibero,tibero1 SCRIPT=y
TABLE MODE : tibero.employee, tibero.orders
[tmaxsoft:/home/tibero]#tbexport USERNAME=sys PASSWORD=tibero IP=localhost PORT=8629 SID=tibero FILE=exp_data02.dat LOG=exp_data02.log TABLE=tibero.employee,tibero.orders SCRIPT=y
** == 종료 == **
tbImport
소개
개요
tbExport에 의ㅣ하여 생성된 익스포트 파일로붜 스키마 객체를 티베로 데이터베이스에 저장하는 유틸리티
하나의 스키마 객체를 저장하면 그와 연관된 스키마 객체들이 자도으로 저장
JAVA로 구현됨
특징
테이블 재구성 Export/Import 작업을 통해 수많은 DML 작업으로 발생한 단편화 현상 제거 가능
tbImport 설치 및 실행
설치 : Export 와 동일
실행 : 준비는 Export 와 동일
tbimport USERNAME=유저명 PASSWORD=패스워드 SID=DB_SID FILE=입력하려는파일 LOG=로그명 USER=해당유저명
파라미터
Import 모드
전체 데이터베이스 모드
사용자 모드
테이블 모드
수행순서
테이블 정의 => 테이블 데이터 => 시퀸스, 뷰, 프로시저 => 테이블 인덱스 => 테이블 제약 조건 등
** == 실습 시작 == **
테이블 모드
[tmaxsoft:/home/tibero]#tbimport USERNAME=sys PASSWORD=tibero IP=localhost PORT=8629 SID=tibero FILE=exp_data02.dat LOG=imp_data01.log FROMUSER=tibero TOUSER=tibero1 SCRIPT=y
[tmaxsoft:/home/tibero]#tbimport USERNAME=sys PASSWORD=tibero IP=localhost PORT=8629 SID=tibero FILE=exp_data02.dat LOG=imp_data0.log FROMUSER=tibero TOUSER=tibero2 TABLE=employee SCRIPT=y
유저모드
[tmaxsoft:/home/tibero]#tbimport USERNAME=sys PASSWORD=tibero IP=localhost PORT=8629 SID=tibero FILE=exp_data01.dat LOG=imp_data00.log FROMUSER=tibero TOUSER=tibero1 SCRIPT=y
** == 종료 == **
'데이타베이스' 카테고리의 다른 글
MYSQL (1)설치하기 (ubuntu 16.x, 18.x, mysql-5.x) (0) | 2020.10.17 |
---|---|
[ SQL ] alter (0) | 2016.01.05 |
[ Oracle ] 오라클명령 (0) | 2016.01.05 |
[ Oracle ] 오라클 테이블스페이스/유저추가 (0) | 2016.01.05 |
[ MSSQL ] Lock 에대한 구체적정리 (2013.0325) (2) | 2016.01.05 |
댓글