[PostgreSQL & PPAS]監控項目小計

1.檢查pg_xlog/archive_status目錄下的.ready檔案是否有很多個,如果有很多,表示該目錄的寫性能不好。
unit?=個數
#./check_postgres_archive_ready -H 127.0.0.1 -p 5432 -db test -u postgres

2.當table的age到達一定的值後,db需要適時的做vacuum freeze,否則會有資料消失的問題。
unit?=百分比
#./check_postgres_autovac_freeze -H 127.0.0.1 -p 5432 -db test -u postgres --include=test

3.監測最大連線數(整個資料庫instance)。
unit?=個數
#./check_postgres_backends -H 127.0.0.1 -p 5432 -db test -u postgres --output=simple

4.監測Table跟Index的膨脹量(Checks the amount of bloat in tables and indexes.)
db膨脹量與autovacuum_vacuum_scale_factor有關,預設是0.2,所以一般超過20%就要告警,利用vacuum full來回收。
perflimit -> 找前幾名
unit?=容量(bytes, kilobytes, megabytes, gigabytes, terabytes, exabytes, petabytes, and zettabytes.)
#./check_postgres_bloat -H 127.0.0.1 -p 5432 -db test -u postgres --perflimit=5

5.檢查最後一次checkpoint發生到現在經過了多少時間。
unit?=時間,秒
#./check_postgres_checkpoint --datadir=/usr/local/pgsql/data -w 10s

6.監測transaction commit ratio。反過來說就是監測rollback的百分比
unit?=百分比
./check_postgres_commitratio -H 127.0.0.1 -p 5444 -db edb -u enterprisedb --include=edb --output=simple

7.資料庫連線狀態
unit?=1(available) or 0(unavailable)
#./check_postgres_connection -H 127.0.0.1 -p 5432 -db test -u postgres --output=simple

8.自訂SQL監測 (有一定的限制,看場合使用)
最多只能有兩個return值。一個要是result另一個隨便
#./check_postgres_custom_query -H 127.0.0.1 -p 5432 -db test -u postgres --query="select relname AS result, relpages AS pages from pg_class where relpages>10" --valtype=string -w 6

9.資料庫容量監測
unit?=容量(bytes, kilobytes, megabytes, gigabytes, terabytes, exabytes, petabytes, and zettabytes.)
#./check_postgres_database_size -H 127.0.0.1 -p 5432 -db test -u postgres --include=test -w 10M -c 20M --output=simple

10.Buffer命中率 (blks_hit/(blks_hit+blks_read)) 從 pg_stat_database 這個統計view查的到
unit?=百分比
#./check_postgres_hitratio -H 127.0.0.1 -p 5444 -db edb -u enterprisedb --include=edb --output=simple

11.Last vacuum, analyze, autovacuum, autoanalyze到現在的時間間隔
unit?=table=時間,秒
#./check_postgres_last_analyze -H 127.0.0.1 -p 5444 -db edb -u enterprised --output=simple
#./check_postgres_last_autoanalyze -H 127.0.0.1 -p 5444 -db edb -u enterprisedb --output=simple
#./check_postgres_last_vacuum -H 127.0.0.1 -p 5444 -db edb -u enterprisedb --output=simple
#./check_postgres_last_autovacuum -H 127.0.0.1 -p 5444 -db edb -u enterprisedb --output=simple

12.prepared transaction監測(前提是postgresql.conf裡面的max_prepared_transactions有設定)
unit?=個數 ->有多少個還沒完成的tx(未commit的量)
#./check_postgres_prepared_txns -H 127.0.0.1 -p 5432 -db test -u postgres --output=simple

13.是否發生slowquery
unit?=時間,秒
#./check_postgres_query_time  -H 127.0.0.1 -p 5432 -db test -u postgres --include=test -w 300s --output=simple

14.監控tx的Idle時間
unit?=時間,秒
#./check_postgres_txn_idle -H 127.0.0.1 -p 5432 -db test -u postgres -w 60s

14.監控tx的最長執行時間 (8.3以後才能使用)
unit?=時間,秒
#./check_postgres_txn_time -H 127.0.0.1 -p 5432 -db test -u postgres -w 60s

[PostgreSQL/PPAS] Ora2Pg - Migrates Oracle Databases to PostgreSQL

1. 下載所需檔案
    a.Oracle:下載OCI 的base及sdk(這裡)
    b.Perl:下載DBD:Oracle(這裡)
    c.Ora2Pg:下載ora2pg source (這裡)

2. 安裝OCI
    # rpm -Uvh oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
    # rpm -Uvh oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
    # vi /etc/ld.so.conf.d/oci.conf
============oci.conf start================
/usr/lib/oracle/12.1/client64/lib
============oci.conf  EOF================
    # ldconfig -v

