Installasi Database Postgresql 9.5.9 di Server Linux RHEL 7 dengan rpm


Pra installasi :
IP
10.1.XX.XX
OS
Linux xxxxxxx015 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
User OS
Postgre (sudoer)



1. Siapkan rpm dari situs resmi postgresql
[postgre@xxxxxx ~]$ pwd
/home/postgre
[postgre@xxxxxx ~]$ cd 9.5-9/
[postgre@xxxxxx 9.5-9]$ ls
postgresql95-9.5.9-1PGDG.rhel7.x86_64.rpm
postgresql95-contrib-9.5.9-1PGDG.rhel7.x86_64.rpm
postgresql95-libs-9.5.9-1PGDG.rhel7.x86_64.rpm
postgresql95-odbc-09.06.0100-1PGDG.rhel7.x86_64.rpm
postgresql95-server-9.5.9-1PGDG.rhel7.x86_64.rpm

2. Installasi rpm postgresql
[postgre@xxxxxx 9.5-9]$ sudo su -
[sudo] password for postgre:
Last login: Mon Apr 16 14:39:37 WIB 2018 on pts/2
[root@xxxxxx ~]# pwd
/root
[root@xxxxxx ~]# cd /home/postgre/9.5-9/
[root@xxxxxx 9.5-9]# rpm -Uvh postgresql95-libs-9.5.9-1PGDG.rhel7.x86_64.rpm
warning: postgresql95-libs-9.5.9-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing... ################################# [100%]
Updating / installing...
   1:postgresql95-libs-9.5.9-1PGDG.rhe################################# [100%]
[root@xxxxxx 9.5-9]# rpm -Uvh postgresql95-9.5.9-1PGDG.rhel7.x86_64.rpm
warning: postgresql95-9.5.9-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing... ################################# [100%]
Updating / installing...
   1:postgresql95-9.5.9-1PGDG.rhel7 ################################# [100%]
[root@xxxxxx 9.5-9]# rpm -Uvh postgresql95-server-9.5.9-1PGDG.rhel7.x86_64.rpm
warning: postgresql95-server-9.5.9-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Si                                                                                        gnature, key ID 442df0f8: NOKEY
Preparing... ################################# [100%]
Updating / installing...
   1:postgresql95-server-9.5.9-1PGDG.r################################# [100%]
[root@xxxxxx 9.5-9]# rpm -Uvh postgresql95-contrib-9.5.9-1PGDG.rhel7.x86_64.rpm
warning: postgresql95-contrib-9.5.9-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 S                                                                                        ignature, key ID 442df0f8: NOKEY
Preparing... ################################# [100%]
Updating / installing...
   1:postgresql95-contrib-9.5.9-1PGDG.################################# [100%]
[root@xxxxxx 9.5-9]#

3. Inisialisasi PGDATA
[root@xxxxxx 9.5-9]# /usr/pgsql-9.5/bin/postgresql95-setup initdb
Initializing database ... OK

[root@xxxxxx bin]#

4. Edit /var/lib/pgsql/9.5/data/postgresql.conf
Tambahkan command berikut di postgresql.conf
listen_addresses = '*'
port = 5432

5. Edit /var/lib/pgsql/9.5/data/pg_hba.conf
Tambahkan command berikut di pg_hba.conf
host    all             all             0.0.0.0/0               md5

6. Mencoba Start service postgresql
[root@localhost ~]# systemctl start postgresql-9.5.service

7. Stop service postgresql
[root@localhost ~]# systemctl stop postgresql-9.5.service

8. Pindahkan data direktori postgres ke /data/PROD_POSTGRE/
cp -rp /var/lib/pgsql/ /data/
cd /data/
mv pgsql PROD_POSTGRE

9. Edit file postgresql-9.5.service di /usr/lib/systemd/system
vi /usr/lib/systemd/system/postgresql-9.5.service
ubah script
Environment=PGDATA=/var/lib/pgsql/9.5/data/
Menjadi
Environment=PGDATA=/data/PROD_POSTGRE/9.5/data/

