2018년 1월 9일 화요일

zamong server 설치

0. server 설정

hosts 설정
# vi /etc/hosts
192.168.56.130   monitor
추가


os 방화벽 해제
# service iptables stop
※ RHEL7 이상의 경우 # systemctl start firewalld


SELINUX 해제
# setenforce=0
※ RHEL7 이상의 경우 # setenforce=disabled

# vi /etc/selinux/config
SELINUX=disabled



1. apache 설치

apache yum 설치
# yum install httpd


apache 설정

httpd.conf 파일의 파라미터를 수정한다.
# vi /etc/httpd/conf/httpd.conf

ServerName 파라미터를 '#' 주석 제거 후 수정한다.
#ServerName www.example.com:80 -> ServerName 192.168.56.130:80

AddDefaultCharset 파라미터에 '#'을 붙여, 주석처리한다.
AddDefaultCharset -> #AddDefaultCharset UTF-8


apache 실행
# apachectl start


Test 진행
# vi /var/www/html/testwebpage.html
=============================
            <html>
              <head>
                 <title>
                    TEST
                 </title>
              </head>

              <body>
                    TEST
              </body>

            <htm
=============================
저장 후
http://192.168.56.130/testwebpage.html 에 접속하여
TEST 라는 텍스트가 잘 나오는지 확인


2. php 설치


php yum 설치
# yum install php
# yum install php-mysql


php가 httpd연동되어 잘 설치되었는지 확인

# ls -al /usr/lib64/httpd/modules/ | grep php
libphp5.so 파일 확인

# ls -al /etc/httpd/conf.d/ | grep php
php.conf 파일 확인


php 설정
# vi /etc/php.ini
아래의 파라미터들을 추가하거나 변경

allow_url_fopen = Off
display_errors = Off
magic_quotes_gpc = Off
file_uploads = Off
log_errors = On
error_log = php_errors.log
date.timezone = Asia/Seoul


apache 재구동
# apachectl restart


3. zamong server 설치

zamong server & agent download
http://www.zamongsoft.com/download.php


계정 생성
# useradd zamong
# passwd zamong


파일 업로드
# cd /home/zamong/
해당 위치에 zamong_server_vXX.tar.gz 파일 업로드


압축 해제
# tar -zxvf zamong_server_vXX.tar.gz


config 파일 수정
# cd /home/zamong/zsvr
# vi zamongserver.conf
home_dir                   /home/zamong/zsvr

zamong_listen_port         17531

db_server_ip               192.168.56.130

db_connect_user            mong

string_for_connection      z1mong

db_connection_port         3306

database_name              zamong

table_check_interval       180

※ zamong을 설치할 자신의 server 상황에 맞게 수정한다.




4. mysql download 및 설치


mysql yum repo download
https://dev.mysql.com/downloads/repo/yum/
(다운로드 받을 시에, oracle support 계정이 필요하다.)

mysql57-community-release-el6-11.noarch.rpm 파일을 서버에 전송한다.


rpm으로 yum repository에 등록
# rpm -ivh mysql57-community-release-el6-11.noarch.rpm



전체 패키지 확인
# yum search mysql-community


패키지 설치
# yum install  mysql-community-server
# yum install mysql-community-client
# yum mysql-community-libs
# yum mysql-community-common


mysql 설정 변경
# vi /etc/my.cnf

아래의 파라미터로 수정 또는 추가
concurrent_insert = 2
max_allowed_packet = 32M
skip-name-resolve

아래의 파라미터들은 모두 주석처리
# skip-host-cache
# skip-networking
# bind-address



mysql 서비스 시작
# service mysqld start
※ RHEL7 이상의 경우 # systemctl start mysqld


mysql root 보안설정
초기 mysql 설치 시 root 계정으로 바로 접속이 불가능하다.
아래와 같이 보안 스크립트를 돌리거나, 랜덤 생성된 default password로 접속 후 변경해 주어야 한다.

