Aylar: Ekim 2018

Postgresql Random Data Yüklemek

Postgresql Random Data Yüklemek

Bazı durumlarda veritabanına random veriler girerek  veritabanının boyutunu artırmak isteyebiliriz .Bunun için aşağıdaki scripti çalıştırabilirsiniz.

Aşağıdaki scriptte t_random adında tablo  oluşturuyoruz.

CREATE TABLE t_random AS SELECT s, md5(random()::text) FROM generate_Series(1,5) s;

Tablo oluşturulduktan sonra insert işlemini yaparak tablonun boyutunu arttırıyoruz.

INSERT INTO t_random VALUES (generate_series(1,1000000000), md5(random()::text));

Aşağıdaki komut yardımı ile de tablonun boyutunu öğrenebiliriz.

SELECT pg_size_pretty(pg_relation_size('t_random'));

 

309 total views, no views today

MSSQL CPU’yu Yoran Sorgular

MSSQL CPU’yu Yoran Sorgular

Veritabanında performans çalışması yapmak istediniz ve cpu değerleriniz yüksek çıkıyor  aşağıdaki sorgu ile  cpu’yu yorgan sorguları kontrol edebilir ve bun sorgu sonucu çıkan sorguları  düzenleyerek cpu değerlerinizi düşürebilirsiniz.

 

Select

     q.[text],

     SUBSTRING(q.text, (qs.statement_start_offset/2)+1,

        ((CASE qs.statement_end_offset

          WHEN -1 THEN DATALENGTH(q.text)

         ELSE qs.statement_end_offset

         END - qs.statement_start_offset)/2) + 1) AS statement_text,

     qs.creation_time,          

     qs.last_execution_time,

     qs.execution_count,

     qs.total_worker_time/1000000 as total_cpu_time_sn,

     qs.total_worker_time/qs.execution_count/1000 as avg_cpu_time_ms,

     qp.query_plan,

     DB_NAME(q.dbid) as database_name,

     q.objectid,

     q.number,

     q.encrypted

from

    (select top 50

          qs.creation_time,

          qs.last_execution_time,

          qs.execution_count,

               qs.plan_handle,

          qs.total_worker_time,

          qs.statement_start_offset,

          qs.statement_end_offset

    from sys.dm_exec_query_stats qs

    order by qs.total_worker_time desc) qs

cross apply sys.dm_exec_sql_text(plan_handle) q

cross apply sys.dm_exec_query_plan(plan_handle) qp

--where DB_NAME(q.dbid)='Database_Adı'

order by qs.total_worker_time desc

 

416 total views, no views today

Postgresql User Adını Değiştirmek

Postgresql User Adını Değiştirmek

Postgresql de kullanıcı oluşturdunuz fakat isminin değişmesi istendi ya da farklı nedenlerden dolayı  değiştirmeniz gerekti  bunun için kullanıcıyı silip tekrar oluşturup tekrar yetkilendirmenize gerek yok aşağıdaki komutu kullanarak user adını değiştirebilirsiniz.

 

ALTER USER  Kullanıcının_eski_ismi RENAME TO Kullanıcının_yeni_ismi;

283 total views, no views today

Postgresql de uzun süren sorguları bulmak ve kill etmek

Postgresql de uzun süren sorguları bulmak ve kill etmek

Veritabanın performansını izlemek veya anlık lockları bulup kill etmek için ya da  modifiye etmek için aşağıdaki sorgulardan faydalanabilirsiniz.

SELECT  pid,  
now() - pg_stat_activity.query_start AS duration,
  query, 
 state  
FROM pg_stat_activity

WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';

Yukarıdaki komutta 5 dakikadan uzun süren sorguları getirir.Aşağıdaki komut yardımı ile ExclusiveLock olan sorguları bulmanıza yardımcı olur.

SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa ON pl.pid = psa.pid where mode ='ExclusiveLock';

Yukarıdaki sorgular yardımı ile sorgunuzu buldunuz ve sorgunuza ait pid(processes id) değerini öğrendikten sonra aşağıdaki komut yardımı ile durdurabilirsiniz.

SELECT pg_cancel_backend (__ pid__);

Sorguyu tamamen pg_cancel_backend komutunu kullanarak durdurmak birkaç saniye sürebilir .

Yada  aşağıdaki komutu kullanarak direk o session’ı kill edebilirsiniz .

SELECT pg_terminate_backend (__ pid__);

pg_terminate_backend komutu  tutarsızlığa neden olabilir , dikkatli kullanmanızı tavsiye ederim.

311 total views, no views today

Postgresql Örnek Veritabanı Yükleme

Postgresql Örnek Veritabanı Yükleme

Postgresql de bazen denemeleri ,testleri yapacağımızda örnek veritabanına ihtiyaç duyabiliyoruz. Bunun için epel reposunda da bulunan  pagila’yı kullanabiliriz. Pagilla’yı yüklemek için aşağıdaki adımları izleyebilirsiniz.

