tag:blogger.com,1999:blog-13590856908262313382024-03-06T00:47:36.358+09:00Data Craft for Data InformerMy Real StoryAnonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-1359085690826231338.post-39436257598112591802017-12-11T17:16:00.001+09:002017-12-11T17:18:06.421+09:00EDB PostgreSQL Advence Server 를 설치 후 psql 로 접속시 Cannot read termcap database 메세지가 뜬다면 아래 메세지를 찾아 보니까 버그 케이스 같은데요. edb as10 에서도 발생을 하네요 <p><p>
ubuntu 에 설치를 하니까
<pre class="brush: sql">
1. 제품 설치 후 아래와 같은 메세지가 뜬다면
Password:
psql.bin (10.1.5)
Type "help" for help.
Cannot read termcap database;
using dumb terminal settings.
2. 환경변수에 readline 라이브러리를 미리 로드 하게 설정
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libreadline.so
3. 해당 readline 라이브러리 추가
yum install readline-devel
apt install libreadline-dev
</pre> Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-12498306069626914662017-08-16T17:10:00.001+09:002017-12-11T17:16:14.931+09:00갑자기 고민을 해본 어느 SQL
<pre class="brush: sql">
/*
Test DB : Oracle Enterprise 12.2.0.1 Single
*/
-- 01. test table 생성
CREATE TABLE "SCOTT"."MYTEST"
(
"ID" VARCHAR2(50) NOT NULL ENABLE,
"UPDATED" DATE NOT NULL ENABLE,
"MYNAME" VARCHAR2(100) NOT NULL ENABLE,
PRIMARY KEY ("ID", "UPDATED")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE
STATISTICS
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "USERS"
-- 02. 통계정보 설정
BEGIN
dbms_stats.set_column_stats ('SCOTT', 'MYTEST', 'ID', distcnt => 8 );
dbms_stats.set_column_stats ('SCOTT', 'MYTEST','UPDATED', distcnt => 300000);
dbms_stats.set_table_stats ('SCOTT', 'MYTEST', NUMROWS => 2400000);
dbms_stats.set_index_stats ('SCOTT', 'SYS_C0011249', NUMROWS => 2400000);
END;
-- 03. 원본 쿼리
SELECT *
FROM mytest T1
WHERE T1.updated = (SELECT max(updated)
FROM mytest
WHERE id = T1.id);
Plan hash value: 4215771275
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 8 | 992 | 2 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 8 | 992 | 2 (0)| 00:00:01 |
| 2 | NESTED LOOPS | | 8 | 992 | 2 (0)| 00:00:01 |
| 3 | VIEW | VW_SQ_1 | 8 | 288 | 1 (0)| 00:00:01 |
| 4 | HASH GROUP BY | | 8 | 288 | 1 (0)| 00:00:01 |
| 5 | INDEX FULL SCAN | SYS_C0011249 | 2400K| 82M| 1 (0)| 00:00:01 |
|* 6 | INDEX UNIQUE SCAN | SYS_C0011249 | 1 | | 1 (0)| 00:00:01 |
| 7 | TABLE ACCESS BY INDEX ROWID| MYTEST | 1 | 88 | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("ITEM_1"="T1"."ID" AND "T1"."UPDATED"="MAX(UPDATED)")
-- 04. 쿼리 변형
select *
from mytest aa,
(select /*+ index_ffs(bb) */
id, max(updated) as updated
from mytest bb
group by ID
) cc
where aa.id = cc.id
and aa.UPDATED = cc.updated
;
Plan hash value: 198263429
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 8 | 992 | 69 (96)| 00:00:01 |
| 1 | NESTED LOOPS | | 8 | 992 | 69 (96)| 00:00:01 |
| 2 | NESTED LOOPS | | 8 | 992 | 69 (96)| 00:00:01 |
| 3 | VIEW | | 8 | 288 | 68 (98)| 00:00:01 |
| 4 | HASH GROUP BY | | 8 | 288 | 68 (98)| 00:00:01 |
| 5 | INDEX FAST FULL SCAN | SYS_C0011249 | 2400K| 82M| 2 (0)| 00:00:01 |
|* 6 | INDEX UNIQUE SCAN | SYS_C0011249 | 1 | | 1 (0)| 00:00:01 |
| 7 | TABLE ACCESS BY INDEX ROWID| MYTEST | 1 | 88 | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("AA"."ID"="CC"."ID" AND "AA"."UPDATED"="CC"."UPDATED")
select
*
from mytest aa,
(select /*+ parallel_index(bb, 2) index_ffs(bb) */
id, max(updated) as updated
from mytest bb
group by ID
) cc
where aa.id = cc.id
and aa.UPDATED = cc.updated
;
Plan hash value: 1395081935
----------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 8 | 992 | 38 (93)| 00:00:01 | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 8 | 992 | 38 (93)| 00:00:01 | Q1,01 | P->S | QC (RAND) |
| 3 | NESTED LOOPS | | 8 | 992 | 38 (93)| 00:00:01 | Q1,01 | PCWP | |
| 4 | NESTED LOOPS | | 8 | 992 | 38 (93)| 00:00:01 | Q1,01 | PCWP | |
| 5 | VIEW | | 8 | 288 | 73 (98)| 00:00:01 | Q1,01 | PCWP | |
| 6 | HASH GROUP BY | | 8 | 288 | 73 (98)| 00:00:01 | Q1,01 | PCWP | |
| 7 | PX RECEIVE | | 8 | 288 | 73 (98)| 00:00:01 | Q1,01 | PCWP | |
| 8 | PX SEND HASH | :TQ10000 | 8 | 288 | 73 (98)| 00:00:01 | Q1,00 | P->P | HASH |
| 9 | HASH GROUP BY | | 8 | 288 | 73 (98)| 00:00:01 | Q1,00 | PCWP | |
| 10 | PX BLOCK ITERATOR | | 2400K| 82M| 2 (0)| 00:00:01 | Q1,00 | PCWC | |
| 11 | INDEX FAST FULL SCAN| SYS_C0011249 | 2400K| 82M| 2 (0)| 00:00:01 | Q1,00 | PCWP | |
|* 12 | INDEX UNIQUE SCAN | SYS_C0011249 | 1 | | 1 (0)| 00:00:01 | Q1,01 | PCWP | |
| 13 | TABLE ACCESS BY INDEX ROWID| MYTEST | 1 | 88 | 1 (0)| 00:00:01 | Q1,01 | PCWP | |
----------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
12 - access("AA"."ID"="CC"."ID" AND "AA"."UPDATED"="CC"."UPDATED")
--
-- Table 에 MYNAME 칼럼이 없다면
--
SELECT /*+ index_ffs(T1, SYS_C0011249) */
*
FROM mytest T1
WHERE T1.UPDATED = (
select
UPDATED
from
(SELECT
/*+ index_desc(mytest, SYS_C0011249) */
updated
FROM mytest
WHERE id = T1.id
ORDER BY updated DESC
)
where rownum <= 1
);
Plan hash value: 2051182498
-----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 36 | 3 (0)| 00:00:01 |
|* 1 | FILTER | | | | | |
| 2 | INDEX FAST FULL SCAN | SYS_C0011249 | 1 | 36 | 2 (0)| 00:00:01 |
|* 3 | COUNT STOPKEY | | | | | |
| 4 | VIEW | | 1 | 9 | 1 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN DESCENDING| SYS_C0011249 | 1 | 36 | 1 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("T1"."UPDATED"= (SELECT "UPDATED" FROM (SELECT /*+ INDEX_DESC ("MYTEST"
"SYS_C0011249") */ "UPDATED" "UPDATED" FROM "MYTEST" "MYTEST" WHERE "ID"=:B1 ORDER BY
"UPDATED" DESC) "from$_subquery$_002" WHERE ROWNUM<=1))
3 - filter(ROWNUM<=1)
5 - access("ID"=:B1)
select t1.*
FROM
(
SELECT
aa.id,
aa.updated
FROM
(
SELECT
t1.id,
t1.updated,
rank() over (partition BY id ORDER BY updated DESC) AS rnum
FROM mytest t1
) aa
WHERE rnum <= 1
) bb, mytest t1
where t1.id = bb.id
and t1.updated = bb.updated
;
</pre> Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-20374266229567583122017-05-11T18:34:00.004+09:002017-05-11T18:34:48.009+09:00생각의 상념<br />
내가 생각하는 것들이 무엇인지도 모르겠다.<br />
좀 쉬어야 하는데 그 동안 너무 달려 온거 같은데 지금의 현실에서 내가 쉰다는건 어렵다.<br />
한달에 나가야 하는 비용을 무시 할수 없고 또 가족의 생계 라는 문제도 무시 할수 없다.<br />
그런데 그래도 좀 쉬고 싶다.<br />
<br />Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-42633895659755519022017-04-19T16:53:00.003+09:002017-04-19T16:53:37.514+09:00Postgres 9.6 성능 이야기<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHmOvCyOjTdJw7lblmQHLs1TPUQy_seY3d6H3Oendh8mtyrFQT48jWeEM1GuOuTUS3I3Io-D8VTNkH37nPMsZu8jgA1TeF7EGtKewXOLoehlnS5Phq7-7l4q0PQvLhk6_vpEwMbXju58/s1600/x1400000280430.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHmOvCyOjTdJw7lblmQHLs1TPUQy_seY3d6H3Oendh8mtyrFQT48jWeEM1GuOuTUS3I3Io-D8VTNkH37nPMsZu8jgA1TeF7EGtKewXOLoehlnS5Phq7-7l4q0PQvLhk6_vpEwMbXju58/s320/x1400000280430.jpg" width="220" /></a></div>
<br />
<br />
<br />
<br />
<br />
<table border="0" cellpadding="0" cellspacing="0" style="background-color: #f8f8f8; font-family: Dotum, 돋움; width: 100%px;"><tbody>
<tr><td class="bookTitle1" height="24" style="color: #4d4d4d; font-size: 12px; line-height: 14px; padding: 2px 0px 0px;" valign="top"><b>도서]</b> <a href="https://www.blogger.com/null" style="color: #2d2d2d; font-weight: bold; line-height: 14px;">PostgreSQL 9.6 성능 이야기</a></td></tr>
<tr><td style="color: #4d4d4d; font-size: 12px; line-height: 18px;"><span class="Publisher" style="color: #959595; line-height: 14px;">저자</span> 김시연,최두원 <span class="Publisher" style="color: #959595; line-height: 14px;">| 출판사</span> 시연아카데미</td></tr>
</tbody></table>
<br /><div>
<br /></div>
<div>
기술적으로 탄탄한 책이다. 저자가 전직 엑셈 출신이라. 그 스타일이 묻어 난다.</div>
<div>
Postgres 디비는 현재 OpenSource DB 의 선두 주자며 모든 디비의 할아버지 정도 되는 아주 역사가 깊은 디비다. </div>
<div>
<br /></div>
<div>
이런 디비를 Source Code 레벨까지 분석을 할수 있다는 건 대단한 능력이라고 할수 있다. 그런데 다른 한편으로는 그런 지식이 필요 할 까 ? 하는 생각도 든다. </div>
<div>
<br /></div>
<div>
느낌으로 이런 IT 쪽의 책은 잘 안팔리거나 팔려도 극소수가 볼것 같다. 어쨋거나 나도 이런 책 좀 써봤음 좋겠다. </div>
Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-45605119132162562152017-04-18T11:36:00.000+09:002017-04-18T11:37:12.842+09:00MySQL Python Connect Driver
-. MySQL Python Connect Driver
Db Connect
<pre class="brush: python">
#!env python3
import mysql.connector
from mysql.connector import errorcode
config = {
'user': 'dbmgr',
'password': 'audtlr2',
'host': 'localhost',
'database': 'spp',
'raise_on_warnings': True,
'use_pure': True,
}
try:
cnx = mysql.connector.connect(**config)
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database dose not exists")
else:
print(err)
else:
cnx.close()
</pre> Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-78801869199617900412017-04-04T20:59:00.001+09:002017-04-04T21:00:11.309+09:00MySQL 쿼리 튜닝 하다가 생각 한번 해봐야 하는 경우
MySQL 쿼리 튜닝 하다가 생각 한번 해봐야 하는 경우
<p>
<p>
<p>
<pre class="brush: sql">
--
--
--
SELECT DISTINCT
placement_id
, zone_id
FROM ox_placement_zone_assoc assoc
WHERE EXISTS(SELECT 1
FROM ox_campaigns m INNER JOIN ox_clients c
ON m.clientid = c.clientid AND c.block_status = 'pass'
WHERE
m.status = 0 AND m.block_status = 'pass' AND m.deliverable <= 1 AND assoc.placement_id = m.campaignid)
;
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
| 1 | PRIMARY | c | ALL | PRIMARY | NULL | NULL | NULL | 6728 | Using where; Using temporary |
| 1 | PRIMARY | m | ref | PRIMARY,ox_campaigns_clientid | ox_campaigns_clientid | 3 | OPENX_V1_ADMIN.c.clientid | 3 | Using where |
| 1 | PRIMARY | assoc | ref | ox_placement_zone_assoc_placement_id | ox_placement_zone_assoc_placement_id | 4 | OPENX_V1_ADMIN.m.campaignid | 78 | Using index |
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
+------------------------------+------------+
| Status | Duration |
+------------------------------+------------+
| starting | 0.000070 |
| checking permissions | 0.000014 |
| checking permissions | 0.000012 |
| checking permissions | 0.000012 |
| Opening tables | 0.000034 |
| After opening tables | 0.000016 |
| System lock | 0.000014 |
| Table lock | 0.000017 |
| init | 0.000037 |
| optimizing | 0.000043 |
| statistics | 0.000040 |
| preparing | 0.000032 |
| executing | 0.000012 |
| Creating tmp table | 0.000037 |
| Copying to tmp table | 1.089634 |
| converting HEAP to Aria | 0.121867 |
| Creating index | 0.000091 |
| Repair by sorting | 0.912552 |
| Saving state | 0.000058 |
| Creating index | 0.000014 |
| converting HEAP to Aria | 0.006953 |
| Copying to tmp table on disk | 145.988661 | -- 메모리의 임시 테이블을 디스크로 내리면서 걸리는 시간 이 대부분
| Sending data | 1.860387 |
| end | 0.000047 |
| removing tmp table | 0.062840 |
| end | 0.000021 |
| query end | 0.000021 |
| closing tables | 0.000015 |
| Unlocking tables | 0.000031 |
| freeing items | 0.000028 |
| updating status | 0.000026 |
| cleaning up | 0.000041 |
+------------------------------+------------+
-- 현재 인스턴스의 메모리 사용 부분
# CACHES AND LIMITS #
tmp_table_size = 64M
max_heap_table_size = 64M
# 수정
tmp_table_size = 512M
max_heap_table_size = 512M
####################
개발
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
| 1 | PRIMARY | c | ALL | PRIMARY | NULL | NULL | NULL | 4668 | Using where; Using temporary |
| 1 | PRIMARY | m | ref | PRIMARY,ox_campaigns_clientid | ox_campaigns_clientid | 3 | OPENX_V1_ADMIN.c.clientid | 3 | Using where |
| 1 | PRIMARY | assoc | ref | ox_placement_zone_assoc_placement_id | ox_placement_zone_assoc_placement_id | 4 | OPENX_V1_ADMIN.m.campaignid | 76 | Using index |
+------+-------------+-------+------+--------------------------------------+--------------------------------------+---------+-----------------------------+------+------------------------------+
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
| 1 | PRIMARY | m | ref | PRIMARY,ox_campaigns_clientid,ox_campaigns_status | ox_campaigns_status | 6 | const,const | 2728 | Using index condition; Using where; Using temporary |
| 1 | PRIMARY | c | eq_ref | PRIMARY | PRIMARY | 3 | OPENX_V1_ADMIN.m.clientid | 1 | Using where |
| 1 | PRIMARY | assoc | ref | ox_placement_zone_assoc_placement_id | ox_placement_zone_assoc_placement_id | 4 | OPENX_V1_ADMIN.m.campaignid | 76 | Using index |
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
##################
delivery2@localhost:OPENX_V1_ADMIN 12:21:04>select status, block_status, count(*)
-> from ox_campaigns
-> group by 1, 2
->
-> ;
+--------+--------------+----------+
| status | block_status | count(*) |
+--------+--------------+----------+
| 0 | | 166 |
| 0 | pass | 5400 | -- 정의역
| 0 | block | 12060 |
| 2 | | 1 |
| 2 | pass | 36 |
| 2 | block | 20 |
| 3 | | 112 |
| 3 | pass | 20078 |
| 3 | block | 18450 |
| 4 | pass | 6 |
+--------+--------------+----------+
-- ox_campaigns index 구성
+--------------+------------+--------------------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------------+------------+--------------------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ox_campaigns | 0 | PRIMARY | 1 | campaignid | A | 50058 | NULL | NULL | | BTREE | | |
| ox_campaigns | 1 | ox_campaigns_clientid | 1 | clientid | A | 16686 | NULL | NULL | | BTREE | | |
| ox_campaigns | 1 | ox_campaigns_campaign_group_id | 1 | campaign_group_id | A | 32 | NULL | NULL | YES | BTREE | | |
+--------------+------------+--------------------------------+--------------+-------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
-- 인덱스 생성
-- 그러나 status 값이 변동이 빈번 할 수 있음
-- (2차)
alter table ox_campaigns
add key if not exists ox_campaigns_status (status, block_status) using BTREE ;
--
-- 개발 플랜
--
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
| 1 | PRIMARY | m | ref | PRIMARY,ox_campaigns_clientid,ox_campaigns_status | ox_campaigns_status | 6 | const,const | 2728 | Using index condition; Using where; Using temporary |
| 1 | PRIMARY | c | eq_ref | PRIMARY | PRIMARY | 3 | OPENX_V1_ADMIN.m.clientid | 1 | Using where |
| 1 | PRIMARY | assoc | ref | ox_placement_zone_assoc_placement_id | ox_placement_zone_assoc_placement_id | 4 | OPENX_V1_ADMIN.m.campaignid | 76 | Using index |
+------+-------------+-------+--------+---------------------------------------------------+--------------------------------------+---------+-----------------------------+------+-----------------------------------------------------+
--
-- 최종안
--
set global tmp_table_size = 512 * 1024 * 1024;
set global max_heap_table_size = 512 * 1024 * 1024;
Copying to tmp table on disk 사라짐
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000079 |
| checking permissions | 0.000015 |
| checking permissions | 0.000014 |
| checking permissions | 0.000015 |
| Opening tables | 0.000036 |
| After opening tables | 0.000016 |
| System lock | 0.000016 |
| Table lock | 0.000018 |
| init | 0.000040 |
| optimizing | 0.000045 |
| statistics | 0.000043 |
| preparing | 0.000036 |
| executing | 0.000015 |
| Creating tmp table | 0.000038 |
| Copying to tmp table | 5.617840 |
| Sending data | 1.745527 |
| end | 0.000019 |
| removing tmp table | 0.024801 |
| end | 0.000015 |
| query end | 0.000015 |
| closing tables | 0.000013 |
| Unlocking tables | 0.000018 |
| freeing items | 0.000020 |
| updating status | 0.000020 |
| cleaning up | 0.000019 |
+----------------------+----------+
</pre> Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-71843100142799085392017-03-14T17:42:00.002+09:002017-03-14T17:42:41.257+09:00Oracle Slient Install-. 간단한 스크립트
<p>
<p>
<pre class="brush: sql">
./runInstaller -silent -ignoreSysPrereqs -responseFile /tmp/oui12102.rsp
####################################################################
## Copyright(c) Oracle Corporation 1998,2014. All rights reserved.##
## ##
## Specify values for the variables listed below to customize ##
## your installation. ##
## ##
## Each variable is associated with a comment. The comment ##
## can help to populate the variables with the appropriate ##
## values. ##
## ##
## IMPORTANT NOTE: This file contains plain text passwords and ##
## should be secured to have read permission only by oracle user ##
## or db administrator who owns this installation. ##
## ##
####################################################################
#-------------------------------------------------------------------------------
# Do not change the following system generated value.
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0
#-------------------------------------------------------------------------------
# Specify the installation option.
# It can be one of the following:
# - INSTALL_DB_SWONLY
# - INSTALL_DB_AND_CONFIG
# - UPGRADE_DB
#-------------------------------------------------------------------------------
oracle.install.option=INSTALL_DB_SWONLY
#-------------------------------------------------------------------------------
# Specify the hostname of the system as set during the install. It can be used
# to force the installation to use an alternative hostname rather than using the
# first hostname found on the system. (e.g., for systems with multiple hostnames
# and network interfaces)
#-------------------------------------------------------------------------------
ORACLE_HOSTNAME=obtest1
#-------------------------------------------------------------------------------
# Specify the Unix group to be set for the inventory directory.
#-------------------------------------------------------------------------------
UNIX_GROUP_NAME=oinstall
#-------------------------------------------------------------------------------
# Specify the location which holds the inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
INVENTORY_LOCATION=/u01/app/oraInventory
#-------------------------------------------------------------------------------
# Specify the languages in which the components will be installed.
#
# en : English ja : Japanese
# fr : French ko : Korean
# ar : Arabic es : Latin American Spanish
# bn : Bengali lv : Latvian
# pt_BR: Brazilian Portuguese lt : Lithuanian
# bg : Bulgarian ms : Malay
# fr_CA: Canadian French es_MX: Mexican Spanish
# ca : Catalan no : Norwegian
# hr : Croatian pl : Polish
# cs : Czech pt : Portuguese
# da : Danish ro : Romanian
# nl : Dutch ru : Russian
# ar_EG: Egyptian zh_CN: Simplified Chinese
# en_GB: English (Great Britain) sk : Slovak
# et : Estonian sl : Slovenian
# fi : Finnish es_ES: Spanish
# de : German sv : Swedish
# el : Greek th : Thai
# iw : Hebrew zh_TW: Traditional Chinese
# hu : Hungarian tr : Turkish
# is : Icelandic uk : Ukrainian
# in : Indonesian vi : Vietnamese
# it : Italian
#
# all_langs : All languages
#
# Specify value as the following to select any of the languages.
# Example : SELECTED_LANGUAGES=en,fr,ja
#
# Specify value as the following to select all the languages.
# Example : SELECTED_LANGUAGES=all_langs
#-------------------------------------------------------------------------------
SELECTED_LANGUAGES=en,en_GB
#-------------------------------------------------------------------------------
# Specify the complete path of the Oracle Home.
#-------------------------------------------------------------------------------
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
#-------------------------------------------------------------------------------
# Specify the complete path of the Oracle Base.
#-------------------------------------------------------------------------------
ORACLE_BASE=/u01/app/oracle
#-------------------------------------------------------------------------------
# Specify the installation edition of the component.
#
# The value should contain only one of these choices.
# - EE : Enterprise Edition
#-------------------------------------------------------------------------------
oracle.install.db.InstallEdition=EE
###############################################################################
# #
# PRIVILEGED OPERATING SYSTEM GROUPS #
# ------------------------------------------ #
# Provide values for the OS groups to which OSDBA and OSOPER privileges #
# needs to be granted. If the install is being performed as a member of the #
# group "dba", then that will be used unless specified otherwise below. #
# #
# The value to be specified for OSDBA and OSOPER group is only for UNIX based #
# Operating System. #
# #
###############################################################################
#------------------------------------------------------------------------------
# The DBA_GROUP is the OS group which is to be granted OSDBA privileges.
#-------------------------------------------------------------------------------
oracle.install.db.DBA_GROUP=dba
#------------------------------------------------------------------------------
# The OPER_GROUP is the OS group which is to be granted OSOPER privileges.
# The value to be specified for OSOPER group is optional.
#------------------------------------------------------------------------------
oracle.install.db.OPER_GROUP=
#------------------------------------------------------------------------------
# The BACKUPDBA_GROUP is the OS group which is to be granted OSBACKUPDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.BACKUPDBA_GROUP=dba
#------------------------------------------------------------------------------
# The DGDBA_GROUP is the OS group which is to be granted OSDGDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.DGDBA_GROUP=dba
#------------------------------------------------------------------------------
# The KMDBA_GROUP is the OS group which is to be granted OSKMDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.KMDBA_GROUP=dba
###############################################################################
# #
# Grid Options #
# #
###############################################################################
#------------------------------------------------------------------------------
# Specify the type of Real Application Cluster Database
#
# - ADMIN_MANAGED: Admin-Managed
# - POLICY_MANAGED: Policy-Managed
#
# If left unspecified, default will be ADMIN_MANAGED
#------------------------------------------------------------------------------
oracle.install.db.rac.configurationType=
#------------------------------------------------------------------------------
# Value is required only if RAC database type is ADMIN_MANAGED
#
# Specify the cluster node names selected during the installation.
# Leaving it blank will result in install on local server only (Single Instance)
#
# Example : oracle.install.db.CLUSTER_NODES=node1,node2
#------------------------------------------------------------------------------
oracle.install.db.CLUSTER_NODES=
#------------------------------------------------------------------------------
# This variable is used to enable or disable RAC One Node install.
#
# - true : Value of RAC One Node service name is used.
# - false : Value of RAC One Node service name is not used.
#
# If left blank, it will be assumed to be false.
#------------------------------------------------------------------------------
oracle.install.db.isRACOneInstall=false
#------------------------------------------------------------------------------
# Value is required only if oracle.install.db.isRACOneInstall is true.
#
# Specify the name for RAC One Node Service
#------------------------------------------------------------------------------
oracle.install.db.racOneServiceName=
#------------------------------------------------------------------------------
# Value is required only if RAC database type is POLICY_MANAGED
#
# Specify a name for the new Server pool that will be configured
# Example : oracle.install.db.rac.serverpoolName=pool1
#------------------------------------------------------------------------------
oracle.install.db.rac.serverpoolName=
#------------------------------------------------------------------------------
# Value is required only if RAC database type is POLICY_MANAGED
#
# Specify a number as cardinality for the new Server pool that will be configured
# Example : oracle.install.db.rac.serverpoolCardinality=2
#------------------------------------------------------------------------------
oracle.install.db.rac.serverpoolCardinality=0
###############################################################################
# #
# Database Configuration Options #
# #
###############################################################################
#-------------------------------------------------------------------------------
# Specify the type of database to create.
# It can be one of the following:
# - GENERAL_PURPOSE
# - DATA_WAREHOUSE
# GENERAL_PURPOSE: A starter database designed for general purpose use or transaction-heavy applications.
# DATA_WAREHOUSE : A starter database optimized for data warehousing applications.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#-------------------------------------------------------------------------------
# Specify the Starter Database Global Database Name.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.globalDBName=
#-------------------------------------------------------------------------------
# Specify the Starter Database SID.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.SID=
#-------------------------------------------------------------------------------
# Specify whether the database should be configured as a Container database.
# The value can be either "true" or "false". If left blank it will be assumed
# to be "false".
#-------------------------------------------------------------------------------
oracle.install.db.ConfigureAsContainerDB=false
#-------------------------------------------------------------------------------
# Specify the Pluggable Database name for the pluggable database in Container Database.
#-------------------------------------------------------------------------------
oracle.install.db.config.PDBName=
#-------------------------------------------------------------------------------
# Specify the Starter Database character set.
#
# One of the following
# AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2,
# EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257,
# BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6,
# AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8,
# IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE,
# KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950,
# ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.characterSet=
#------------------------------------------------------------------------------
# This variable should be set to true if Automatic Memory Management
# in Database is desired.
# If Automatic Memory Management is not desired, and memory allocation
# is to be done manually, then set it to false.
#------------------------------------------------------------------------------
oracle.install.db.config.starterdb.memoryOption=false
#-------------------------------------------------------------------------------
# Specify the total memory allocation for the database. Value(in MB) should be
# at least 256 MB, and should not exceed the total physical memory available
# on the system.
# Example: oracle.install.db.config.starterdb.memoryLimit=512
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.memoryLimit=
#-------------------------------------------------------------------------------
# This variable controls whether to load Example Schemas onto
# the starter database or not.
# The value can be either "true" or "false". If left blank it will be assumed
# to be "false".
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.installExampleSchemas=false
###############################################################################
# #
# Passwords can be supplied for the following four schemas in the #
# starter database: #
# SYS #
# SYSTEM #
# DBSNMP (used by Enterprise Manager) #
# #
# Same password can be used for all accounts (not recommended) #
# or different passwords for each account can be provided (recommended) #
# #
###############################################################################
#------------------------------------------------------------------------------
# This variable holds the password that is to be used for all schemas in the
# starter database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.ALL=
#-------------------------------------------------------------------------------
# Specify the SYS password for the starter database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.SYS=
#-------------------------------------------------------------------------------
# Specify the SYSTEM password for the starter database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.SYSTEM=
#-------------------------------------------------------------------------------
# Specify the DBSNMP password for the starter database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.DBSNMP=
#-------------------------------------------------------------------------------
# Specify the PDBADMIN password required for creation of Pluggable Database in the Container Database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.PDBADMIN=
#-------------------------------------------------------------------------------
# Specify the management option to use for managing the database.
# Options are:
# 1. CLOUD_CONTROL - If you want to manage your database with Enterprise Manager Cloud Control along with Database Express.
# 2. DEFAULT -If you want to manage your database using the default Database Express option.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.managementOption=DEFAULT
#-------------------------------------------------------------------------------
# Specify the OMS host to connect to Cloud Control.
# Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.omsHost=
#-------------------------------------------------------------------------------
# Specify the OMS port to connect to Cloud Control.
# Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.omsPort=0
#-------------------------------------------------------------------------------
# Specify the EM Admin user name to use to connect to Cloud Control.
# Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.emAdminUser=
#-------------------------------------------------------------------------------
# Specify the EM Admin password to use to connect to Cloud Control.
# Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.emAdminPassword=
###############################################################################
# #
# SPECIFY RECOVERY OPTIONS #
# ------------------------------------ #
# Recovery options for the database can be mentioned using the entries below #
# #
###############################################################################
#------------------------------------------------------------------------------
# This variable is to be set to false if database recovery is not required. Else
# this can be set to true.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.enableRecovery=false
#-------------------------------------------------------------------------------
# Specify the type of storage to use for the database.
# It can be one of the following:
# - FILE_SYSTEM_STORAGE
# - ASM_STORAGE
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.storageType=
#-------------------------------------------------------------------------------
# Specify the database file location which is a directory for datafiles, control
# files, redo logs.
#
# Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
#-------------------------------------------------------------------------------
# Specify the recovery location.
#
# Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
#-------------------------------------------------------------------------------
# Specify the existing ASM disk groups to be used for storage.
#
# Applicable only when oracle.install.db.config.starterdb.storageType=ASM_STORAGE
#-------------------------------------------------------------------------------
oracle.install.db.config.asm.diskGroup=
#-------------------------------------------------------------------------------
# Specify the password for ASMSNMP user of the ASM instance.
#
# Applicable only when oracle.install.db.config.starterdb.storage=ASM_STORAGE
#-------------------------------------------------------------------------------
oracle.install.db.config.asm.ASMSNMPPassword=
#------------------------------------------------------------------------------
# Specify the My Oracle Support Account Username.
#
# Example : MYORACLESUPPORT_USERNAME=abc@oracle.com
#------------------------------------------------------------------------------
MYORACLESUPPORT_USERNAME=
#------------------------------------------------------------------------------
# Specify the My Oracle Support Account Username password.
#
# Example : MYORACLESUPPORT_PASSWORD=password
#------------------------------------------------------------------------------
MYORACLESUPPORT_PASSWORD=
#------------------------------------------------------------------------------
# Specify whether to enable the user to set the password for
# My Oracle Support credentials. The value can be either true or false.
# If left blank it will be assumed to be false.
#
# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
#------------------------------------------------------------------------------
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
#------------------------------------------------------------------------------
# Specify whether user doesn't want to configure Security Updates.
# The value for this variable should be true if you don't want to configure
# Security Updates, false otherwise.
#
# The value can be either true or false. If left blank it will be assumed
# to be false.
#
# Example : DECLINE_SECURITY_UPDATES=false
#------------------------------------------------------------------------------
DECLINE_SECURITY_UPDATES=true
#------------------------------------------------------------------------------
# Specify the Proxy server name. Length should be greater than zero.
#
# Example : PROXY_HOST=proxy.domain.com
#------------------------------------------------------------------------------
PROXY_HOST=
#------------------------------------------------------------------------------
# Specify the proxy port number. Should be Numeric and at least 2 chars.
#
# Example : PROXY_PORT=25
#------------------------------------------------------------------------------
PROXY_PORT=
#------------------------------------------------------------------------------
# Specify the proxy user name. Leave PROXY_USER and PROXY_PWD
# blank if your proxy server requires no authentication.
#
# Example : PROXY_USER=username
#------------------------------------------------------------------------------
PROXY_USER=
#------------------------------------------------------------------------------
# Specify the proxy password. Leave PROXY_USER and PROXY_PWD
# blank if your proxy server requires no authentication.
#
# Example : PROXY_PWD=password
#------------------------------------------------------------------------------
PROXY_PWD=
#------------------------------------------------------------------------------
# Specify the Oracle Support Hub URL.
#
# Example : COLLECTOR_SUPPORTHUB_URL=https://orasupporthub.company.com:8080/
#------------------------------------------------------------------------------
COLLECTOR_SUPPORTHUB_URL=
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb1 -sid cdb1 -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OraPasswd1 \
-systemPassword OraPasswd1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OraPasswd1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS \
-ignorePreReqs
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-2167614561606160332017-03-09T17:24:00.000+09:002017-03-13T14:28:11.487+09:00나의 사적인 구름 연습 기계들피씨에 뱀웨어 로 아주 지극히 개인적인 구름 연습 기계들을 만들었다.<br />
<br />
일단 창문 8.1 , 그리고 이번에 신상인 오라꿀 12.2 버전을 팽귄에다 설치를 했다.<br />
<br />
추가로 악마 11.0 에 돌고래 5.7 을<br />
<br />
추가로 악마 11.0 에 코끼리 9.6 을<br />
<br />
추가로 창문 서버 2012 에 SQL 서버 2014 를<br />
<br />
공부 삼아서 지극히 개인적인 구름에 연습 기계들을 하나씩 하나씩 올려 봐야 겠다.<br />
<br />
오늘은 뭘 올릴까나 ?Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-10270703658749174202017-02-20T14:40:00.003+09:002017-02-20T14:40:54.814+09:00과거의 기억에서 부터<br />
옛날에 물이 먹어서 고장이 났던 핸드폰이 있었다.<br />
우연히 다시 찾아서 전원을 켜보니 다시 실행이 된다.<br />
가장 마지막 메일이 2014년 10월 달 그 이 후로 부터 2년 반 만에 다시 만났다.<br />
과거의 기억도 좀 남아 있고 또 추억의 사진도 몇장 건졌다.<br />
다시 친해져 볼까 한다. 이 아이랑 Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-35582538148114148962017-02-15T15:22:00.000+09:002017-02-15T15:22:55.924+09:00MySQL 의 날짜와 로우넘버MySQL 에서 Date 와 Rownum 을 만드는 쿼리 임 <p>
세상에는 나 보다 똑똑 하신 분들이 많네
<P><P><P><P>
<pre class="brush: sql">
/**
make date calander
*/
--
-- 현재 일자 부터 과거 로 몇일
--
SELECT dt.yyyymmdd
FROM (
SELECT
curdate() - INTERVAL (100*a.a + (10 * b.a) + (c.a)) DAY AS yyyymmdd
FROM (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
) AS a
CROSS JOIN (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9) AS c
) dt
where yyyymmdd BETWEEN curdate() - INTERVAL 10 day and curdate()
order by 1
;
--
-- 년도별 칼렌더
--
SELECT
ym
, min(CASE dw
WHEN 1
THEN d END) Sun
, min(CASE dw
WHEN 2
THEN d END) Mon
, min(CASE dw
WHEN 3
THEN d END) Tue
, min(CASE dw
WHEN 4
THEN d END) Wed
, min(CASE dw
WHEN 5
THEN d END) Thu
, min(CASE dw
WHEN 6
THEN d END) Fri
, min(CASE dw
WHEN 7
THEN d END) Sat
FROM
(
SELECT
date_format(dt, '%Y%m') ym
, WEEK(dt) w
, Day(dt) d
, DAYOFWEEK(dt) dw
FROM
(
SELECT concat(y, '0101') + INTERVAL a * 100 + b * 10 + c DAY AS dt
FROM
(
SELECT 0 a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
) aa,
(
SELECT 0 b
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
) bb,
(
SELECT 0 c
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
) cc,
(
SELECT '2018' y
) dd
WHERE a * 100 + b * 10 + c < DayOfYear(concat(y, '1231'))
) a
) a
GROUP BY ym, w
;
/**
MySQL Mk Rownum
*/
select
@rnum := @rnum + 1 as Rownum
from
( select @rnum := -1 ) r
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-42172295458912660202017-02-10T19:06:00.001+09:002017-02-10T19:06:06.508+09:00Tibero DB Create
간략하게 티베로 디비 만드는 스크립트 입니다.
<pre class="brush: sql">
# vi /etc/sysctl.conf
kernel.shmmax = 1073741824
kernel.shmall = 2097152
kernel.sem = 10000 32000 10000 10000
kernel.shmmni = 4096
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65000
* /etc/security/limits.conf 를 수정
# vi /etc/security/limits.conf
tibero soft nproc 2047
tibero hard nproc 16384
tibero soft nofile 1024
tibero hard nofile 65536
seforce 0
groupadd dba
useradd -g dba tibero
export TB_BASE=/opt/tibero
export TB_HOME=/opt/tibero/tibero6
export TB_SID=tibero
export TB_VER=tibero6
export TB_PROF_DIR=$TB_HOME/bin/prof
export JAVA_HOME=/opt/java
export PATH=$TB_HOME/bin:$TB_HOME/client/bin:$JAVA_HOME/bin:/bin:/usr/bin:/usr/local/bin:.
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$JAVA_HOME/lib:/lib64:/usr/lib64:/usr/local/lib:.
######## TIBERO alias ########
alias tbhome='cd $TB_HOME'
alias tbbin='cd $TB_HOME/bin'
alias tblog='cd $TB_HOME/instance/$TB_SID/log'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcli='cd ${TB_HOME}/client/config'
alias tbcliv='vi ${TB_HOME}/client/config/tbdsn.tbr'
cp license.xml $TB_HOME/license
cd $TB_HOME/bin
sh $TB_HOME/config/get_tip.sh
/*
############################################
### Database Identification
############################################
DB_NAME=TBTAC
LISTENER_PORT=8629
############################################
### File Configuration
############################################
DB_CREATE_FILE_DEST="/tibero/tbdata"
CONTROL_FILES="/dev/mapper/sdiskvg1-lvctl_20m_01vg1","/dev/mapper/sdiskvg2-lvctl_20m_01vg2"
############################################
### Memory & Session
############################################
MAX_SESSION_COUNT=50
TOTAL_SHM_SIZE=768M
MEMORY_TARGET=1536M
DBMS_LOG_TOTAL_SIZE_LIMIT=120M
TRACE_LOG_TOTAL_SIZE_LIMIT=300M
############################################
### Undo and Rollback Segments
############################################
#UNDO_RETENTION=900
UNDO_TABLESPACE="UNDOTBS0"
############################################
### Cache and I/O
############################################
DB_BLOCK_SIZE=8192
#DB_FILE_MULTIBLOCK_READ_COUNT=64
###########################################
### Archive Log Mode
############################################
LOG_ARCHIVE_FORMAT="arcTAC%t_%s_%r.arc"
LOG_ARCHIVE_DEST="/tibero/tibarch"
#_ARCHIVE_LAG_TARGET=21600
#_ARCHIVE_CLOSED_THREAD=Y
#_ARCHIVE_CLOSED_THREAD_DIE_ON_FAIL=N
############################################
### Statistics
############################################
#AUDIT_TRAIL=NONE
#AUDIT_SYS_OPERATIONS=N
#AUDIT_FILE_DEST="/tibero/tiblog/tac/audit"
############################################
### APM Report
############################################
#AUTOMATIC_PERFORMANCE_MONITORING=Y
#APM_SNAPSHOT_SAMPLING_INTERVAL=60
#APM_SNAPSHOT_RETENTION=7
#APM_SNAPSHOT_TOP_SQL_CNT=10
############################################
### Checkpoint
############################################
#_LOG_INC_CHECKPOINT_TIMEOUT=1
#_LOG_INC_CKPT_LAG_LIMIT_PCT=25
############################################
### Log Dest
############################################
#CM_LOG_DEST="/tibero/tiblog/tac/log/cm"
#DBMS_LOG_DEST="/tibero/tiblog/tac/log/dbmslog"
#EVENT_TRACE_DEST="/tibero/tiblog/tac/log/event"
#LSNR_LOG_DEST="/tibero/tiblog/tac/log/lsnr"
#SQL_TRACE_DEST="/tibero/tiblog/tac/log/sqltrace"
#TRACE_DUMP_DEST="/tibero/tiblog/tac/dump/tracedump"
#TRACE_LOG_DEST="/tibero/tiblog/tac/log/tracelog"
############################################
### Cluster Database
############################################
CLUSTER_DATABASE=Y
THREAD=0
LOCAL_CLUSTER_ADDR=10.10.1.101
LOCAL_CLUSTER_PORT=8631
LOCAL_CLUSTER_VIP=192.167.90.111
LOCAL_CLUSTER_NIC=enp0s8
LOCAL_CLUSTER_VIP_NETMASK=255.255.255.0
LOCAL_CLUSTER_VIP_BROADCAST=192.167.90.255
############################################
### TBCM Parameter
############################################
CM_CLUSTER_MODE=ACTIVE_SHARED
CM_FILE_NAME="/dev/mapper/sdiskvg1-lvtbcm_10m_01vg1","/dev/mapper/sdiskvg2-lvtbcm_10m_01vg2"
CM_PORT=8632
CM_HEARTBEAT_EXPIRE=60
CM_WATCHDOG_EXPIRE=50
#CM_NET_EXPIRE_MARGIN=10
CM_AUTO_VIP_FAILBACK=N
CM_ENABLE_CM_DOWN_NOTIFICATION=Y
CM_ENABLE_FAST_NET_ERROR_DETECTION=Y
CM_FENCE=Y
#_CM_ENABLE_VIP_ALIAS_CHECK=N
#_CM_ENABLE_VIP_ALIAS_RETRY=N
#_CM_REBOOT_RETRY_COUNT=3
############################################
### Miscellaneous
############################################
#ACTIVE_SESSION_HISTORY=Y
USE_NET_KEEPALIVE=Y
USE_RECYCLEBIN=Y
NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
#BIND_VARIABLE_CAPTURE=Y
#JOB_HISTORY_LOG=Y
TBTAC1=(
(INSTANCE=(HOST=192.167.90.101)
(PORT=8629)
(DB_NAME=TBTAC)
)
)
TBTAC=(
(INSTANCE=(HOST=192.167.90.111)
(PORT=8629)
(DB_NAME=TBTAC)
)
(INSTANCE=(HOST=192.167.90.211)
(PORT=8629)
(DB_NAME=TBTAC)
)
(LOAD_BALANACE=Y)
(USE_FAILOVER=Y)
)
*/
tbboot nomount
tbsql sys/tibero
/*
CREATE DATABASE "tibero"
USER SYS IDENTIFIED BY TIBERO
MAXDATAFILES 4096
maxinstances 8
CHARACTER SET MSWIN949
LOGFILE GROUP 0 ('redo01a.redo','redo01b.redo') SIZE 1024M,
GROUP 1 ('redo11a.redo','redo11b.redo') SIZE 1024M,
GROUP 2 ('redo21a.redo','redo21b.redo') SIZE 1024M,
GROUP 3 ('redo31a.redo','redo31b.redo') SIZE 1024M,
GROUP 4 ('redo41a.redo','redo41b.redo') SIZE 1024M
MAXLOGFILES 100
maxloggroups 255
MAXLOGMEMBERS 10
NOARCHIVELOG
DATAFILE 'system001.dtf' SIZE 1024M
AUTOEXTEND ON NEXT 16M MAXSIZE 3072M
DEFAULT TABLESPACE USR
DATAFILE 'usr001.dtf' SIZE 128M
AUTOEXTEND ON NEXT 16M MAXSIZE 3072M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE 'temp001.dtf' SIZE 1024M
AUTOEXTEND ON NEXT 16M MAXSIZE 10240M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
UNDO TABLESPACE UNDO
DATAFILE 'undo001.dtf' SIZE 1024M
AUTOEXTEND ON NEXT 16M MAXSIZE 10240M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
*/
tbdown normal
tbboot
sh $TB_HOME/scripts/system.sh -p1 tibero -p2 syscat -a1 y -a2 y -a3 y -a4 y
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-16558117929326805472017-02-09T13:03:00.001+09:002017-02-09T13:03:14.199+09:00우리 회사 데이터베이스를 티베로로 변경하기<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgQy3qW6QkN0VoKP9ROykW9XgvWnP2mD8i1AdXlk7z0MwMc83ArzZW8SabB_Mipn0IGdTsK1ZUmbKLH4J0UfPCz6GFgsetVwq_psCEjRVKsocPHebXvmd8s1nG_tj0Fs6vx08Ey8Ll_A/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgQy3qW6QkN0VoKP9ROykW9XgvWnP2mD8i1AdXlk7z0MwMc83ArzZW8SabB_Mipn0IGdTsK1ZUmbKLH4J0UfPCz6GFgsetVwq_psCEjRVKsocPHebXvmd8s1nG_tj0Fs6vx08Ey8Ll_A/s320/1.jpg" width="213" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<h1 class="title">
<b>
우리 회사 데이터베이스를 티베로로 변경하기
</b>
</h1>
<span class="name">
우승헌
</span>
지음
<span class="line">|</span>
<span class="name" title="출판사">
<a href="http://www.kyobobook.co.kr/search/SearchKorbookMain.jsp?vPstrCategory=KOR&vPoutSearch=1&vPpubCD=23475&vPsKeywordInfo=%EC%98%81%EC%A7%84%EB%8B%B7%EC%BB%B4">영진닷컴</a>
</span>
<span class="line">|</span>
<span class="date" title="출간일">
2017년 01월 20일 출간 </span><br />
<br />
<br />
<span class="date" title="출간일"> 서평: 실제 프로젝트를 진행한 담당자가 적은 책이다.</span><br />
<span class="date" title="출간일"> 티베로의 기술력을 간접적으로 알수 있는 좋은 책 </span>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-2739247986105871732017-02-09T12:07:00.000+09:002017-02-09T12:07:21.393+09:00PostgreSQL 성능 최적화 <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWpbmZg4olsZspYd0JmodVI2maIYYvYUph2JiS3ulmIoUio41yJ3g6Z_FSafKDh7Rp43givokCSWtTFnNKpe9GOJM_BBM-mXXiq9MPMYaHT_geT1o9hb0XDPBzu9z5aou_jNCX3ZggGPE/s1600/x9788993827859.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWpbmZg4olsZspYd0JmodVI2maIYYvYUph2JiS3ulmIoUio41yJ3g6Z_FSafKDh7Rp43givokCSWtTFnNKpe9GOJM_BBM-mXXiq9MPMYaHT_geT1o9hb0XDPBzu9z5aou_jNCX3ZggGPE/s400/x9788993827859.jpg" width="302" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%px;"><tbody>
<tr>
<td class="bookTitle1" height="24" style="padding: 2 0 0 0;" valign="top">
<b>[도서]</b>
<a href="https://www.blogger.com/null">
PostgreSQL 성능 최적화
</a></td>
</tr>
<tr>
<td>
<span class="Publisher">저자</span> 그레고리 스미스 <span class="Publisher">| 출판사</span> 지앤선
</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
서평:</div>
<div class="separator" style="clear: both; text-align: left;">
번역이 엉망이다. 무슨 번역기 돌린듯한 느낌 그래서 내용에 집중을 못하겠다. </div>
Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-32096161462891086972017-01-24T14:16:00.000+09:002017-02-03T10:07:44.268+09:00MySQL or MariaDB FederatedX Storage Engine MySQL 계열에서 DB Link 기능 같은걸 찾아 보다 찾은 Storage Engine 이다.
<br />
MySQL 은 Federated Engine 이 기본적으로 탑재 되어 있다. 그리고 X 는 MariaDB에서 사용하는 확장 판이다.
<br />
또한 타겟에서 끌고 올때 소스의 버퍼에 올리기 때문에 통으로나 데이터량이 많으면 소스에 스와핑이 생기거나 OOM 이 생길 수 있다.
<br />
<br />
<br />
<pre class="brush: sql">/**
MySQL or MariaDB FederatedX Storage Engine
( like dblink of oracle)
*/
--
-- 01. Plugin Install
--
INSTALL PLUGIN federated SONAME 'ha_federatedx.so';
# my.cnf
federated # 이부분 추가
--
-- 02. Configure
--
connection=scheme://username:password@hostname:port/database/tablename
connection=scheme://username@hostname/database/tablename
connection=scheme://username:password@hostname/database/tablename
connection=scheme://username:password@hostname/database/tablename
ex)
connection=mysql://username:password@hostname:port/database/tablename
onnection="connection_one"
connection="connection_one/table_foo"
ex)
# 사용시 table name change 안됨
create server 'server_one' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'db1',
USER 'root',
PASSWORD '',
PORT 3306,
SOCKET '',
OWNER 'root');
ex)
CREATE TABLE federatedx.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='server_one';
# table name change 가능
CREATE TABLE test_table ENGINE=FEDERATED CONNECTION='mysql://root@127.0.0.1:9306/federatedx/test_federatedx';
--
-- 03. explain
-- ( 원격 테이블도 인덱스를 사용할수 있다.)
+------+-------------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+------+-------------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| 1 | SIMPLE | ox_clients | const | PRIMARY | PRIMARY | 3 | const | 1 | 100.00 | |
+------+-------------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
--
-- 99. 작업 절차
--
INSTALL PLUGIN federated SONAME 'ha_federatedx.so';
create database if not exists dblink;
grant all on dblink.* to `root`@`localhost`;
use dblink;
create server 'server_one' foreign data wrapper 'mysql' options
(
HOST '127.0.0.1',
DATABASE 'db1',
USER 'root',
PASSWORD '',
PORT 3306,
SOCKET '',
OWNER 'root'
);
create table if not exists dblink.tbl_link_01
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='server_one';
create table if not exists dblink.tbl_link_02
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root:aaaa@127.0.0.1:9306/federatedx/test_federatedx';
CREATE TABLE dblink.tbl_link_03
(
id int(20) NOT NULL auto_increment,
name varchar(32) NOT NULL default '',
other int(20) NOT NULL default '0',
PRIMARY KEY (id),
KEY name (name),
KEY other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:9306/federatedx/test_federatedx';
</pre>
<br />Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-30633835800046931402017-01-23T10:54:00.005+09:002017-01-23T10:56:43.495+09:00SQL 레벨업 DB 성능 최적화를 위한 SQL 실전 가이드 <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk3yiekh6Ghd3BzvTcVbtKL5-N1bzRauKSrHA7sH6VoVpXnGqq743KEACOTdgDTx8WKX50C02C6yyFS3o6J6m3IeyDti-WMBylHI5kXuHEtofAO-y-9hAnldrCr9tp9oSH3jVzI2JxLVI/s1600/x9788968482519.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk3yiekh6Ghd3BzvTcVbtKL5-N1bzRauKSrHA7sH6VoVpXnGqq743KEACOTdgDTx8WKX50C02C6yyFS3o6J6m3IeyDti-WMBylHI5kXuHEtofAO-y-9hAnldrCr9tp9oSH3jVzI2JxLVI/s320/x9788968482519.jpg" width="219" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h1 class="title">
<b>
SQL 레벨업
</b>
<span class="back">
<b>
DB 성능 최적화를 위한 SQL 실전 가이드
</b>
</span>
</h1>
<span class="name">
미크
</span>
지음
<span class="line">|</span>
<span class="name">윤인성</span>
옮김
<span class="line">|</span>
<span class="name" title="출판사">
<a href="http://www.kyobobook.co.kr/search/SearchKorbookMain.jsp?vPstrCategory=KOR&vPoutSearch=1&vPpubCD=07975&vPsKeywordInfo=%ED%95%9C%EB%B9%9B%EB%AF%B8%EB%94%94%EC%96%B4">한빛미디어</a>
</span>
<span class="line">|</span>
<span class="date" title="출간일">
2016년 01월 30일 출간 </span><br />
<br />
서평:<br />
가끔은 그럴때가 있다. 어려운 문제를 어떻게 SQL 로 풀어 낼까 하고 그런 고민에 대한 해답을 주는 책이다. 이책도 일본 엔지니어가 쓴 책인데... <br />
<span class="date" title="출간일"> </span>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-59327848710604675572017-01-18T13:53:00.000+09:002017-01-18T14:11:30.292+09:00Netflix Billing Migration to AWSNetflix Billing Migration 관련 Tech Blog 자료를 보다 간략하게 정리를 했음
기존 Oracle 에서 AWS 의 MySQL 로 넘어 가는 과정을 정리 했는데 느끼는 점이 많음
<P>
<p>
IDC (ORACLE) -> AWS(EC2+MySQL5.6) -> AWS Auroa
<p><p>
Master Replication -> DBDC
<p><p>
Read Slave -> Async Replication
<p><p>
<a href=" http://techblog.netflix.com/2016/06/netflix-billing-migration-to-aws.html">
http://techblog.netflix.com/2016/06/netflix-billing-migration-to-aws.html</a>
<a href="http://techblog.netflix.com/2016/07/netflix-billing-migration-to-aws-part-ii.html">http://techblog.netflix.com/2016/07/netflix-billing-migration-to-aws-part-ii.html
</a>
<a href="http://techblog.netflix.com/2016/08/netflix-billing-migration-to-aws-part.html">http://techblog.netflix.com/2016/08/netflix-billing-migration-to-aws-part.html
</a>
<p><p>
<pre class="brush: sql">
###
# Netflix MySQL Billing Database
# MySQL 5.6 + Linux
###
--
-- 01. Bluk Insert
--
innodb_log_file_size = 2048M
innodb_lru_scan_depth = 128
innodb_adaptive_hash_index = off
innodb_flush_neighbors = off
transaction_isolation = READ-COMMITTED
query_cache_size = 0
query_cache_type = 0
innodb_doublewrite = off
--
-- 02. High Transction
--
innodb_log_file_size = 2048M
innodb_lru_scan_depth = 128
innodb_adaptive_hash_index = off
innodb_flush_neighbors = off
transaction_isolation = READ-COMMITTED
query_cache_size = 0
query_cache_type = 0
innodb_doublewrite = off
innodb_max_dirty_pages_pct = 80
innodb_buffer_pool_instances = 8
innodb_log_buffer_size = 64<
--
-- 03 os kernel
--
kernel.numa_balancing = 0 # instead of numactl
vm.dirty_ratio = 40
vm.dirty_background_ratio = 5
vm.swappiness = 0
vm.aio-max-nr = 65535
vm.rq_affinity = 2
vm.scheduler = cfq
</pre>
Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-64482144138553386832017-01-13T15:57:00.001+09:002017-01-13T16:00:35.932+09:00 전문가를 위한 트러블슈팅 오라클 퍼포먼스 <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXaIQk3u5kDhyphenhyphenGYdKjnAIVaRT2O25ZbyxrFJ3whtQSeglc5Zi1yZs0cVzVsE8xr9jFIhXTIC4fpGl3MUd747nuW1wUxU41HpKHYRW_1Bg_qQPGaemI8FQZp5AvfPWwrUkxfF3q4gnvQRk/s1600/x9791185890449.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXaIQk3u5kDhyphenhyphenGYdKjnAIVaRT2O25ZbyxrFJ3whtQSeglc5Zi1yZs0cVzVsE8xr9jFIhXTIC4fpGl3MUd747nuW1wUxU41HpKHYRW_1Bg_qQPGaemI8FQZp5AvfPWwrUkxfF3q4gnvQRk/s320/x9791185890449.jpg" width="245" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h1 class="title">
<span class="front"><b>전문가를 위한</b></span>
<b>
트러블슈팅 오라클 퍼포먼스
</b>
</h1>
<div class="info">
2판
</div>
<span class="name">
크리스티안 안토니니
</span>
지음
<span class="line">|</span>
<span class="name">(주)위즈베이스</span>
옮김
<span class="line">|</span>
<span class="name" title="출판사">
<a href="http://www.kyobobook.co.kr/search/SearchKorbookMain.jsp?vPstrCategory=KOR&vPoutSearch=1&vPpubCD=25111&vPsKeywordInfo=%EC%A0%9C%EC%9D%B4%ED%8E%8D">제이펍</a>
</span>
<span class="line">|</span>
<span class="date" title="출간일">
2016년 05월 03일 출간 </span><br />
<br />
<span class="date" title="출간일">서평:</span><br />
<span class="date" title="출간일"> 해당 책은 국내 오라클 컨설팅 회사인 위즈베이스에서 번역을 한 오라클 관련 책이다. </span><br />
<span class="date" title="출간일">책의 내용도 심도 깊은 흥미 있는 이야기들도 씌여 있고 또한 번역도 읽기에 불편함이 없이 편하다.</span><br />
<span class="date" title="출간일"><br /></span>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-53180537721008918932017-01-09T12:02:00.000+09:002017-01-09T12:02:12.855+09:00MySQL류의 RDBMS 에서의 Slow Query Log 방법및 3th party Tools
<pre class="brush: sql">
-- logging stop
set global slow_query_log = OFF;
--
-- Log file move 이 후
--
FLUSH LOGS;
-- 수집 조건 설정
set global long_query_time = 1; -- 전체 적으로 성능 부분을 볼려면 0초로 설정 하여 모든 쿼리를 로깅함
set global log_queries_not_using_indexes = ON;
-- logging start
set global slow_query_log = ON;
--
-- 분석 Tools
-- ( Percona Toolkit )
-- https://www.github.com/percona/percona-toolkit
pt-query-digest
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-45185096672219062972017-01-03T17:09:00.001+09:002017-01-03T17:09:52.608+09:00오라클 레벨업 최고의 전문가 그룹이 알려주는 오라클 실전 100가지 기술 <br />
<span class="back"><strong> </strong></span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnFmKApgZQ99FCXES9R7B2QWmKN0hLf8TRwFM2jKLicNGcQNzWbGfVOJn2IHYRCop54hlm57jboC4idx2knkYkPujYwzCvfPzuEQK8f2mMnXXun1mi8wUDuvDGB1RQx40OXX1_QiG-hTk/s1600/x9788968484681.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnFmKApgZQ99FCXES9R7B2QWmKN0hLf8TRwFM2jKLicNGcQNzWbGfVOJn2IHYRCop54hlm57jboC4idx2knkYkPujYwzCvfPzuEQK8f2mMnXXun1mi8wUDuvDGB1RQx40OXX1_QiG-hTk/s320/x9788968484681.jpg" width="219" /></a></div>
<br />
<h1 class="title">
<span class="back"><strong> </strong></span></h1>
<br />
<h1 class="title">
<strong>
오라클 레벨업
</strong>
<span class="back">
<strong>
최고의 전문가 그룹이 알려주는 오라클 실전 100가지 기술
</strong>
</span>
</h1>
<span class="name">
스즈키 겐고
, 다마오키 다케히로, 시오바라 고타, 고바야시 오사무, 오모리 신지, 우치무라 도모아키
</span>
지음
<span class="line">|</span>
<span class="name">윤인성, /</span>
옮김
<span class="line">|</span>
<span class="name" title="출판사">
<a href="http://www.kyobobook.co.kr/search/SearchKorbookMain.jsp?vPstrCategory=KOR&vPoutSearch=1&vPpubCD=07975&vPsKeywordInfo=%ED%95%9C%EB%B9%9B%EB%AF%B8%EB%94%94%EC%96%B4">한빛미디어</a>
</span>
<span class="line">|</span>
<span class="date" title="출간일">
2016년 12월 20일 출간 </span><br />
<br />
<span class="date" title="출간일">서평:</span><br />
<span class="date" title="출간일"> 일본 엔지니어들의 기술력에 대해서 다시 한번 생각해 보게 하는 책이다. 오라클의 핵심적인 100가지의 팁을 예제와 같이 설명을 하여 이해 하기 쉽게 쓰여졌다. 나도 나중에 이런 책을 내보고 싶다. </span>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-52961817416779748432016-12-26T18:16:00.001+09:002017-01-04T18:11:47.521+09:00my.cnf sampleMySQL의 Sample my.cnf file
<p>
<pre class="brush: sql">
[mysqld]
back_log = 1024
bind_address = 0.0.0.0
binlog_cache_size = 64k
binlog_format = row
binlog_stmt_cache_size = 64k
################################################################
character_set_server = utf8
collation_server = utf8_general_ci
connect_timeout = 60
datadir = /MYSQL/data
date_format = %Y-%m-%d
datetime_format = %Y-%m-%d %H:%i:%s
default_authentication_plugin = mysql_native_password
default_password_lifetime = 365
default_storage_engine = InnoDB
default_tmp_storage_engine = InnoDB
disabled_storage_engines="MyISAM,FEDERATED"
div_precision_increment = 6
event_scheduler = OFF
general_log = OFF
general_log_file = /var/log/mysql/mysql-general-log.log
init_connect = 'SET NAMES utf8'
################################################################
# InnoDB
###############################################################
innodb_adaptive_flushing = ON
innodb_adaptive_flushing_lwm = 20
innodb_adaptive_hash_index = ON
innodb_adaptive_hash_index_parts = 16
innodb_api_trx_level = 2
innodb_autoextend_increment = 128
innodb_autoinc_lock_mode = 1
innodb_buffer_pool_chunk_size = 256M
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_dump_pct = 100
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = ON
innodb_buffer_pool_size = 2048
innodb_concurrency_tickets = 8192
innodb_data_file_path = ibdata1:2048M;ibdata2:2048M:autoextend
innodb_data_home_dir = /MYSQL/system
innodb_deadlock_detect = OFF
innodb_doublewrite = OFF
innodb_fast_shutdown = 0
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT # 4 for 8.0
innodb_flush_neighbors = 0
innodb_flush_sync = OFF
innodb_io_capacity = 200
innodb_io_capacity_max = 400
innodb_lock_wait_timeout = 60
innodb_log_buffer_size = 32k
innodb_log_file_size = 1G
innodb_log_files_in_group = 4
innodb_log_group_home_dir = /MYSQL/system
innodb_log_write_ahead_size = 8k
innodb_max_dirty_pages_pct = 80
innodb_max_dirty_pages_pct_lwm = 20
innodb_max_undo_log_size = 4G
innodb_monitor_enable='latch'
innodb_open_files = 8192
innodb_page_size = 8 * 1024
innodb_random_read_ahead = ON
innodb_read_io_threads = 4
innodb_sort_buffer_size = 2M
innodb_stats_persistent_sample_pages = 80
innodb_stats_transient_sample_pages = 20
innodb_sync_array_size = 768
innodb_temp_data_file_path = ibtmp1:256M:autoextend
innodb_tmpdir = /MYSQL/system
innodb_thread_concurrency = 8
innodb_undo_tablespaces = 2
innodb_write_io_threads = 4
####
interactive_timeout = 600
join_buffer_size = 1K
lock_wait_timeout = 600
#
log_bin = /MYSQL/binlog/mysql-binlog
log_error = /var/log/mysql/mysql-error.log
log_output = file
log_timestamps = system
long_query_time = 10
max_allowed_packet = 1G
max_connect_errors = 8192
max_connections = 8192
net_buffer_length = 1M
open_files_limit = 8192
performance_schema_max_sql_text_length = 8192
port = 3306
query_cache_limit = 32M
query_cache_size = 16M
query_cache_type = 2
#
schema_definition_cache = 1024
server_id = 1
skip_external_locking = ON
skip_name_resolve = ON
#
slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
socket = /tmp/mysql.sock
sort_buffer_size = 1M
sql_mode = ORACLE
#################################################################
# ssl
################################################################
ssl-ca=/etc/my.cnf.d/ssl/ad-admindb-m-01-cert.pem
ssl-cert=/etc/my.cnf.d/ssl/ad-admindb-m-01-cert.pem
ssl-key=/etc/my.cnf.d/ssl/ad-admindb-m-01-key.pem
stored_program_cache = 512
stored_program_definition_cache = 512
sync_binlog = 0
table_definition_cache = 2048
table_open_cache = 4096
thread_stack = 8192
max_heap_table_size = 32M
max_tmp_table_size = 32M
tmpdir = /MYSQL/db_tmp
# set tx_isolation = 'READ-COMMITTED'
transaction-isolation = READ-COMMITTED
wait_timeout = 600
[mysql]
socket = /tmp/mysql.sock
port = 3306
no-auto-rehash
show-warnings
default-character-set = utf8
prompt =\u@\h:\d\_\R:\m:\\s>
pager ="less -n -i -F -X -E"
[client]
port = 3306
socket = /tmp/mysql.sock
#################################################################
# ssl
################################################################
ssl-ca=/etc/my.cnf.d/ssl/ad-admindb-m-01-cert.pem
ssl-cert=/etc/my.cnf.d/ssl/ad-admindb-m-01-cert.pem
ssl-key=/etc/my.cnf.d/ssl/ad-admindb-m-01-key.pem
[mysqladmin]
port = 3306
socket = /tmp/mysql.sock
user = mysql
passwor = 123
[mysqld_safe]
socket = /tmp/mysql.sock
port = 3306
log_error = /var/log/mysql/ad-admindb-m-01-error.log
basedir = /usr
datadir = /MYSQL/data
open-files-limit = 65535
malloc-lib = /usr/lib64/libjemalloc.so.1
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-5382624244047803722016-12-21T16:42:00.000+09:002016-12-21T16:42:03.415+09:00MySQL Connection SSL SettingMySQL Server와 Client간의 SSL을 설정 하는 방법
<p>
<pre class="brush: sql">
--
-- 01.Key 생성
--
openssl genrsa -out server-key.pem 4096
openssl req -x509 -new -nodes -days 0 -key server-key.pem -out server-cert.pem
cp server-cert.pem ca.pem
--
-- 02.설정
-- my.cnf
ㅡ
[mysqld]
ssl-ca=ca.pem
ssl-key=server-key.pem
ssl-cert=server-cert.pem
[mysql]
ssl-ca=ca.pem
ssl-key=server-key.pem
ssl-cert=server-cert.pem
--
-- 03. SSL 전용 유저
--
grant all on test.* to `ssluser`@`%` require SSL;
--
-- 04. 확인
--
show variables like 'have_ssl'
show status like 'Ssl%'
status
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-7920014925225559622016-12-21T10:51:00.002+09:002016-12-21T10:51:33.021+09:00생각을 정리 하며<br />
올해 초에 쓴 글이다.<br />
<br />
그 당시에는 이런 느낌이었나 보다.<br />
<br />
<br />
<br />
<div style="border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
생각을 정리 한다.</div>
<div style="border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
지금 나는 대한민국의 노동법이 아무런 의미가 없다는 걸 경험 했다.</div>
<div style="border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
2016년 04월 20일 나는 그런 중요한 문제를 깨달았다.</div>
<div style="border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
노동법을 믿고 있었던 나의 무지 이다.</div>
<div style="border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
유젠스에스앤씨라는 회사 내가 5년 넘게 다닌 회사이다. 그러나 난 그 5년이라는 시간을 그냥 버버린 것이. 2016년 04월 20일에 있었던 딱 20분이라는 시간 때문에</div>
Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-33173603027152713792016-12-16T14:51:00.000+09:002016-12-16T14:51:25.463+09:00Oracle 12cR1 TDE SettingMicrosoft 의 Azure 에서 지원하는 Oracle 12cR1(12.1.0.2) Enterprise 에 PDB의 USERS Tablespace 만들다 DBCA 에서 wallet key not open 으로 에러가 나서 찾아 봤다.
12cR1의 마지막 Release 에서는 PDB 의 일반 Tablespace 는 기본적으로 Force tablespace USERS to be encrypted with AES128 되나 보다.
<p>
<pre class="brush: sql">
--
-- 00. Wallet Key location
--
sqlnet.ora
ENCRYPTION_WALLET_LOCATION =
(SOURCE =(METHOD = FILE)(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/$ORACLE_SID/encryption_keystore/)
--
-- 01. Create TDE Wallet Key
--
Root Container (CDB)
sqlplus / as sysdba
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/admin/KOREA/encryption_keystore/' identified by audtlr2;
/*
Key Open and Close
if container = ALL is ommit then
current container
end if
*/
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY audtlr2 container=ALL;
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY audtlr2 container=ALL;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY audtlr2 WITH BACKUP CONTAINER=ALL;
SET LINESIZE 100
SELECT con_id, key_id FROM v$encryption_keys;
CON_ID KEY_ID
---------------- ------------------------------------------------------------------------------
0 AZVTr7stFE8Gvyn8Yxt7dLMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
0 AfszURVAMk/5v1Eq3znzMMkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
SET LINESIZE 200
COLUMN wrl_parameter FORMAT A50
SELECT * FROM v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID
-------------------- -------------------------------------------------- ------------------------------ -------------------- --------- --------- ----------------
FILE /u01/app/admin/KOREA/encryption_keystore/ OPEN PASSWORD SINGLE NO 0
-- if not using CONTAONER=ALL then make pdb key
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY audtlr2 ;
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY audtlr2;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY audtlr2 WITH BACKUP ;
SET LINESIZE 100
SELECT con_id, key_id FROM v$encryption_keys;
CON_ID KEY_ID
---------------- ------------------------------------------------------------------------------
0 AZVTr7stFE8Gvyn8Yxt7dLMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--
-- 02. unplug and plug pdb with tde
--
/* unplug */
CONN sys@pdb1 AS SYSDBA
ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET "mySecret" TO '/tmp/export.p12' IDENTIFIED BY myPassword;
CONN / AS SYSDBA
ALTER PLUGGABLE DATABASE pdb1 CLOSE;
ALTER PLUGGABLE DATABASE pdb1 UNPLUG INTO '/tmp/pdb1.xml';
/* plug */
CONN / AS SYSDBA
CREATE PLUGGABLE DATABASE pdb2 USING '/tmp/pdb1.xml';
-- If you are not using OMF, you will have to convert the paths manually.
--CREATE PLUGGABLE DATABASE pdb2 USING '/tmp/pdb1.xml'
-- FILE_NAME_CONVERT=('/u01/app/oracle/oradata/cdb1/pdb1/','/u01/app/oracle/oradata/cdb2/pdb2/');
ALTER PLUGGABLE DATABASE pdb2 OPEN READ WRITE;
if cdb2 is not key then
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/admin/cdb2/encryption_keystore/' IDENTIFIED BY myPassword;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY myPassword;
end
ONN / AS SYSDBA
ALTER SESSION SET CONTAINER=pdb2;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "myPassword";
ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET "mySecret" FROM '/tmp/export.p12' IDENTIFIED BY "myPassword" WITH BACKUP;
-- Restart the PDB and open the keystore.
SHUTDOWN;
STARTUP;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "myPassword";
-- auto login open setting
CONN / AS SYSDBA
ADMINISTER KEY MANAGEMENT CREATE LOCAL AUTO_LOGIN KEYSTORE FROM KEYSTORE '/u01/app/oracle/admin/cdb1/encryption_keystore/' IDENTIFIED BY myPassword;
SHUTDOWN IMMEDIATE;
STARTUP
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-17806645967520313012016-12-15T18:07:00.001+09:002016-12-15T18:07:22.519+09:00MariaDB Dynamic Column Test
MariaDB 책을 보다 Dynamic Column 이란는게 있어 테스트 한번 해봤음
<p>
<pre class="brush: sql">
/**
MariaDB Dynamic Column Test
func: 지원하는 함수
column_create
column_add
column_get
column_delete
column_list
column_join
column_exists
column_check
Type:
지원되는 타입
Type Description
BINARY[(N)] A variable-length binary string
CHAR[(N)] A variable-length string
DATE A 3-byte date
DATETIME[(D)] A 9-byte date and time. Microseconds are supported
DECIMAL[(M[,D])] A variable-length binary decimal
INTEGER A variable-length signed integer, up to 64 bits in length
SIGNED [INTEGER] A variable-length signed integer, up to 64 bits in length
TIME[(D)] A 6-byte time. Microseconds are supported and it may be negative
UNSIGNED [INTEGER] A variable-length unsigned integer, up to 64 bits in length
*/
--
-- 01. Test Table Create
--
drop database if exists test;
create database test;
drop table if exists tbl_dyn_col_test;
CREATE TABLE `test`.`tbl_dyn_col_test`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`dyn_cols` BLOB comment '동적 칼럼'
) engine = innodb default charset=utf8 comment='동적칼럼 테스트 테이블'
;
--
-- 02. Test Data Insert
--
INSERT INTO tbl_dyn_col_test (dyn_cols)
VALUES
(
COLUMN_CREATE (
'name',
't-shirt',
'color',
'blue' AS CHAR,
'size',
'XL' AS CHAR
)
),
(
COLUMN_CREATE (
'name',
't-shirt',
'color',
'blue' AS CHAR,
'size',
'L' AS CHAR
)
),
(
COLUMN_CREATE (
'name',
't-shirt',
'color',
'black' AS CHAR,
'size',
'M' AS CHAR
)
),
(
COLUMN_CREATE (
'name',
'flashlight',
'color',
'black' AS CHAR,
'size',
'AAA' AS CHAR,
'num',
2 AS INT
)
),
(
COLUMN_CREATE ('name', 'shovel', 'length', '5')
);
--
-- 02.1 결과 검증
--
SELECT
id,
column_list (dyn_cols)
FROM
tbl_dyn_col_test;
id column_list(dyn_cols)
------ -----------------------------
1 `name`,`size`,`color`
2 `name`,`size`,`color`
3 `name`,`size`,`color`
4 `num`,`name`,`size`,`color`
5 `name`,`length` ]
--
-- 03.칼럼 추가
--
UPDATE
tbl_dyn_col_test
SET
dyn_cols = COLUMN_ADD (dyn_cols, 'name', 'torch')
WHERE COLUMN_GET (dyn_cols, 'name' AS CHAR) = 'flashlight';
UPDATE
tbl_dyn_col_test
SET
dyn_cols = COLUMN_ADD (dyn_cols, 'length', 6)
WHERE COLUMN_GET (dyn_cols, 'name' AS CHAR) = 'torch';
id column_list (dyn_cols)
------ --------------------------------------
1 `name`,`size`,`color`
2 `name`,`size`,`color`
3 `name`,`size`,`color`
4 `num`,`name`,`size`,`color`,`length`
5 `name`,`length`
--
-- 04.칼럼 삭제
--
UPDATE
tbl_dyn_col_test
SET
dyn_cols = COLUMN_DELETE (dyn_cols, 'length')
WHERE COLUMN_GET (dyn_cols, 'name' AS CHAR) = 'shovel';
id column_list (dyn_cols)
------ --------------------------------------
1 `name`,`size`,`color`
2 `name`,`size`,`color`
3 `name`,`size`,`color`
4 `num`,`name`,`size`,`color`,`length`
5 `name`
--
-- 05.칼럼 조회
--
SELECT
id,
COLUMN_GET (dyn_cols, 'name' AS CHAR) AS 'name',
COLUMN_GET (dyn_cols, 'color' AS CHAR) AS 'color',
COLUMN_GET (dyn_cols, 'size' AS CHAR) AS 'size',
COLUMN_GET (dyn_cols, 'num' AS INT) AS 'num'
FROM
tbl_dyn_col_test;
id name color size num
------ ------- ------ ------ --------
1 t-shirt blue XL (NULL)
2 t-shirt blue L (NULL)
3 t-shirt black M (NULL)
4 torch black AAA 2
5 shovel (NULL) (NULL) (NULL)
--
-- 05.2 Json 형식
--
SELECT
id,
COLUMN_JSON (dyn_cols)
FROM
tbl_dyn_col_test;
id COLUMN_JSON (dyn_cols)
------ ------------------------------------------------------------------
1 {"name":"t-shirt","size":"XL","color":"blue"}
2 {"name":"t-shirt","size":"L","color":"blue"}
3 {"name":"t-shirt","size":"M","color":"black"}
4 {"num":2,"name":"torch","size":"AAA","color":"black","length":6}
5 {"name":"shovel"}
--
-- 05.3 칼럼 존재 여부 확인
--
SELECT
id,
COLUMN_EXISTS (dyn_cols, 'num')
FROM
tbl_dyn_col_test;
id COLUMN_EXISTS (dyn_cols, 'num')
------ ---------------------------------
1 0
2 0
3 0
4 1
5 0
SELECT
id,
COLUMN_CHECK (dyn_cols)
FROM
tbl_dyn_col_test;
id COLUMN_CHECK (dyn_cols)
------ -------------------------
1 1
2 1
3 1
4 1
5 1
--
-- 06. 내부 동적 칼럼
--
INSERT INTO tbl_dyn_col_test (dyn_cols)
VALUES
(
COLUMN_CREATE (
'type',
'parent',
'name',
'Mary',
'child1',
COLUMN_CREATE ('name', 'Sue', 'eyes', 'brown'),
'child2',
COLUMN_CREATE (
'name',
'Bob',
'grandchild',
COLUMN_CREATE ('name', 'baby')
)
)
);
select
id,
column_list(dyn_cols)
from
tbl_dyn_col_test
;
id COLUMN_list(dyn_cols)
------ --------------------------------------
1 `name`,`size`,`color`
2 `name`,`size`,`color`
3 `name`,`size`,`color`
4 `num`,`name`,`size`,`color`,`length`
5 `name`
6 `name`,`type`,`child1`,`child2`
--
-- 06.2 조회 방법
--
SELECT
COLUMN_GET (dyn_cols, 'child1' AS CHAR) AS 'child1',
COLUMN_GET (dyn_cols, 'child2' AS CHAR) AS 'child2'
FROM
tbl_dyn_col_test
WHERE COLUMN_GET (dyn_cols, 'type' AS CHAR) = 'parent';
child1 child2
------------------------------- ---------------------------------------------------
SELECT
COLUMN_JSON (dyn_cols)
FROM
tbl_dyn_col_test
WHERE COLUMN_GET (dyn_cols, 'type' AS CHAR) = 'parent';
COLUMN_JSON (dyn_cols)
-----------------------------------------------------------------------------------------------------------------------------
{"name":"Mary","type":"parent","child1":{"eyes":"brown","name":"Sue"},"child2":{"name":"Bob","grandchild":{"name":"baby"}}}
</pre> Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0tag:blogger.com,1999:blog-1359085690826231338.post-67838744189494442632016-12-14T17:55:00.000+09:002016-12-14T17:55:29.447+09:00MariaDB 와 MySQL Cluster 간의 복제 한번 테스트를 해봤다. 뜬금없이
MariaDB 와 MySQL Cluster 는 기본 Storge Engine이 틀리고 Base Code 버전이 틀려서
될까 했는데 해보니까 된다.
<p>
<pre class="brush: sql">
--
-- 01. 구성
-- binlog_format= ROW
정상 적으로 복제가 이루어짐
MariaDB (10.1.19-MariaDB) : Replication Master
|
+--> NDB-01(5.7.16-ndb-7.5.4-cluster-gpl-log) : Replication Slave
NDB-02(5.7.16-ndb-7.5.4-cluster-gpl-log)
--
-- 02. Check
--
-. Master 에서 create table 구문에서 engine 절을 빼야 함
(Default storge engine 이 틀림)
MariaDB(InnoDB:XtraDB)
Mysql-Cluster(NDB)
-. MySQL Cluster에 Slave 를 구성시 SQL NODE 한대에서만 구성해야 함
</pre>Anonymoushttp://www.blogger.com/profile/02820919371508925524noreply@blogger.com0