3. 安裝Perl DBD:Oracle模組
   # tar -zxvf DBD-Oracle-1.68.tar.gz
   # cd DBD-Oracle-1.6
   # export ORACLE_HOME=/usr/lib/oracle/12.1/client64
   # export PATH=$PATH:$ORACLE_HOME/bin
   # export LD_LIBRARY_PATH=$ORACLE_HOME/lib
   # perl Makefile.PL -V 12.1.0
   # make install

4. 安裝Ora2Pg
   # tar -jxvf ora2pg-12.0.tar.bz2
   # cd ora2pg-12.0
   # perl Makefile.PL
   # make && make install

5.定義轉換時所需的workspace
./create_workspace.sh

6.組態資料庫連線
$ sudo vim mig_config/ora2pg.conf
# modify the following lines
ORACLE_HOME     /home/cenoq/app/cenoq/product/11.2.0/client_1
ORACLE_DSN      dbi:Oracle:host=172.16.1.129;sid=db1;port=1521
ORACLE_USER     csapi
ORACLE_PWD      csapi

ALLOW   CS_*

7.進行資料庫轉出
$ ora2pg -t TABLE -o table.sql -b mig_table/ -c mig_config/ora2pg.conf -l exp_table.log
$ ora2pg -t COPY -o data.sql -b mig_data/ -c mig_config/ora2pg.conf -l exp_table.log
$ ora2pg -t SEQUENCE -o sequence.sql -b mig_sequence/ -c mig_config/ora2pg.conf -l exp_table.log

8.檢視轉出結果
$ vim exp_xxx.log
$ vim table.sql
$ vim data.sql
$ vim sequence.sql

9.進行資料庫匯入
$ psql -U csapi -h localhost -p 5555 -d csapi -f table.sql
$ psql -U csapi -h localhost -p 5555 -d csapi -f data.sql
$ psql -U csapi -h localhost -p 5555 -d csapi -f sequence.sql

10.檢視匯入結果
$ psql -U csapi -h localhost -p 5555 -d csapi
csapi# select count(1) from cs_*;

[PostgreSQL/PPAS] 利用 pgBadger 來分析 Postgres log file

1.下載pgBadger,並解壓
# tar -zxvf pgbadger-3.6.tar.gz

2.安裝(optional)
# cd pgbadger-3.6
# perl Makefile.PL
# make && make install

3.執行
./pgbadger --prefix 'postgresql.conf裡面log_line_prefix的值 ' /path/to/your/pglog/*.log -o out.html

4.用browser看結果囉!!




[PostgreSQL/PPAS] Barman - Backup and Recovery Manager

1.Barman:
Braman (Backup & Recovery Manager) - 是PostgreSQL資料庫伺服器非常方便的備份與還原工具,它可以遠端執行備份、集中管理備份及允許由一個備份還原資料庫。
它的原理是利用PostgreSQL的PITR來達到的,對PITR有興趣的"捧油",可以到這裡去看看喔!!

2.環境說明:

172.16.1.89 - PostgreSQL Backup Server
172.16.1.90 - Zabbix Server
172.16.1.91 - PostgreSQL 8.2
172.16.1.92 - PostgreSQL 8.3
172.16.1.93 - PostgreSQL 8.4
172.16.1.94 - PostgreSQL 9.0
172.16.1.95 - PostgreSQL 9.1
172.16.1.96 - EDB PPAS 9.2

3.安裝:
先到Barman的官網 http://www.pgbarman.org 下載安裝包到 PostgreSQL Backup Server。
3.1 解壓縮。
# tar -zxvf barman-1.2.3.tar.gz
3.1 cd到 barman-1.2.3,開始build and install
# cd barman-1.2.3
# ./setup.py build
# ./setup.py install
3.3 由於barman是利用python來實作的,所以它有相依的python lib如下:
a). python-argh     b). python-dateutil    c). python-psycopg2
安裝步驟如下:
# wget http://mirror-fpt-telecom.fpt.net/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm     (optional)  選一個
# yum install epel-release-6-8.noarch.rpm  (optional)  選一個
# yum repolist
# yum -y install python-pip
# yum -y install python-argh python-dateutil python-psycopg2
# pip install argcomplete

[JBoss] JBoss7 & JEAP6 如何安裝EDB 的JDBC Driver,並設定DATASOURCE

1. 先下載好JDBC Driver JAR。
EDB-PPAS   : edb-jdbc16.jar or edb-jdbc14.jar (看你的JDK ver囉!!)

2. 在JBOSS_HOME/modules/下建立com/edb資料夾
這裡要注意,如果你是JBoss7,就是在JBOSS_HOME/modules下建立
如果是JEAP6就是在JBOSS_HOME/modules/system/layers/base/建立囉
一般來說裡面都有com資料夾了,只需再加上edb folder (如下圖)

3. 複製JDBC Driver並建立Module檔。
先將EDB JDBC Jar COPY進去,接著建立一個module.xml檔,內容如下: