생계/Sybase2017. 12. 14. 13:31

오라클 12c 부터 CDB, PDB 라는 새로운 개념이 도입되었다. 

CDB 를 사용하는 DB 에서는 기존처럼 유저를 생성하면 에러가 난다. 

DB에 접속하는 것도 기존과 조금 다르다. 

CDB 에 접속하는 유저들을 common user 라고 부르는데, 

CDB 에 접속하려면 c## 이라는 접두어를 붙여야 한다.

(오라클이 제공하는 common user 는 예외. ex: sys,system)


● Common user 생성


 [oracle@oracdb response]$ sqlplus system/oracle


SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 13 15:15:43 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Last Successful login time: Wed Dec 13 2017 15:12:59 +09:00


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> create user c##test identified by test container=all;


User created.


SQL> grant create session to c##test;


Grant succeeded.


SQL> exit

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

[oracle@oracdb response]$ sqlplus test/test            -- 이전 버전방식의 로긴 시도


SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 13 15:16:35 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


ERROR:

ORA-01017: invalid username/password; logon denied


 

[oracle@oracdb response]$ 

[oracle@oracdb response]$ sqlplus c##test/test        -- c## 접두어 붙여서 접속  

 

SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 13 15:17:02 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Last Successful login time: Wed Dec 13 2017 15:16:47 +09:00


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> show con_name;


CON_NAME

------------------------------

CDB$ROOT



● PDB 에 접속권한 주기


[oracle@oracdb ~]$ sqlplus system/oracle


SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 14 13:51:46 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Last Successful login time: Wed Dec 13 2017 17:20:59 +09:00


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> 

SQL> alter session set container=pdb01;


Session altered.


SQL> grant connect to c##test container=current;


Grant succeeded.


SQL> exit

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

[oracle@oracdb ~]$ sqlplus c##test/test


SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 14 13:59:31 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Last Successful login time: Thu Dec 14 2017 13:49:30 +09:00


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> alter session set container=pdb01;      


Session altered.


SQL> show con_name 


CON_NAME

------------------------------

PDB01

SQL> 




끗. 공감 구걸


반응형

'생계 > Sybase' 카테고리의 다른 글

BCP 로 ASE 에서 IQ 로 데이터 이관  (0) 2017.09.14
Sybase Storage정보  (0) 2017.09.11
Sybase 성능분석 로그 편집 쉘  (0) 2017.09.09
Sybase DB사용량  (0) 2017.09.09
Sybase session kill  (0) 2017.09.09
Posted by 돌고래트레이너
생계/Oracle2017. 12. 13. 14:27

centos 7 환경에서 oracle 12c silent mode 로 설치 


가끔 오라클을 설치할때 GUI 방식을 사용하지 못할때가 있다. 

그럴때는 silent 모드로 설치하면 되는데, 지금까지는 그냥 GUI 방식으로 

일할수 있는 환경을 만들어 달라고 요구했었다. 

이번에는 그런 환경이 여의치 않아 테스트 삼아 silent 방식으로 설치했다. 

역시 IT 의 세계가 그렇듯이 한방에 되는건 없었다. 

responseFile 에서 삽질에 삽질을 거듭하다 설치를 성공했다. 


현시점으로는 EE 버전에서 12c R2 는 안나온것 같다. 

오라클 버전은 Enterprise Edition 12.1.0.2.0 이다. 

DB 는 containerDB 를 사용하는 것으로 설정했다.


많이 참고하십시요.  공감 구걸.


1. 환경설정 (root 유저)


- yum install 

yum install -y binutils compat-libcap1 gcc gcc-c++ glibc glibc glibc-devel glibc-devel ksh compat-libstdc++-33 libaio libaio libaio-devel libaio-devel libgcc libgcc libstdc++ libstdc++ libstdc++-devel libstdc++-devel libXi libXi libXtst libXtst make sysstat xorg-x11-apps


- oracle 유저 생성


[root@localhost ~]# groupadd oinstall

[root@localhost ~]# groupadd dba

[root@localhost ~]# useradd -g oinstall -G dba oracle

[root@localhost ~]# passwd oracle

Changing password for user oracle.

New password: 

BAD PASSWORD: The password is shorter than 8 characters

Retype new password: 

passwd: all authentication tokens updated successfully.

[root@localhost ~]# 


cd / 

mkdir oracle

chown -R oracle:oinstall /oracle




vi /etc/sysctl.conf

  

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 1987162112

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586


-- 설정 확인

sysctl -p


vi /etc/security/limits.conf

( 파일 아래쪽에 ) 

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536



2. oracle 설정 (oracle 유저)


su - oracle


vi /home/oracle/.bash_profile

------------ bash_profile --------------------------------------------------

PATH=$PATH:$HOME/.local/bin:$HOME/bin


export TMP=/tmp

export ORACLE_HOSTNAME=ora12c

export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl

export ORACLE_BASE=/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1

export ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export PATH=$ORACLE_HOME/bin:$PATH

------------ bash_profile --------------------------------------------------