Pagila veritabanını yüklemeden önce epel reposunu yüklemeniz gerekiyor.
Aşağıdaki komut yardımı ile epel reposunu yükleyebilirsiniz.

yum install epel-release

Repoyu indirdikten sonra pagilanın dosyalarını yüklemek için aşağıdaki komutu çalıştırıyoruz.

yum install pagila

Yukarıdaki gibi pagila’nın dosyaları kuruldu şimdi nerede olduğuna bakalım.

cd / yaptıktan sonra  aşağıdaki komut yardımı ile paketi arıyoruz.

find / -name 'pagila*';

Yukarıda pagilanın dosyalarının bulunduğu path’i gördük sıra bunları yüklemeye geldi bunun için postgrese bağlanıyoruz.

Psql -U postgres

Postgres user’ı ile bağlandık ve şimdide  pagila veritabanı oluşturup içine dizinlerdeki dosyaları yükleyelim.

create database pagila;

Pagila veritabanımız oluştuktan sonra “\c pagila” yazarak bağlanıyoruz ve aşağıdaki işlemleri sırası ile yapıyoruz.

Schama ,tablo,type ,domain,function gibi nesneler aşağıda oluşturuluyor.

\i /usr/share/pagila/pagila-schema.sql

Yukarıda oluşturulan tablolara insert scripti yardımı ile veriler yükleniyor.

\i /usr/share/pagila/pagila-insert-data.sql

Tablolar alter ediliyor ve copy komutu ile veriler yükleniyor.

 \i /usr/share/pagila/pagila-data.sql

Veritabanı oluşturduk ve içine veriler basıldı psql e bağlanarak \l+ artı komutuyla  veritabanının boyutunu kontrol edebilirsiniz.

523 total views, no views today

PostgreSQL kurulumu

PostgreSQL kurulumu

Repolarda genel de olan Postgresql 9.2 versiyonudur isterseniz bu versyonu kurabilirsiniz.

https://www.postgresql.org/download/linux/redhat/

Yukarıdaki linkten işletim sistemini versiyonu seçtikten sonra çıkan yum install ile başlayan linki kopyalayarak yapabilirsiniz.

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

Yukarıdaki yum install paketini yükledikten sonra  /etc/yum.repos.d pgdp-10-centos adında repo yüklenmiş olacaktır.

Repo yüklendikten sonra kuruluma geçiyoruz.

yum install postgresql10-contrib postgresql10-server postgresql10 postgresql10-dev postgresql10-lib

Yukarıdaki komut çalışıtırdıktan sonra aşağıdaki gibi onay yeri gelecektir.

Y  yazarak onaylayıp devam ediyorz

Complete! Yazısını gördükten  aşağıdaki komut yardımı ile postgres kullanıcısına bağlanıyoruz .

Su postgres

Sıradaki işlem initdb yapmak oluyor;

 /usr/pgsql-10/bin/initdb /var/lib/pgsql/10/data/

İnitdb den sonra ki kısımı isterseniz değiştirebilirsiniz ( /var/lib/pgsql/10/data yazılan yer)

Root kullanıcısına geçerek aşağıdaki komutu çalıştırıp servisi enable ediyoruz.

systemctl enable postgresql-10.service

Enable ettikten sonra aşağıdaki komut yardımı ile servisi başlatıyoruz.

 systemctl start postgresql-10.service

Bu işlem de yapıldıktan sonra servisimizi kontrol edelim.

systemctl status postgresql-10.service

Servisimiz çalıştığını aşağıdaki gibi görüyoruz.

 

 

 

475 total views, no views today

Postgresql Makefile54  Hatası ve Çözümü

Postgresql Makefile54 Hatası ve Çözümü

Postgresql’in reposunda olmayan farklı extension paketini yüklemeye çalıştığımızda aşağıdaki hataya benzer hata
alabiliriz bunun çözümü için  paketleri yüklememiz gerekiyor bu paketleri yükledikten sorun çözülecektir.

Makefile:54: /usr/pgsql-10/lib/pgxs/src/makefiles/pgxs.mk

Extensionları yüklememiz için postgresql libs ve dev paketlerini yüklememiz gerekir.

Postgresql10 da make54 hatası almamak paketi için  aşağıdaki paketler yüklenmelidir.

yum install centos-release-scl-rh

Postgresql library paketini yüklüyoruz.

yum --enablerepo=centos-sclo-rh-testing install rh-postgresql10-postgresql-libs
yum install postgresql-libs

Postgresql sürümüne bağlı olarak dev paketini yüklüyoruz

yum install postgresql10-devel-10.5-1PGDG.rhel7.x86_64.rpm

Bunlar yüklendikten sonra tekrar  işlemlerinize devam edebilirsiniz.

578 total views, no views today

Postgresql  MSSQL Server arasında Foreign Data Wrapper

Postgresql MSSQL Server arasında Foreign Data Wrapper

Postgresql de farklı veritabanlarından veri çekilebileceğinden  Postgresql Foreign Data Wrapper isimli yazımda bahsederek postgresql den postgresql e fdw(Foreign Data Wrapper)  yapmıştık bu  yazımda Mssql ile Postgresql arasında  tds_fdw extensionından faydalanarak bağlantı yapacağız .