10. Start service postgresql
[root@localhost ~]# systemctl start postgresql-9.5.service
[root@xxxxxx system]# systemctl status postgresql-9.5.service
● postgresql-9.5.service - PostgreSQL 9.5 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-04-16 16:18:20 WIB; 1min 3s ago
  Process: 4460 ExecStart=/usr/pgsql-9.5/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 4452 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 4463 (postgres)
   CGroup: /system.slice/postgresql-9.5.service
           ├─4463 /usr/pgsql-9.5/bin/postgres -D /data/PROD_POSTGRE/9.5/data
           ├─4464 postgres: logger process
           ├─4466 postgres: checkpointer process
           ├─4467 postgres: writer process
           ├─4468 postgres: wal writer process
           ├─4469 postgres: autovacuum launcher process
           └─4470 postgres: stats collector process

Apr 16 16:18:19 xxxxxx systemd[1]: Starting PostgreSQL 9.5 database s....
Apr 16 16:18:19 xxxxxx pg_ctl[4460]: < 2018-04-16 16:18:19.716 WIB >L...s
Apr 16 16:18:19 xxxxxx pg_ctl[4460]: < 2018-04-16 16:18:19.716 WIB >H....
Apr 16 16:18:20 xxxxxx systemd[1]: Started PostgreSQL 9.5 database se....
Hint: Some lines were ellipsized, use -l to show in full.
[root@xxxxxx system]#

11. Masuk ke user postgres
su - postgres

12. Buat database dan userdatabase di postgresql
-bash-4.2$ psql
psql (9.5.9)
Type "help" for help.

postgres=# alter user postgres password ‘postgres’;
ALTER ROLE
postgres=# \q

13. Postgresql 9.5.9 siap digunakan

Read more

Cara Recovering (pemulihan) Standby Database Oracle Menggunakan Backup Incremental



Untuk kejadian ini sering kali terjadi jika dataguard oracle tidak sync dan archivelognya sudah tidak ditemukan di primary maupun di standby database. Berikut caranya :
1. Database primary :
Membuat standby controlfile dari database primary :
alter database create standby controlfile as '/xxx/xxx/standby_control.ctl';

*/xxx/xxx adalah path yang akan kita letakan controlfile


2. Database standby :
Melihat nomor scn terakhir yang nantinya akan kita backup dari primary database :
caranya ada 2 :
a. Menggunakan curren_scn dari v$DATABASE
SELECT TO_CHAR(current_scn) FROM V$DATABASE;

b. Menggunakan min(fhscn)
SELECT min(fhscn) FROM x$kcvfh;

Pilih salah satu dari kedua scn diatas


3. Database primary :
Masuk rman, lalu backup incremental sesuai scn yang sudah kita dapat dilangkah kedua.
backup incremental from scn 10798607075930 database format '/xxx/xxx/backup_increment_%U';


4. copy controlfile dan backup yang ada di database primary ke database standby. (bisa menggunakan scp atau rsync)
scp -rp /xxx/xxx/ oracle@(ipdatabasestandby):/xxx/xxx/
    rsync -avz /xxx/xxx/ oracle@(ipdatabasestandby):/xxx/xxx/

5. Database standby :
a. Shutdown database
shutdown immediate;
b. Startup nomount
startup nomount;
c. Restore controlfile menggunakan controlfile yang tadi kita copy
rman target /
restore controlfile from '/xxx/xxx/standby_control.ctl';
d. ubah database ke mount mode
alter database mount;
e. Pastikan MRP tidak sedang berjalan
alter database recover managed standby database cancel;
f. Recover database standby menggunakan rman
rman target /
catalog start with '/xxx/xxx/';
recover database noredo;
f. aktifkan MRP agar standby database sinkron lagi
alter database recover managed standby database disconnect from session;

6. Selesai
Read more