unzip linuxamd64_12102_database_1of2.zip

unzip linuxamd64_12102_database_2of2.zip



3. silent mode 로 Database 설치


cd /home/oracle/database


[oracle@oracdb database]$  ./runInstaller -silent \

> DECLINE_SECURITY_UPDATES=true \

> SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \

> oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0 \

> oracle.install.option=INSTALL_DB_SWONLY \

> ORACLE_HOSTNAME=oracdb \

> UNIX_GROUP_NAME=dba \

> INVENTORY_LOCATION=/home/oracle/oraInventory \

> SELECTED_LANGUAGES=en \

> ORACLE_HOME=/oracle/product/12.1.0/dbhome_1 \

> ORACLE_BASE=/oracle \

> oracle.install.db.InstallEdition=EE \

> oracle.install.db.DBA_GROUP=oinstall \

> oracle.install.db.OPER_GROUP=dba \

> oracle.install.db.BACKUPDBA_GROUP=dba \

> oracle.install.db.DGDBA_GROUP=dba \

> oracle.install.db.KMDBA_GROUP=dba

Starting Oracle Universal Installer...


Checking Temp space: must be greater than 500 MB.   Actual 14939 MB    Passed

Checking swap space: must be greater than 150 MB.   Actual 3071 MB    Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-12-12_05-11-10PM. Please wait ...[oracle@oracdb database]$ [WARNING] [INS-13014] Target environment does not meet some optional requirements.

   CAUSE: Some of the optional prerequisites are not met. See logs for details. /tmp/OraInstall2017-12-12_05-11-10PM/installActions2017-12-12_05-11-10PM.log

   ACTION: Identify the list of failed prerequisite checks from the log: /tmp/OraInstall2017-12-12_05-11-10PM/installActions2017-12-12_05-11-10PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.

You can find the log of this install session at:

 /home/oracle/oraInventory/logs/installActions2017-12-12_05-11-10PM.log


[oracle@oracdb database]$ 

[oracle@oracdb database]$ 

[oracle@oracdb database]$ 

[oracle@oracdb database]$ The installation of Oracle Database 12c was successful.

Please check '/home/oracle/oraInventory/logs/silentInstall2017-12-12_05-11-10PM.log' for more details.


As a root user, execute the following script(s):

        1. /home/oracle/oraInventory/orainstRoot.sh

        2. /oracle/product/12.1.0/dbhome_1/root.sh




Successfully Setup Software.


** root 로 접속해서 스크립트 실행 


[root@oracdb ~]# sh /home/oracle/oraInventory/orainstRoot.sh

Changing permissions of /home/oracle/oraInventory.

Adding read,write permissions for group.

Removing read,write,execute permissions for world.


Changing groupname of /home/oracle/oraInventory to dba.

The execution of the script is complete.

[root@oracdb ~]# sh /oracle/product/12.1.0/dbhome_1/root.sh

Check /oracle/product/12.1.0/dbhome_1/install/root_oracdb_2017-12-12_17-16-25.log for the output of root script

[root@oracdb ~]# 




** 똑같은 내용인데  silent 이하를 db_install.rsp 파일로 만들어서 responseFile 옵션넣고 실행하면 설치가 진행이 안된다. 그냥 커먼드라인에 붙여서 해결..

 ./runInstaller -silent \
DECLINE_SECURITY_UPDATES=true \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0 \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=oracdb \
UNIX_GROUP_NAME=dba \
INVENTORY_LOCATION=/home/oracle/oraInventory \
SELECTED_LANGUAGES=en \
ORACLE_HOME=/oracle/product/12.1.0/dbhome_1 \
ORACLE_BASE=/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.DBA_GROUP=oinstall \
oracle.install.db.OPER_GROUP=dba \
oracle.install.db.BACKUPDBA_GROUP=dba \
oracle.install.db.DGDBA_GROUP=dba \
oracle.install.db.KMDBA_GROUP=dba


4. dbca.rsp 로 DB 생성


[oracle@oracdb response]$ dbca -silent -responseFile /home/oracle/database/response/dbca_fs.rsp

Enter PDBADMIN User Password: 

 

Copying database files

1% complete

2% complete

8% complete

13% complete

19% complete

27% complete

Creating and starting Oracle instance

29% complete

32% complete

33% complete

34% complete

38% complete

42% complete

43% complete

45% complete

Completing Database Creation

48% complete

51% complete

53% complete

62% complete

70% complete

72% complete

Creating Pluggable Databases

78% complete

100% complete

Look at the log file "/oracle/cfgtoollogs/dbca/cdbtest/cdbtest.log" for further details.


--------------- dbca.rsp ------------------------------

[GENERAL]

RESPONSEFILE_VERSION = "12.1.0"

OPERATION_TYPE = "createDatabase"


[CREATEDATABASE]

GDBNAME = "cdbtest"

DATABASECONFTYPE  = "SI"

SID = "cdbtest"

CREATEASCONTAINERDATABASE = true

NUMBEROFPDBS = 1