Postgresql den Mssql Server’a bağlanmak için tds_fdw extensionından faydalanacağız fakat bundan önce  kurmamız gereken birkaç paket olacak bunları aşağıdaki gibi yüklememiz gerekiyor.

Kuruluma geçmeden önce  Postgresql kurulumunu lib ve dev paketlerini yüklemeden yaptıysanız versiyonunuza göre rpm paketlerini bularak yüklemeniz gerekmektedir.

Postgresql de lib ve dev paketlerini kurduk varsayarak devam ediyoruz ve root kullanıcısında devam ediyoruz.

GNU Derleyicisini extension paketi  Tds_fdw uzantısının bağlı olduğu paketleri beraberinde getirdiği için   yüklememiz gerekiyor.

Yum install gcc-y

Başka bir extension bağımlılığımız  için yüklememiz gerek epel reposudur. Bunun sebebi extensionımız için gerekli olan freetds ‘in içinde olmasıdır.

İlk olarak aşağıdaki gibi rpm paketini indiriyoruz.

Not: Aşağıdaki komutu çalıştırdığınızda bulunduğunuz dizine indirecektir. Komutu indirmeden önce ‘pwd ‘ komutunu kullanarak bulunduğunuz dizini görebilirsiniz.

 wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

Aşağıdaki gibi indirildiğini ve kaydedildiğini görebilirsiniz.

İndirilen rpm paketini aşağıdaki gibi çalıştırıyoruz.

rpm -ivh epel-release-7-11.noarch.rpm

Epel reposu kurulduktan sonra Freetds ve Freetds-devel kitaplıklarını yüklüyoruz.

yum install freetds -y
yum install freetds-devel -y

Yukarıdaki kurulumlar bittikten sonra tds_fdw extension’ını indiriyoruz.

wget https://github.com/GeoffMontee/tds_fdw/archive/master.zip (wget yüklü değilse yum install wget komutu ile kurabilirsiniz.)

İndirdikten sonra zip dosyasından aşağıdaki gibi çıkarmamız gerekiyor.(unzip yüklü değilse yum install unzip komutu ile kurabilirsiniz.)

Unzip master.zip

Zip dosyasını çıkardıktan sonra tds_fdw klasörünün içine giriyoruz.

 cd tds_fdw-master/

Aşağıdaki  komutları sırasıyla çalıştırıyoruz.

 PATH=/usr/pgsql-10/bin:$PATH make USE_PGXS=1

Yukarıdaki gibi çıktı alamıyor ve hata olarak makefile54 benzeri hata alıyorsanız Postgresql makefile54 hatası çözümü isimli makalemden faydalanabilirsiniz.

Yukarıdaki  gibi çıktı aldıktan sonra  önceki library dosyalarını aşağıdaki gibi yüklüyoruz.

PATH=/usr/pgsql-10/bin:$PATH make USE_PGXS=1 install

 

Yukarıdaki gibi çıktıyı aldıktan sonra Psql e bağlanarak aşağıdaki gibi extension’ı create edebiliriz.

create extension tds_fdw;

Kurulumu yaptık ve şimdi Mssql ile postgresql arasında tds_fdw extension’ını kullanarak foreing data wrapper uygulamasını yapacağız. Bunun için ilk başta  postgresql üzerinde Foreign Data Wrapper için aşağıdaki gibi server oluşturacağız.

CREATE SERVER ms FOREIGN DATA WRAPPER tds_fdw OPTIONS(servername 'MSSQL_Sunucu_ipsi ',database 'fdw_d1',port '1433');

Serverımızı kurduk sıra  postgresql den nasıl bağlanacağımızı belirttiğimiz user mapping kısmına, bunun için aşağıdaki komutu kullanabilirsiniz.

CREATE USER MAPPING FOR postgres SERVER ms OPTIONS (username  'sa', password 'Faruk1234!');

Hangi user ile bağlanacağımızı belirttik şimdi ise postgresql de tablo oluşturup bunu mssql ile bağlamaya sıra geldi. Bunun için  aşağıdaki komuttan yararlanabilirsiniz.

CREATE FOREIGN TABLE ms_d1(id int ,ad nchar(10)) SERVER ms OPTIONS (query 'SELECT id,ad FROM dbo.d1_1');

MSSQL üzerinde bulunan fdw_d1 veritabanında ki, dbo şemasının altındaki d1_1 tablosundan sorgu çektiğimizde aşağıdaki gibi 6 kayıt gelmektedir.

Şimdi ise foreign data wrapper mimarisini kullanarak oluşturduğumuz tabloyu  kullanarak veriyi çekelim ve veriler aynı mı görelim.

Ms_d1 tablomuzdan sorgu çektik şimdide insert deneyelm.

 

Postgresql üzerinden kontrol edelim;

Yukarıda görüldüğü gibi insertler de postgresql üzerinden görüyoruz.

559 total views, no views today

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa