.. _cubrid-utilities: cubrid 유틸리티 =============== cubrid 유틸리티의 사용법(구문)은 다음과 같다. :: cubrid utility_name utility_name : createdb [option] --- 데이터베이스 생성 deletedb [option] --- 데이터베이스 삭제 installdb [option] --- 데이터베이스 설치 renamedb [option] --- 데이터베이스 이름 변경 copydb [option] --- 데이터베이스 복사 backupdb [option] --- 데이터베이스 백업 restoredb [option] --- 데이터베이스 복구 addvoldb [option] --- 데이터베이스 볼륨 파일 추가 spacedb [option] --- 데이터베이스 공간 정보 출력 lockdb [option] --- 데이터베이스의 lock 정보 출력 tranlist [option] --- 트랜잭션 확인 killtran [option] --- 트랜잭션 제거 optimizedb [option] --- 데이터베이스 통계 정보 갱신 statdump [option] --- 데이터베이스 서버 실행 통계 정보 출력 compactdb [option] --- 사용되지 않는 영역을 해제, 공간 최적화 diagdb [option] --- 내부 정보 출력 checkdb [option] --- 데이터베이스 일관성 검사 alterdbhost [option] --- 데이터베이스 호스트 변경 plandump [option] --- 쿼리 플랜 캐시 정보 출력 loaddb [option] --- 데이터 및 스키마 가져오기(로드) unloaddb [option] --- 데이터 및 스키마 내보내기(언로드) paramdump [option] --- 데이터베이스의 설정된 파라미터 값 확인 changemode [option] --- 서버의 HA 모드 출력 또는 변경 applyinfo [option] --- HA 환경에서 트랜잭션 로그 반영 정보를 확인하는 도구 synccolldb [option] --- DB 콜레이션을 시스템 콜레이션에 맞게 변경하는 도구 genlocale [option] --- 사용하고자 하는 로캘 정보를 컴파일하는 도구 dumplocale [option] --- 컴파일된 바이너리 로캘 정보를 사람이 읽을 수 있는 텍스트로 출력하는 도구 cubrid 유틸리티 로깅 -------------------- CUBRID는 cubrid 유틸리티의 수행 결과에 대한 로깅 기능을 제공하며, 자세한 내용은 :ref:`cubrid-utility-logging`\ 을 참고한다. 데이터베이스 사용자 =================== CUBRID 데이터베이스 사용자는 동일한 권한을 갖는 멤버를 가질 수 있다. 사용자에게 권한 **A**\가 부여되면, 상기 사용자에게 속하는 모든 멤버에게도 권한 **A**\가 동일하게 부여된다. 이와 같이 데이터베이스 사용자와 그에 속한 멤버를 '그룹'이라 하고, 멤버가 없는 사용자를 '사용자'라 한다. CUBRID는 **DBA**\와 **PUBLIC**\이라는 사용자를 기본으로 제공한다. * **DBA**\는 모든 사용자의 멤버가 되며 데이터베이스의 모든 객체에 접근할 수 있는 최고 권한 사용자이다. 또한, **DBA**\만이 데이터베이스 사용자를 추가, 편집, 삭제할 수 있는 권한을 갖는다. * **DBA**\를 포함한 모든 사용자는 **PUBLIC**\ 의 멤버가 되므로 모든 데이터베이스 사용자는 **PUBLIC**\에 부여된 권한을 가진다. 예를 들어, **PUBLIC** 사용자에 권한 **B**\를 추가하면 데이터베이스의 모든 사용자에게 일괄적으로 권한 **B**\가 부여된다. .. _databases-txt-file: databases.txt 파일 ================== CUBRID에 존재하는 모든 데이터베이스의 위치 정보는 **databases.txt** 파일에 저장하는데, 이를 데이터베이스 위치 정보 파일이라 한다. 이러한 데이터베이스 위치 정보 파일은 데이터베이스의 생성, 이름 변경, 삭제 및 복사에 관한 유틸리티를 수행하거나 각 데이터베이스를 구동할 때에 사용되며, 기본으로는 설치 디렉터리의 **databases** 디렉터리에 위치하고, **CUBRID_DATABASES** 환경 변수로 디렉터리 위치를 지정할 수 있다. :: db_name db_directory server_host logfile_directory 데이터베이스 위치 정보 파일의 라인별 형식은 구문에 정의된 바와 같으며, 데이터베이스 이름, 데이터베이스 경로, 서버 호스트 및 로그 파일의 경로에 관한 정보를 저장한다. 다음은 데이터베이스 위치 정보 파일의 내용을 확인한 예이다. :: % more databases.txt dist_testdb /home1/user/CUBRID/bin d85007 /home1/user/CUBRID/bin dist_demodb /home1/user/CUBRID/bin d85007 /home1/user/CUBRID/bin testdb /home1/user/CUBRID/databases/testdb d85007 /home1/user/CUBRID/databases/testdb demodb /home1/user/CUBRID/databases/demodb d85007 /home1/user/CUBRID/databases/demodb 데이터베이스 위치 정보 파일의 저장 디렉터리는 기본적으로 설치 디렉터리의 **databases** 디렉터리로 지정되며, 시스템 환경 변수 **CUBRID_DATABASES**\ 의 설정을 변경하여 기본 디렉터리를 변경할 수 있다. 데이터베이스 위치 정보 파일의 저장 디렉터리 경로가 유효해야 데이터베이스 관리를 위한 **cubrid** 유틸리티가 데이터베이스 위치 정보 파일에 접근할 수 있게 된다. 이를 위해서 사용자는 디렉터리 경로를 정확하게 입력해야 하고, 해당 디렉터리 경로에 대해 쓰기 권한을 가지는지 확인해야 한다. 다음은 **CUBRID_DATABASES** 환경 변수에 설정된 값을 확인하는 예이다. :: % set | grep CUBRID_DATABASES CUBRID_DATABASES=/home1/user/CUBRID/databases 만약 **CUBRID_DATABASES** 환경 변수에서 유효하지 않은 디렉터리 경로가 설정되는 경우에는 에러가 발생하며, 설정된 디렉터리 경로는 유효하나 데이터베이스 위치 정보 파일이 존재하지 않는 경우에는 새로운 위치 정보 파일을 생성한다. 또한, **CUBRID_DATABASES** 환경 변수가 아예 설정되지 않은 경우에는 현재 작업 디렉터리에서 위치 정보 파일을 검색한다. .. _db-create-add-delete: 데이터베이스 생성, 볼륨 추가, 삭제 ================================== CUBRID 데이터베이스의 볼륨은 크게 영구적 볼륨, 일시적 볼륨, 백업 볼륨으로 분류한다. * 영구적 볼륨 중 * 데이터베이스 볼륨에는 범용(generic), 데이터(data), 인덱스(index), 임시(temp) 볼륨이 있고, * 로그 볼륨에는 활성(active) 로그, 보관(archiving) 로그, 백그라운드 보관(background archiving) 로그가 있다. * 일시적 볼륨에는 일시적 임시(temporary temp) 볼륨이 있다. 볼륨에 대한 자세한 내용은 :ref:`database-volume-structure`\ 를 참고한다. 다음은 testdb 데이터베이스를 운영할 때 발생하는 데이터베이스 관련 파일의 예이다. +----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+ | 파일 이름 | 크기 | 종류 | 분류 | 설명 | +================+=======+=================+================+======================================================================================================+ | testdb | 40MB | generic | 데이터베이스 | DB 생성 시 최초로 생성되는 볼륨. **generic** 볼륨으로 사용되며, DB의 메타 정보를 포함한다. | | | | | 볼륨 | cubrid.conf의 db_volume_size를 40M로 명시한 후 "cubrid createdb"를 수행했거나 "cubrid createdb" | | | | | | 수행 시 --db-volume-size를 40M로 명시했기 때문에 파일의 크기는 40MB가 되었다. | | | | | | | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x001 | 40MB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일. | | | | index, temp | | cubrid.conf의 db_volume_size를 40M로 명시한 후 DB를 시작했기 | | | | 중 하나 | | 때문에 자동으로 생성되는 **generic** 파일의 크기는 40MB가 되었다. | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x002 | 40MB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일 | | | | index, temp | | | | | | 중 하나 | | | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x003 | 40MB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일 | | | | index, temp | | | | | | 중 하나 | | | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x004 | 40MB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일 | | | | index, temp | | | | | | 중 하나 | | | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x005 | 40MB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일 | | | | index, temp | | | | | | 중 하나 | | | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_x006 | 2GB | generic, data | | 자동으로 생성된 **generic** 파일 또는 사용자의 볼륨 추가 명령으로 생성된 파일. | | | | index, temp | | cubrid.conf의 db_volume_size를 2G로 변경한 후 DB를 재시작했거나 | | | | 중 하나 | | "cubrid addvoldb" 수행 시 --db-volume-size를 2G로 명시했기 때문에 크기가 2GB가 되었다. | +----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+ | testdb_t32766 | 360MB | temporary temp | 없음 | **temp** 볼륨이 필요한 질의(예: 정렬, 스캐닝, 인덱스 생성) 실행 중 **temp** 볼륨의 공간이 | | | | | | 부족할 때 임시로 생성되는 파일. DB를 재시작하면 삭제된다. 하지만 임의로 삭제하면 안 된다. | | | | | | | +----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+ | testdb_lgar_t | 40MB | background | 로그 볼륨 | 백그라운드 보관(background archiving) 기능과 관련된 로그 파일. | | | | archiving | | 보관 로그를 저장할 때 사용된다. | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_lgar224 | 40MB | archiving | | 보관 로그(archiving log)가 계속 쌓이면서 세 자리 숫자로 끝나는 파일들이 생성되는데, | | | | | | cubrid backupdb -r 옵션 또는 cubrid.conf의 log_max_archives 파라미터의 설정으로 인해 001~223까지의 | | | | | | 보관 로그들은 정상적으로 삭제된 것으로 보인다. 보관 로그가 삭제되는 경우, lginf 파일의 REMOVE | | | | | | 섹션에서 삭제된 보관 로그 번호를 확인할 수 있다. :ref:`managing-archive-logs`\ 를 참고한다. | +----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+ | testdb_lgat | 40MB | active | | 활성 로그(active log) 파일 | +----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+ * 데이터베이스 볼륨 파일 * 위의 예에서 testdb, testdb_x001 ~ testdb_x006이 데이터베이스 볼륨 파일에 해당된다. * "cubrid createdb", "cubrid addvoldb" 명령 수행 시 "--db-volume-size" 옵션에 의해 크기가 정해진다. * 자동으로 생성되는 볼륨은 항상 **generic** 타입이다. * 로그 볼륨 파일 * 위의 예에서 testdb_lgar_t, testdb_lgar224, testdb_lgat가 로그 볼륨 파일에 해당된다. * "cubrid createdb" 명령 수행 시 "--log-volume-size" 옵션에 의해 크기가 정해진다. .. note:: 임시 볼륨은 질의 처리 및 정렬(sorting)을 수행할 때 중간, 최종 결과를 임시로 저장하는 공간으로, 일시적 임시 볼륨과 영구적 임시 볼륨으로 구분한다. 영구적 또는 일시적 임시 볼륨을 사용할 수 있는 질의의 예는 다음과 같다. * **SELECT** 문 등 질의 결과가 생성되는 질의 * **GROUP BY** 나 **ORDER BY** 가 포함된 질의 * 부질의(subquery)가 포함된 질의 * 정렬 병합(sort-merge) 조인이 수행되는 질의 * **CREATE INDEX** 문이 포함된 질의 위와 같은 질의를 수행할 때 **SELECT** 결과를 저장하거나 데이터를 정렬하기 위해 지정한 메모리 공간 (**cubrid.conf** 에서 지정하는 시스템 파라미터인 **temp_file_memory_size_in_pages**\에 의해 메모리 공간의 크기가 결정됨)을 소진하면 임시 볼륨 공간을 사용한다. 질의 처리 및 정렬 결과를 저장하기 위해 사용하는 저장 공간의 순서는 다음과 같으며, 현재의 저장 공간을 모두 소진하면 다음 저장 공간을 사용한다. * **temp_file_memory_size_in_pages** 시스템 파라미터에 의해 확보된 메모리 * 영구적 임시 볼륨 * 일시적 임시 볼륨 (큰 크기의 임시 공간이 필요한 질의를 수행하면서 일시적 임시 볼륨이 기대 이상으로 증가함으로 인해) 디스크의 여유 공간이 부족해져 시스템 운영에 문제가 발생하는 것을 예방하려면, * 예상하는 영구적 임시 볼륨을 미리 확보하고, * 하나의 질의가 수행될 때 일시적 임시 볼륨에서 사용되는 공간의 최대 크기를 제한하는 것이 좋다. 영구적 임시 볼륨은 "cubrid addvoldb -p temp" 명령을 실행하여 확보하며, 하나의 질의가 수행되는 동안 차지하는 일시적 임시 공간의 최대 크기는 **cubrid.conf**\의 **temp_file_max_size_in_pages** 파라미터에 의해 제한한다(기본값은 -1로 무제한). .. _creating-database: .. _createdb: 데이터베이스 생성 ----------------- **cubrid createdb** 유틸리티는 CUBRID 시스템에서 사용할 데이터베이스를 생성하고 미리 만들어진 CUBRID 시스템 테이블을 초기화한다. 데이터베이스에 권한이 주어진 초기 사용자를 정의할 수도 있다. 일반적으로 데이터베이스 관리자만이 **cubrid createdb** 유틸리티를 사용한다. 로그와 데이터베이스의 위치도 지정할 수 있다. .. warning:: 데이터베이스를 생성할 때 데이터베이스 이름 뒤에 로캘 이름과 문자셋(예: ko_KR.utf8)을 반드시 지정해야 한다. 문자셋에 따라 문자열 타입의 크기, 문자열 비교 연산 등에 영향을 끼친다. 데이터베이스 생성 시 지정된 문자셋은 변경할 수 없으므로 지정에 주의해야 한다. 문자셋, 로캘 및 콜레이션 설정과 관련된 자세한 내용은 :doc:`/sql/i18n`\ 을 참고한다. :: cubrid createdb [options] database_name locale_name.charset * **cubrid**: CUBRID 서비스 및 데이터베이스 관리를 위한 통합 유틸리티이다. * **createdb**: 새로운 데이터베이스를 생성하기 위한 명령이다. * *database_name*: 데이터베이스가 생성될 디렉터리 경로명을 포함하지 않고, 생성하고자 하는 데이터베이스의 이름을 고유하게 부여한다. 이 때, 지정한 데이터베이스 이름이 이미 존재하는 데이터베이스 이름과 중복되는 경우, CUBRID는 기존 파일을 보호하기 위하여 데이터베이스 생성을 더 이상 진행하지 않는다. * *locale_name*: 데이터베이스에서 사용할 로캘 이름을 입력한다. CUBRID에서 사용 가능한 로캘 이름은 :ref:`locale-selection`\ 을 참고한다. * *charset*: 데이터베이스에서 사용할 문자셋을 입력한다. CUBRID에서 사용 가능한 문자셋은 iso88591, euckr, utf8이다. * *locale_name*\ 이 en_US이고 *charset*\ 을 생략하면 문자셋은 iso88591이 된다. * *locale_name*\ 이 ko_KR이고 *charset*\ 을 생략하면 문자셋은 utf8이 된다. * 나머지 *locale_name*\ 은 *charset*\ 을 생략할 수 없으며, utf8만 지정 가능하다. 데이터베이스 이름의 최대 길이는 영문 17자이다. 다음은 **cubrid createdb**\에 대한 [options]이다. .. program:: createdb .. option:: --db-volume-size=SIZE 데이터베이스를 생성할 때 첫 번째 데이터베이스 볼륨의 크기를 지정하는 옵션으로, 기본값은 cubrid.conf에 지정된 시스템 파라미터 **db_volume_size**\ 의 값이다. 최소값은 20M이다. K, M, G, T로 단위를 설정할 수 있으며, 각각 KB(kilobytes), MB(megabytes), GB(gigabytes), TB(terabytes)를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 다음은 첫 번째로 생성되는 testdb의 볼륨 크기를 512MB로 지정하는 구문이다. :: cubrid createdb --db-volume-size=512M testdb en_US .. option:: --db-page-size=SIZE 데이터베이스 페이지 크기를 지정하는 옵션으로서, 최소값은 4K, 최대값은 16K(기본값)이다. K는 KB(kilobytes)를 의미한다. 데이터베이스 페이지 크기는 4K, 8K, 16K 중 하나의 값이 된다. 4K와 16K 사이의 값을 지정할 경우 지정한 값의 올림값으로 설정되며, 4K보다 작으면 4K로 설정되고 16K보다 크면 16K로 설정된다. 다음은 testdb를 생성하고, testdb의 데이터베이스 페이지 크기를 16K로 지정하는 구문이다. :: cubrid createdb --db-page-size=16K testdb en_US .. option:: --log-volume-size=SIZE 생성되는 데이터베이스의 로그 볼륨 크기를 지정하는 옵션으로, 기본값은 데이터베이스 볼륨 크기와 같으며 최소값은 20M이다. K, M, G, T로 단위를 설정할 수 있으며, 각각 KB(kilobytes), MB(megabytes), GB(gigabytes), TB(terabytes)를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 다음은 *testdb*\를 생성하고, *testdb*\의 로그 볼륨 크기를 256M로 지정하는 구문이다. :: cubrid createdb --log-volume-size=256M testdb en_US .. option:: --log-page-size=SIZE 생성되는 데이터베이스의 로그 볼륨 페이지 크기를 지정하는 옵션으로, 기본값은 데이터 페이지 크기와 같다. 최소값은 4K, 최대값은 16K이다. K는 KB(kilobytes)를 의미한다. 데이터베이스 페이지 크기는 4K, 8K, 16K 중 하나의 값이 된다. 4K와 16K 사이의 값을 지정할 경우 지정한 값의 올림값으로 설정되며, 4K보다 작으면 4K로 설정되고 16K보다 크면 16K로 설정된다. 다음은 *testdb*\를 생성하고, *testdb*\ 의 로그 볼륨 페이지 크기를 8kbyte로 지정하는 구문이다. :: cubrid createdb -log-page-size=8K testdb en_US .. option:: --comment=COMMENT 데이터베이스의 볼륨 헤더에 지정된 주석을 포함하는 옵션으로, 문자열에 공백이 포함되면 큰 따옴표로 감싸주어야 한다. 다음은 *testdb*\를 생성하고, 데이터베이스 볼륨에 이에 대한 주석을 추가하는 구문이다. :: cubrid createdb --comment "a new database for study" testdb en_US .. option:: -F, --file-path=PATH 새로운 데이터베이스가 생성되는 디렉터리의 절대 경로를 지정하는 옵션으로, **-F** 옵션을 지정하지 않으면 현재 작업 디렉터리에 새로운 데이터베이스가 생성된다. 다음은 *testdb*\라는 이름의 데이터베이스를 /dbtemp/new_db라는 디렉터리에 생성하는 구문이다. :: cubrid createdb -F "/dbtemp/new_db/" testdb en_US .. option:: -L, --log-path=PATH 데이터베이스의 로그 파일이 생성되는 디렉터리의 절대 경로를 지정하는 옵션으로, **-L** 옵션을 지정하지 않으면 **-F** 옵션에서 지정한 디렉터리에 생성된다. **-F** 옵션과 **-L** 옵션을 둘 다 지정하지 않으면 데이터베이스와 로그 파일이 현재 작업 디렉터리에 생성된다. 다음은 *testdb*\라는 이름의 데이터베이스를 /dbtemp/newdb라는 디렉터리에 생성하고, 로그 파일을 /dbtemp/db_log 디렉터리에 생성하는 구문이다. :: cubrid createdb -F "/dbtemp/new_db/" -L "/dbtemp/db_log/" testdb en_US .. option:: -B, --lob-base-path=PATH **BLOB/CLOB** 데이터를 사용하는 경우 **LOB** 데이터 파일이 저장되는 디렉터리의 경로를 지정하는 옵션으로, 이 옵션을 지정하지 않으면 <*데이터베이스 볼륨이 생성되는 디렉터리*>\ **/lob** 디렉터리에 **LOB** 데이터 파일이 저장된다. 다음은 *testdb*\ 를 현재 작업 디렉터리에 생성하고, **LOB** 데이터 파일이 저장될 디렉터리를 로컬 파일 시스템의 "/home/data1"으로 지정하는 구문이다. :: cubrid createdb --lob-base-path "file:/home1/data1" testdb en_US .. option:: --server-name=HOST CUBRID의 클라이언트/서버 버전을 사용할 때 특정 데이터베이스에 대한 서버가 지정한 호스트 상에 구동되도록 하는 옵션이다. 이 옵션으로 지정된 서버 호스트의 정보는 데이터베이스 위치 정보 파일( **databases.txt** )에 기록된다. 이 옵션이 지정되지 않으면 기본값은 현재 로컬 호스트이다. 다음은 *testdb*\를 *aa_host* 호스트 상에 생성 및 등록하는 구문이다. :: cubrid createdb --server-name aa_host testdb en_US .. option:: -r, --replace **-r**\은 지정된 데이터베이스 이름이 이미 존재하는 데이터베이스 이름과 중복되더라도 새로운 데이터베이스를 생성하고, 기존의 데이터베이스를 덮어쓰도록 하는 옵션이다. 다음은 *testdb*\ 라는 이름의 데이터베이스가 이미 존재하더라도 기존의 *testdb*\ 를 덮어쓰고 새로운 *testdb*\ 를 생성하는 구문이다. :: cubrid createdb -r testdb en_US .. option:: --more-volume-file=FILE 데이터베이스가 생성되는 디렉터리에 추가 볼륨을 생성하는 옵션으로 지정된 파일에 저장된 명세에 따라 추가 볼륨을 생성한다. 이 옵션을 이용하지 않더라도, **cubrid addvoldb** 유틸리티를 이용하여 볼륨을 추가할 수 있다. 다음은 *testdb*\를 생성함과 동시에 vol_info.txt에 저장된 명세를 기반으로 볼륨을 추가 생성하는 구문이다. :: cubrid createdb --more-volume-file vol_info.txt testdb en_US 다음은 위 구문으로 vol_info.txt에 저장된 추가 볼륨에 관한 명세이다. 각 볼륨에 관한 명세는 라인 단위로 작성되어야 한다. :: #xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # NAME volname COMMENTS volcmnts PURPOSE volpurp NPAGES volnpgs NAME data_v1 COMMENTS "데이터 정보 볼륨" PURPOSE data NPAGES 1000 NAME data_v2 COMMENTS "데이터 정보 볼륨" PURPOSE data NPAGES 1000 NAME data_v3 PURPOSE data NPAGES 1000 NAME index_v1 COMMENTS "인덱스 정보 볼륨" PURPOSE index NPAGES 500 NAME temp_v1 COMMENTS "임시 정보 볼륨" PURPOSE temp NPAGES 500 NAME generic_v1 COMMENTS "일반 정보 볼륨" PURPOSE generic NPAGES 500 #xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 예제 파일에서와 같이 각 볼륨에 관한 명세는 다음과 같이 구성된다. :: NAME volname COMMENTS volcmnts PURPOSE volpurp NPAGES volnpgs * *volname*: 추가 생성될 볼륨의 이름으로 Unix 파일 이름 규약을 따라야 하고, 디렉터리 경로를 포함하지 않는 단순한 이름이어야 한다. 볼륨명에 관한 명세는 생략할 수 있으며, 이 경우 시스템에 의해 "생성될 데이터베이스 이름_볼륨 식별자"로 볼륨명이 생성된다. * *volcmnts*: 볼륨 헤더에 기록되는 주석 문장으로, 추가 생성되는 볼륨에 관한 정보를 임의로 부여할 수 있다. 볼륨 주석에 관한 명세 역시 생략할 수 있다. * *volpurp*: 볼륨 저장의 목적으로, **data**, **index**, **temp**, **generic** 중 하나여야 한다. 볼륨 목적에 관한 명세는 생략할 수 있으며, 이 경우 기본값은 **generic**\이다. * *volnpgs*: 추가 생성되는 볼륨의 페이지 수이다. 볼륨 페이지 수에 관한 명세는 생략할 수 없으며, 반드시 지정해야 한다. .. option:: --user-definition-file=FILE 생성하고자 하는 데이터베이스에 대해 권한이 있는 사용자를 추가하는 옵션으로, 파라미터로 지정된 사용자 정보 파일에 저장된 명세에 따라 사용자를 추가한다. **--user-definition-file** 옵션을 이용하지 않더라도 :ref:`create-user` 구문을 이용하여 사용자를 추가할 수 있다. 다음은 *testdb*\를 생성함과 동시에 user_info.txt에 정의된 사용자 정보를 기반으로 *testdb*\에 대한 사용자를 추가하는 구문이다. :: cubrid createdb --user-definition-file=user_info.txt testdb en_US 사용자 정보 파일의 구문은 아래와 같다. :: USER user_name [ | ] : [ GROUPS [ { }... ] ] : [ MEMBERS [ { }... ] ] * *user_name*: 데이터베이스에 대해 권한을 가지는 사용자 이름이며, 공백이 포함되지 않아야 한다. * **GROUPS** 절: 옵션이며, 은 지정된 을 포함하는 상위 그룹의 이름이다. 이 때, 은 하나 이상이 지정될 수 있으며, **USER**\로 미리 정의되어야 한다. * **MEMBERS** 절: 옵션이며, 은 지정된 에 포함되는 하위 멤버의 이름이다. 이 때, 은 하나 이상이 지정될 수 있으며, **USER**\로 미리 정의되어야 한다. 사용자 정보 파일에서는 주석을 사용할 수 있으며, 주석 라인은 연속된 하이픈(--)으로 시작된다. 공백 라인은 무시된다. 다음 예제는 그룹 *sedan*\에 *grandeur*\와 *sonata*\가, 그룹 *suv*\에 *tuscan*\이, 그룹 *hatchback*\에 *i30*\가 포함되는 것을 정의하는 사용자 정보 파일이다. 사용자 정보 파일명은 user_info.txt로 예시한다. :: -- -- 사용자 정보 파일의 예 1 -- USER sedan USER suv USER hatchback USER grandeur GROUPS sedan USER sonata GROUPS sedan USER tuscan GROUPS suv USER i30 GROUPS hatchback 위 예제와 동일한 사용자 관계를 정의하는 파일이다. 다만, 아래 예제에서는 **MEMBERS**\ 절을 이용하였다. :: -- -- 사용자 정보 파일의 예 2 -- USER grandeur USER sonata USER tuscan USER i30 USER sedan MEMBERS sonata grandeur USER suv MEMBERS tuscan USER hatchback MEMBERS i30 .. option:: --csql-initialization-file=FILE 생성하고자 하는 데이터베이스에 대해 CSQL 인터프리터에서 구문을 실행하는 옵션으로, 파라미터로 지정된 파일에 저장된 SQL 구문에 따라 스키마를 생성할 수 있다. 다음은 *testdb*\를 생성함과 동시에 table_schema.sql에 정의된 SQL 구문을 CSQL 인터프리터에서 실행시키는 구문이다. :: cubrid createdb --csql-initialization-file table_schema.sql testdb en_US .. option:: -o, --output-file=FILE 데이터베이스 생성에 관한 메시지를 파라미터로 지정된 파일에 저장하는 옵션이며, 파일은 데이터베이스와 동일한 디렉터리에 생성된다. **-o** 옵션이 지정되지 않으면 메시지는 콘솔 화면에 출력된다. **-o** 옵션은 데이터베이스가 생성되는 중에 출력되는 메시지를 지정된 파일에 저장함으로써 특정 데이터베이스의 생성 과정에 관한 정보를 활용할 수 있게 한다. 다음은 *testdb*\를 생성하면서 이에 관한 유틸리티의 출력을 콘솔 화면이 아닌 db_output 파일에 저장하는 구문이다. :: cubrid createdb -o db_output testdb en_US .. option:: -v, --verbose 데이터베이스 생성 연산에 관한 모든 정보를 화면에 출력하는 옵션으로서, **-o** 옵션과 마찬가지로 특정 데이터베이스 생성 과정에 관한 정보를 확인하는데 유용하다. 따라서, **-v** 옵션과 **-o** 옵션을 함께 지정하면, **-o** 옵션의 파라미터로 지정된 출력 파일에 **cubrid createdb** 유틸리티의 연산 정보와 생성 과정에 관한 출력 메시지를 저장할 수 있다. 다음은 *testdb*\를 생성하면서 이에 관한 상세한 연산 정보를 화면에 출력하는 구문이다. :: cubrid createdb -v testdb en_US .. note:: * **temp_file_max_size_in_pages**\는 복잡한 질의문이나 정렬 수행에 사용되는 일시적 임시 볼륨(temporary temp volume)을 디스크에 저장하는 데에 할당되는 페이지의 최대 개수를 설정하는 파라미터이다. 기본값은 **-1**\로, **temp_volume_path** 파라미터가 지정한 디스크의 여유 공간까지 일시적 임시 볼륨(temporary temp volume)이 커질 수 있다. 0이면 일시적 임시 볼륨이 생성되지 않으므로 :ref:`cubrid addvoldb ` 유틸리티를 이용하여 영구적 임시 볼륨(permanent temp volume)을 충분히 추가해야 한다. 볼륨을 효율적으로 관리하려면 용도별로 볼륨을 추가하는 것을 권장한다. * :ref:`cubrid spacedb ` 유틸리티를 사용하여 각 용도별 볼륨의 남은 공간을 검사할 수 있으며, :ref:`cubrid addvoldb ` 유틸리티를 사용하여 데이터베이스 운영 중에도 필요한 만큼 볼륨을 추가할 수 있다. 데이터베이스 운영 중에 볼륨을 추가하려면 가급적 시스템 부하가 적은 상태에서 추가할 것을 권장한다. 해당 용도의 볼륨 공간이 모두 사용되면 범용(**generic**) 볼륨이 생성되므로 여유 공간이 부족할 것으로 예상되는 용도의 볼륨을 미리 추가해 놓을 것을 권장한다. 다음은 데이터베이스를 생성하고 볼륨 용도를 구분하여 데이터(**data**), 인덱스(**index**), 임시(**temp**) 볼륨을 추가하는 예이다. :: cubrid createdb --db-volume-size=512M --log-volume-size=256M cubriddb en_US cubrid addvoldb -S -p data -n cubriddb_DATA01 --db-volume-size=512M cubriddb cubrid addvoldb -S -p data -n cubriddb_DATA02 --db-volume-size=512M cubriddb cubrid addvoldb -S -p index -n cubriddb_INDEX01 cubriddb --db-volume-size=512M cubriddb cubrid addvoldb -S -p temp -n cubriddb_TEMP01 cubriddb --db-volume-size=512M cubriddb .. _adding-database-volume: .. _addvoldb: 데이터베이스 볼륨 추가 ---------------------- 전체 **generic** 볼륨의 여유 공간이 :ref:`disk-parameters`\ 에 속한 **generic_vol_prealloc_size** 파라미터에서 지정한 크기(기본값: 50M)보다 작아지면 자동으로 **generic** 볼륨이 추가된다. 볼륨 자동 추가는 새로운 페이지 할당 요청이 있을 때 이루어지며, SELECT만 수행되는 경우 볼륨이 확장되지 않는다. CUBRID의 볼륨은 데이터 저장, 인덱스 저장, 임시 결과 저장 등 용도에 따라 구분되는데, **generic** 볼륨은 데이터 및 인덱스 저장 용도로 사용될 수 있다. 각 볼륨의 종류(용도)에 대해서는 :ref:`database-volume-structure`\ 를 참고한다. 이에 비해, 사용자에 의해 수동으로 데이터베이스 볼륨을 추가하는 명령은 다음과 같다. :: cubrid addvoldb [options] database_name * **cubrid**: CUBRID 서비스 및 데이터베이스 관리를 위한 통합 유틸리티이다. * **addvoldb**: 지정된 데이터베이스에 지정된 페이지 수만큼 새로운 볼륨을 추가하기 위한 명령이다. * *database_name*: 데이터베이스가 생성될 디렉터리 경로명을 포함하지 않고, 볼륨을 추가하고자 하는 데이터베이스의 이름을 지정한다. 다음은 데이터베이스를 생성하고 볼륨 용도를 구분하여 데이터(**data**), 인덱스(**index**), 임시(**temp**) 볼륨을 추가하는 예이다. :: cubrid createdb --db-volume-size=512M --log-volume-size=256M cubriddb en_US cubrid addvoldb -S -p data -n cubriddb_DATA01 --db-volume-size=512M cubriddb cubrid addvoldb -S -p data -n cubriddb_DATA02 --db-volume-size=512M cubriddb cubrid addvoldb -S -p index -n cubriddb_INDEX01 cubriddb --db-volume-size=512M cubriddb cubrid addvoldb -S -p temp -n cubriddb_TEMP01 cubriddb --db-volume-size=512M cubriddb 다음은 cubrid addvoldb에 대한 [options]이다. .. program:: addvoldb .. option:: --db-volume-size=SIZE 추가되는 데이터베이스 볼륨의 크기를 지정하는 옵션으로, 기본값은 **cubrid.conf**\에 지정된 시스템 파라미터 **db_volume_size**\ 의 값이다. K, M, G, T로 단위를 설정할 수 있으며, 각각 KB(kilobytes), MB(megabytes), GB(gigabytes), TB(terabytes)를 의미한다. 단위를 생략하면 바이트 단위가 적용된다. 다음은 *testdb*\에 데이터 볼륨을 추가하며 볼륨 크기를 256MB로 지정하는 구문이다. :: cubrid addvoldb -p data --db-volume-size=256M testdb .. option:: -n, --volume-name=NAME 지정된 데이터베이스에 대하여 추가될 볼륨의 이름을 지정하는 옵션이다. 볼륨명은 운영체제의 파일 이름 규약을 따라야 하고, 디렉터리 경로나 공백을 포함하지 않는 단순한 이름이어야 한다. **-n** 옵션을 생략하면 추가되는 볼륨의 이름은 시스템에 의해 "데이터베이스 이름_볼륨 식별자"로 자동 부여된다. 예를 들어, 데이터베이스 이름이 *testdb*\ 이면 자동 부여된 볼륨명은 *testdb_x001*\ 이 된다. 다음은 독립모드(standalone) 상태에서 *testdb*\ 라는 데이터베이스에 256MB 볼륨을 추가하는 구문이며, 생성되는 볼륨명은 *testdb_v1*\ 이 된다. :: cubrid addvoldb -S -n testdb_v1 --db-volume-size=256M testdb .. option:: -F, --file-path=PATH 지정된 데이터베이스에 대하여 추가될 볼륨이 저장되는 디렉터리 경로를 지정하는 옵션이다. **-F** 옵션을 생략하면, 시스템 파라미터인 **volume_extension_path**\ 의 값이 기본값으로 사용된다. 다음은 독립모드(standalone) 상태에서 *testdb*\ 라는 데이터베이스에 256MB 볼륨을 추가하는 구문이며, 추가 볼륨은 /dbtemp/addvol 디렉터리에 생성된다. 볼륨명에 관한 **-n** 옵션을 지정하지 않았으므로, 생성되는 볼륨명은 *testdb_x001*\이 된다. :: cubrid addvoldb -S -F /dbtemp/addvol/ --db-volume-size=256M testdb .. option:: --comment=COMMENT 추가된 볼륨에 관한 정보 검색을 쉽게 하기 위하여 볼륨에 관한 정보를 주석으로 처리하는 옵션이다. 이때 주석의 내용은 볼륨을 추가하는 **DBA**\ 의 이름이나 볼륨 추가의 목적을 포함하는 것이 바람직하며, 큰따옴표로 감싸야 한다. 다음은 독립모드(standalone) 상태에서 *testdb*\ 라는 데이터베이스에 256MB 볼륨을 추가하는 구문이며, 해당 볼륨에 관한 정보를 주석으로 남긴다. :: cubrid addvoldb -S --comment "데이터 볼륨 추가_김철수" --db-volume-size=256M testdb .. option:: -p, --purpose=PURPOSE 추가할 볼륨의 사용 목적에 따라 볼륨의 종류를 지정하는 옵션이다. 이처럼 볼륨의 사용 목적에 맞는 볼륨을 지정해야 볼륨 종류별로 디스크 드라이브에 분리 저장할 수 있어 I/O 성능을 높일 수 있다. **-p** 옵션의 파라미터로 가능한 값은 **data**, **index**, **temp**, **generic** 중 하나이며, 기본값은 **generic**\이다. 각 볼륨 용도에 관해서는 :ref:`database-volume-structure` 를 참조한다. 다음은 독립모드(standalone) 상태에서 *testdb*\라는 데이터베이스에 256MB 인덱스 볼륨을 추가하는 구문이다. :: cubrid addvoldb -S -p index --db-volume-size=256M testdb .. option:: -S, --SA-mode 서버 프로세스를 구동하지 않고 데이터베이스에 접근하는 독립 모드(standalone)로 작업하기 위해 지정되며, 인수는 없다. **-S** 옵션을 지정하지 않으면, 시스템은 클라이언트/서버 모드로 인식한다. :: cubrid addvoldb -S --db-volume-size=256M testdb .. option:: -C, --CS-mode 서버 프로세스와 클라이언트 프로세스를 각각 구동하여 데이터베이스에 접근하는 클라이언트/서버 모드로 작업하기 위한 옵션이며, 인수는 없다. **-C** 옵션을 지정하지 않더라도 시스템은 기본적으로 클라이언트/서버 모드로 인식한다. :: cubrid addvoldb -C --db-volume-size=256M testdb .. option:: --max_writesize-in-sec=SIZE 데이터베이스에 볼륨을 추가할 때 디스크 출력량을 제한하여 시스템 운영 영향을 줄이도록 하는 옵션이다. 이 옵션을 통해 1초당 쓸 수 있는 최대 크기를 지정할 수 있으며, 단위는 K(kilobytes), M(megabytes)이다. 최소값은 160K이며, 이보다 작게 값을 설정하면 160K로 바뀐다. 단, 클라이언트/서버 모드(-C)에서만 사용 가능하다. 다음은 2GB 볼륨을 초당 1MB씩 쓰도록 하는 예이다. 소요 시간은 35분( = (2048MB / 1MB) / 60초 ) 정도가 예상된다. :: cubrid addvoldb -C --db-volume-size=2G --max-writesize-in-sec=1M testdb .. _deletedb: 데이터베이스 삭제 ----------------- **cubrid deletedb**\는 데이터베이스를 삭제하는 유틸리티이다. 데이터베이스가 몇 개의 상호 의존적 파일들로 만들어지기 때문에, 데이터베이스를 제거하기 위해 운영체제 파일 삭제 명령이 아닌 **cubrid deletedb** 유틸리티를 사용해야 한다. **cubrid deletedb** 유틸리티는 데이터베이스 위치 파일( **databases.txt** )에 지정된 데이터베이스에 대한 정보도 같이 삭제한다. **cubrid deletedb** 유틸리티는 오프라인 상에서 즉, 아무도 데이터베이스를 사용하지 않는 상태에서 독립 모드로 사용해야 한다. :: cubrid deletedb [options] database_name * **cubrid**: CUBRID 서비스 및 데이터베이스 관리를 위한 통합 유틸리티이다. * **deletedb**: 데이터베이스 및 관련 데이터, 로그, 백업 파일을 전부 삭제하기 위한 명령으로, 데이터베이스 서버가 구동 정지 상태인 경우에만 정상적으로 수행된다. * *database_name*: 디렉터리 경로명을 포함하지 않고, 삭제하고자 하는 데이터베이스의 이름을 지정한다 다음은 **cubrid deletedb**\에 대한 [options]이다. .. program:: deletedb .. option:: -o, --output-file=FILE 데이터베이스를 삭제하면서 출력되는 메시지를 인자로 지정한 파일에 기록하는 명령이다. **cubrid deletedb** 유틸리티를 사용하면 데이터베이스 위치 정보 파일( **databases.txt** )에 기록된 데이터베이스 정보가 함께 삭제된다. :: cubrid deletedb -o deleted_db.out testdb 만약, 존재하지 않는 데이터베이스를 삭제하는 명령을 입력하면 다음과 같은 메시지가 출력된다. :: cubrid deletedb testdb Database "testdb" is unknown, or the file "databases.txt" cannot be accessed. .. option:: -d, --delete-backup 데이터베이스를 삭제하면서 백업 볼륨 및 백업 정보 파일도 함께 삭제할 수 있다. -**d** 옵션을 지정하지 않으면 백업 볼륨 및 백업 정보 파일은 삭제되지 않는다. :: cubrid deletedb -d testdb 데이터베이스 이름 변경, 호스트 변경, 복사/이동, 등록 ==================================================== .. _renamedb: 데이터베이스 이름 변경 ---------------------- **cubrid renamedb** 유틸리티는 존재하는 데이터베이스의 현재 이름을 변경한다. 정보 볼륨, 로그 볼륨, 제어 파일들이 새로운 이름과 일치되게 이름을 변경한다. 이에 비해 **cubrid alterdbhost** 유틸리티는 지정된 데이터베이스의 호스트 이름을 설정하거나 변경한다. 즉, **databases.txt**\에 있는 호스트 이름을 변경한다. :: cubrid renamedb [options] src_database_name dest_database_name * **cubrid**: CUBRID 서비스 및 데이터베이스 관리를 위한 통합 유틸리티이다. * **renamedb**: 현재 존재하는 데이터베이스의 이름을 새로운 이름으로 변경하기 위한 명령으로, 데이터베이스가 구동 정지 상태인 경우에만 정상적으로 수행된다. 관련된 정보 볼륨, 로그 볼륨, 제어 파일도 함께 새로 지정된 이름으로 변경된다. * *src_database_name*: 이름을 바꾸고자 하는 현재 존재하는 데이터베이스의 이름이며, 데이터베이스가 생성될 디렉터리 경로명을 포함하지 않는다. * *dest_database_name*: 새로 부여하고자 하는 데이터베이스의 이름이며, 현재 존재하는 데이터베이스 이름과 중복되어서는 안 된다. 이 역시, 데이터베이스가 생성될 디렉터리 경로명을 포함하지 않는다. 다음은 **cubrid renamedb**\에 대한 [options]이다. .. program:: renamedb .. option:: -E, --extented-volume-path=PATH 확장 볼륨의 이름을 변경한 후 새 디렉터리 경로로 이동하는 명령으로서, **-E** 옵션을 이용하여 변경된 이름을 가지는 확장 볼륨을 이동시킬 새로운 디렉터리 경로(예: /dbtemp/newaddvols/)를 지정한다. **-E** 옵션을 주지 않으면, 확장 볼륨은 기존 위치에서 이름만 변경된다. 이때, 기존 데이터베이스 볼륨의 디스크 파티션 외부에 있는 디렉터리 경로 또는 유효하지 않은 디렉터리 경로가 지정되는 경우 데이터베이스 이름 변경 작업은 수행되지 않으며, **-i** 옵션과 병행될 수 없다. :: cubrid renamedb -E /dbtemp/newaddvols/ testdb testdb_1 .. option:: -i, --control-file FILE 각 볼륨 또는 파일에 대하여 일괄적으로 데이터베이스 이름을 변경하면서 디렉터리 경로를 상이하게 지정하기 위해 디렉터리 정보가 저장된 입력 파일을 지정하는 명령으로서, **-i** 옵션을 이용한다. 이때, **-i** 옵션은 **-E** 옵션과 병행될 수 없다. :: cubrid renamedb -i rename_path testdb testdb_1 다음은 개별적 볼륨들의 이름과 현재 디렉터리 경로, 그리고 변경된 이름의 볼륨들이 저장될 디렉터리 경로를 포함하는 파일의 구문 및 예시이다. :: volid source_fullvolname dest_fullvolname * *volid*: 각 볼륨을 식별하기 위한 정수이며, 데이터베이스 볼륨 정보 제어 파일(database_name_vinf)를 통해 확인할 수 있다. * *source_fullvolname*: 각 볼륨에 대한 현재 디렉터리 경로이다. * *dest_fullvolname*: 이름이 변경된 새로운 볼륨이 이동될 목적지 디렉터리 경로이다. 만약, 목적지 디렉터리가 유효하지 않은 경우 데이터베이스 이름 변경 작업은 수행되지 않는다. :: -5 /home1/user/testdb_vinf /home1/CUBRID/databases/testdb_1_vinf -4 /home1/user/testdb_lginf /home1/CUBRID/databases/testdb_1_lginf -3 /home1/user/testdb_bkvinf /home1/CUBRID/databases/testdb_1_bkvinf -2 /home1/user/testdb_lgat /home1/CUBRID/databases/testdb_1_lgat 0 /home1/user/testdb /home1/CUBRID/databases/testdb_1 1 /home1/user/backup/testdb_x001 /home1/CUBRID/databases/backup/testdb_1_x001 .. option:: -d, --delete-backup 데이터베이스의 이름을 변경하면서 데이터베이스와 와 동일 위치에 있는 모든 백업 볼륨 및 백업 정보 파일을 함께 강제 삭제하는 명령이다. 일단, 데이터베이스 이름이 변경되면 이전 이름의 백업 파일은 이용할 수 없으므로 주의해야 한다. 만약, **-d** 옵션을 지정하지 않으면 백업 볼륨 및 백업 정보 파일은 삭제되지 않는다. :: cubrid renamedb -d testdb testdb_1 .. _alterdbhost: 데이터베이스 호스트 변경 ------------------------ **cubrid alterdbhost** 유틸리티는 지정된 데이터베이스의 호스트 이름을 설정하거나 변경한다. 즉, **databases.txt** 에 있는 호스트 이름을 변경한다. cubrid alterdbhost [