PDBNAME = pdb01

TEMPLATENAME = "General_Purpose.dbc"

SYSPASSWORD = "oracle"

SYSTEMPASSWORD = "oracle"

DATAFILEDESTINATION = /DATA01/oracle

RECOVERYAREADESTINATION= /DATA01/oracle/reco

STORAGETYPE=FS


CHARACTERSET = "US7ASCII"

NATIONALCHARACTERSET= "UTF8"


SAMPLESCHEMA=FALSE


MEMORYPERCENTAGE = "40"

DATABASETYPE = "MULTIPURPOSE"

AUTOMATICMEMORYMANAGEMENT = "TRUE"

TOTALMEMORY = "2048"


--------------- dbca.rsp ------------------------------


** 나는 12c 의 new feature 인 CDB, PDB 를 테스트 할 목적이라 

CDB, PDB 를 생성하는 것으로 설정을 했다. 참고해서 자신의 용도에 맞게

설정을 수정하시길...



[oracle@oracdb response]$ sqlplus / as sysdba


SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 13 14:21:19 2017


Copyright (c) 1982, 2014, Oracle.  All rights reserved.



Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> select name, cdb from v$database;


NAME      CDB

--------- ---

CDBTEST   YES


SQL> 


 


이상 끗

반응형
Posted by 돌고래트레이너
생계/Oracle2017. 12. 6. 10:56


스키마모드 datapump 테스트 


● EXPDP



- exclude 에 like 사용하기

expdp test/test  parfile=like.par

-------------- like.par -------------------------- 

directory=datapump

logfile=schema_exp.log

dumpfile=schema.dmp

filesize =100G

schemas=A,B,C,testS

exclude=table:"like '%EX_TAB'"

content=ALL

--------------------------------------------------


- exclude 에 in 사용하기

expdp test/test  parfile=in.par

-------------- in.par --------------------------

directory=datapump

logfile=schema_exp.log

dumpfile=schema.dmp

filesize =100G

schemas=A,B,C,testS

exclude=table:"IN('EX_TAB')"

content=ALL

--------------------------------------------------


** parameter 파일을 사용하지 않고 직접 커먼드에 쓸때는

모든 특수문자 앞에 '\' 를 넣어줘야 한다. 

ex) expdp test/test full=y EXCLUDE=TABLE:\"IN \(\'TEMP\',\'TEMP1\'\)\"


● IMPDP


full dump 에서 testS 스키마만 imptest 스키마에 이관하기


1. Index,TRIGGER,statistics,constraint 는 제외하고 import 하는 경우


impdp  test/test parfile=imp_ddl.par


---------imp_ddl.par ------------------------- 

directory=datapump 

logfile=full_data.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=metadata_only

exclude=index,TRIGGER,statistics,constraint

-----------------------------------------------


아래 에러가 난다면 ..

ORA-39168: Object path TRIGGER was not found. 

 

- 뷰를 확인해서 valid value 인지 확인


* exclude, include 에 사용가능한 object type 확인은

 full mode =>  DATABASE_EXPORT_OBJECTS

 schema mode => SCHEMA_EXPORT_OBJECTS

 table/tablespace mode => TABLE_EXPORT_OBJECTS

뷰에서 확인 가능.


select *

from SCHEMA_EXPORT_OBJECTS

where object_path like '%TRIG%'


- export 에 trigger 가 없는 경우


export dump 에 trigger 가 없는 경우, 
impdp exclude 에 trigger 를 적으면, 그냥 넘어가는게 
아니고 error 를 뱉는다. 
exclude 구문에 trigger 를 제외하거나, dump 에 trigger 가 
포함되면 에러가 나지 않는다. 


* LOB 타입은 exclude  안되


2. data 만 import 하는 경우


impdp test/test parfile=imp_data.par


-----------imp_data.par  ----------------- 

directory=datapump 

logfile=imp_data.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=data_only

-----------------------------------------------



3. Index 등 기타 object 만 import 하는 경우


impdp test/test parfile=imp_idx.par


------------imp_idx.par -------------------- 

directory=datapump 

logfile=imp_idx.log 

dumpfile=full_data.dmp 

schemas=testS

remap_schema=testS:imptest

content=metadata_only

include=index,TRIGGER,statistics,constraint

-----------------------------------------------



datapump 로 이관하는 테스트를 정리해봤다. 

parameter 파일을 쓰면 좀 더 편하지만 잘못 작성할경우 에러메세지가 

안나오기도 하더란..


필요하신분은 참고하시길..







반응형
Posted by 돌고래트레이너
생계/MySQL2017. 11. 25. 11:00


앞서 centos 에서 슈퍼유저인 root 유저로 yum install 방식으로 

MariaDB galera cluster 를 설치했다. 

인터넷의 설치예제는 root 로 설치하는 방법이 많지만, 실제 운영환경에서

root 로 설치하는 것은 보안상 바람직하지 않다.


설정을 내가 원하는대로 바꿔가며 설치하기에는 binary 파일로 설치하는 편이