a. 스크립트 실행
# mysql_secure_installation

OR

b. default password로 접속
# grep 'temporary password' /var/log/mysqld.log
에서 나오는 무작위 비밀번호로 mysql 접속 후, 암호를 변경한다.

# mysql -uroot -p
Enter password: 암호



db 생성
mysql> create database zamong;


db 생성 확인
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zamong             |
+--------------------+


mong user 생성
mysql> create user mong;


mong user 권한 부여 및 password 설정
mysql> grant all privileges on zamong.* to mong@'%' identified by 'z1mong';

※ 필요에 따라 아래와 같이 지정
mysql> grant all privileges on zamong.* to mong@'localhost' identified by 'z1mong';
mysql> grant all privileges on zamong.* to mong@'monitor' identified by 'z1mong';

mysql> flush privileges;



mong user 권한 확인
mysql> show grants for mong
+--------------------------------------------------+
| Grants for mong@%                                |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO 'mong'@'%'                 |
| GRANT ALL PRIVILEGES ON `zamong`.* TO 'mong'@'%' |
+--------------------------------------------------+

mong user 정상 접속 확인
# mysql -u mong -p z1mong -D zamong -h 192.168.56.130 -P 3306


apm(apache php mysql) 연동 확인

# vi /var/www/html/test.php

=============================
           <?php

           define('__HOST__',     '192.168.56.130');
           define('__DATABASE__', 'zamong') ;
           define('__PORT__',      3306 );
           define('__USER__',     'mong');
           define('__PASSWORD__', 'z1mong');


              $conn = mysqli_connect(__HOST__, __USER__, __PASSWORD__ ,__DATABASE__ , __PORT__  );


              if ( !$conn )
                {  echo "db connection fail: ERROR "  .  mysqli_connect_error()  ;
                   exit ;
                }
              else
                {
                   echo "db connection success" ;
                   exit ;
                 }

           ?>
=============================

저장 후,
http://192.168.56.130/test.php 접속하여
db connection success 확인


5. zamong 서버 시작
[zamong@zamong zsvr]$ ./zamongsvrctl start
Starting zamong_svr process. Please refer to the zamong_server.log file for detail
Wait for checking
....
USER   PID     PROCESS
zamong    3225 zamong_svr


※ 라이브러리를 못찾는 에러 발생시
[zamong@zamong zsvr]$ ./zamongsvrctl start
Starting zamong_svr process. Please refer to the zamong_server.log file for detail
Wait for checking
../zamong_svr: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

ldd 명령어로 zamong_svr의 라이브러리를 확인 후,

[zamong@zamong zsvr]$ ldd zamong_svr 
linux-vdso.so.1 =>  (0x00007fff50e7a000)
libmysqlclient.so.18 => not found
libz.so.1 => /lib64/libz.so.1 (0x0000003f6b800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003f6c000000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003f6b400000)
libc.so.6 => /lib64/libc.so.6 (0x0000003f6b000000)
/lib64/ld-linux-x86-64.so.2 (0x000055a5a74fc000)

위와 같이 libmysqlclient.so.18 라이브러리가 없는 상태라면, zsvr/lib 폴더 아래의 libmysqlclient.so.18 파일을 프로세스가 1차로 참조하는 디렉토리 (위의 경우 /lib64/) 아래로 cp를 이용하여 이동해 주면 된다.

[zamong@zamong zsvr]$ ./zamongsvrctl start
Starting zamong_svr process. Please refer to the zamong_server.log file for detail
Wait for checking
....
USER   PID     PROCESS
zamong    3225 zamong_svr

이후 정상 시작되는 것을 확인 할 수 있다.




6. zamong web UI 설치

파일 전송
# cd /var/www/html/
zamong_web.tar.gz 해당 파일 전송


압축 해제
# tar -zxvf zamong_web.tar.gz


php 및 httpd 파일 설정 변경
# cd /var/www/html/zamong

