블로그 이미지
OSSW(Open Source System SoftWare

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Notice

2014.12.28 22:36 2. DBMS이야기/04. CUBRID

안녕하세요~!

12월의 마지막 주말은 잘 보내셨나요~?


올해의 마지막 세션은 큐브리드 DB 체크에 대해 알아봐요~


1. DB 일관성 확인하기

cubrid checkdb 유틸리티를 사용하면 인덱스와 다른 데이터 구조를 확인하기 위해 데이터와 로그 볼륨의 내부적인 물리적 일치를 확인할 수 있어요. 만일 cubrid checkdb 유틸리티의 실행 결과가 불일치로 나온다면 --repair 옵션으로 자동 수정을 시도해봐야해요


cubrid checkdb [options] database_name [table_name1 table_name2 ...]

table_name1 table_name2 에는 일관성을 확인하거나 복구하려는 테이블 이름을 나열할 수 있어요

-S, --SA-mode

서버 프로세스를 구동하지 않고 데이터베이스에 접근하는 독립 모드(standalone)로 작업하기 위해 지정되며, 인수는 없다. -S 옵션을 지정하지 않으면, 시스템은 클라이언트/서버 모드로 인식한다.

cubrid checkdb -S demodb
-C, --CS-mode

서버 프로세스와 클라이언트 프로세스를 각각 구동하여 데이터베이스에 접근하는 클라이언트/서버 모드로 작업하기 위한 옵션이며, 인수는 없다. -C 옵션을 지정하지 않더라도 시스템은 기본적으로 클라이언트/서버 모드로 인식한다.

cubrid checkdb -C demodb
-r, --repair

데이터베이스의 일관성에 문제가 발견되었을 때 복구를 수행한다.

cubrid checkdb -r demodb

인덱스의 이전 링크(previous link)에 오류가 있는지를 검사한다.

$ cubrid checkdb --check-prev-link demodb

인덱스의 이전 링크(previous link)에 오류가 있으면 복구한다.

$ cubrid checkdb --repair-prev-link demodb
-i, --input-class-file=FILE

-i FILE 옵션을 지정하거나, 데이터베이스 이름 뒤에 테이블의 이름을 나열하여 일관성 확인 또는 복구 대상을 한정할 수 있다. 두 가지 방법을 같이 사용할 수도 있으며, 대상을 지정하지 않으면 전체 데이터베이스를 대상으로 일관성을 확인하거나 복구를 수행한다. 특정 대상이 지정되지 않으면 전체 데이터베이스가 일관성 확인 또는 복구의 대상이 된다.

cubrid checkdb demodb tbl1 tbl2
cubrid checkdb -r demodb tbl1 tbl2
cubrid checkdb -r -i table_list.txt demodb tbl1 tbl2

-i 옵션으로 지정하는 테이블 목록 파일은 공백, 탭, 줄바꿈, 쉼표로 테이블 이름을 구분한다. 다음은 테이블 목록 파일의 예로, t1부터 t10까지를 모두 일관성 확인 또는 복구를 위한 테이블로 인식한다.

t1 t2 t3,t4 t5
t6, t7 t8   t9

     t10


2. DB 내부 정보 확인하기


cubrid diagdb 유틸리티가 제공하는 정보들은 현재 데이터베이스의 상태를 진단하거나 문제를 파악할 수 있어요.

cubrid diagdb [option] database_name
-d, --dump-type=TYPE

데이터베이스의 전체 파일에 대한 기록 상태를 출력할 때 출력 범위를 지정한다. 생략하면 기본값인 -1이 지정된다.

cubrid diagdb -d 1 demodb

-d 옵션에 적용되는 타입은 모두 9가지로, 그 종류는 다음과 같다.

타입설명
-1전체 데이터베이스 정보를 출력한다.
1파일 테이블 정보를 출력한다.
2파일 용량 정보를 출력한다.
3힙 용량 정보를 출력한다.
4인덱스 용량 정보를 출력한다.
5클래스 이름 정보를 출력한다.
6디스크 비트맵 정보를 출력한다.
7카탈로그 정보를 출력한다.
8로그 정보를 출력한다.
9힙(heap) 정보를 출력한다.


3. 서버/클라이언트에서 사용하는 파라미터 출력하기

cubrid paramdump [options] database_name
-o, --output-file=FILE

데이터베이스의 서버/클라이언트 프로세스에서 사용하는 파라미터 정보를 지정된 파일에 저장하는 옵션이며, 파일은 현재 디렉터리에 생성된다. -o 옵션이 지정되지 않으면 메시지는 콘솔 화면에 출력한다.

cubrid paramdump -o db_output demodb
-b, --both

데이터베이스의 서버/클라이언트 프로세스에서 사용하는 파라미터 정보를 콘솔 화면에 출력하는 옵션이며, -b 옵션을 사용하지 않으면 서버 프로세스의 파라미터 정보만 출력한다.

cubrid paramdump -b demodb
-S, --SA-mode

독립 모드에서 서버 프로세스의 파라미터 정보를 출력한다.

cubrid paramdump -S demodb
-C, --CS-mode

클라이언트-서버 모드에서 서버 프로세스의 파라미터 정보를 출력한다.

cubrid paramdump -C demodb


2015년 청양의 해 새해 많이 받으세요~!


출처 : 큐브리드 메뉴얼                                                                    (By. 진준호 2014.12.28)


'2. DBMS이야기 > 04. CUBRID' 카테고리의 다른 글

08. CUBRID DB 체크하기  (0) 2014.12.28
07. CUBRID 복구하기  (0) 2014.12.10
06. CUBRID 사용자, Database 파일, 백업  (0) 2014.11.11
05. CUBRID 기동과 정지  (0) 2014.10.20
04. CUBRID 시스템 카탈로그 & SQL  (0) 2014.10.05
04. CUBRID의 카탈로그와 테이블  (0) 2014.09.26
posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.12.10 23:17 2. DBMS이야기/04. CUBRID

안녕하세요~

벌써 2014년 마지막 달이네요, 추운 날씨에 감기 안 걸리셨죠?

이번 화에는 복구에 대해 알아보겠습니다


CUBRID 환경에서 수행된 백업 작업에 의해 생성된 백업 파일, 활성 로그 및 보관 로그를 이용하여 특정 시점의 데이터베이스로 복구하는 작업으로, 진행하려면 cubrid restoredb 유틸리티 또는 CUBRID 매니저를 사용합니다.


 cubrid  restoredb  [options]  database_name


어떠한 옵션도 지정되지 않은 경우 기본적으로 마지막 커밋 시점까지 데이터베이스가 복구됩니다.

만약, 마지막 커밋 시점까지 복구하기 위해 필요한 활성 로그/보관 로그 파일이 없다면 마지막 백업 시점까지만 부분 복구됩니다.


옵션

입력값

설명 

기본값 

 -l

복구레벨 

복구 레벨 지정 (0,1,2)

 -d

복구시점 

복구 시점 지정 형식) 일-월-년:시:분:초

