DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

Creating database

DBMS 2
Sybase 가이드
DBA를 위한 가이드
Creating database
작성자
admin
작성일
2021-02-19 13:50
조회
1146

Creating database

database review

database review


step 1 : select the device type
  • Catalog Store, Transaction log, Message log등은 파일 시스템만을 지원 하지만IQ Main Store와IQ Temporary Store는 raw device와 파일 시스템 모두를 지원하므로 디바이스 종류를 결정해 줘야합니다.
  • Raw Device
  • 장점: O/S가 아닌 SYBASE IQ에 의해 관리되므로 Unix에 부담이 적으며 성능 및 안정성면에서뛰어납니다
  • 단점: 파일 시스템에 비해 관리의 어려움이 있습니다.
File system
  • 장점: raw device에 비해 관리의 편이성이 있습니다.
  • 단점: 이중버퍼링시스템을 사용하는 등 O/S에 부담이 증가됩니다.
O/S에 대한 부담 및 추가 메모리를 고려할때 운영환경에서는 raw device를 권장합니다.
step 2 : estimate the db size
  • IQ Main Store : IQ Main Store의 영역은 ETL중의 Staging 영역을 어느 정도 할 것인가에 많은 변수가 있으나 일반적으로 원시 데이터의 70% ~ 100%를 적용합니다.
  • IQ Temporary Store : 질의의 종류와 질의를 동시에 수행하는 사용자수 등에 따라 크기가 좌우될 수있으나 일반적으로 IQ Main Store의 10% ~ 20%를 적용하여 시작하고 추후사용량을 모니터하여 재반영 해줍니다.
  • Catalog Store, Transaction Log : 이 영역의 크기는 SYBASE IQ에 의해 자동으로 할당되며 사용량에 따라 자동으로 확장됩니다.
step 3 : create the database
  • dbisql과 같은 클라이언트 툴을 사용하여 Utility db나 혹은 asiqdemodb 에 접속하여 새로운 데이터베이스를 생성할 수 있습니다.
  • 새로운 데이터베이스를 생성 한다는 것은 다음과 같은 파일을 만드는 것과 같습니다.
  • IQ Main Store : dbname.iq
  • Catalog Store : dbname.db
  • Transaction Log : dbname.log
  • IQ Temporary Store : dbname.iqtmp
  • IQ Message Log : dbname.iqmsg

create the database


syntax
CREATE DATABASE db-name
[ [ TRANSACTION ] { LOG ON [ log-file-name]
[MIRROR mirror-file-name] } ]
[ CASE {RESPECT| IGNORE} ]
[ PAGE SIZE page-size]
[ COLLATION collation-label]
[ BLANK PADDING ON ]
[ JAVA { ON | OFF} ]
[ JCONNECT { ON| OFF} ]
[ IQ PATH iq-file-name]
[ IQ SIZE iq-file-size]
[ IQ PAGE SIZE iq-page-size]
[ BLOCK SIZE block-size]
[ IQ RESERVE sizeMB]
[ MESSAGE PATH message-file-name]
[ TEMPORARY PATH temp-file-name]
[ TEMPORARY SIZE temp-db-size]
[ TEMPORARY RESERVE sizeMB]