# vi config.php
==============================
<?php
define('__HOST__',     '127.0.0.1');
define('__DATABASE__', 'zamong') ;
define('__PORT__',      3306 );
define('__USER__',     'mong');
define('__PASSWORD__', 'z1mong');
// define('__SOCKET__',    '/tmp/mysql.sock' );
?>
==============================

# vi /etc/httpd/conf/httpd.conf
httpd.conf 파일에서 DocumentRoot 파라미터 수정

DocumentRoot "/var/www/html/zamong"


7. 최종 접속 테스트

http://192.168.56.130/



























8. zamong agent 설치

# cd /home/oracle
linux_zamong_agent_1120400.tar 파일 업로드

# chown oracle:dba linux_zamong_agent_1120400.tar

oracle $ tar -xvf linux_zamong_agent_1120400.tar
oracle $ cd zamong
oracle $ vi zamong.conf
============================
home_dir               /home/oracle/zamong

collector_ip            192.168.56.130

collector_port          17531

db_alias                oracle

os_number               2

oracle_version_number   1120400

instance_name           orcl

db_name                 orcl

db_install_user         oracle
============================

oracle $ ./zamongctl start

oracle $ ./zamongctl start

Parameter home_dir is '/home/oracle/zamong'
Starting zamong_gs process. Please refer to the zamong_gs.log file for detail
Wait ..
Starting zamong_as process. Please refer to the zamong_as.log file for detail

Wait for checking
............
zamong_gs: process (pid) 18291 for orcl
zamong_as: process (pid) 18298 for orcl
zamong_ms: starting

USER   PID     COMMAND
oracle   18298 zamong_as
oracle   18291 zamong_gs
oracle   18403 zamong_ms


9. Web UI에서 DB 추가 및 확인

http://192.168.56.130 으로 이동
DB ALIAS : oracle
DESCRIPTION : test








아래와 같이 추가된것 확인 후, Action을 클릭










그래프 정상 확인






2018년 1월 8일 월요일

정호 스터디 2018_01_06 RAC & ADRCI


1. 서버에 최초 접근 시

RAC 서버 접속 후,
관리에 있어서 grid와 dbhome의 위치를 가장 먼저 파악해야 한다.


▶ grid home 위치 확인

# ps -ef | grep d.bin









# cat /etc/oratab

DB가 종료 되어 있는 서버의 경우 프로세스에 나타나지 않으므로,
설치 도중 root.sh파일을 실행하게 되는데, 이 때 db 엔진들의 home 정보가 /etc/oratab 파일에 입력된다.





※ 절대 bash_profile을 믿어서는 안된다.
※ sun(solaris)의 경우 "/var/opt/oracle/oratab" 이다.



▶ Listener 위치 확인

# ps -ef | grep tns


lsnrctl을 사용하기 전에 11g에서 RAC의 리스너는 grid에서 자동 생성 하므로, 유념하여 리스너의 위치를 확인한다.

※ 10g의 경우, asm과 listener를 db엔진 생성 단계에서 하므로, Listener는 database home 에서 실행된다.



▶ ASM 및 DB 의 SID 확인

# ps -ef | grep pmon









▶ sqlplus로 접속 후, dbname, instance 확인.

SQL> show parameter name


자신이 작업할 DB가 맞는지 반드시 확인하도록 한다.





2. RAC crs의 관리(crsctl)



▶ crs의 시작과 종료

# crsctl start crs
: crs 시작

# crsctl stop crs
: crs 종료

# crsctl stop crs -f
: crs 강제 종료
※ -f 옵션을 동반한 강제 종료는 DB를 abort로 종료 시킨다.

# crsctl start crs -excl
: crs를 제한적으로, 최소한의 모드로 올리는 경우.