가장 좋다. 이번 포스팅은 root가 아닌 os 상의 일반유저인 mysql 유저로 

binary install 로 해서 3 node galera cluster 를 설치하는 내용을 다룰것이다.

 


Galera package 는 mariadb 10.1 이상 버전에는 default 로 포함되어있다. 

5.5나 10.0 버전에서는 따로 패키지를 추가로 설치해야하지만, 10.1 과 그 이상 

버전에서는 따로 galera package 를 설치할 필요가 없다는 뜻이다. 

설치 후, 설정파일에 설정만 추가 하는 것으로써 해당 기능이 활성화 된다. 




Step1. MariaDB binary 설치 ( node 1,2,3 동일) 


     각 노드를 설치하는 과정은 galera 나 싱글이나 차이가 없다.

    이전 포스팅에 single node 에 binary install 한 내용이 있다. 

   => http://riorio.tistory.com/7

  ** mariadb 는 이름만 mariadb 라고 부를뿐 내부 소스에서는 여전히 mysql 을 

    사용하는것 같다. single 설치 때, mysql 이 아니고 mariadb 임을 상기하려고

    basedir 을 /usr/local/mariadb 로 링크를 걸어줬는데, 이대로 설치하는 것은

    single instance 때는 문제가 없었는데, galera cluster 를 쓰려면 에러나는 부분이

    많다.  그래서 왠만하면 /usr/local/mysql 로 바꿔줘야 덜 수정하게 되고,

    여러모로 정신건강에 이로울 것이다. 


Step2. configuration , db install

    

 ●   vi /etc/init.d/mysqld 

    basedir=/usr/local/mysql

    datadir=/DATA/mysql


[mysql@node1~]# service mysqld start

[mysql@node1~]# mysql_secure_installation

[mysql@node1~]# service mysqld stop



 ●  vi /etc/my.cnf 


[galera]


wsrep_on=ON

wsrep_provider=/usr/local/mysql/lib/galera/libgalera_smm.so

wsrep_cluster_address = "gcomm://"      node1 에서 최초 bootstrap 시

#wsrep_new_cluster

#wsrep_cluster_address = "gcomm://10.10.10.11,10.10.10.12,10.10.10.13"

  --> node2,3 은 모든 ip 를 적어준다.

binlog_format = row

default_storage_engine = InnoDB

innodb_autoinc_lock_mode = 2


wsrep_cluster_name='galera'

wsrep_node_address = 10.10.10.11

wsrep_node_name = 'node1'

wsrep_sst_method = rsync


bind-address=0.0.0.0


Step3. bootstrap


  - node1 최초 boot 시

   mysqld  --wsrep-new-cluster --datadir=/DATA/mysql 

  

[ERROR] WSREP: wsrep_load(): dlopen(): libssl.so.6: cannot open shared object file: No such file or directory


만약 위의 에러가 난다면.. 


[root@galera1 ~]# cd /usr/lib64

[root@galera1 lib64]# ls -l libcrypt*

-rwxr-xr-x. 1 root root   41080 Aug  2 06:09 libcrypt-2.17.so

lrwxrwxrwx. 1 root root      19 Jun 17 22:53 libcrypto.so.10 -> libcrypto.so.1.0.1e

-rwxr-xr-x. 1 root root 2012880 Jun 29  2015 libcrypto.so.1.0.1e

lrwxrwxrwx. 1 root root      22 Jun 17 22:53 libcryptsetup.so.4 -> libcryptsetup.so.4.7.0

-rwxr-xr-x. 1 root root  166640 Nov 21  2015 libcryptsetup.so.4.7.0

lrwxrwxrwx. 1 root root      25 Nov 21 15:09 libcrypt.so -> ../../lib64/libcrypt.so.1

lrwxrwxrwx. 1 root root      16 Nov 21 15:08 libcrypt.so.1 -> libcrypt-2.17.so

[root@galera1 lib64]# ls -l libssl*

-rwxr-xr-x. 1 root root 272536 Nov 20  2015 libssl3.so

lrwxrwxrwx. 1 root root     16 Jun 17 22:53 libssl.so.10 -> libssl.so.1.0.1e

-rwxr-xr-x. 1 root root 449864 Jun 29  2015 libssl.so.1.0.1e


ln -s libcrypto.so.1.0.1e libcrypto.so.6

ln -s libssl.so.1.0.1e libssl.so.6


링크를 걸어준다. 


 - node2,3 boot 

   mysqld  --datadir=/DATA/mysql



Step4. Service check


[mysql@node1~]$ mysql -u root -proot123

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 12

Server version: 10.2.7-MariaDB-log MariaDB Server


Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> show status like 'wsrep%';

+------------------------------+-------------------------------------------------------+

| Variable_name                | Value                                                 |

+------------------------------+-------------------------------------------------------+

| wsrep_apply_oooe             | 0.000000                                              |

| wsrep_apply_oool             | 0.000000                                              |

| wsrep_apply_window           | 1.000000                                              |

| wsrep_causal_reads           | 0                                                     |