syntax-option
  • db-name : 데이터베이스의 이름과 위치를 정의하며 Catalog Store가 됩니다.
  • transaction log : dbname.db에 대한 transact log가 되며 이 절을 생략하거나 log-file-name을 생략하면 cdbname.log가 dbname.db와 같은 디렉토리에 생성됩니다. 그렇지만 완벽한 복구를 위해dbname.db와 다른 디렉토리에 만드는 것을 권장합니다.
  • mirror : transaction log에 대한 복사본을 저장하는 장소로 디폴트는 미러링을 하지 않기 때문에 미러링하는 것을 권장합니다.
  • case : 데이터베이스의 데이터에 대한 대소문자 구별 여부를 정의합니다. 디폴트로는 대소문자를 구별하는 respect 이며 디폴트를 권장합니다.
  • page size : Catalog Store 영역의page 크기를 정의하며 디폴트는 4K이고 디폴트를 권장합니다.
  • collation : 언어와 문자집합을 정의하며 한국어를 정상적으로 사용하기 위해서는 반드시EUC_KOREA로정의해야합니다.
  • blank padding : 문자 데이터맨 뒤에 있는blank를 무시하고 문자를 비교할지 그 여부를 정의합니다. 디폴트는 blank를 무시하고 문자를 비교하는 on이며 디폴트를 권장합니다. 12.6 부터 off 값을 지원하지않기 때문에 off로 설정 한다고 해도 무시됩니다.
  • IQ path : IQ Main Store의 첫번째 dbspace 인 IQ_SYSTEM_MAIN의 물리적 이름입니다.
  • IQ size : IQ Main Store의 첫번째 dbspace 인 IQ_SYSTEM_MAIN의 크기이며raw device인 경우는생략합니다.
  • IQ page size : IQ Main Store의 Page 크기를 나타내며 디폴트는 128K 이고 가장 큰테이블의 열수가10억~40억이면128K, 그이하면64K, 이상이면 256K를 일반적으로 사용합니다.
  • block size : I/O의 단위 이며IQ Page size/16이디폴트이며 권장값입니다.
  • message path : SYBASE IQ의 상태 정보와 같은 메시지가 저장되는 파일의 위치와 이름을 정의합니다.
  • temporary path : IQ Temporary Store의 첫번째 dbspace인 IQ_SYSTEM_TEMP의 물리적 이름입니다.
  • temporary size : IQ Main Store의 첫번째dbspace인 IQ_SYSTEM_TEMP의 크기이며raw device인경우는 생략합니다.
example
IQ Main Store와IQ Temporary Store가Unix file system 인 SIZE 4096
COLLATION'EUC_KOREA'
BLANK PADDINGon
IQ PATH'/user/SYBASE_IQ/IQDEV/mydb.iq'
IQ SIZE1000
IQ PAGE SIZE131072
BLOCK SIZE8192
MESSAGE PATH'/user/SYBASE_IQ/IQDEV/mydb.iqmsg'
TEMPORARY PATH'/user/SYBASE_IQ/IQDEV/mydb.iqtmp'
TEMPORARY SIZE500;

IQ Main Store와IQ Temporary Store가raw device 인경우
% vi cre_db.sql

CREATE DATABASE'/user/SYBASE_IQ/IQDEV/mydb.db'
TRANSACTION LOG ON'/user/SYBASE_IQ/IQDEV/mydb.log'
CASErespect
PAGE SIZE 4096
COLLATION'EUC_KOREA'
BLANK PADDINGon
IQ PATH'/dev/rdsk/mydb_iq'
IQ PAGE SIZE131072
BLOCK SIZE8192
MESSAGE PATH'/user/SYBASE_IQ/IQDEV/mydb.iqmsg'
TEMPORARY PATH'/dev/rdsk/mydb_iqtmp';

utility_db를 이용하여 생성하기
아래처럼 utility_db를 이용하여 사용자 db를 새롭게 생성 할수 있습니다.
  • utility_db 기동
    $ASDIR/bin/start_asiq-n MySVR-x tcpip{port=2638}
  • utility_db를 통해 사용자 db 생성? % dbisqlc-c "uid=dba;pwd=SQL;eng=MySVR;dbn=utility_db" -q cre_db.sql
    // cre_db.sql이라는 파일에 create database 명령어가 편집되어 있는 경우
    // utility_db의 user_id와 password는 $ASDIR/bin/util_db.ini가 저장하고 있음
  • utility_db 종료
    % dbstop-c "uid=dba;pwd=SQL;eng=MySVR;dbn=utility_db"