※ 명령을 실행한 하나의 노드에서만 crs가 실행 되며,
db는 올릴 수 없는 상태이지만, ASM이라도 올려서 확인을 반드시 해야하는 경우 유용하게 사용 가능하다.
※ ASM이 올라가 있기 때문에, crsctl, sqlplus / as sysasm 또는, asmcmd, ocr, oicfg  명령어 등을 사용 가능하다.
※ 종료 할때는 "crsctl stop crs" -f 로 강제종료를 해야한다.


▶ crs의 상태 조회

# crsctl status resource -t
: crs의 상태를 조회한다.

# crsctl stat resource -t -init
: crsctl start crs를 진행 후, start 되고 있는 도중에 확인이 필요한 경우
※ 기본적으로 -init 옵션을 붙이지 않으면 crs 데몬들이 완전 구동되지 않은 경우 확인이 불가능하다.

# crsctl relocate resource 
: crs상에서 cluster_resource에 등록된 Resource를 다른 노드로 보내 줄 수 있다.
또한 2개의 노드인 경우에는 현재 노드에서 다른 노드로 자동 이동 되며, 3개 이상 노드의 경우 -n 옵션으로 노드를 지정해 줄 수 있다. 또한, 옮겨지지 않는 resource인데 부득이하게 강제로 옮겨야 하는 경우 -f 옵션 사용이 가능하다. (특히 세션 조정을 위한 vip 이동의 경우)

※ Resource 관련
11g R2 부터는 local_resource, cluster_resource가 나뉘어 졌다.
또한 11g에서는 asm resource가 각 로컬(local_resource)에 있었지만,
12c 부터는 cluster_resource로 변경되었다.


# crsctl add serverpool
server pool에 다른 서비스(apache 등)을 등록하여, 다른노드로 자동 failover가 되도록 설정 할 수 있다.
# crsctl add serverpool myApache_sp -attr "PARENT_POOLS=Generic, SERVER_NAMES=rac1 rac2"


# crsctl add resource
신규 리소스를 등록할 수 있으며, serverpool에 등록해놓은 것을 이용하여 작성 할 수 있다.
# crsctl add resource myApache -type cluster_resource -attr "ACTION_SCRIPT=/usr/local/bin/apache.scr, PLACEMENT='restricted', SERVER_POOLS=myApache_sp, CHECK_INTERVAL='30', RESTART_ATTEMPTS='2'"

이후 crsctl start res myApache 및 crsctl start res myApache 등의 명령어로 시작 및 상태 조회가 가능하다.



3. RAC 서비스 관리(srvctl)

# srvctl start database -d orcl
: orcl DB 시작

# srvctl stop database -d orcl
: orcl db 종료

# srvctl start instance -d orcl -n rac1
: 1번 노드에서만 orcl db 시작

# srvctl config database -d orcl
: 명령 실행시 적용되는 설정 확인.






















# srvctl start database -d orcl -o 'read only'
: read only 상태로 db start (migration 등의 작업 시 유용)

※ 단, data pump의 expdp 사용 시에는, db 안에서 테이블이 만들어지면서 진행되는 작업이기에, open 상태가 되어 있어야 한다.

# srvctl start database -d orcl -o mount
: mount 상태로 db start

# srvctl stop listener -l LISTENER -n rac1
: rac1 노드의 리스너를 종료한다.
※ 리스너는 connection에서의 forking 역할만 하므로, 기존 rac1 노드에 연결된 session들은 끊어지지 않는다. session 조정이 필요한 경우, 신규 세션들은 모두 rac2에 연결되므로 유용하게 사용 가능하다.




4. inter-connect
interconnect는 UDP 통신으로, 크로스 케이블로 직결연결 하면 data loss 및 instance 장애가 발생 할 수 있다.
따라서 양 노드 사이에 switch를 두고 연결해야 한다.

