2015년 3월 31일 화요일

SUNDB GUI TOOL




1. SUNDB GUI TOOL


1.1. 개요

GUI SQL TOOL을 SUNDB와 연결하여 사용하기 위해 Execute Query라는 제품을 사용합니다. Execute Query는 http://www.executequery.org 에서 다운로드 합니다.



1.2. Introducing Execute Query

Execute Query is an operating system independent database utility written entirely in Java.
Using the flexibility provided by Java Database Connectivity (JDBC), Execute Query provides a simple way to interact with almost any database from simple queries to table creation and import/export of an entire schema's data. See Features for a list of some of the available tools.
If you find this software useful and would like to say thanks, donations are gratefully received.
This software was developed using IntelliJ IDEA who kindly provide Execute Query developers with free licenses, and Eclipse Java IDEs and jEdit on a Debian GNU/Linux system.
ej-technologies GmbH have also kindly provided licenses for JProfiler.
Execute Query has been tested under Windows, Linux, Solaris and Mac using Java Runtime Environment v1.6 - Java v1.6.0 (min) is recommended. If you do not have the required Java version please go to the Java website.
Execute Query is very much a work in progress and is continually being extended and refined with new features and tools. Interests of contribution are welcome.
Execute Query is available completely free of charge and will remain so under the GNU Public License.
<출처 : http://www.executequery.org/>




2. Execute Query 설치

2.1. 설치파일의 실행

Execute Query Java 기반의 프로그램으로 Java Runtime이 설치되어 있어야 합니다다운로드가 완료된 후 아래와 같이 설치 파일을 실행 합니다.

$> java –jar executequery-installer-v4.1.1.jar








2.2. Execute Query 실행

Execute Query 아이콘을 클릭하여 프로그램을 실행 합니다.



2.3. SUNDB 연결 설정

2.3.1. JDBC Driver 설정

좌측의 Driver Tab에서 “New JDBC Driver”를 선택합니다.


Driver Name에 “SUNDB” 라고 입력하고, Database는 “Other”를 선택 합니다.


JDBC URL은 “jdbc:sundb://127.0.0.1:22581/test”의 형식으로 입력하고, Class Name은 “sunje.sundb.jdbc.SundbDriver”를 입력 합니다.

“Add Library” 버튼을 클릭하여 SUNDB 설치시 제공되는 SUNDB JDBC드라이버를 선택 합니다

 JDBC Driver 는 SUNDB가 설치된 디렉토리에서 다운로드 받아 사용합니다.


[sunje@symphony ~]$ cd $SUNDB_HOME/lib
[sunje@symphony ~]$ 
[sunje@symphony lib]$ ls -la
합계 54036
drwxrwxr-x. 2 sunje sunje     4096 2015-03-05 20:28 .
drwxrwxr-x. 9 sunje sunje     4096 2015-03-05 20:28 ..
-rw-r--r--. 1 sunje sunje       14 2015-03-05 19:12 README
-rwxr-xr-x. 1 sunje sunje    20498 2015-03-05 19:52 libstib.so
-rw-r--r--. 1 sunje sunje 13187242 2015-03-05 20:16 libsundb.a
-rw-r--r--. 1 sunje sunje 13096278 2015-03-05 20:16 libsundba.a
lrwxrwxrwx. 1 sunje sunje       25 2015-03-05 20:28 libsundbas.so -> libsundbas.so.Trunk.2.2.0
-rwxr-xr-x. 1 sunje sunje  8642314 2015-03-05 20:17 libsundbas.so.Trunk.2.2.0
-rw-r--r--. 1 sunje sunje  4497506 2015-03-05 20:16 libsundbc.a
lrwxrwxrwx. 1 sunje sunje       30 2015-03-05 20:28 libsundbcs-ul32.so -> libsundbcs-ul32.so.Trunk.2.2.0
-rwxr-xr-x. 1 sunje sunje  3003998 2015-03-05 20:05 libsundbcs-ul32.so.Trunk.2.2.0
lrwxrwxrwx. 1 sunje sunje       30 2015-03-05 20:28 libsundbcs-ul64.so -> libsundbcs-ul64.so.Trunk.2.2.0
-rwxr-xr-x. 1 sunje sunje  3003998 2015-03-05 20:06 libsundbcs-ul64.so.Trunk.2.2.0
-rw-r--r--. 1 sunje sunje   143654 2015-03-05 20:17 libsundbesql.a
lrwxrwxrwx. 1 sunje sunje       28 2015-03-05 20:28 libsundbesqls.so -> libsundbesqls.so.Trunk.2.2.0
-rwxr-xr-x. 1 sunje sunje    90615 2015-03-05 20:12 libsundbesqls.so.Trunk.2.2.0
lrwxrwxrwx. 1 sunje sunje       24 2015-03-05 20:28 libsundbs.so -> libsundbs.so.Trunk.2.2.0
-rwxr-xr-x. 1 sunje sunje  8653042 2015-03-05 20:17 libsundbs.so.Trunk.2.2.0
-rw-r--r--. 1 sunje sunje   312539 2015-03-05 20:13 sundb4.jar
-rw-r--r--. 1 sunje sunje   307075 2015-03-05 20:13 sundb5.jar
-rw-r--r--. 1 sunje sunje   328835 2015-03-05 20:12 sundb6.jar
[sunje@symphony lib]$ 