demo DB를 이용하여 생성하기
아래처럼 asiqdemodb를 이용하여 사용자 db를 새롭게 생성 할수 있습니다.
  • asiqdemodb 기동
    $ASDIR/bin/start_asiq@$ASDIR/demo/asiqdemo.cfg$ASDIR/demo/asiqdemo.db
  • asiqdemodb를 통해 사용자 db 생성
    % dbisqlc-c "uid=dba;pwd=SQL;eng=asiqdemo;dbn=asiqdemo" -q cre_db.sql
    // create_db.sql이라는파일에create database 명령어가편집되어있는경우
  • asiqdemodb 종료
    % dbstop-c "uid=dba;pwd=SQL;eng=asiqdemo;dbn=asiqdemo"
configfile

사용자가 만든 데이터베이스를 기동할때 필요한 파라미터로는 아래와 같은 내용이 있으며 cfg파일에기술하거나 기동하는 명령어에 직접 기술할 수 있습니다. 파라미터를 기술 하지 않으면 start_asiq 프로그램과 $ASDIR/scripts/default.cfg 파일에 설정된 값을 기본값으로 하여 기동합니다.

-n : 서버명(IQ 엔진이름)을 기술하며 하이픈으로 연결된 이름이나 reserved word는 사용할 수 없습니다. 또한 이 이름은 LAN상에서 유일해야 합니다.
-cl: Catalog Store를 위한 최소 캐시 크기이며 최소16MB를 권장합니다
-ch: Catalog Store를 위한 최대 캐시 크기를 기술합니다.
-x : SYBASE IQ 서버와 통신 가능한 프로토콜과 IP 주소, 포트번호를 기술합니다. 모든 플랫폼의tcp/ip와 WinNT의ipx, NetBios, Named Pipe를 지원합니다.
-iqmc: IQ Main Store를 위한 캐시 크기를 기술합니다. 같은 역할을 담당하는 데이터베이스 옵션중Main_Cache_Memory_MB 의 설정값 보다 우선 적용됩니다.
-iqtc: IQ Temporary Store를 위한 캐시크기를 기술합니다. 같은 역할을 담당하는 데이터베이스 옵션중 Temp_Cache_Memory_MB 의 설정값 보다 우선 적용됩니다.
-iqmt: SYBASE IQ 서버가 사용할 쓰레드의 총수를 기술하며 현재까지는 4,096 미만값을 기술 해야합니다.
-gm : 동시접속이 가능한 사용자수를 기술합니다.
-iqgovern: 동시 질의를 실행 할수 있는 사용자수를 기술하며 기본값은 다음과 같은 공식으로 적용됩니다. ( CPU X 2 + 10 )
-gc: checkpoint 간격을 분단위로 기술하며 디폴트로 60분이 설정됩니다.
-ti: 마지막으로 요청한 시간 이후에 설정된 시간동안 추가적인 요청을 발생 시키지않은 클라이언트의 접속을 해제하기 위한 시간을 분단위로 기술하며 디폴트로 4,400 분이 설정됩니다.
-tl: 클라이언트의 active 여부를 점검하여 설정된 시간동안 응답이 없다면 클라이언트의 접속을 강제로 해제합니다. 디폴트는 120초 입니다.
-gl: 데이터를 로드하기 위한 권한을 설정하며 가능한 값으로는 dba, all, none 이있고 디폴트로는none, 즉 아무도 로드 할수 없습니다.
db-name.db : catalog store의 절대 디렉토리와 파일명을 명시합니다.


참고: -gm vs.-iqgovern
  • 예를 들어 -gm이 100으로 설정 되어 있고 -iqgovern이 20으로 설정 되어 있다면?
  • -gm 설정에 의해 질의를 실행하는지 여부에 관계없이 100명의 사용자가 SYBASE IQ에 접속 할수 있습니다. 101번째 사용자는 100명 중에 한 사용자라도 접속을 해지해야만 추가 접속이 가능합니다.
  • 또한 100명의 사용자중에 선착순 20명만이 질의를 수행 할수 있습니다. 만약 21번째 사용자가 질의를 실행 시키려면 이 사용자는 iqgovern 큐에서 접속된 상태로 대기 하여야 합니다.
  • 12.6부터 옵션을 통해 20명외에 대기하는 사용자의 우선순위를 조절 할수 있는 방법론이 제공 되고있습니다.
  • IQgovern_Priority: iqgovern 큐에서 대기 하는 사용자의 질의에 대해 우선 순위를 설정 할수 있습니다. IQgovern_Max_Priority 설정값 범위안에서 최상위 우선순위인 1부터 최하위 우선순위인 3까지 설정이 가능합니다.
  • IQgovern_Max_Priority: IQgovern_Priority의 설정값을 제한 하기 위해 사용합니다.