더불어 특히 AIX의 경우 udp buffer size를 최대로 올려야 하며,
tcp_recvspace = 65536
tcp_sendspace = 65536
udp_sendspace = ((DB_BLOCK_SIZE * DB_FILE_MULTIBLOCK_READ_COUNT) + 4 KB) but no lower than 65536
udp_recvspace = 655360 (Minimum recommended value is 10x udp_sendspace, parameter value must be less than sb_max)
rfc1323 = 1
sb_max = 4194304 #(1048576, 4194304, 83388608 값 중에서만)

ipqmaxlen = 512

OS별 Default UDP Buffer Size와 조절방법(MAX:8M)
kernelValueDefaultCommand
Linuxnet.core.rmem_max131071sysctl -w net.core.rmem_max = 8388608
Solarisudp_max_buf262144ndd -set /dev/udp udp_max_buf 8388608
AIXsb_max1048576no -o sb_max=8388608
(1048576, 4194304, 83388608 값 중에서만)




MTU 값 또한 조절해 주어야 한다.

ex) eth0 변경시

# ifconfig eth0 mtu 9000 up

OR

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
MTU="9000"

추가 후, network 재시작
# service network restart




5. ASM DISKGROUP 관리

sqlplus / as sysasm

set pagesize 1000
set linesize 130
col name format a20
col failgroup format a20
col group_name format a10
select g.name group_name, d.name, d.mode_status, d.header_status
from v$asm_disk d, v$asm_diskgroup g
where d.group_number = g.group_number
and g.name = 'DATA' order by d.failgroup, d.name;

disk drop 해보기.

SQL> select * from v$asm_operation;
no rows selected

SQL> alter diskgroup DATA drop disk 'DISK05';
Diskgroup altered.

SQL> select * from v$asm_operation;


SQL> col name format a20
SQL> col path format a20
SQL> select name, path, mode_status, header_status from v$asm_disk

디스크 다시 추가
SQL> alter diskgroup DATA add disk 'ORCL:DISK05';

SQL> select * from v$asm_operation;

rebalance power를 높여서 rebalance를 더 빠르게 할 수 있다.
SQL> alter diskgroup data rebalance power 11;




6. RAC 관련 ORACLE SR 지원
11g부터 SE(Standard Edition)에서는 ASM으로만 공식 지원 하며, Raw Device로 설치는 가능하지만, SR이 불가능하다.

이러한 지원 관련 용어로, 아래의 두가지 용어가 사용 되며, 작업전에 Documents에서 관련 내용을 확인하는 것이 필요하다.
▶ Deprecated
: 다음 버전부터 사라질 기능이니 사용을 지양 할 것.
▶ Desupport
: 지원 불가.

SR 진행 전 실행해볼 필요가 있는 공식 스크립트

▶ RAC 설치 전 확인 작업
./runcluvfy.sh stage -pre crsinst -n rac1,rac2,rac3 -r 11gR2 -verbose > ./check1.log

▶ SR 진행 전 diagcollection.sh 수행
$GRID_HOME/bin/diagcollection.sh
※ 현재폴더로 tar.gz 파일이 만들어지며,
SR 진행 전에는 diagcollection.sh로 만들어진 파일 및 현재 현상을 SR에 전달하면, 추가 자료 요청을 대폭 줄일 수 있다.


===================================

7. ADRCI
11g 부터 제공되는 기능으로, base, home 확인 및 alert, trace 확인 및 정리까지 다양한 기능을 제공한다.

adrci> show homepath












adrci> show base







adrci> show alert














원하는 홈의 번호를 선택하면 바로 alert 로그를 볼 수 있다.

adrci> set home (homepath)
adrci> show alert -tail -f
홈경로를 지정해준 후, alert 로그를 지속적으로 확인 할 수도 있다.
















adrci> purge -age -30
30일치만 남기고 모두 정리도 가능하다.



zamong server 설치

0. server 설정 hosts 설정 # vi /etc/hosts 192.168.56.130   monitor 추가 os 방화벽 해제 # service iptables stop ※ RHEL7 이상의 경우 # systemctl st...