예) 10-12-2014:17:00:00

또는 backuptime : 마지막 백업 시점

가장 최근 시점 

 -B

파일경로 

복구할 백업 볼륨이 존재하는 디렉토리나 장치명 지정 

초기 로그 볼륨 위치 

 -p

 

archive 로그가 없을 경우 무시하고 수행 

 

 -u

 

데이터베이스 위치 파일내에 지정된 경로로 데이터

베이스와 로그 볼륨을 복구 (dataase.txt) 

 

 -list

 

백업을 수행하지 않고 백업 볼륨 목록을 출력 

 


-p 옵션이 지정되지 않은 경우, 사용자에게 옵션을 선택하라는 요청 메시지는 다음과 같이 나옵니다.

***********************************************************
Log Archive /home/cubrid/test/log/demodb_lgar002
 is needed to continue normal execution.
   Type
   -  0 to quit.
   -  1 to continue without present archive. (Partial recovery)
   -  2 to continue after the archive is mounted/loaded.
   -  3 to continue after changing location/name of archive.
***********************************************************
  • 옵션 0: 복구 작업을 더 이상 진행하지 않을 경우, 0을 입력한다.
  • 옵션 1: 로그 파일 없이 부분 복구를 진행하려면, 1을 입력한다.
  • 옵션 2: 복구 작업을 진행하기 위해 관리자는 현재 장치에 보관 로그를 위치시킨 후 2를 입력한다.
  • 옵션 3: 복구 작업을 계속하기 위해 관리자는 로그 위치를 변경한 후 3을 입력한다.


다음은 -list 옵션을 이용해서 볼륨 목록을 출력했을 경우입니다.

*** BACKUP HEADER INFORMATION ***
Database Name: /local1/testing/demodb
 DB Creation Time: Mon Oct 1 17:27:40 2008
         Pagesize: 4096
Backup Level: 1 (INCREMENTAL LEVEL 1)
        Start_lsa: 513|3688
         Last_lsa: 513|3688
Backup Time: Mon Oct 1 17:32:50 2008
 Backup Unit Num: 0
Release: 8.1.0
     Disk Version: 8
Backup Pagesize: 4096
Zip Method: 0 (NONE)
        Zip Level: 0 (NONE)
Previous Backup level: 0 Time: Mon Oct 1 17:31:40 2008
(start_lsa was -1|-1)
Database Volume name: /local1/testing/demodb_vinf
     Volume Identifier: -5, Size: 308 bytes (1 pages)
Database Volume name: /local1/testing/demodb
     Volume Identifier: 0, Size: 2048000 bytes (500 pages)
Database Volume name: /local1/testing/demodb_lginf
     Volume Identifier: -4, Size: 165 bytes (1 pages)
Database Volume name: /local1/testing/demodb_bkvinf
     Volume Identifier: -3, Size: 132 bytes (1 pages)

-list 옵션을 이용하여 출력된 백업 정보를 확인하면, 백업 파일이 백업 수준 1로 생성되었고, 이전 백업 수준 0의 전체 백업이 수행된 시점을 확인할 수 있다. 따라서, 예시된 데이터베이스의 복구를 위해서는 백업 수준 0인 백업 파일과 백업 수준 1인 백업 파일이 준비되어야 합니다.



복구할 때에는 고려해야 할 사항들이 있습니다.

  • 백업 파일 준비
    • 백업 파일 및 로그 파일이 저장된 디렉터리를 확인해야 합니다.
    • 증분 백업으로 대상 데이터베이스가 백업된 경우, 각 백업 수준에 따른 백업 파일이 존재하는지를 확인합니다.
    • 백업이 수행된 CUBRID 데이터베이스의 버전과 복구가 이루어질 CUBRID 데이터베이스 버전이 동일한지를 확인한다.
  • 복구 방식 결정
    • 부분 복구할지, 전체 복구할지 결정합니다.
    • 증분 백업 파일을 이용한 복구인지를 확인합니다.
    • 사용 가능한 복구 도구 및 복구 장비를 준비합니다.
  • 복구 시점 판단
    • 데이터베이스 서버가 종료된 시점을 확인합니다.
    • 장애 발생 전에 이루어진 마지막 백업 시점을 확인합니다.
    • 장애 발생 전에 이루어진 마지막 커밋 시점을 확인합니다.

모두 준비되셨으면, 복구 시~작~!

따듯한 하루 되세요~^^


출처 : 큐브리드 메뉴얼                                              By. 진준호 (2014.12.10)

'2. DBMS이야기 > 04. CUBRID' 카테고리의 다른 글

08. CUBRID DB 체크하기  (0) 2014.12.28
07. CUBRID 복구하기  (0) 2014.12.10
06. CUBRID 사용자, Database 파일, 백업  (0) 2014.11.11
05. CUBRID 기동과 정지  (0) 2014.10.20
04. CUBRID 시스템 카탈로그 & SQL  (0) 2014.10.05
04. CUBRID의 카탈로그와 테이블  (0) 2014.09.26
posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.11.11 22:45 2. DBMS이야기/04. CUBRID

안녕하세요~ 

오늘은 농민의 날이네요~ 가래떡은 많이 받으셨나요?

이번 화에는 CUBRID 사용자, Databases 파일, 백업에 대해 알아볼게요~


CUBRID 데이터베이스 사용자로는 그룹과 사용자로 나뉩니다.

사용자에게 권한 A가 부여되면, 해당 사용자에게 속하는 모든 멤버에게도 권한 A도 동일하게 부여됩니다.

한 마디로, 사용자와 그에 속한 멤버를 그룹이라고 하고,

멤버가 없는 사용자를 사용자라고 합니다.


CUBRID에는 DBA와 PUBLIC이라는 사용자를 기본으로 제공해요.

- DBA는 모든 사용자의 멤버가 되며, 따라서 데이터베이스의 모든 객체에 접근할 수 있는 최고 권한 사용자예요

   DBA만 데이터베이스 사용자를 추가, 편집, 삭제할 수 있는 권한이 있어요

- DBA를 포함한 모든 사용자는 PUBLIC의 멤버가 되므로, 모든 데이터베이스 사용자는 PUBLIC에 부여된

   권한을 가져요

   PUBLIC에 권한 B를 추가하면, 모든 사용자가 권한 B가 부여됩니다.


Oracle의 Control File에 해당 하는 CUBRID의 데이터베이스의 위치 정보는 databases.txt 파일에 저장합니다.

이러한 데이터베이스 위치 정보 파일은 데이터베이스의 생성, 이름 변경, 삭제 및 복사에 관한 유틸리티를

수행하거나 각 데이터베이스를 구동할 때에 사용되며, 

기본으로는 설치 디렉터리의 databases 디렉터리에 위치하고,CUBRID_DATABASES 환경 변수로 디렉터리 위치를 지정할 수 있어요~


데이터베이스 위치 정보 파일의 라인별 형식은 구문에 정의된 바와 같으며, 데이터베이스 이름, 데이터베이스 경로, 서버 호스트 및 로그 파일의 경로에 관한 정보를 저장합니다.


 #db-name vol-path db-host log-path lob-base-path

demodb C:\CUBRID\DATABA~1\demodb localhost C:\CUBRID\DATABA~1\demodb  file:C:\CUBRID\databases\demodb/lob


CUBRID_DATABASES=C:\CUBRID\DATABA~1

만약 CUBRID_DATABASES 환경 변수에서 유효하지 않은 디렉터리 경로가 설정되는 경우에는 에러가 발생하며, 설정된 디렉터리 경로는 유효하나 데이터베이스 위치 정보 파일이 존재하지 않는 경우에는 새로운 위치 정보 파일을 생성한다. 또한, CUBRID_DATABASES 환경 변수가 아예 설정되지 않은 경우에는 현재 작업 디렉터리에서 위치 정보 파일을 검색합니다~



데이터베이스 백업

데이터베이스 백업은 CUBRID 데이터베이스 볼륨, 제어 파일, 로그 파일을 저장하는 작업으로 cubrid backupdb 유틸리티 또는 CUBRID 매니저를 이용하여 수행되요

DBA 는 저장 매체의 오류 또는 파일 오류 등의 장애에 대비하여 데이터베이스를 정상적으로 복구할 수 있도록 주기적으로 데이터베이스를 백업해야 하는데,

복구 환경은 백업 환경과 동일한 운영체제 및 동일한 버전의 CUBRID가 설치된 환경이어야 합니다

이러한 이유로 데이터베이스를 새로운 버전으로 마이그레이션한 후에는 즉시 새로운 버전의 환경에서 백업을 수행해야 해요


cubrid backupdb 유틸리티는 모든 데이터베이스 페이지들, 제어 파일들, 데이터베이스를 백업 시와 일치된 상태로 복구하기 위해 필요한 로그 레코드들을 복사합니다


온라인 백업

온라인 백업(또는 핫 백업)은 운영 중인 데이터베이스에 대해 백업을 수행하는 방식으로, 특정 시점의 데이터베이스 이미지의 스냅샷을 제공합니다.

운영 중인 데이터베이스를 대상으로 백업을 수행하기 때문에 커밋되지 않은 데이터가 저장될 우려가 있고, 다른 데이터베이스 운영에도 영향을 줄 수 있습니다.

온라인 백업을 하려면 cubrid backupdb -C 명령어를 사용해요


오프라인 백업

오프라인 백업(또는 콜드 백업)은 정지 상태인 데이터베이스에 대해 백업을 수행하는 방식으로 특정 시점의 데이터베이스 이미지의 스냅샷을 제공합니다

오프라인 백업을 하려면 cubrid backupdb -S 명령어를 사용해요


증분 백업

증분 백업(incremental backup)은 전체 백업에 종속적으로 수행되는 백업으로 이전에 수행된 백업 이후의 변경된 사항만을 선택적으로 백업하는 방식으로, 전체 백업보다 백업 볼륨이 적고, 백업 소요 시간이 짧다는 장점이 있습니다.

CUBRID는 0, 1, 2의 백업 수준을 제공하며, 낮은 백업 수준으로 백업을 수행한 이후에만 순차적으로 다음 수준의 백업을 수행할 수 있어요

증분 백업을 하려면 cubrid backupdb -l LEVEL 명령어를 사용해요


전체 백업(백업 수준 0): 백업 수준 0은 모든 데이터베이스 페이지를 포함하는 전체 백업이며,

데이터베이스에 최초 시도되는 백업 수준은 당연히 수준 0이 됩니다. 기존에 받은 정보가 없으니까요~

DBA 는 복구 상황을 대비하여 정기적으로 전체 백업을 수행해야 해요


1차 증분 백업(백업 수준 1): 백업 수준 1은 수준 0의 전체 백업 이후의 변경 사항만 저장하는 증분 백업으로서, 이를 "1차 증분 백업"이라 합니다


압축 백업 모드

압축 백업(compress backup)은 데이터베이스를 압축하여 백업을 수행하기 때문에 백업 볼륨의 크기가 줄어들어 디스크 I/O 비용을 감소시킬 수 있고, 디스크 공간을 절약할 수 있는 장점이 있어요

압축 백업을 하려면 cubrid backupdb -z | --compress 명령어를 사용하면 됩니다


병렬 백업 모드

병렬 백업 또는 다중 백업(multi-thread backup)은 지정된 스레드 개수만큼 동시 백업을 수행하기 때문에 백업 시간을 크게 단축시켜 줍니다. 기본적으로 시스템의 CPU 수만큼 스레드를 부여하게 되요

병렬 백업을 하려면 cubrid backupdb -t | --thread-count 명령어를 사용하면 됩니다


다음 시간에는 복구에 대해 알아볼게요~



출처: 큐브리드 메뉴얼                                                      (By. 진준호 2014.11.11)

'2. DBMS이야기 > 04. CUBRID' 카테고리의 다른 글

08. CUBRID DB 체크하기  (0) 2014.12.28
07. CUBRID 복구하기  (0) 2014.12.10
06. CUBRID 사용자, Database 파일, 백업  (0) 2014.11.11
05. CUBRID 기동과 정지  (0) 2014.10.20
04. CUBRID 시스템 카탈로그 & SQL  (0) 2014.10.05
04. CUBRID의 카탈로그와 테이블  (0) 2014.09.26
posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.10.20 21:00 2. DBMS이야기/04. CUBRID

안녕하세요~

오늘은 CUBRID 기동/정지에 대해 알아볼게요~


CUBRID 서비스 기

– CUBRID 운영에 필요한 기본 프로세스 기동

– CUBRID 사용자 계정으로 로그인 필요

– broker, manager, heartbeat server 기동

– database server 는 별도구동, 또는 설정을 통하여 서비스 구동시 같이 기동 가능

- --help 옵션을 이용하여 사용할 수 있는 명령어 확인 가능




서비스 종료

– CUBRID 관련 모든 프로세스 종료

– CUBRID 사용자 계정으로 로그인 필요

– broker, manager server 및 database server 종료


데이터베이스 기동

– 사용하는 데이터베이스별 기동


데이터베이스 종료

- 사용하는 데이터베이스별 종료


기동/정지에 대한 로그는 

설치 경로 (위에서는 C:\CUBRID)/log/cubrid_utility.log 를 통해 알 수 있어요~




출처 : CUBRID 교육 메뉴얼                                                         (by. 진준호 2014.10.22)




posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.10.05 22:17 2. DBMS이야기/04. CUBRID

오늘은 시스템 카탈로그 (딕셔너리 뷰)와 SQL에 대해 진행하겠습니다.


 스키마 정보를 보관한 시스템 테이블

 질의를 통한 스키마 정보 조회


 테이블 정보 : db_class

  - 주요 필드 : class_name, owner_name

 컬럼 정보 : db_attribute

  - 주요 필드 : class_name, attr_name, attr_type

 기타

db_vclass  (oracle의 view 개념)

db_index

db_index_key

db_trig       (oracle의 trigger)

db_partition

db_stored_procedure   (oracle의 dba_source)

db_auth     (oracle의 dba_tab_privs)


명칭이 약간씩 다릅니다.


다음은 SQL 입니다.  CURBID는 SQL-2 (SQL92) 표준을 사용하며,

예약어 사용시 “” 로 감싸주어야 합니다.


조건없는 수정 / 삭제 제한할 수 있는데, 실수를 많이 하는

1. where 절 없는 update, delete 수행 제한할 수 있으며,

2. 서비스 운영중 관리자 혹은 응용 실수로 인한 전체 데이터 수정, 삭제 제한을

   통한 서비스 안정화가 가능합니다.

반영하는 방법은 CUBRID 설정화일(cubrid.conf) 상의 설정값 조정합니다

  -> block_nowhere_statement=yes

이 후, CUBRID broker 재구동을 통한 설정 반영이 됩니다.


* 검색

   sub-query 지원

   where (a,b) in (select …)도 사용가능합니다.

* 연산자 (오라클과 동일)

   =, <>, >=, <=

   +, -, *, /, ||

* 집합 연산자

   UNION, UNION ALL,

   DIFFERENCE(오라클의 MINUS), INTERSECTION (오라클의 INTERSECT)

   양쪽 select 절 필드 타입이 동일해야 합니다. (casting 필요)

     - char union varchar  => varchar

     - int union numeric => numeric

* outer join

   left outer, right outer join  (오라클과 동일)

   select … from class1 a left outer join class2 b on a.name = b.name

   select … from class1 a, class2 b where a.name = b.name(+)

* group by

    select a, to_char(d, ‘YYYY/MM/DD”), count(*) from my_table

    group by a, to_char(d, ‘YYYY/MM/DD”)

* rownum

   검색 결과 레코드에 대한 일련 번호 부여

   order by, group by 실행 전에 rownum 부여

     select rownum, id from emp where rownum between 11 and 20

     select id from emp where rownum between 11 and 20 group by id

     select id from emp where inst_num() between 11 and 20 group by id

     select rownum, id from emp where rownum between 11 and 20 order by id

     select orderby_num(), id from emp order by id for order by num() between 11 and 20


다음 시간에는 실습한 테스트 결과를 공유할게요~ 좋은 밤 되세요~!

출처 : CUBRID 교육 메뉴얼                                                (by. 진준호 2014.10.05)


posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.09.26 00:09 2. DBMS이야기/04. CUBRID

안녕하세요~ 오늘은 CUBRID의 시스템 카탈로그에 대해 알아볼게요~


시스템 카탈로그란?

 스키마 정보를 보관한 시스템 테이블

 질의를 통한 스키마 정보 조회


 테이블 정보 (오라클의 DBA_TABLES)

_db_class

주요 필드 : class_name, owner_name

 컬럼 정보 (오라클의 DBA_TAB_COLUMNS)

_db_attribute

주요 필드 : class_name, attr_name, attr_type

 기타

_db_vclass (오라클의 DBA_VIEWS)

_db_index (오라클과 동일합니다)

_db_index_key (DBA_IND_COLUMNS)

_db_trig (오라클의 DBA_TRIGGERS)

_db_partition (오라클의 DBA_TAB_PARTITIONS)

_db_stored_procedure (오라클의 DBA_SOURCE)

_db_auth  (오라클의 DBA_TAB_PRIVS)


다음은 테이블에 대해 알아볼게요

 create table 명령으로 생성

 테이블 복제: 테이블 생성후 insert … select 수행 (Insert Table As Select...)

 storage 관련 option 지원 않함.