| wsrep_cert_deps_distance     | 1.714286                                              |

| wsrep_cert_index_size        | 5                                                     |

| wsrep_cert_interval          | 0.000000                                              |

| wsrep_cluster_conf_id        | 5                                                     |

| wsrep_cluster_size           | 3                                                     |

| wsrep_cluster_state_uuid     | e9a1c20a-d01b-11e7-bac6-bb102b575a1a                  |

| wsrep_cluster_status         | Primary                                               |

| wsrep_commit_oooe            | 0.000000                                              |

| wsrep_commit_oool            | 0.000000                                              |

| wsrep_commit_window          | 1.000000                                              |

| wsrep_connected              | ON                                








반응형
Posted by 돌고래트레이너
생계/MySQL2017. 11. 24. 15:45

MariaDB galera cluster 설치 centos


MariaDB 로 Replication 을 구축하는 것은 그다지 어렵지않다. 

쉽고 무로료 Active-standby 구조의 아키텍쳐를 사용할수 있는 것은 큰 장점이다. 

그렇지만, 완전 무중단일 수 없고, 부하 분산의 효과가 그닥 크지 않은 것은 

단점이다. 

MariaDB 는 galera package 를 통해서 cluster 를 구축할수 있다. 

이것은 Actvie-Active 구조의 아키텍쳐이며 (mysql 식으로 말하자면 Master-Master)

역시 무료이다. 


오라클의 RAC 와 비슷한 개념이지만 차이가 있다면, 오라클은 shared storage 이지만 mariadb cluster 는 서버가 각자 storage 를 가진다. 

복제가 모든 노드에서 가능하다고 생각하면 된다. 


MaraiDB 홈페이지에 가면 galera cluster 설치에 대한 내용이 있다.

하지만 내용이 상세하지 않아 내가 원하는 요건과 맞지 않으면 설치에 어려움이 있을수 있다.

 

이번 포스팅은 비교적 간단한 방식인 root 로 yum 으로 설치하는 방법이다.



CentOS, RedHat, Fedora 에서는 yum install 을 추천


1. MariaDB YUM repository ( 3개 노드 동일)

    vi /etc/yum.repos.d/MariaDB.repo


[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.1/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1


## 만약, 특정 버전의 mariadb 를 설치하고자 한다면 MariaDB.repo 를 

원하는 버전으로 수정하자. MariaDB-5.5.39 버전을 설치한다면 아래처럼.


[mariadb]

name = MariaDB-5.5.39

baseurl=https://downloads.mariadb.com/files/MariaDB/mariadb-5.5.39/yum/rhel6-amd64/

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1



2. Installing MariaDB with YUM ( 3개 노드 동일)


yum 으로 인스톨하는 것은 간단하다.

yum install MariaDB-server MariaDB-client


** mariadb 10.1 버전 부터는 Galera Cluster 가 MariaDB packages 에 기본 포함되어있다. 

configuration 을 했을때 기능이 활성화되고 그러기 전까지는 비활성화된 상태임. 

만약 MariaDB 10.0,  MariaDB 5.5. 버전이라면 위에 처럼 하지말고 아래처럼 하면 된다. 

yum install MariaDB-Galera-server MariaDB-client galera


내용 출처 : https://mariadb.com/kb/en/library/yum/


3. 데이터베이스 설치 ( 3개 노드 동일)


service mariadb start

mysql_secure_installation




4. Galera configuration


vi /etc/hosts

10.10.10.11 node1

10.10.10.12 node2

10.10.10.13 node3



[galera]

# Mandatory settings


wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address = "gcomm://"

binlog_format = row

default_storage_engine = InnoDB

innodb_autoinc_lock_mode = 2


** 공식 홈페이지에서는 초기 기동시 wsrep_cluster_address ="gcomm://"

이 아닌 wsrep_new_cluster 를 쓰라고 나와있다. 

그러나 내가 테스트 했을 때는 wsrep_new_cluster 로 올리면

cluster_size 가 0 이 되고 나머지 노드들이 클러스터링이 잘 안된다. 

 

#optional

wsrep_cluster_name='galera'

wsrep_node_address = 10.10.10.11

wsrep_node_name = 'node1'

wsrep_sst_method = rsync

# wsrep_sst_auth='galera:galera'

bind-address=0.0.0.0


** wsrep_sst_method=rsync 로 세팅된 경우는 wsrep_sst_auth 를 사용하지 않는다. 


** Mandatory 에서는 초기에 node1 의 wsrep_cluster_address 를 비우고 

나머지 node2,3 은 

wsrep_cluster_address = "gcomm://10.10.10.11,10.10.10.12,10.10.10.13"

모두 적어준다. 

** optional 은 각 node 에 맞게 수정한다. 

ex) 

[node2]

wsrep_node_address=x.x.x.12

wsrep_node_name='node2'

[node3]

wsrep_node_address=x.x.x.13

wsrep_node_name='node3'



5. Bootstrap


- node1,2,3 공통


service mysql stop