설정이 완료된후 저장 합니다.




2.3.2. Connection 설정

Connections Tab을 클릭하고 Context Menu에서 “New Connection”을 선택 합니다.


Database Browser  Connection 화면의 Connection Name에 “sundb”를 입력합니다.
User Name 부분에 “TEST”를 입력하고, Password 부분에 “test”를 입력합니다.(User Name에 입력하는 기본 계정명칭은 대문자를 사용합니다.)
SUNDB가 설치된 서버의 IP를 설정하고, SUNDB Listener의 포트번호를 설정합니다. (기본 포트번호는 22581을 사용합니다.)
JDBC URL 부분은 “jdbc:sundb://127.0.0.1:22581/test” 형식으로 입력하고, JDBC Driver부분에서는 이전에 설정한 SUNDB를 선택 합니다.
설정 값을 저장한 후 “Connect” 버튼을 클릭하여 접속을 확인 합니다.




3. GUI환경의 SQL사용

Query Editor를 이용하여 SQL을 사용합니다.







4. 접속을 위한 Service Listener 설정

SQL TOOL을 사용하기 위해서는 SUNDB가 설치된 서버에 서비스를 위한 접속서버가 실행되어 있어야 합니다.

4.1. Listener 서비스 시작


[sundb@cheroky ~]$ glsnr --start


4.2. Listener 서비스 상태 확인


[sundb@cheroky ~]$ glsnr --status
Listener process ID : 4139
Listener confiuration file : /home/sundb/sundb/sundb_mercury/sundb_data/conf/sundb.listener.conf
Unix Domain Path : /tmp/sundb-unix-22581
TCP Listen Port : 22581

>>> Listener is running <<<
[sundb@cheroky ~]$


4.3. Listener 서비스 종료


[sundb@cheroky ~]$ glsnr --stop


[sundb@cheroky ~]$ glsnr --status
>>> Listener is stopped <<<
[sundb@cheroky ~]$





5. 접속이 안될경우 SUNDB 설정


SUNDB 에 META Schema가 생성이 안되어 있을경우 SQL TOOL이 접속이 되지 않을수 있습니다. 

5.1. Meta Schema 생성 

$SUNDB_HOME/admin 디렉토리에 있는 3개의 Schema파일을 Build해 주어야 합니다.


[sunje@symphony lib]$ cd $SUNDB_HOME/admin
[sunje@symphony admin]$
[sunje@symphony admin]$ ls -la
합계 988
drwxrwxr-x. 2 sunje sunje   4096 2015-03-05 20:28 .
drwxrwxr-x. 9 sunje sunje   4096 2015-03-05 20:28 ..
-rw-r--r--. 1 sunje sunje 756383 2015-03-05 19:12 DictionarySchema.sql
-rw-r--r--. 1 sunje sunje 141152 2015-03-05 19:12 InformationSchema.sql
-rw-r--r--. 1 sunje sunje  94640 2015-03-05 19:12 PerformanceViewSchema.sql
-rw-r--r--. 1 sunje sunje     21 2015-03-05 19:12 README
[sunje@symphony admin]$
[sunje@symphony admin]$ gsql --as sysdba --import DictionarySchema.sql
...
[sunje@symphony admin]$ gsql --as sysdba --import InformationSchema.sql 
...
[sunje@symphony admin]$ gsql --as sysdba --import PerformanceViewSchema.sql 
[sunje@symphony admin]$




SUNDB redo log file path 변경


SUNDB Redo Log 파일의 경로 변경



SYSDBA 계정으로 접속하여 DATABASE를 종료