Tutorial Install Ubuntu Server 16.04



Dear pembaca sekalian,

Kali ini saya akan bagikan video tutorial menginstall Ubuntu Server 16.04 di Virtual Box. Operating System Ubuntu memang sangat terkenal untuk kalangan opreker –opreker sekalian. Selain berbasis open source alias gratis, tentunya ubuntu server ini mendukung banyak sekali aplikasi yang dapat berjalan didalamnya. Seperti web server, database, aplication server dan banyak lagi kegunaannya. Jadi, tidak ada salahnya kita belajar untuk menjamah operating sistem yg satu ini.


Sebagai pengenalan, ubuntu server adalah salah satu varian operating system berbasis linux yang dioperasikan menggunakan CLI (Command Line Interface). Jangan mengharapkan ada tampilan yang menarik dari sistem operasi ini. Sekali lagi jangan. Namun buat yang mau expert linux, boleh lah introductionnya belajar ubuntu server.



Read more

Tutorial Install MySql Commercial Server 5.7.17 di Ubuntu Server 16.04 Offline





Dear pembaca sekalian,

Kali ini saya akan bagikan video tutorial menginstall Database MySql Comercial Server di Ubuntu Server 16.04 secara offline. Sebagai catatan, MySql Commercial Server ini adalah produk terbaru dari www.mysql.com. Mau lihat kelebihan dan kekurangannya, silahkan anda berselancar di google atau langsung intip di www.mysql.com.
Untuk mendownload Mysql nya bisa langsung ke edelivery oracle. [link]




Read more

Export-Import Sequence Antar Database Oracle Menggunakan SQL Query



Kali ini saya akan sharing export import sequence oracle dengan menggunakan sql query. Yang biasanya kita jalankan adalah proses datapump(expdp/impdp). Tapi saya coba pakai cara lain, yaitu mengumpulkan sequence apa saja yg akan kita export-import.

Kasusnya begini,
Database A, user TEST punya 100 sequence.
Database B, user TEST tidak punya sequence.
Kita ingin semua squence user TEST yg ada di database A sama dengan sequence user TEST yg ada di database B.

Langkah-langkahnya :
  • Masuk ke user SYSTEM/SYS di database A, lalu Query :

select 'CREATE SEQUENCE ' || SEQUENCE_OWNER || '.' || SEQUENCE_NAME ||' START WITH ' || LAST_NUMBER ||' MAXVALUE ' || MAX_VALUE ||' MINVALUE ' || MIN_VALUE || ' ' ||case when CYCLE_FLAG = 'N' then 'NOCYCLE' when CYCLE_FLAG = 'Y' then 'CYCLE' end ||' CACHE ' || CACHE_SIZE || ' ' ||case when ORDER_FLAG = 'N' then 'NOORDER' when CYCLE_FLAG = 'Y' then 'ORDER' end ||';'from all_sequences
where sequence_owner ='TEST';

  • Grep dan simpan hasil dari query tersebut.


  • Setelah disimpan, copy hasil query tadi dan paste ke user SYSTEM database B
  • Running semua query nya. Berikut contoh menjalan hasil query yg kita copy-paste tadi

  • Selesai, sequence di user TEST database B akan sama seperti user TEST database A

Terima Kasih
Read more

Membuat Cron Jobs / Crontab di Linux



Kita tentu mengenal aplikasi task scheduler pada sistem operasi Windows, yaitu aplikasi yang digunakan menjalankan program secara otomatis sesuai jadwal yang kita kehendaki. Nah, sama halnya Windows, Sistem operasi Linux juga mempunyai aplikasi serupa dengan task schedulernya Windows. Cron / crontab namanya. Cron / crontab adalah salah satu aplikasi daemon, yaitu aplikasi yang berjalan dibalik layar (background process). Biasanya crontab difungsikan untuk menjalankan script linux dengan jadwal-jadwal yang sudah ditentukan. Kita dapat mengatur kapan waktu berjalannya script tersebut. Mari kita pelajari lebih lanjut cara menggunakan Crontab di linux.