예) create table dept (

dept_id int not null unique,

dept_name varchar(100) default ‘’,

seq_no int auto_increment not null,

cre_date date default systime ;


alter table 명령으로 테이블 변경

 필드 타입 변경

 새 테이블 생성을 통한 변경 : 필드 순서 유지

 새 필드 생성을 통한 변경 : 필드 순서 변경됨


create table <새테이블> (<새 타입을 가지는 필드를 포함한 필드 정보들>)

insert into <새테이블> select … from <이전테이블> // 필요한 경우 cast() 등 사용

drop table <이전테이블>

rename table <테이블이름> as <새 테이블이름>

CUBRID는 as / ORACLE은 to 를 쓰는게 다릅니다


컬럼을 추가/삭제/변경은 다음과 같이 합니다

alter table <테이블이름> add atrribute <필드명> <필드타입> [속성]

column 대신에 attribute란 용어를 사용해요

alter table <테이블이름> rename attribute <필드명> as <새 필드명>


alter table <테이블이름> change <필드명> default <새 값>

modify 대신에 change라는 용어를 사용해요


alter table <테이블이름> drop attribute <필드명>


다음 시간에는 SQL에 대해 알아볼게요~


출처 : 큐브리드 교육메뉴얼                                 (by 진준호 2014.09.26)

posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.09.23 15:08 2. DBMS이야기/04. CUBRID

 

CUBRID 8.4.1 vs MySQL 5.5.27 vs ORACLE 10g 에 대한 SQL 관련 정보들을 비교한 자료 입니다.

 

 

[DBMS 데이터 타입 비교]

 

구분

CUBRID

MySQL

Oracle

수치형

-

-

BINARY_FLOAT

BIGINT

BIGINT

-

NUMERIC(20)

DECIMAL

DECIMAL

DECIMAL

DOUBLE

DOUBLE

BINARY_DOUBLE

DOUBLE PRECISION

DOUBLE PRECISION

-

FLOAT

FLOAT

FLOAT

INT

MEDIUMINT

-

INT, INTEGER

SMALLINT

INTEGER

INTEGER

-

MONETARY

-

-

NUMERIC(p, s)

-

NUMBER(p, s)

NUMERIC(38, 0)

-

NUMBER(p,0)

NUMERIC(38, 15)

-

NUMBER

NUMERIC(M,D)

FLOAT(M,D) or REAL(M,D)

-

REAL

-

-

SHORT

-

-

SMALLINT

BIT(1) (>MySQL-5.0)

-

BOOL, BOOLEAN

TINYINT

SMALLINT[(M)]

비트열

BIT VARYING (1073741823)

LONGBLOB

BLOB

LONG RAW

BIT VARYING(16277215)

MEDIUMBLOB

 

BIT VARYING(255)

TINYBLOB

-

BIT VARYING(65535)

BLOB

-

BIT(n)

BIT( > 1) (>MySQL-5.0)

-

BITVARYING(n)

BINARY(M)

RAW(n)

VARBINARY(M)

날짜/시간

DATE

DATE

DATE

: MM/DD/YYYY

: YYYY-MM-DD

: YY/MM/DD

DATETIME

DATETIME

TIMESTAMP

: YYYY-MM-DD HH:MI:SS.FFF

: YYYY-MM-DD HH:MI:SS

TIMESTAMP WITH LOCAL TIMESTAMP WITH TIME ZONE

 

 

: YY/MM/DD HH:MI:SS.FFFF

TIME

TIME

-

: HH:MI:SS

: HH:MI:SS

TIMESTAMP

TIMESTAMP

TIMESTAMP

: YYYY-MM-DD HH:MI:SS

: YYYY-MM-DD HH:MI:SS

: YY/MM/DD HH:MI:SS.FFFFFFFFF

-

YEAR[(2|4)]

-

: YYYY

문자열

CHAR

CHAR

CHAR

NCHAR VARYING

-

-

NCHAR

-

NCHAR

VARCHAR(16277215)

MEDIUMTEXT

-

VARCHAR(255)

TINYTEXT

INTERVAL DAY TO SECOND

VARCHAR(255)

ENUM('value1','value2',...)

INTERVAL YEAR TO MONTH

VARCHAR(64)

-

ROWID

VARCHAR(64)

-

UROWID

VARCHAR(65535)

TEXT

-

VARCHAR

VARCHAR

NVARCHAR2

VARCHAR2

BLOB

BLOB

BLOB

BLOB

/CLOB

CLOB

-

CLOB

집합형

SET(VARCHAR(255))

SET('value1','value2',...)

-

MULTISET

-

-

LIST

-

-

SEQUENCE

-

-

STRING

LONGTEXT

CLOB

-

-

LONG

-

-

NCLOB

 

 

 

 

[MySQL to CUBRID 마이그레이션 시 권장하는 데이터 타입 맵핑 테이블]

 

 

Date Types in MySQL

Date Types in CUBRID

BIT(1) (>MySQL-5.0)

SMALLINT

BIT( > 1) (>MySQL-5.0)

BIT(n)

TINYINT

SMALLINT

BOOL, BOOLEAN

SMALLINT

SMALLINT[(M)]

SMALLINT

INT

MEDIUMINT[(M)]

INT

INT, INTEGER[(M)]

INT

BIGINT

BIGINT[(M)]

BIGINT

NUMERIC(20)

FLOAT[(M,D)]

FLOAT

DOUBLE[(M,B)]

DOUBLE

DECIMAL[(M[,D])]

DOUBLE

DATE

DATE

DATETIME

DATETIME

TIMESTAMP[(M)]

TIMESTAMP

TIME

TIME

YEAR[(2|4)]

CHAR(4)

CHAR(M)

CHAR(n)

VARCHAR(M) [BINARY]

VARCHAR(n)

BINARY(M)

BIT VARYING(n)

VARBINARY(M)

BIT VARYING(n)

TINYBLOB

BIT VARYING(255)

TINYTEXT

VARCHAR(255)

BLOB

BIT VARYING(65535)

TEXT

VARCHAR(65535)

MEDIUMBLOB

BIT VARYING(16277215)

MEDIUMTEXT

VARCHAR(16277215)

LONGBLOB

BIT VARYING (1073741823)

LONGTEXT

STRING

ENUM('value1','value2',...)

VARCHAR(255)

SET('value1','value2',...)

SET(VARCHAR(255))

FLOAT(M,D) or REAL(M,D) or DOUBLE PRECISION(M,D)

NUMERIC(M,D)

 

 

 

[ORACLE to CUBRID 마이그레이션 시 권장하는 데이터 타입 맵핑 테이블]

 

Date Types in Oracle

Date Types in CUBRID

BINARY_DOUBLE

DOUBLE

BINARY_FLOAT

FLOAT

BLOB

BIT VARYING (1073741823)

CHAR(n)

CHAR(n)

CLOB

STRING

DATE

DATE

DECIMAL(p, s)

NUMERIC(p, s)

FLOAT

FLOAT

INTERVAL DAY TO SECOND

VARCHAR(255)

INTERVAL YEAR TO MONTH

VARCHAR(255)

LONG

STRING

LONG RAW

BIT VARYING (1073741823)

NCHAR(n)

CHAR(n)

NCLOB

STRING

NUMBER(p, s)

NUMERIC(p, s)

NUMBER

NUMERIC(38, 15)

NUMBER(p,0)

NUMERIC(38, 0)

NVARCHAR2(n)

VARCHAR(n)

RAW(n)

BIT VARYING(n)

ROWID

VARCHAR(64)

TIMESTAMP

DATETIME

TIMESTAMP WITH LOCAL TIME ZONE

DATETIME

TIMESTAMP WITH TIME ZONE

DATETIME

UROWID

VARCHAR(64)

VARCHAR2(n)

VARCHAR(n)

 

 

출처:http://www.cubrid.com

 

Posted by 김득은

 

posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.09.20 23:30 2. DBMS이야기/04. CUBRID

안녕하세요~


오늘은 저장구조 및 데이터 타입을 알아볼게요~


오라클에서 블럭 (최소 단위)에 해당 하는 Page는 2KB, 4KB(기본), 8KB, 16KB, 32KB로 구성할 수 있고,

구성후에는 변경이 불가하니 신중하게 구상해야 해요, 데이터베이스 내에는 동일한 크기를 가집니다.


오라클에서 테이블스페이스 정도에 해당하는 Volume에는 Generic (SYSTEM 정도), DATA, INDEX, TEMP 들로 구성되어 있어요


오라클의 Redo Log 파일에 해당 하는 Active Log File이 있고, offline된 Active Log 파일은 Archive Log File이 됩니다.



다음은 데이터 타입의 특징을 알아볼게요


1. 테이블

   개수 무제한

   이름에 한글, 영문자, 숫자, _, #, % 사용 가능, 첫글자는 문자(영문, 한글)

   이름 최대 길이는 255자, 대소문자 구분 없음 (오라클은 30자예요~)


2. 컬럼

   테이블 당 최대 6,400 개 생성 가능

   이름에 한글, 영문자, 숫자, _, #, % 사용 가능, 첫글자는 문자(영문, 한글)

   이름 최대 길이는 255자, 대소문자 구분 없음 (오라클은 30자예요~)


3. index

   테이블 당 최대 6,400 개 생성 가능

   이름지정 가능

   제약조건


4. NULL: NULL 값을 허용

   NOT NULL : NULL 값을 허용하지 않음

   unique : 중복된 값 허용하지 않음, default 와 같이 선언 불가

   primary key / foreign key


5. 특징

   예약어 사용시 ""로 감싸주어야 함. 예) "date"

   데이터베이스 이름 최대 길이 : 128자, 대소문자 구분

   db_root = 오라클의 dual

   논리형

      - boolean: 지원 않함