gSQL> \connect as sysdba
gSQL> \shutdown immediate;

Shutdown success

gSQL>
gSQL>



DATABASE를 MOUNT 상태로 startup



gSQL> \startup mount 
gSQL>
gSQL> select * from v$instance;

RELEASE_VERSION                       STARTUP_TIME               INSTANCE_STATUS DATA_ACCESS_MODE
------------------------------------- -------------------------- --------------- ----------------
Release Mercury.2.2.1 revision(14629) 2015-03-31 13:37:34.361397 MOUNTED         NONE          

1 row selected.

gSQL>



현재의 Redo 로그 파일을 조회 (현재는 0~3번 까지 4개의 GROUP이 존재한다)



gSQL> select * from v$logfile;

GROUP_ID FILE_NAME                                                   GROUP_STATE FILE_SEQ FILE_SIZE
-------- ----------------------------------------------------------- ----------- -------- ---------
       0 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_0_0.log CURRENT            4 104857600
       1 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_1_0.log INACTIVE           1 104857600
       2 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_2_0.log INACTIVE           2 104857600
       3 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_3_0.log INACTIVE           3 104857600

4 rows selected.

gSQL>



group 4 를 추가해 본다. (기존 경로가 아닌 새로운 경로에 추가)



gSQL> alter database add logfile group 4 ('/home/sunje/sundb/sundb_mercury/sundb_data/db/redo_4_0.log') size 15m;

Database altered.

gSQL> select * from v$logfile;

GROUP_ID FILE_NAME                                                   GROUP_STATE FILE_SEQ FILE_SIZE
-------- ----------------------------------------------------------- ----------- -------- ---------
       0 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_0_0.log CURRENT            4 104857600
       4 /home/sunje/sundb/sundb_mercury/sundb_data/db/redo_4_0.log  UNUSED            -1  15728640
       1 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_1_0.log INACTIVE           1 104857600
       2 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_2_0.log INACTIVE           2 104857600
       3 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_3_0.log INACTIVE           3 104857600

5 rows selected.

gSQL> alter system switch logfile;

System altered.

gSQL> select * from v$logfile;

GROUP_ID FILE_NAME                                                   GROUP_STATE FILE_SEQ FILE_SIZE
-------- ----------------------------------------------------------- ----------- -------- ---------
       0 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_0_0.log ACTIVE             4 104857600
       4 /home/sunje/sundb/sundb_mercury/sundb_data/db/redo_4_0.log  CURRENT            5  15728640
       1 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_1_0.log INACTIVE           1 104857600
       2 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_2_0.log INACTIVE           2 104857600
       3 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_3_0.log INACTIVE           3 104857600

5 rows selected.



기존 Redo 로그파일인 3번을 삭제한다.



gSQL> alter database drop logfile group 3;

Database altered.

gSQL>
gSQL> select * from v$logfile;

GROUP_ID FILE_NAME                                                   GROUP_STATE FILE_SEQ FILE_SIZE
-------- ----------------------------------------------------------- ----------- -------- ---------
       0 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_0_0.log ACTIVE             4 104857600
       4 /home/sunje/sundb/sundb_mercury/sundb_data/db/redo_4_0.log  CURRENT            5  15728640
       5 /home/sunje/sundb/sundb_mercury/sundb_data/db/redo_5_0.log  UNUSED            -1  15728640
       1 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_1_0.log INACTIVE           1 104857600
       2 /home/sunje/sundb/sundb_mercury/sundb_data/wal/redo_2_0.log INACTIVE           2 104857600

5 rows selected.



DATABASE를 OPEN하여 사용할수 있다.



gSQL> alter system open database;

System altered.

gSQL> select * from v$instance;

RELEASE_VERSION                       STARTUP_TIME               INSTANCE_STATUS DATA_ACCESS_MODE
------------------------------------- -------------------------- --------------- ----------------
Release Mercury.2.2.1 revision(14629) 2015-03-31 13:37:34.361397 OPEN            READ_WRITE    

1 row selected.

gSQL>





2015년 3월 20일 금요일

eclipse에서 SUNDB E-SQLC Debug하기





1. Use SUNDB Precompiler in eclipse CDT


1.1. eclipse를 이용하여 Project를 생성한다.



1.2. 생성한 Project Properties를 클릭한다.





1.3. Project->Properties->C/C++ General->Paths and Symbols

1.3.1. Include -> Add Button 클릭한다

1.3.2. File system Button 클릭하여 SUNDB library include 경로를 설정한다.