Stopping mysql (via systemctl):                            [  OK  ]


- node1 로 처음 boot 할때만 아래처럼 올린다. 

  나머지 node2,3 은 service start 로 올린다. 


[root@localhost ~]# /etc/init.d/mysql start --wsrep-new-cluster


Starting mysql (via systemctl):                            [  OK  ]


[root@localhost ~]# mysql -u root -p -e "show status like 'wsrep%'"



** 나의 경우 node 1 은 정상적으로 올라오고, node2 가 start 과정중에 failed 되었다

이거 해결하느라 고생좀 했다. 이런것들이 오픈소스의 단점이 아닐까 싶다.

무료이지만 상용으로 쓰려면 맨땅에 헤딩을 많이 해야된다.....


부팅 중에 error 나면 systemctl stats 나 journalctl 로 메세지를 확인할수 있다. 

나의 경우엔 원인이 뭔질 모르겠으나 wsrep_sst_method=skip 으로 변경해서

정상적으로 open 시킬수 있었다. 






반응형
Posted by 돌고래트레이너
생계/Oracle2017. 11. 6. 13:32

오라클 DB 를 운영시에 datafile 의 autoextend 속성을 on 으로 운영하면, 데이터 파일이

저절로 파일이 증가해서 따로 신경쓰지 않아도 되는 운영상의 이점이 있다. 

반면, 신경을 안쓰다보니, 필요이상으로 파일이 커지는 일도 종종 발생한다. 

그럴때는 datafile 을 resize 해보자.

 

● Datafile resize

 

### 1. 데이터 datafile  ###

   테이블 : alter table move -> resize

  인덱스 : alter index move, 재생성 -> resize

 

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/ts_test_dat.277.921462245' RESIZE 5G;

ORA-03297: file contains used data beyond requested RESIZE value

=> datafile resize 가 실행되지 않는다면 move tablespace 명령으로 옮기자.

 

ALTER TABLE test.PART_TAB MOVE PARTITION P_201710 TABLESPACE TS_TEST_IMSI;

ALTER INDEX testdb.PK_PART_TAB rebuild TABLESPACE TS_TEST_IMSI;

ERROR at line 1:

ORA-14086: a partitioned index may not be rebuilt as a whole

local partitioned index 는 그냥 재생성 하자. move tablespace 가 안된다. 

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/ts_test_dat.277.921462245' RESIZE 5G;

다시 해보면 된다. 

 

### 2. Temp datafile  ###

 

  TEMP 는 resize 가 안된다.  그냥 교체 하자. 

SQL> select FILE_NAME, TABLESPACE_NAME, TRUNC(BYTES/1024/1024) MB, STATUS  from DBA_TEMP_FILES;

FILE_NAME TABLESPACE_NAME   MB STATUS

---------------------------------------- ---------------------------------------- ---------- -------

+DATA/testdb/tempfile/temp.263.920253251 TEMP        21410 ONLINE

 

SQL> ALTER DATABASE DATAFILE '+DATA/testdb/tempfile/temp.263.920253251' RESIZE 10G;

ALTER DATABASE DATAFILE '+DATA/testdb/tempfile/temp.263.920253251' RESIZE 10G

*

ERROR at line 1:

ORA-01516: nonexistent log file, data file, or temporary file "+DATA/testdb/tempfile/temp.263.920253251"

 

CREATE TEMPORARY TABLESPACE TS_TEMP;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TS_TEMP;

DROP TABLESPACE TEMP;

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '+DATA' SIZE 10G;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

DROP TABLESPACE TEMP TS_TEMP;

ALTER DATABASE TEMPFILE'+DATA/testdb/tempfile/temp.xxx.xxxxxxx' AUTOEXTEND OFF;   

** db가 생성해주는 일련번호를 확인하자.

 

### 3. Undo datafile  ###

 

   resize 가능하다.

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/undotbs1.262.920253249' RESIZE 10G;    

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/undotbs1.262.920253249' AUTOEXTEND OFF;   

 

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle 12c silent mode 설치  (0) 2017.12.13
스키마모드 datapump 테스트  (0) 2017.12.06
오라클 스크립트 생성 SQL  (0) 2017.09.13
ORACLE 파티션테이블  (0) 2017.09.10
오라클 autotrace 옵션  (0) 2017.09.08
Posted by 돌고래트레이너
생계/OS2017. 10. 12. 11:27

요즘 쉘스크립트를 한창 작성중이다. 쉘스크립트는 효율적인 운영을 위해서 운영 DBA에게 필수이다.
작성안한지 오래되서 기억이 가물가물해졌는데, 이번에 20본 정도되는 쉘스크립트를 작성하면서
까먹었던 것들을 다시 확인해보며 정리하고 있다.