6. 문자형

   byte단위 처리

   입력되는 codeset 유지

     - 내부적으로 codeset 지정하지 않음

   char: 고정길이형

     - 다른 컬럼과 같이 저장

     - 길이가 일정하거나 인덱스로 사용될 때

     - select시 rtrim() 필요

    varchar: 가변길이형

     - 최대1G(string) (오라클은 최대 4000 Byte)

     - 오라클의 LONG, CLOB 처럼 쓰이네요

     - 다른 컬럼과 다른 곳에 저장

     - 데이터길이와 저장된 위치에 대한 포인터 저장에 대한 overhead

     - update시 길이 변하는 경우 overhead


7. 숫자형

   smallint: 2bytes, -32768 ~ 32767

   integer: 4bytes, -2147483648 ~ 2147483647

   bigint: 8bytes, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

   numeric: numeric(10), numeric(10,2), numeric(38)

     - 오라클의 number와 같은 기능입니다

   float:-10e38 ~ 10e38, 유효자리수 초과하는 수치 정밀도 보장 불가

   double:-10e308 ~ 10e308, float 와 마찬가지로 유효자리수 문제

   Binary data

   GLO: CUBRIDOID in JAVA, etc

   BIT Varying : FileInputStream in JAVA

     - 오라클의 BLOB 기능이네요


8. 날자/시간형

   '' 값 허용 않함, NULL 또는 표현 가능한 값 입력 허용

   date:날자만 저장, 기본형 mm/dd/yyyy

   time:시간만 저장, 기본형 hh:mi:ss

   datetime: 1/100초, 'mm/dd[/yyyy] hh:mi[:ss.ff]' 또는 '[yyyy-]mm-dd hh:mi[:ss.ff]'

   timestamp:1970/1/1 09:00:00 이후 경과한 초, 최대 2038/1/19 03:14:07

   to_char() 등 사용시 인덱스 사용 불가, 상수 사용시 기본형 사용 권장

      예) where reg_date = ‘12/25/2009’ and reg_time = '18:32:50'


9. NULL is not '' (empty string)

 string_field = ''

 string_field is null

 string_field is not null

 string_field = null (결과 예상 못함)


 엄격한 데이터 형 비교

  - where 1 = '1' : 에러 (오라클에서는 내부적으로 형변환을 해주었지만, CUBRID는 쓰는 사람이 챙겨야해요~)

  - select 1 + '1' : 에러


다음 시간에는 시스템 카타로그 (오라클의 딕셔너리뷰)에 대해 알아볼게요~


출처 : 큐브리드 교육메뉴얼                                              (by 진준호 2014.09.20)

posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.08.31 23:39 2. DBMS이야기/04. CUBRID

지난 편에 이어서, 프로세스에 대해 알아볼게요


CUBRID 설치 후 서비스를 위한 구동이 완료되면 아래의 프로세스를 확인 할 수 있어요

 linux)

 – “ps –ef | grep cub_” 명령어를 이용하여 구동 process 확인

   (oracle이 ora_라면 cubrid는 cub_)


• Master Process

– 프로세스 검색 명령어에 의해 “cub_master” 로 확인

– 큐브리드 서비스를 구동하면 하나의 cub_master 프로세스가 구동 (oracle의 pmon 역할)

– Client와 DB Server프로세스 사이의 연결을 담당하는 프로세스

• Database Server Process

– 프로세스 검색 명령어에 의해 “cub_server <db_name>”의 형태로 확인

– 데이터베이스가 구동되어 있을 때 검색되는 프로세스

– 구동되는 데이터베이스의 수 만큼 확인

– 데이터베이스 파일 및 로그 파일 등에 직접 접근하여 사용자 요청을 처리하는 프로세스


데이터베이스 서버 외에 CUBRID에는 Broker라는 외부 응용 프로그램 간의 통신을 중계 역할을 하는

전용 미들웨어가 있어서, 커넥션 풀링, 모니터링, 로그 추척 및 분석 기능 제공해요


• Broker Process

– 프로세스 검색 명령어에 의해 “cub_broker”의 형태로 확인이다.

– Broker가 구동되어 있을 때 검색되는 프로세스이다.

– cubrid_broker.conf에 등록되어 Service 상태가 ON인 Broker의 개수 만큼 확인된다.

– 응용 Client(JDBC, ODBC, PHP 등)와 cub_cas 프로세스 사이의 연결을 중계하는 기능을 수행한다.

– cub_cas 프로세스의 상태를 모니터링 및 관리한다. 


oracle을 EM을 이용하여, GUI에서 제어하듯이, CUBRID Manager를 통하여, GUI 화면에서 제어할 수 있어요


 Manager Process (CUBRID Manager 기능)

– Cub_auto Process

  • 프로세스 검색 명령어에 의해 “cub_auto”의 형태로 확인

  • CUBRID Manager Client 사용자의 인증 처리를 및 주기적인 자동화 작업, 진단 정보 수집하는 프로세스

  • cub_auto는 cm_port를 사용하며 cm_port는 8001번이 기본 설정이다.(사용자 환경에 따라 변경 가능)

– cub_js Process

  • 프로세스 검색 명령어에 의해 “cub_js”의 형태로 확인

  • CUBRID Manager Client에서 전송되는 사용자 요구를 수행

  • 8002번 port를 사용하며 cm_port보다 1만큼 큰 값을 사용하도록 지정


전체적으로는 아래와 같은 구조가 됩니다


출처 : 큐브리드 교육메뉴얼

                                                                                                          (by. 진준호 2014.08.31)

posted by DB,MW,OS OSSW(Open Source System SoftWare
2014.08.30 23:00 2. DBMS이야기/04. CUBRID


안녕하세요~ 오늘은 큐브리드 사에서 제공하는 CUBRID DB에 대해 알아볼까요~?


CURBID는 국산 오픈소스 라이선스 DB로 RDBMS (관계형 모델을 기반으로 하는 데이터베이스 관리 시스템)입니다.

현재는 NHN의 Ndrive 서비스를 CUBRID DB로 사용한다고 합니다.



CUBRID의 주요 특징은 다음과 같습니다


  • 트랜잭션 ACID 지원
  • HA/복제 환경에서 트랜잭션 일치성 보장
  • 고가용성 기능 지원(High Availability)
  • 샤딩 기능 지원(Sharding)
  • 테이블 분할 기능(Partitioning)
  • 인덱스(Multi-Range/Covered/Reverse/Multi-Index) 지원
  • 온라인/오프라인/증분/압축/병렬 백업
  • 계층형 쿼리(Hierarchical Query)
  • 클릭 카운터
  • 쿼리 플랜 캐시, 쿼리 결과 캐시
  • View, Trigger 지원
  • Java Stored Procedure 지원


다음으로는 세부 사항을 알아볼게요~

먼저, 지원하는 운영체제는 다음과 같습니다
Operating System
  • UNIX
  • z/OS
  • BSD
  • Symbian
  • AmigaOS
  • Windows
  • Mac OS X
  • Linux

클라우드 시스템에서 많이 쓰이겠지만, 일부 시스템 (UNIX, BSD 등)에서는 사용이 불가능하네요


다음으로 파티셔닝이나, 인덱스에 대한 사항으로는

Partitioning
  • Composite (Range + Hash)
  • Hash
  • List
  • Range
Indexes
  • Full-text
  • Hash
  • R-/R+ Tree
  • Reverse

해쉬나 컴포지트 파티셔닝은 지원하지 않아요



다음은 CUBRID 구조인데, 익숙한 그림이네요



버퍼 캐쉬, 로그 버퍼, 서버 프로세스와 백그라운드 프로세스 등은 오라클에서도 친숙한 그림이죠?



다음 시간에는 CUBRID의 프로세스에 대해 알아보겠습니다.




출처 : CUBRID 공식 사이트

http://www.cubrid.com/zbxe/product_function

                                                                                                              (by. 진준호 2014.08.30)

posted by DB,MW,OS OSSW(Open Source System SoftWare
prev 1 next