1.3.3. Library Paths-> Add Button 클릭한다

1.3.4. File system Button 클릭하여 SUNDB library lib경로를 설정한다.




1.3.5. 설정된 모습은 아래와 같다.



1.3.6. Libraries-> Add Button 클릭한다

1.3.7. SUNDB ESQL Library SUNDB library, 그외 사용 library를 설정한다.



1.3.8. 설정이 완료된 후 Apply Button을 클릭하면 아래와 같은 화면이 출력된다.

1.3.8.1.  Yes Button 클릭



1.3.9. OK Button을 클릭하여 Properties->Paths and Symbols 설정이 화면을 닫는다.




1.4. 생성된 Project를 선택하고 Build Project를 클릭하여 Build를 수행한다.





1.4.1. Build가 완료되면 하단의 Console 창에 설정한 library 가 보여야 된다. 설정한 library가 보이지 않으면 잘못된 것이므로 처음부터 다시 한다.



1.5. 생성한 Project->Properties를 클릭한다.



1.5.1. Project->C/C++ Build를 선택한다.

1.5.1.1. Builder Settings->Makefile generation 부분의 Generate Makefile automatically 부분은 Uncheck한다.

1.5.1.2. Apply Button 클릭하고, OK Button을 클릭하여 화면을 닫는다.




1.6. Console 창을 열어 생성된 Project Directory로 이동한다



1.6.1. Directory에 생성된 파일을 확인한다



1.7. {생성된 프로젝트 Directory}/Debug/src Directory로 이동한다.

1.7.1. Vi를 이용하여 subdir.mk 파일을 열어본다.



1.7.2. subdir.mk의 내용은 아래와 같다, 이 파일을 수정할 것이다.





1.7.3. subdir.mk 파일에 Precompile 명령을 추가한다.


#SUNDB Pre-Compiler
../src/%.c: ../src/%.gc
        @echo 'Building file: $<'
        @echo 'Invoking: GCC C Compiler'
        gpec --output "$@" "$<"
        @echo 'Finished building: $<'
        @echo ' '


1.7.4. Precompile 명령 추가 후 모습은 아래와 같다.

1.7.4.1. subdir.mk File을 저장한다.



1.8. 생성한 Project에서 default로 생성된 소스파일의 이름을 변경한다.




1.8.1. 파일이름 중 확장자 부분만 *.gc로 변경한다.



1.9. 변경이 완료된 파일에 SUNDB ESQLC Code를 작성한다.




1.9.1. Source Coding이 완료되었다면 Clean Project를 한번 수행한다.




1.9.2. 그리고 Build Project를 수행한다.




1.9.3. Build가 완료되면 하단의 Console창에 아래와 같이 Build 정보가 출력된다.



1.10. 이제 eclipse를 이용하여 SUNDB ESQLC Debugging 한다.



2. Eclipse IDE for C/C++ Developers





SUNDB license 설정하기



license 설정


$SUNDB_HOME/license 디렉토리에 license 파일이 없을경우 생성합니다.


[sunje@symphony ~]$ cd $SUNDB_HOME/license
[sunje@symphony license]$ pwd
/home/sunje/sundb/sundb_mercury/sundb_home/license
[sunje@symphony license]$ ls -la
합계 16
drwxrwxr-x. 2 sunje sunje 4096 2015-03-05 20:30 .
drwxrwxr-x. 9 sunje sunje 4096 2015-03-05 20:28 ..
-rw-r--r--. 1 sunje sunje   13 2015-03-05 19:12 README
-rw-rw-r--. 1 sunje sunje  129 2015-03-05 20:30 license
[sunje@symphony license]$
[sunje@symphony license]$ cat license
49CB2A8543999970F366298C32285ECE8D2048A5E34DFD8809D7AAC0EC45D6EC71D7AAC
[sunje@symphony license]$
[sunje@symphony license]$

SQL Explain Plan & SQL Trace Log



SQL Explain Plan


SQL 실행 계획은 Query Optimizer에서 여러 Candidate Plan 중 가장 좋은 Plan으로 선택된 Plan을 실제 수행을 위한 형태로 구성된 것을 말한다. SQL 실행 계획은 실행을 위한 Node 단위로 구분이 되며, 각 Node는 자신이 수행해야 하는 Filter 등을 갖는다.


\explain plan : 실행결과 및 실행계획 출력

gSQL> \explain plan SELECT id, name FROM t1 ORDER BY 1;