Konsep crontab adalah sebagai berikut :

.---------------- Menit (0 - 59)
 |  .------------- Jam (0 - 23)
 |  |  .---------- Tanggal (1 - 31)
 |  |  |  .------- Bulan (1 - 12) atau jan,feb,mar,apr ...
 |  |  |  |  .---- Hari (0 - 6) (Minggu=0) atau sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  * script (dapat menyisipkan file .sh)


Command penting untuk membuat crontab :
Crontab –l = melihat list crontab
Crontab –e = mengedit crontab


Oke, mari kita coba mengaplikasikannya kedalam sebuat sistem operasi.
Saya menggunakan sistem operasi OE linux 86 bit.


Pertama kali kita coba buat script sederhana seperti berikut :

DATEIS=$(date +"%d-%b-%Y")
touch /home/oracle/script/bikinfile_${DATEIS}.txt

Lalu beri nama file tersebut : bikinfile.sh

Setelah membuat file tersebut, mari kita coba untuk memasukannya ke dalam crontab.
Caranya :
ketik crontab –e (untuk mengedit crontab)  
ketik crontab –l (untuk melihat list crontabnya)



Arti dari command crontab diatas adalah script /home/oracle/script/bikinfile.sh dijalankan setiap hari pada jam 15:00 waktu sistem operasi.
Setelah itu, jangan lupa chmod file bikinfile.sh di user root
Chmod +x bikinfile.sh


Nah, kita tinggal apakah script tersebut jalan sesuai keinginan kita atau tidak. Lihat hasilnya setelah jam 15:00 ya kawan.

Terima Kasih



Read more

Logika Cerdas dan Sistem Pakar

A. Teknik Pelacakan
                Pelacakan adalah teknik untuk pencarian :sesuatu”. Didalam pencarian ada dua kemungkinan hasil yang didapat yaitu menemukan dan tidak menemukan. Sehingga pencarian merupakan teknik yang penting dalam AI. Hal penting dalam menentukan keberhasilan sistem berdasar kecerdasan adalah kesuksesan dalam pencarian dan pencocokan.
Keberhasilan dan kualitas pencarian diukur adari empat cara yaitu:
1.       Kelengkapan
    Apakah algoritma pencarian menjamin untuk mendapatkan sebuah penyelesaian jika ada               penyelesaian ?

2.     Optimal
              Apakah algoritma pencarian akan mendapatkan penyeleaian optimal (Misal: penyelesaian dengan biaya lintasan minimum)

3.       Kekompleksan waktu
         Berapa lama waktu yang digunakan untuk menyelesaian permasalahan ?

4.       Kekompleksan Ruang
         Berapa banyak memori yang dibutuhkan untuk melakukan pencarian
Ada beberapa teknik pelacakan:




B. Pencarian Buta Melebar Pertama (Breadth First Search)

Pada metode ini semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1. Pencarian dimulai dari node akar terus ke level ke-1 dari kiri ke kanan, kemudian berpindah ke level berikutnya demikian pula dari kiri ke kanan hingga ditemukan solusi. ( lihat gambar)

  
Algoritma Breadth First:
1.       Buat suatu variable Node_list dan tetapkan sebagai keadaan awal.
2.       Kerjakan langkag-langkah berikut ini sampai tujuan tercapai atau Node_lIst dalam keadaan kosong:
a.    Hapus elemen pertama dari Node_list, sebut dengan nama E. Jika Node_list kosong, maka Keluar.
b.   Pada setiap langkah yang aturannya cocok dengan E, kerjakan:
-          Aplikasikan aturan tersebut untuk membentuk sustu keadaan baru.
-          Jika keadaan awal adalah tujuan yang diharapkan, sukses, dan keluar
-          Jika tidak demikian, tambahkan keadaan awal yang baru tersebut pada akhir Node_list
Keuntungan:
1.    Tidak akan menemui jalan buntu.
2.    Jika ada satu solusi, maka breadth first search akan menemukan. Jika ada lebih dari satu solusi, maka solusi minimum akan ditemukan.
Kelemahan:
1.       Membutuhkan memori yang besar, karena menyimpan semua node dalam satu pohon.
2.       Membutuhkan waktu yang lama, karena akan menguji n level untuk mendapatkan solusi pada level yang ke- (n+1).