여튼 오늘 정리할 것은.., 쉘과 sqlplus 에서의 변수 공유이다.
쉘에서 정해진 변수의 값을 sqlplus 실행시 매개변수로 넘기거나, 그 sql의 실행결과를 쉘에서 가져오고 싶을 때가 있다.
아래 예제는 테이블 이름이 현재시점에서 4개월 전의 년월 형식 (ex. 201706) 으로 되어있는 테이블을 찾는 쉘이다.
보통 yyyymm 형식의 레인지 파티션된 파티션 테이블이나 월별로 테이블이 자동생성되는 경우 해당 테이블을
찾고자 할때 이런식으로 찾을 경우가 많을 것이다.

DATE=$(date +%Y%m -d '4 month ago')
v_rlt=`sqlplus -s tdba/tdba123 @a.sql $DATE`
echo $v_rlt


------------- a.sql -------------------------------------
SET FEEDBACK OFF
SET PAGES 0
SET VERIFY OFF


select count(*) from dba_tables where table_name like '%&&1';
exit;
------------- a.sql -------------------------------------

쉘에서 변수를 선언하고 이것을 sqlplus 를 실행하면서 매개변수로 넘기고 있다.
그리고 결과값을 쉘의 변수에 담는다. 변수에 담긴 값을 쉘에서 다시 필요해 의해 사용될수 있다.
sql 문에서는 쉘에서 넘겨준 매개변수를 &&1 로 받아서 쓸수 있다. 인수가 두개라면, &&1, &&2 이렇게 쓸수 있다.



간단하지만 많은 내용이 들어가 있다.
필요하신분들은 참고하시길..




반응형

'생계 > OS' 카테고리의 다른 글

IOPS와 throughput 에 대해 알아보자  (0) 2024.12.13
RDS swap 사용  (0) 2024.07.06
리눅스 자주 쓰는 명령 모음  (0) 2023.05.23
[virtualbox] 오라클리눅스 설치 oracle-linux 8.4  (0) 2023.01.08
Posted by 돌고래트레이너
생계/OERR2017. 10. 11. 09:30

단순한 프로시져를 만드는데 오류가 생긴다. 

 

 PL/SQL: ORA-00942: table or view does not exist  에러내용은 이것이지만

실제로 테이블이 존재한다. 

 

sqlplus / as sysdba 

grant dba to TDBA;

 

 

CREATE OR REPLACE PROCEDURE TDBA.test

     (v_str_dt    IN    date, v_end_dt IN date) 

     IS 

     aa varchar2(20) :=null;

     BEGIN 

 

        select OWNER into aa

        from dba_objects

        where created between to_date(v_str_dt,'yyyymmdd') and to_date(v_end_dt,'yyyymmdd') 

        and owner not like 'SYS%';

 

     END test; 

     /

 

Warning: Procedure created with compilation errors.

 

SQL> SHOW ERROR

Errors for PROCEDURE TDBA.TEST:

 

LINE/COL ERROR

-------- -----------------------------------------------------------------

6/9      PL/SQL: SQL Statement ignored

7/14     PL/SQL: ORA-00942: table or view does not exist

 
 
 
이것저것 삽질을 해보고 설마 했는데, select 권한을 주니까 정상적으로 created 됨.
 
SQL> grant select on dba_objects to tdba;
 
 
SQL> CREATE OR REPLACE PROCEDURE tdba.test
     (v_str_dt    IN    date, v_end_dt IN date)
  2    3       IS
     aa varchar2(20) :=null;
     BEGIN
 
        select OWNER into aa
        from dba_objects  4    5    6    7    8
  9          where created between to_date(v_str_dt,'yyyymmdd') and to_date(v_end_dt,'yyyymmdd')
        and owner not like 'SYS%';
 
     END test;
     / 10   11   12   13
 
Procedure created.
 
 
헐.. DBA 권한이 있어도 일일이 테이블 select 권한을 줘야하다니..

 

 

반응형
Posted by 돌고래트레이너
생계/기타2017. 10. 6. 02:33

얼마전에 레노버 아이디어패드 320 을 구매해서 여기에 windows 7 32 bit 설치를 완료했습니다.

요즘은 노트북이건 데스크탑이건 CD-ROM 이 안달려서 나오는 추세인것 같네요.

제가 구매한 레노버 아이디어패드 320 모델도 CD-ROM 이 없어서 USB 설치만 가능했던 상황이었습니다.

i5 카비레이크는 인텔의 7세대 cpu 입니다. 6세대 때부터 MS 에서는 windows 7 에서 공식적으로 

지원을 하지 않는 것으로 나와있습니다. 최근에 8세대 cpu 를 발표했다는 기사를 접할수가 있었는데요.

이제 windows 7 도 유물이 되어가는 구나 하는 생각이 들게하는 순간이었습니다. 

 

원래 i5 카비레이크에서는 windows 7 을 설치 할 수 없다고 제조사에서는 얘기했는데 삽질을 거듭하면서

꾸역꾸역 설치를 했습니다. 이제 그 삽질을 정리하고 내용을 포스팅하려 합니다.

이번 포스팅은 그 첫번째 작업으로 'USB부팅디스크 만들기' 에 대한 내용입니다.

 

● 윈도우즈 7 32 bit USB부팅디스크 만들기