\explain plan only : 실행 계획만 출력

gSQL> \explain plan only SELECT id, name FROM t1 ORDER BY 1;


\explain plan verbose : 실행결과에 따른 소요시간 출력

gSQL> \explain plan verbose SELECT id, name FROM t1 ORDER BY 1;


ID NAME
-- ----------
1 leekmo
2 jhkim
3 bsyou

3 rows selected.


>>>  start print plan

< Execution Plan >
======================================================================================================
|  IDX  |  NODE DESCRIPTION                                            |       ROWS | Total Time     |
------------------------------------------------------------------------------------------------------
|    0  |  SELECT STATEMENT                                            |            | 0:00:00.000009 |
|    1  |    TABLE ACCESS ("T1")                                       |          9 | 0:00:00.000008 |
======================================================================================================

     1  -  READ COLUMNS : ID, NAME

<<<  end print plan







SQL Trace Log


SQL Trace Log는 사용자의 질의 수행에 대한 분석 가능한 정보를 기록하는 Log이다. SQL Trace Log는 $SUNDB_DATA/trc 디렉토리에 생성되며, 프로세스 ID 와 세션 ID로 구분되어 각각 독립된 파일로 생성된다. SQLTrace Log는 사용자의 질의, SQL 실행 계획, SQL 처리 과정별 수행시간 등 여러 정보로 구성되어 파일에 출력된다.


SQL Trace Log 출력 (Trace Log 옵션은 SYSDBA 계정에서 설정)


gSQL> \CONNECT AS SYSDBA

# trace log 출력
gSQL> ALTER SYSTEM SET TRACE_LOG_ID = 70200;

System altered.

# trace log 시간을 상세하게
gSQL> ALTER SYSTEM SET TRACE_LOG_TIME_DETAIL = ON;

System altered.



SQL Trace Log 해제


# trace log 해제
gSQL> ALTER SYSTEM SET TRACE_LOG_ID = 0;

System altered.

# trace log 시간 해제
gSQL> ALTER SYSTEM SET TRACE_LOG_TIME_DETAIL = OFF;

System altered.



SQL Trace Log는 trc 디렉토리 아래 파일이 생기며 파일명에 대한 규칙은 아래와 같다.


opt_p[프로세스ID]_s[세션ID].trc




SQL Trace Log 확인


[neuron@song ~]$ cd $SUNDB_DATA/trc
[neuron@song trc]$ ls -la
합계 48
drwxrwxr-x. 2 neuron neuron  4096 2015-03-20 17:43 .
drwxrwxr-x. 8 neuron neuron  4096 2015-03-19 13:04 ..
-rw-r--r--. 1 neuron neuron    15 2015-03-19 00:41 README
-rw-rw-r--. 1 neuron neuron  5045 2015-03-20 17:44 opt_p23232_s27.trc
-rw-rw-r--. 1 neuron neuron 24876 2015-03-20 17:24 system.trc
[neuron@song trc]$
[neuron@song trc]$




[neuron@song~]$ vi opt_p23232_s27.trc


< SQL Query String >
----------------------
select empno, ename from semp


< Execution Plan >
======================================================================================================
|  IDX  |  NODE DESCRIPTION                                            |       ROWS | Total Time     |
------------------------------------------------------------------------------------------------------
|    0  |  SELECT STATEMENT                                            |            | 0:00:00.000009 |
|    1  |    TABLE ACCESS ("SEMP")                                     |          9 | 0:00:00.000008 |
======================================================================================================

     1  -  READ COLUMNS : EMPNO, ENAME



< Result >
----------------------
  SUCCESS


< Execution Type >
----------------------
  DIRECT EXECUTE


< Bind Param Value >
--------------------------
  No Bind Param.

< Time Info >
====================================================
| Module    | Time           | Rate     | Call     |
----------------------------------------------------
| Parse     | 0:00:00.000021 |  14.89 % |        1 |
| Validate  | 0:00:00.000038 |  26.95 % |        1 |
| Code Opt  | 0:00:00.000018 |  12.77 % |        1 |
| Optimizer | 0:00:00.000043 |  30.50 % |        1 |
| Data Opt  | 0:00:00.000007 |   4.96 % |        1 |
| Execute   | 0:00:00.000004 |   2.84 % |        1 |
| Fetch     | 0:00:00.000010 |   7.09 % |        1 |
| Total     | 0:00:00.000141 | 100.00 % |          |
====================================================





ACID(Atomicity, Consistency, Isolation, Durability)


reference : http://ko.wikipedia.org/wiki/ACID


ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜젝션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 이러한 특성들을 정의하였으며 자동으로 이들을 수행하는 기술을 개발해 냈다

1983년 앤드리스 류터(Andreas Reuter)와 테오 하더(Theo Härder)는 ACID라는 용어를 만들면서 이를 기술했다.

데이터베이스에서 데이터에 대한 하나의 논리적 실행단계를 트랜잭션이라고 한다. 예를 들어, 은행에서의 계좌이체를 트랜잭션이라고 할 수 있는데, 계좌이체 자체의 구현은 내부적으로 여러 단계로 이루어질 수 있지만 전체적으로는 '송신자 계좌의 금액 감소', '수신자 계좌의 금액 증가'가 한 동작으로 이루어져야 하는 것을 의미한다.


  • 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면 모두 실행이 안되었는지를 보장하는 능력이다. 자금 이체는 성공할 수도 실패할 수도 있지만 원자성은 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것이다.

  • 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.

  • 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.

  • 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.




2014년 12월 9일 화요일

그냥



CentOS
Release 6.5
Kernel Linux 2.6.32
GNOME 2.28.2



ps -ef | grep "gmaster" | grep $LOGNAME | kill -9 `awk '{print $2}'` 2> /dev/null
ps -ef | grep "gserver" | grep $LOGNAME | kill -9 `awk '{print $2}'` 2> /dev/null
ps -ef | grep "gdispatcher" | grep $LOGNAME | kill -9 `awk '{print $2}'` 2> /dev/null
ps -ef | grep "gbalancer" | grep $LOGNAME | kill -9 `awk '{print $2}'` 2> /dev/null
ps -ef | grep "glsnr" | grep $LOGNAME | kill -9 `awk '{print $2}'` 2> /dev/null
ipcs -m | grep $LOGNAME | awk '{print "ipcrm -m " $2}' | sh -v 2> /dev/null

rm ${SUNDB_DATA}/db/*.dbf ${SUNDB_DATA}/wal/*.ctl ${SUNDB_DATA}/wal/*.log ${SUNDB_DATA}/archive_log/*.log ${SUNDB_DATA}/backup/*.inc ${SUNDB_DATA}/trc/opt_* 2> /dev/null

rm ${SUNDB_DATA}/conf/sundb.properties.binary 2> /dev/null
gcreatedb --db_name="TEST_DB"

GSQL="gsql --as sysdba --no-prompt"
${GSQL} << EOF
\startup

--# for regression test
GRANT ALL PRIVILEGES ON DATABASE TO TEST WITH GRANT OPTION;
COMMIT;
EOF
gsql --as sysdba --silent --import $SUNDB_HOME/admin/DictionarySchema.sql
gsql --as sysdba --silent --import $SUNDB_HOME/admin/InformationSchema.sql
gsql --as sysdba --silent --import $SUNDB_HOME/admin/PerformanceViewSchema.sql



CREATE TABLESPACE META_DATA DATAFILE '/home/sundb/sundb_data/db/META_DATA.DBF' SIZE 5978M;

CREATE TEMPORARY TABLESPACE META_IDX MEMORY 'META_IDX' SIZE 5978M;

ALTER TABLESPACE MEM_TEMP_TBS ADD MEMORY 'META_TEMP.DBF' SIZE 2G;

ALTER TABLESPACE MEM_UNDO_TBS ADD DATAFILE 'META_UNDO.DBF' SIZE 2G;

CREATE USER meta3 IDENTIFIED BY meta3 DEFAULT TABLESPACE META_DATA TEMPORARY TABLESPACE MEM_TEMP_TBS;

GRANT CREATE SESSION ON DATABASE TO META3;
GRANT CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, ADD CONSTRAINT ON SCHEMA META3 TO META3;
GRANT SELECT TABLE ON SCHEMA META3 TO META3;
GRANT INSERT TABLE ON SCHEMA META3 TO META3;
GRANT UPDATE TABLE ON SCHEMA META3 TO META3;
GRANT DELETE TABLE ON SCHEMA META3 TO META3;

GRANT CREATE OBJECT ON TABLESPACE mem_data_tbs TO META3;
GRANT CREATE OBJECT ON TABLESPACE mem_data_tbs TO META3;
GRANT CREATE OBJECT ON TABLESPACE meta_idx TO META3;
GRANT CREATE OBJECT ON TABLESPACE mem_temp_tbs TO META3;