Analisis Ruang dan Waktu
1.       Diasumsikan: Ada satu solusi (I tujuan ditemukan) pada pohon. Pohon pelacakan memiliki cabang yang selalu sama, yaitu sebanyak b. Tujuan dicapai pada level ke-d. Tujuan dicapai pada pertengahan pohon ( kondisi rata-rata)
2.       Analisis Ruang
-          Antrian pertama memiliki 1 keadaan.
-          Setelah mencapai langkah pertama, antrian akan berisi b keadaan.
-          Pemrosesan setiap b keadaan pada level ke-0 akan menambahkan b keadaan lagi pada antrian.
-          Sehingga setelah dilakukan pemrosesan semua keadaan pada level ke-d, maka antrian akan menyimpan keadaan sebanyak b d−1 .


Karena diasumsikan bahwa tujuan terletak di tengah, maka antrian akan menyimpan b d−1 /2 keadaan (Lihat Gambar)
c.       3. Analisis Waktu
Ukuran waktu diambil dari banyaknya keadaan yang dikunjungi. Jika tujuan diasumsikan bahwa setiap node membutuhkan waktu yang sama dalam pemrosesan maka:
·         Waktu = waktu untuk memproses node-node di level 1 +
·         Waktu untuk memproses node-node di level 2 +…+
·         Waktu untuk memproses node-node di level ke-(d-1) +
·         Waktu untuk memproses node-node di level ke-(d)/2
                        = 1 + b + b 2 + b 3 +…….+ b d−1 + b d /2
                        = 0 (b d )
C. Pencarian Mendalam Pertama ( Depth First Search)
Pada Depth First Search, Proses pencarian akan dilakukan pada semua anak sebelum dilakukan pencarian ke node-node yang selevel. Pencarian dimulai dari dari node akarke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukan solusi.
        termasuk teknik pelacakan sistematis
        ruang keadaan direpresentasikan dg. diagram pohon mapun grafik
        asumsi one path is as good as any other
        ambil salah satu cabang ( left-to-right order)
        simpul-simpul paling dalam diperiksa lebih dahulu
        lebih efektif digunakan jika simpul sasaran (Goal) terletak pada lokasi yang lebih dalam.
Ø  Keuntungan
      Membutuhkan memori yang relative kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan. Secara kebetulan, metode ini akan menemukan solusi tanpa harus menguji lebih banyak lagi yang lain.
Ø  Kelemahan:
Memungkinkan tidak ditemukannya tujuan yang diharapkan. Hanya akan mendapatkan 1 solusi pada setiap pencarian
Ø  Analisis Ruang dan Waktu
1.    Analisis Ruang
                        Setelah berjalan 1 langkah, stack akan berisi b node.
                        Setelah berjalan 2 langkah, stack akan berisi (b-1)+b node
                        Setelah berjalan 3 langkah, stack akan berisi (b-1)+(b-1)+b node
                        Setelah berjalan d langkah, stack akan berisi (b-1)x d+1, mencapai maksimum
2.       Analisis Waktu
Pada kasus terbaik, depth-first-search akan mencapai tujuan pada kedalaman d pertama, sehingga dibutuhkan pencarian sebanyak d+1 node. Pada kasus terburuk , depth-first-search akan mencapai tujuan pada kedalaman d pada node terakhir, sehingga dibutuhkan pencarian sebanyak : 1+b+b 2 +b 3 +….+b d = (b d +1 -1)/(b-1)

Read more