:meta-keywords: cubrid databases.txt, cubrid users, cubrid volume
:meta-description: How to manage CUBRID Databases, Users and Volumes.
데이터베이스 관리
=================
데이터베이스 사용자
-------------------
CUBRID 데이터베이스 사용자는 동일한 권한을 갖는 멤버를 가질 수 있다. 사용자에게 권한 **A**\가 부여되면, 상기 사용자에게 속하는 모든 멤버에게도 권한 **A**\가 동일하게 부여된다. 이와 같이 데이터베이스 사용자와 그에 속한 멤버를 '그룹'이라 하고, 멤버가 없는 사용자를 '사용자'라 한다.
CUBRID는 **DBA**\와 **PUBLIC**\이라는 사용자를 기본으로 제공한다.
* **DBA**\는 모든 사용자의 멤버가 되며 데이터베이스의 모든 객체에 접근할 수 있는 최고 권한 사용자이다. 또한, **DBA**\만이 데이터베이스 사용자를 추가, 편집, 삭제할 수 있는 권한을 갖는다.
* **DBA**\를 포함한 모든 사용자는 **PUBLIC**\ 의 멤버가 되므로 모든 데이터베이스 사용자는 **PUBLIC**\에 부여된 권한을 가진다. 예를 들어, **PUBLIC** 사용자에 권한 **B**\를 추가하면 데이터베이스의 모든 사용자에게 일괄적으로 권한 **B**\가 부여된다. 사용자의 추가, 권한 부여에 대한 자세한 내용은 :doc:`/sql/authorization`\ 을 참고한다.
.. _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** 환경 변수가 아예 설정되지 않은 경우에는 현재 작업 디렉터리에서 위치 정보 파일을 검색한다.
.. _database-volume:
데이터베이스 볼륨
-----------------
CUBRID 데이터베이스의 볼륨은 크게 영구적 볼륨, 일시적 볼륨, 백업 볼륨으로 분류한다.
* 영구적 볼륨 중
* 영구적 데이터를 저장하지만 일시적 데이터도 저장할 수 있는 데이터 볼륨이 있다.
* 데이터베이스의 최근 변경 사항을 포함하고 있는 활성 로그(active log) 볼륨이 있다.
* 일시적 볼륨 중
* 임시 데이터를 저장할 수 있는 일시적 볼륨(temporary temp volume)이 있다.
* 활성 로그에서 밀려난 로그를 저장하기 위한 보관 로그(archive log) 볼륨이 있다.
* 백그라운드에서 로그 보관 작업을 수행할 때 사용되는 백그라운드 보관 로그(background archive log) 볼륨이 있다.
볼륨에 대한 자세한 내용은 :ref:`database-volume-structure`\ 를 참고한다.
다음은 *testdb* 데이터베이스를 운영할 때 발생하는 데이터베이스 관련 파일의 예이다.
+----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+
| 파일 이름 | 크기 | 종류 | 분류 | 설명 |
+================+=======+=================+================+======================================================================================================+
| testdb | 512MB | | permanent | | Database | | DB 생성시 최초로 생성되는 볼륨 |
| | | | data | | volume | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
| | | | | | 이 볼륨은 데이터베이스 메타 정보를 포함한다. |
| | | | | | **cubrid createdb** 는 **cubrid.conf** 의 **db_volume_size** 에 명시된 디폴트 크기를 사용한다. |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_perm | 512MB | | permanent | | | **cubrid addvoldb** 유틸리티를 사용해 수동으로 생성된 볼륨 |
| | | | data | | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_temp | 512MB | | temporary | | | **cubrid addvoldb** 유틸리티를 사용해 수동으로 생성된 볼륨 |
| | | | data | | | 이 볼륨은 임시 데이터를 저장한다. (질의 결과, 리스트 파일들, 정렬 파일들, 결합 객체 해시들) |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_x003 | 512MB | | permanent | | | 데이터베이스의 공간이 더 필요할 때 자동으로 생성 |
| | | | data | | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_x004 | 512MB | | permanent | | | 데이터베이스의 공간이 더 필요할 때 자동으로 생성 |
| | | | data | | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_x005 | 512MB | | permanent | | | 데이터베이스의 공간이 더 필요할 때 자동으로 생성 |
| | | | data | | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_x006 | 64MB | | permanent | | | 데이터베이스의 공간이 더 필요할 때 자동으로 생성 |
| | | | data | | | 이 볼륨은 영구 데이터를 저장한다. (시스템,힙과 인덱스 파일들) |
| | | | | | 이 볼륨의 크기는 아직 최대화 되지 않음 |
+----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+
| testdb_t32766 | 512MB | | temporary | | Temporary | | 데이터베이스의 공간이 더 필요할 때 자동으로 생성 |
| | | | data | | Volume | | 이 볼륨은 임시 데이터를 저장한다. (질의 결과, 리스트 파일들, 정렬 파일들, 결합 객체 해시들) |
+----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+
| testdb_lgar_t | 512MB | | background | | Log | | 백그라운드 보관(background archiving) 기능과 관련된 로그 파일 |
| | | | archiving | | volume | | 보관 로그를 저장할 때 사용된다. |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_lgar224 | 512MB | | archive | | | 보관 로그(archiving log)가 계속 쌓이면서 세 자리 숫자로 끝나는 파일들이 생성된다. |
| | | | | | cubrid backupdb -r 옵션 또는 cubrid.conf의 log_max_archives 파라미터의 설정으로 인해 001~223까지의 |
| | | | | | 보관 로그들은 정상적으로 삭제된 것으로 보인다. 보관 로그가 삭제되는 경우, lginf 파일의 REMOVE |
| | | | | | 섹션에서 삭제된 보관 로그 번호를 확인할 수 있다. |
| | | | | | :ref:`managing-archive-logs` 를 참고한다. |
+----------------+-------+-----------------+ +------------------------------------------------------------------------------------------------------+
| testdb_lgat | 512MB | | active | | | 활성로그(Active log) 파일 |
+----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+
| testdb_dwb | 1MB | | temporary | | Double write | | 플러시 (flush) 대상 페이지를 먼저 쓰기 위한 이중 쓰기 버퍼 (Double Write Buffer)저장 파일 |
| | | | data | | buffer | | |
+----------------+-------+-----------------+----------------+------------------------------------------------------------------------------------------------------+
* 데이터베이스 볼륨 파일
* 위의 표에서 *testdb*, *testdb_perm*, *testdb_temp*, *testdb_x003* ~ *testdb_x006* 은 데이터베이스 볼륨 파일로 분류된다.
* 파일 크기는 **cubrid createdb** 및 **cubrid addvoldb** 의 **\-\-db-volume-size** 옵션과 **cubrid.conf** 의 **db_volume_size** 에 의해 결정된다.
* 데이터베이스에 저장 공간이 부족해지면 새 볼륨이 자동 생성된다.
* 일시적 볼륨
* 일시적 볼륨은 일반적으로 일시적 데이터를 저장하는 데 사용된다. 이 볼륨은 데이터베이스 별로 자동 생성되고 삭제된다.
* 파일 크기는 **cubrid.conf** 의 **db_volume_size** 에 의해 결정된다.
* 로그 볼륨 파일
* 위의 표에서 *testdb_lgar_t*, *testdb_lgar224* 및 *testdb_lgat* 는 로그 볼륨 파일로 분류된다.
* 파일 크기는 **cubrid.conf** 의 **log_volume_size** 또는 **cubrid createdb** 의 **\-\-log-volume-size** 옵션에 의해 결정된다.
* 이중 쓰기 버퍼 (Double Write Buffer, DWB) 파일
* DWB 파일은 부분 쓰기 (Partial Write)로 인한 I/O 에러를 방지하기 위한 저장공간이다.
* 모든 데이터 페이지는 DWB 에 먼저 쓰여지고 난 후에 영구 데이터 볼륨에 있는 데이터 위치에 쓰여진다.
* 데이터베이스가 재시작될 때, 부분적으로 쓰여진 페이지들이 탐지되고 DWB 에서 대응되는 페이지로 대치된다.
* 파일 크기는 **cubrid.conf** 의 **double_write_buffer_size** 에 의해 결정된다. 만약 0으로 설정되었다면, DWB 는 사용되지 않고 DWB 파일도 생성되지 않는다.
.. note::
데이터베이스 재시작과 비정상 종료 시에도 보존해야 하는 데이터는 영구적 데이터 용도로 생성된 데이터베이스 볼륨에 저장된다. 이 볼륨은 테이블 행(힙 파일), 인덱스(b-tree 파일) 및 여러 시스템 파일을 저장한다.
질의 처리 및 정렬의 중간 결과와 최종 결과의 경우 일시적 저장소만 필요하다. 요구되는 일시적 데이터 크기에 따라 우선적으로 메모리에 저장된다(공간 크기는 **cubrid.conf** 에 지정된 시스템 파라미터 **temp_file_memory_size_in_pages** 에 의해 결정됨). 이를 초과하는 데이터는 디스크에 저장한다.
데이터베이스는 일시적 데이터를 위한 디스크 공간을 할당하기 위해 일반적으로 일시적 볼륨을 생성해 사용한다. 그러나 관리자는 **cubrid addvoldb -p temp** 명령을 사용해 일시적 데이터를 저장하기 위한 용도로 영구적 데이터베이스 볼륨을 할당할 수 있다. 이러한 영구적 데이터베이스 볼륨이 있는 경우 임시 데이터를 디스크 공간에 저장할 때 일시적 볼륨 보다 우선 사용한다.
일시적 데이터를 사용할 수 있는 질의의 예는 다음과 같다.
* **SELECT** 등의 결과 집합이 생성되는 질의
* **GROUP BY** 나 **ORDER BY** 가 포함된 질의
* 부질의(subquery)가 포함된 질의
* 정렬 병합(sort-merge) 조인이 수행되는 질의
* **CREATE INDEX** 질의문이 포함된 질의
일시적 데이터에 의해 시스템의 디스크 공간이 소진되는 것을 방지하려면 다음과 같이 조치할 것을 권장한다.
* 영구적 데이터베이스 볼륨을 미리 생성해 일시적 데이터에 필요한 저장 공간을 확보한다.
* **cubrid.conf** 에서 **temp_file_max_size_in_pages** 파라미터를 설정해 질의를 수행할 때 일시적 볼륨에 사용되는 공간의 크기를 제한한다(기본적으로는 제한 없음).
Day widened into its first perfection as we moved down the highroad toward a near fork whose right was to lead Harry and his solemn cortge southward, while the left should be our eastward course. Camille and I rode horseback, side by side, with no one near enough to smile at my sentimental laudations of the morning's splendors, or at her for repaying my eloquence with looks so full of tender worship, personal acceptance and self-bestowal, that to tell of them here would make as poor a show as to lift a sea-flower out of the sea; they call for piccolo notes and I am no musician. The little man elected to have a cab. When Bow Street was reached Prout had the satisfaction of finding that all his birds had been netted. He received the warm congratulations of his inspector modestly. Caloric or air engines. I did not feel very comfortable after what had happened to those soldiers who lost their lives so cruelly sudden, or in any case had been seriously wounded, while the officers took little notice of them. But it was desirable to behave as discreetly as possible, and so to get a permit to Maastricht. "Louvain, It will check up, that way, too, smiled Larry. "Me run away," thought Shorty, as they walked along. "Hosses couldn't drag me away. I only hope that house is 10 miles off." Reuben began to take off his coatyoung Realf drew back almost in disgust. "Well, would Robert have stolen money, or Albert disgraced your name, to get free, if you and your farm hadn't made them slaves? If you hadn't been a heartless slave-driver would George have died the other night alone on the Moor?or would Richard have taken advantage of a neighbour's charity to escape from you? Don't you see that your ambition has driven you to make slaves of your children?" "D?an't tell me," said Coalbran in the bar, "as it wurn't his fault. Foot-and-mouth can't just drop from heaven. He must have bought some furriners, and they've carried it wud 'em, surelye." But meantime a strange restlessness consumed her, tinctured by a horrible boldness. There were moments when she no longer was afraid of Handshut, when she felt herself impelled to seek him out, and make the most of the short time they had together. There could be no danger, for he was going so soon ... so few more words, so few more glances.... Thus her mind worked. "What mean you, woman?" quickly returned De Boteler; "do you accuse the keeper of my chase as having plotted against your son, or whom do you suspect?" Her face was shrivelled and yellow, and the dark full eyes that now, as it were, stood forth from the sunken cheeks, looked with a strange brightness on the scene, and seemed well adapted to stamp the character of witch on so withered a form. And perhaps there were few of those entirely uninterested in the matter who now gazed upon her, who would not have sworn that she merited the stake. "Thou art set over the people, and to the Lord's anointed I come to seek for justice." HoMEŷһëƬѸպ
ENTER NUMBET 0018www.b044.com.cn
www.hzlinfeng.com.cn
www.checkegg.com.cn
www.shhs8xmk.com.cn
www.dgzhongxing.com.cn
jkgtyy.com.cn
hefae.com.cn
tevk.com.cn
youyuy.com.cn
www.fggy121.com.cn