configfile
예)
vi mydb.cfg
-n mydb
-cl64M
-ch256M
-glall
-gm 50
-ti4400
-tl1200
-x tcpip{MyIP=158.77.50.115;port=2638}
-iqmc1100
-iqtc1200
/user/asiq/IQDEV/mydb.db

start SYBASE IQ
Unix : %$ASDIR/bin/start_asiq@$SYBASE/IQDEV/mydb.cfg

start SYBASE IQ - Unix


WinNT : %asiqsrv12 @mydb.cfg

start SYBASE IQ - WinNT


change option

새로 만들어진 데이터베이스의 디폴트옵션중에 다음과 같은 것들은 적절히 사용되지 못할때에 많은부작용이 발생하므로 옵션 변경을 고려하십시오.


  • Auto_Commit : 매 명령어 수행후에 commit의 자동실행여부를 조절하며 디폴트는 off, 즉 commit을 실행하지않습니다. dbisql의 옵 동작하지 않습니다.
  • Auto_Refetch: 현재 세션질의의 결과가 동일세션의 insert, update, delete 후에 다시한번 fetch 될지여부를 조절하며 디폴트는 on 이나 off 를 권장합니다. dbisql의 옵션 중에'Automatic Window Refresh'와 같습니다.
  • Commit_on_exit : dbisql의exit 사용하여 종료 시에 commit의 자동실행여부를 조절하며 디폴트는 on, 즉commit을 실행합니다. dbisql의 옵션 중에 'When Exiting ISQL'과 같습니다.
  • Chained : 트랜잭션의 시작을 묵시적으로 할 것 인지 명시적으로 할 것 인지를 조절하며 디폴트로는on, 즉 묵시적으로 트랜잭션이 시작됩니다.
  • 그 외에 성능 향상을 위해 여러가지 옵션을 변경하며 자세한 내용은 매뉴얼이나 담당 엔지니어에게문의 바랍니다.
예)
set option "public".Auto_commit = 'off';
set option "public".Auto_refetch= 'off';
set option "public".Commit_on_exit = 'off';
set option "public".Chained = 'on';
set option "public".Early_Resource_Release = 'on';
set option "public".Force_No_Scroll_Cursors = 'on';
set option "public".Garray_Fill_Factor_Percent= 150;
set option "public".Garray_Page_Split_Pad_Percent= 50;
set option "public".Query_Temp_Space_Limit = 0;
set option "public".Load_Memory_MB = 300;
set option "public".OS_File_Cache_Buffering = 'off';
set option "public".Trim_Partial_MBC = 'on';
set option "public".Disk_Striping_Packed = 'On';
set option "public".DML_Options25 = 'Off';
set option "public".Query_Plan = 'Off';
set option "public".Query_Detail = 'Off';

위 예제는 SYBASE IQ 설치 할때에 기본적으로 변경을 해주는 옵션들이며 이 값들을 권장합니다.
enlarge database-create dbspace
  • CREATE DATABASE 명령어를 통해 IQ Main Store, IQ Temporary Store, Catalog Store 하나를 각각 만들어 데이터베이스를 생성했는데 create dbspace를 통해 각 영역을 별도로 늘릴수 있습니다. 시스템테이블 sysiqfile에 관련정보가 입력됩니다.
  • dbspace를 위한 영역도 파일시스템과 raw device가 가능하지만 처음 만들어진 dbspace와 같은 크기, 같은 타입의 저장공간을 권장합니다. 즉 첫번째 만들어진 dbspace 영역이 raw device이면 이후에만들어지는 dbspace도 raw device를 권장 한다는것 입니다.
  • CREATE DATABASE를 통해 만들어지는 dbspace를 포함하여 최대 2047개 까지 생성이가능합니다.