1. 준비물

   - Windows 7 32 bit  iso

     아래 링크를 따라가면 영문판이긴 한데 32,64 bit 윈도우즈 7 iso 를 다운 받을수 있습니다.

     https://webforpc.com/software/operating-systems/windows-7-ultimate-download-iso-32-64-bit-free/

     이걸 쓰시거나 한글판을 구하셔서 쓰시면 됩니다.

     iso 파일은 인터넷에서 다운받아 설치하는 것까지는 이상없이 진행할수 있습니다.

    물론 키를 등록하기 위해서는 정품라이센스를 구매하셔야 합니다.  

 

   - rufus

     다운받은 iso 파일을 그냥 복사만 해서는 부팅디스크로 쓸수 없고 rufus 같은 툴을 쓰셔야 합니다.

     http://software.naver.com/software/summary.nhn?softwareId=MFS_111001#

     프리웨어라 비용부담없이 쓰면 됩니다. 저도 이번에 처음 써봤는데 쉽고 간단해서 괜찮은 툴 같습니다.

 

  - USB

     부팅디스크로 쓸 USB. 32bit 면 3G 면 되고, 64bit 면 4G 이상되어야 합니다.


2. USB 포맷


  부팅 디스크를 만들기 전 USB 를 NTFS 파일시스템으로 포맷해야 합니다.

  마우스 우클릭으로 할수도 있지만, 권한문제라든가 어떤 이유로 포맷이 잘 안되신다면

  cmd 창을 열어서 아래 같이 직접 명령어를 입력해서 포맷을 할수도 있습니다.

   Format H: /FS:NTFS /A:4096 /Q

  디스크 H 를 NTFS 파일시스템으로 4096 크기로 빠른 포맷을 하라는 뜻입니다.

  포맷명령어에 대한 내용이 궁금하시다면..   

  http://cappleblog.co.kr/153 

  여기 블로그에 좀 더 자세한 내용이 있습니다.  저도 여기 글을 보고 참조했습니다. 

 


3. 부팅디스크 만들기

 

   rufus 실행 


 

디스크 모양을 클릭해서 iso 파일이 있는 경로를 찾습니다.


 

다른 프로그램이 실행중인 경우 작업이 진행이 안되는 경우가 있습니다.

원격 윈도 프로그램이나 cmd 나 실행중이면 작업이 정상적으로 진행이 안되곤 하는 군요.


 

 

 로그를 클릭해서 정상적으로 진행이 되는지 어디서 에러가 나는지 확인할 수 있습니다.

 이상 작업이 완료되면 USB부팅디스크가 만들어진 것입니다. 짝짝짝~

 USB 부팅디스크를 만드는 작업은 그다지 난이도가 높은 작업은 아닙니다. 위에 적은대로만 

 따라오면 누구나 만들수 있습니다. 

 


반응형
Posted by 돌고래트레이너
생계/기타2017. 9. 28. 00:28

 

 

레노버 아이디어패드 320 리뷰

lenovo ideapad 320 후기 입니다.

i5 카비레이크 장착된 노트북 중 가장 저렴한 놈입니다.

레노버는 아직 구입 해 본 적이 없어서 처음에 망설였지만 가격이 워낙 매력적이어서(49,9000)

선택을 할 수 밖에 없었네요. 


이런 박스와 함께 왔습니다. 

지금까지는 매번 노트북가방에 담긴 노트북만 구매해봐서 박스만 달랑오니 좀 실망스럽네요.

하지만 그런 거품이 빠졌기에 이런 착한 가격이 되었거니 좋게 생각하며 위로를 합니다. 

 

개봉후 바로 찍은게 아니고 os 설치하느라 며칠 좀 만졌더니 그새 손 때가 좀 탔네요.

외관은 맘에 드는데 생각보다 기름같은거에 예민한거 같습니다. 때 잘탑니다.

 

지금 쓰는 노트북이 가로가 긴 삼성 아티브북인데 작업용으론 적당하지 않습니다.

새 노트북을 구매한 이유기도 한데, 그래서 이놈은 해상도가 맘에 듭니다.

 

 

아쉬운점 : USB port 가 둘 뿐인것. 그리고 한쪽면에만 있다는 것. 마우스를 오른쪽에 두고 오른손으로 쓰는것에

익숙해졌는데 이제 왼쪽에 두려니 적응이 안되네요. USB 허브를 하나 사야겠습니다.

 

오른쪽은 아무것도 없습니다.

CDROM 같아보이는 곳은 그냥 공갈입니다. (외장DVD롬 필요. 그래서 os 설치가 빡세졌단..)

 

이놈은 i5 7600 최신 generation 이라 윈도우7 이 지원이 안된다고 친절하게 구입당시 부터 나와있습니다.

근데 사정상 윈도우7 32 비트를 써야하는 상황이라 윈도우 설치를 하며 삽질을 하고 있네요.  

설치가 완료 되면 곧 그 내용도 올리겠습니다.

 

반응형
Posted by 돌고래트레이너