syntax
CREATE DBSPACE dbspace-logical-nameAS dbspace-physical-name
[ IQ store| IQ temporary store | Catalog store ]
[ [Size] file-size]
[ RESERVE sizeMB]

예)
CREATE DBSPACE main02AS '/dev/rdsk/mydb_iq02' IQ store;
CREATE DBSPACE temp02AS '/dev/rdsk/mydb_iqtmp02' IQ temporary store;

참고-local dbspace
  • IQ Multiplex 모드 환경에서 특정한 READ 노드의 사용자가 공유 되지 않는 테이블을 생성하여 사용하고자 한다면 이런테이블을 특정한 로컬영역에 위치 시켜 사용할수 있습니다.
  • 이렇게 특정한 로컬영역 용도로 만들어지는 dbspace를 local dbspace라고 부릅니다.
  • Local dbspace에 만들어진 테이블은 비록READ 노드에 있을지라도 WRITE 작업이 가능합니다.
alter dbspace
ALTER DBSPACE 명령어를 통해 이미 존재하는 dbspace의 모드를 변경하거나 크기를 변경 하거나증가 할수 있습니다.
syntax
ALTER DBSPACE dbspace-name
{ READWRITE | READONLY | RELOCATE
| SIZE dbspace-size[ KB | MB| GB | TB | PAGES ]
| ADD dbspace-size[ KB | MB | GB | TB | PAGES] }

  • READWRITE : 대상 dbspace가 READ, WRITE 모두 가능한 모드
  • READONLY : 대상 dbspace가 READ만 가능한 모드
  • RELOCATE : 대상 dbspace의 object들이 다른 dbspace에 이동하기 위하여 READ만 가능한 상태로 변경. 이렇게 대상??면 그 dbspace는 삭제가능
  • SIZE : 대상 dbspace의 RESERVE된 영역 내에서? 내에서 크기 만큼 추가
예)
ALTER DBSPACE main02 SIZE 2000 MB;// main02의 크기가 2000 MB
ALTER DBSPACE temp02 ADD 1000 MB;// temp02의 크기가 1000 MB 증가
ALTER DBSPACE main03READONLY;// main03의 모드를 READ로 변경

decreasing a database
  • IQ Main Store : DROP DBSPACE 명령어를통해가능하며12.6 부터데이터가존재하지않고READWRITE 모드로설정된하나이상의dbspace가존재하는경우에언제든지삭제가능합니다.
  • IQ Temporary Store : IQ Main Store와같은내용입니다.
  • Catalog Store : CREATE DATABASE를 통해 만들어진 디폴트dbspace는 그 크기가 자동으로 확장되지만 축소 되지는 않습니다. 그러므로 사용자가 만드는 모든 테이블은 system 영역을 피하여 주십시오.
  • Transaction Log : 서버 기동파라미터에 -m 옵션을 사용하면 시스템이 정기적으로 checkpoint를 실행할때 그 크기를 줄일 수 있습니다.
  • IQ Message Log : 정기적으로 수동으로 크기 조절을 하거나 관련된 옵션을 설정하여 자동으로 크기조절이 가능합니다. (IQMSG_Length_MB)
  • IQ Server Log : 정기적으로 수동으로 크기 조절을 해야 합니다.
dropping a database
삭제 하고자 하는데 이터베이스의 서버를 종료하고 utility_db나 혹은 asiqdemo 데이터베이스를 기동한 후 DROP DATABASE를 실행하면 됩니다.
syntax

DROP DATABASE db-filename.


예)

DROP DATABASE '/user/asiq/IQDEV/mydb.db'


sp_iqstatus
syntax

sp_iqstatus

sp_iqstatus