26.10.2010

11gR2 Clusterware tips

Grid home consists of the Oracle Clusterware and ASM. But Grid Infra and RAC DB must be install different home.

First install clusterware then install RAC

If you want to use ASM and Oracle Restart GI can be installed in single server mode .

Grid infra run alone. You can use application like other clusterware

Voting file backed automaticly(configuration change).You can restore crsctl.

SCAN VIP three ip. one vip for each node register DNS or Grid Naming Service

Connect node then Start and Stop CRS crsctl start crs crsctl stop crs

crsctl start cluster start all nodes




RAC Tuning Tips

- Tuning single instance first
- SQL Tuning is most beneficial
- Buffer cache size is very important
- Use sequence cache
- Use partition table
- Reduce long full table scan (OLTP)
- Use selective,correct index
- Use automatic segment space management
- Private Network/Interconnect 1/10 Gbit Ethernet Infiniband


25.10.2010

Oracle Grid Infra / ASM Files and RMAN

RMAN> BACKUP AS COPY
DATAFILE "+DATA/rdbms/datafile/tbs_1.252.234234"
FORMAT "+DATA";

RMAN>Backup as copy database format "+DATA";


Rman canbe used to migrate database into ASM

you can access ASM files using XMLDB

Access via PLSQL,FTP and HTTP.

You can access under /sys/asm, the folder hierarchy is defined by the structure of an ASM

You can run $ORACLE_HOME/rdbms/admin/catxdbdbca.sql or use Oracle enterprise manager


Also you can use DBMS_FILE_TRANSFER

SQL> CREATE DIRECTORY deneme AS '+DATA/files';


SQL> CREATE DIRECTORY osden AS '/u01/app/oracle/oradata/orcl';

SQL> BEGIN

DBMS_FILE_TRANSFER.COPY_FILE('osden','user.dbf','deneme','user.dbf');

END;

/


DBMS_FILE_TRANSFER supports all combination. ASM to O/S files or O/S files to ASM


You can use ASMCMD like


grid@zek ~]$ asmcmd

ASMCMD> cd +DATA/orcl/DATAFILE

ASMCMD> ls -l


ASMCMD> cd ..

ASMCMD> pwd

+DATA/orcl/DATAFILE



TROUG Turkish Oracle User Group / Oracle DAY 4 KASIM

4 Kasım Oracle Day'de Haliç salonundayız.

14:00 – 14:40 Konu: Oracle 11g DBA ler için yeni özellikler

Konuşmacı:Zekeriya Besiroglu

14:45 – 15:30 Konu:Oracle 11g Database Developerlar için yeni özelikler

Konuşmacı:H.Tonguc Yılmaz

15:30 – 16:00 Ara

16:00 – 16:40 Konu: Oracle 11g çok büyük databaseler için yeni özellikler ve Exadata
Konuşmacı:Husnu Sensoy

16:45 – 17:30 Panel:TROUG Round Table

H.Tonguc Yılmaz moderatörlüğünde Hüsnü Sensoy , Zekeriya Besiroglu , Orhan Bıyıklıoglu, Ferhat Sengonul panelist olarak katılıp izleyici sorularına cevap verecekler.

23.10.2010

TROUG Turkey Oracle User Group


TURKEY ORACLE USER GROUP


4 Kasım Oracle Day Haliç salonu saat 14.00-1730 arasında
11g Yeni özellikler seminerleri ve Uzmanlara soru sorabileceğiniz özel panelimize hepinizi bekleriz.

Ayrıca 4 Kasımda Standımızı ziyaret eden ve panele katılan arkadaşlarımız hediye TROUG termos bardağı kazanacaklar.

Turkey Oracle User Group Uye olmak icin
http://www.troug.org/ adresindeki kayıt formunu doldurabilirsiniz.

Oracle Grid Infrastructure 11g: Manage Clusterware and ASM Release 2

I delivered below mention course two weeks ago. I recommend this course who want to know Oracle ASM, Oracle Grid infrastructure, Oracle Clusterware.

This course is based on Oracle Database 11g Release 2. Learn To:
  • Describe the Oracle Database 11g Grid Infrastructure
  • Configure and manage ASM and ACFS
  • Install and configure Grid Infrastructure
  • Use Oracle Clusterware to make applications highly available
  • Describe Grid Plug and Play
  • Troubleshooting Grid Infrastructure
course topics

Grid Infrastructure Concepts

  • What is a Cluster
  • Grid Foundation Components
  • Oracle Clusterware Architecture
  • Oracle Clusterware Software and Storage
  • Describe ASM Architecture
  • Creating and Managing ASM Disk Groups
  • Creating and Managing ASM Cluster File systems
  • Job Role Separation

Grid Infrastructure Installation and Configuration

  • Hardware Requirements
  • Network Requirements
  • DNS and DHCP Configuration
  • Grid Plug and Play Considerations
  • Single Client Access Names
  • Post installation tasks

Administering Oracle Clusterware

  • Managing Clusterware with Enterprise Manager
  • Determining the Location of the Oracle Clusterware Configuration Files
  • Backing Up and Recovering the Voting Disk
  • Adding, Deleting, or Migrating Voting Disks
  • Locating the OCR Automatic Backups
  • Oracle Local Registry
  • Migrating OCR Locations to ASM
  • Managing Network Settings

Managing Oracle Clusterware

  • Prerequisite Steps for Extending a Cluster
  • Using addNode.sh to Add a Node to a Cluster
  • Rolling Patches, And Rolling Upgrades
  • Comparing Software Versions With the Active Version
  • Installing A Patchset With the OUI Utility
  • Installing A Patch With The opatch Utility

Oracle Clusterware High Availability

  • Oracle Clusterware high availability components
  • Contrasting policy-managed and administration managed databases
  • Server pool functionality
  • The Generic and Free Server Pools
  • Application placement policies
  • Application Virtual IPs
  • Managing application resources
  • High availability events

Troubleshooting Oracle Clusterware

  • Oracle Clusterware Log Files
  • Gathering Log Files Using diagcollection.pl
  • Resource Debugging
  • Component-level Debugging
  • Tracing For Java-based Tools
  • Troubleshooting the Oracle Cluster Registry

Administering ASM Instances

  • ASM Initialization Parameters
  • Adjusting ASM Instance Parameters in SPFILEs
  • Starting and Stopping ASM Instances Using srvctl
  • Starting and Stopping ASM Instances Using ASMCA and ASMCMD
  • Starting and Stopping ASM Instances Containing Cluster Files
  • Starting and Stopping the ASM Listener

Administering ASM Disk Groups

  • Creating And Deleting ASM Disk Groups
  • ASM Disk Group Attributes
  • ASM Disk Group Maintenance Tasks
  • Preferred Read Failure Groups
  • Viewing ASM Disk Statistics
  • Performance And Scalability Considerations For ASM Disk Groups

ASM Files, Directories, and Templates

  • Using Different Client Tools to Access ASM Files
  • Fully Qualified ASM File Name Format
  • Creating and Managing ASM files, Directories and Aliases
  • Managing Disk Group Templates
  • Managing ASM ACL With Command Line Utilities
  • Managing ASM ACL with Enterprise Manager

Administering ASM Cluster File Systems

  • ASM Dynamic Volume Manager
  • Managing ASM Volumes
  • Implementing ASM Cluster File System
  • Managing ASM Cluster File System (ACFS)
  • ACFS Snapshots
  • Using Command Line Tools To Manage ACFS
if you want to register this course

22.10.2010

oracle SYS_CONTEXT Examples;

Connect system /oracle@orcl

SET SERVEROUTPUT ON

SQL> EXEC dbms_output.put_line(sys_context('USERENV', 'CURRENT_USER'));
SYSTEM

SQL> EXEC dbms_output.put_line(sys_context('USERENV', 'SESSION_USER'));
SYSTEM

SQL> EXEC dbms_output.put_line(sys_context('USERENV', 'IP_ADDRESS'));
192.168.1.2

SQL> SELECT sys_context('USERENV', 'IP_ADDRESS') FROM DUAL;
192.168.1.2

SQL> EXEC dbms_output.put_line(sys_context('USERENV', 'NETWORK_PROTOCOL'));
tcp

SQL> EXEC dbms_output.put_line(sys_context('USERENV', 'AUTHENTICATION_TYPE')); DATABASE

SQL> SELECT sys_context('USERENV', 'AUTHENTICATION_TYPE') FROM DUAL;
DATABASE

SQL> SELECT sys_context('USERENV', 'CURRENT_USER') FROM DUAL;
SYSTEM

SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') FROM DUAL;
TCP

Implementing Fine Grained Audit

conn / as sysdba
create user zekeriya identified by oracle;
grant session,resource to zekeriya;
grant execute on dbms_session to zekeriya;
grant execute on dbms_fga to zekeriya;


conn zekeriya/oracle

create table kullanici (schema varchar2(20), name varchar2(30), policyname varchar2(30));

create procedure log (p_schema varchar2, p_name varchar2, p_policyname varchar2)
as
begin
insert into kullanici
values(p_schema,p_name,_p_policyname);
end;
/

BEGIN
dbms_fga.add_policy
( object_schema =>'hr'
object_name =>'employees'
policy_name =>policyismi
audit_condition =>null
audit_column =>salary
handler_schema =>'zekeriya'
handler_module => 'log'
enable =>true);
END;
/

now connect yeniuser/password

select salary from hr.employees;

conn zekeriya/oracle
select * from dba_fga_audit_trail;
you can see yeniuser
and

select * from kullanici
you can see record

also you can see all policy
select * from dba_audit_policy;

21.10.2010

Sql Tunnimg Seminer Örnekler /Oracle Sql tunning seminer

1. Bölüm:
Bir SQL'in planını nasıl görüntülenir, nasıl okunur?
Start --> Run --> Cmd
sqlplus /nolog
conn /as sysdba
conn sh/sh
set autotrace traceonly explain
select * from sales
sorgusu çalıştırıldığında Sql çalışma yolu ekranda görüntülenir. Sales tablosunda 1 milyon kayıt olduğunu düşünelim.
bu tabloya yazılan select full table scan şeklinde gitmektedir. Yani tabloya full ulaşıp full scan yapmaktadır. FTS cost'u yükseltir.
set autotrace traceonly explain --> sadece trace only'dir yani Sql'in planı ekranda görüntülenir ama Sql çalıştırılmaz.
set autotrace on --> hem query'i çalıştırır hem query çalışırken izlediği yolu yani planını ekranda görüntüler.
set autotrace off --> trace'i kapatır.
execution plan : izleyeceği gideceği yol
sorgudan sonra çıkan plan aşağıdan yukarıya doğru okunmalıdır. Nedeni SQL'in izlediği yol aşağıdan yukarıya doğru ilerler.
Dip not: Tablo bazında istatistik tabloma çok önemlidir. 9i de bu manuel olarak yapılması gerekirken 10g ile birlikte otomatize edilmiştir. Scheduler olarak çalışan GATHER_STATS job'ı gün bazlı saat 22:00 da çalışacak şekilde db kurulduğu andan itibaren gelmektedir. Bu doğrultuda yanlış istatistiki olan tablo bir günlüktür diyebiliriz.
İstatistik sorgulamayı örnekliyoruz:
sqlplus hr/hr
create table emp as select * from employees; --> database de var olan employees tablosunun bir kopyası emp adında yaratılır. (employees tablosu 107 row'dur=
select table_name.num_row from user_table;
sonuç olarak;
emp tablosundaki kayıt sayısını boş görürüz nedeni bu tablonun istatistik'inin toplanmış olmamasıdır. Eğer ben bu tabloya bir insert/delete/update girersem kayıt sayısını doğru görebilirim ya da bir başka yol izleyip tablonun istatistikini toplayabilirim. Doğru değerlere doğru planla gitmek istiyorsak istatistik toplamak şarttır.
COST: Bir sql'in costu ne kadar yüksekse sistem kaynakları o kadar etkileniyor demektir. (Sistem kaynakları: CPU, MEMORY, I/O(DISK), NETWORK)
Hedef: Cost'u yani maliyeti aşağı çekmektir. Cost'u aşağı çekmek SQL'in çalışma süresiyle ölçülebildiği gibi bazen yanıltıcıda olabilir.

Örn:
SQL1 Output:;
Cost: Time:
453 00:06 --> Costu 453 olan sorgu 6 sn de çalışabilir.
SQL2 Output:
Cost: Time:
552 00:03 --> Costu 552 olan sorgu 3 sn de çalışabilir. Bu durumda cost yanıltıcı olabilir.

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

Örn1:
Customer adlı tablonun üzerine customer_pk adlı bir index yaratıldı
select cust_first_name,
cust_last_name
from customers
where customer_id=1030

Customers tablosunun row sayısı 55.500 adettir. where koşulu olmadan kayıtı select edersek Full table scan yapmış oluruz ki bu durum Cost'u yükseltir. Biz customer_id kolonuna index koyduğumuzdan ve where şartında doğru koşulu verdiğimizden select sonucu dönen explain plan index unique scan şeklindedir. (index'li okuma) Sorgudan dönen Toplam Cost:2'dir ve sorgu çok kısa bir süre içinde output vermiştir.
Yukarıdaki sorgu customer id'si 1030 a eşit olan tek bir kaydı döndürür ve aramayı 1030 no'lu id'yi bulunca stop eder.
Not: Index ve table ayrı segment'lerdir. Günlük hayatta bu iki segment'i örnekleyecek olursak en güzel örnek bir kitap benzetmesi olabilir. Index kitabın fihristi table ise kitabın içeriği gibi yorumlanabilir. Bir konuyu aramaya kalktığımızda fihristten sayfasını bulup bulduğumuz sayfadaki içerikten yararlanabiliriz. Kitabı teker teker karıştırmaktansa fihriste bakmak daha mantıklı olsa gerek Göz kırpan
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Örn2:
select cust_first_name,
cust_last_name
from customers
where customer_id<10
Explain plan : index range scan --> bunun anlamı bir aralığı scan etmektir. (Aralık: 0,1,2,3,4,5,6,7,8,9 yani 10'dan küçük veriler). Sorgudan dönen output toplam 10 row'dur.
Her zaman unique scan okuma yapmak en iyisidir. yani where koşulunun = 'lik ile sağlanması...
Yukarıdaki sorgunun toplam maliyeti : 7'dir. (Index:2, Toplam:7)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Örn3:
select cust_first_name,
cust_last_name
from customers
where customer_id<10000
Customer table: 55.500 row
sorgudan dönen row sayısı 5311 --> BTREE index'leri yani default yaratılan index'leri kullanmak için %5 oranı
sağlanmalıdır yani dönen row sayısı toplam row sayısının %5 ini geçiyorsa index'li okuma yapılmaz full table scan okuma yapılır
1. Bölümü özetlersek;
Index'li okumalarda where koşuluna = koymak performanslı okumaya işaret eder ve tavsiye edilen bu yöntemdir --> index unique scan BTREE index yapısı %5 i sağlıyorsa eğer kullanılır. Index'ler herzaman where koşullarıyla kullanılır.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2. Bölüm:

Matematiksel işlemlerde index'li okuma yapılacaksa where koşulununda ='liğin sağına konulmalıdır.

Örn1:
Customer tablosunun cust_last_name kolonuna index yaratıldı
select cust_last_name
from customers
where upper(cust_last_name) = 'cinar' --> (Yanlış) sorgu çalışır ama full table scan yaparak output üretir.
Nedeni matematiksel işlemin soluna fonksiyon konulmasıdır. Kolonda index varsa ve index ile okuma yapılıyorsa muhakkak eşitliğin sağ tarafına fonksiyonu yazmak gerekir.
select cust_last_name
from customers
where cust_last_name=upper('cinar') --> (Doğru) Sorgu index unique scan yaparak output üretir böylelikle cost ciddi anlamda düşer.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn2:
select cust_last_name
from customers
where cust_last_name like 'S%' --> Soyadının baş harfi S ile başlayan kişileri getirir. Last name kolonunda
index olduğu için index'li okuma yapar--> index range scan
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn3:
select cust_last_name
from customers
where cust_id like '7%'
cust_id: number
'7%': char olduğundan cust_last_name kolonunda index olmasına rağmen index'li okuma olmaz nedeni data tiplerinin aynı olmayışıdır. (cust_id numberken cust_last_name char'dır)
Yukarıdaki sorguda fonksiyonel index'ler kullanılabilir.
Fonksiyonel index'ler normal index'ler ile aynı performansı sağlamaz
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn4:
Customer tablosundaki email kolonundaki 18000 tane row'u null yaptık ve sonrasında email kolonuna index create ettik
select cust_id
from customers
where cust_email is not null
email kolonunda index olmasına rağmen index'li okuma yapılmaz
select cust_id
from customers
where cust_email is null
email kolonunda index olmasına rağmen index'li okuma yapılmaz
Her iki sorgunun explain plan'ı Full Table Scan'dir. Null kolonlara index create edilmemelidir. Eğer null olan kolonu illaki index'lemek index'li okumak istiyorsak select'te seçtiğimiz kolonla birlikte index'leme yapmalıyız. yani cust_id ve email kolonlarına beraber index konulmalıdır.
Not: 55.500 kayıttan 18.000 kayıt geri dönüyorsa index kullanılamaz index yapısı düzgün olsa where de indexli kolon sorgulansada kullanılamaz nedeni %5 kavramının aşılmasıdır.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn5:
ORDER BY sorgunun performansını etkiler mi?
order by sorgunun cost'unu iki katına çıkarabilir diyebiliriz. Order by kullanıdığımızda bir sort işlemi yaptığı için TEMP TS'yi de kullanmak zorunda kalırız. ORDER BY dan önce muhakkak where yani index kullanılmalı. Nedeni index'li okumada dönen kayıtların koşul sağlaması sonucu output vermesi ve az olmasıdır. Az olan veri daha rahat bir şekilde sort edilir. Where olmayan sorgularda okuma full table scan şeklinde olur.
Explain Plan (order by yapılan herhangi bir sorgunun explain planı)
Cost
full table scan 332
sort 669
ve planda ek olarak temp ts görüntülenir
where olan sorgularda (ilgili kolonda index olmasa dahi) görüntü aşağıdaki gibi olur
cost
full table scan 332 --> index olmadığı için yine full table scan yaptı
sort 333 --> koşula göre output döndürdükten sonra sıralama daha düşük cost ile yapıldı.
Dip not: Where hiç bir zaman cost'u arttırmaz aksine azaltır.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn6:
Interset --> Iki tablonun kesişimine denir.
select cust_last_name
from customers
where cust_city='Paris'
intersect
select cust_last_name
from customers
where cust_credit_limit<10000
Explain plan:
Her iki sorguda sonucunda sort işlemini yapıp kesişim alacağı için cost çok yüksek gözükür... (her iki sorguda indexsiz okuma yapıyor yani FTS)
Cost: 823 (yüksek)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn7:
Munis --> Iki tablonun farkını alır.
select cust_last_name
from customers
where cust_city='Paris'
munis
select cust_last_name
from customers
where cust_credit_limit<10000
Explain plan:
Yukarıdaki sorguda da ilk Full table scan okuma yapıp sonra sort etme işlemine geçilir ardından output olarak iki tablo arasındaki fark gösterilir.
Cost: 733 (yüksek)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn8:
Union / Union all
union all'un union'a göre cost'u daha azdır.
Nedeni;
Union all--> sort yapmaz --> iki tablodaki rowları birbirine ekler
Union--> sort yapar --> iki tablodaki aynı verileri distict çeker ve eklemeyi yapar. Distinct işlemi performans
açısından cost'u yükseltir.
A tablosunda: merve, emre, cenk
B tablosunda: merve, ali, ayşe
C: tablosu iki tablonun union'u olsun sonuç --> merve,emre,cenk,ali,ayşe şeklindedir.(Merve her iki tabloda olmasına rağmen distinct çektiği için iki kez yazılmaz)
C: tablosu iki tablonun union all'u olsun sonuç -->merve,emre,cenk,merve,ali,ayşe şeklindedir
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn9:
select cust_city
avg(cust_credit_limit)
from customers
group by cust_city --> Full Table Scan okuma yapar. Nedeni index'siz okuma oluşudur yani where koşulunun
kullanılmayışı
Group by yapınca dönen kayıt sayısını azaltabiliriz. Group by where gibi maliyeti azaltmaz. Ama maliyeti çokda yukarıya çekmez
Cost
Full Table Scan : 333
Hash group by : 341
cost 333 iken 341 e yükseldi. Görüldüğü gibi maliyet hat seviyede artmadı.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Not: İç içe select(Sub query) kullanırken selectlerden birini froma tablo gibi yazmak mantıklıdır.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örn10:
customer tablosunun cust_last_name kolonuna index konuldu.
select cust_id, country_id
from customers
where LOWER(cust_last_name) = 'GENTLE'
--> Örnekte index li okuma mümkün değildir. Nedeni eşitliğin sol tarafında koşulun olmasıdır. Normalde oracle
eşitliğin sol tarafındakini kale almaz bunu ortadan kaldırmak için sorgu aşağıdaki şekilde düzenlenmiştir.
select cust_id, country_id
from customers
where cust_last_name = LOWER('GENTLE')

select cust_id, country_id
from customers
where LOWER(cust_last_name) like 'GENTLE'
--> Örnekte index li okuma mümkün değildir. Nedeni eşitliğin sol tarafında koşulun olmasıdır. Normalde oracle eşitliğin sol tarafındakini kale almaz bunu ortadan kaldırmak için sorgu aşağıdaki şekilde düzenlenmiştir.
select cust_id, country_id
from customers
where cust_last_name like LOWER('GENTLE')
eşitliğin sol tarafına koşulu yazıp indexli okuma yapmak istiyorsak muhakkak functional index'leri kullanmak gerekir.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Index Organized Table

Index Organized Table aşağıdaki şartları true vermelidir.
- Index organized table'larda primary key olmalıdır.
- Index organized table olan tablolarda update olmamalıdır.
Tablespace Tablespace






Normalde table ve index tablespace’lerde yer alan farklı segment tipleridir. Her birinin (table, index) tablespace’de oluşturduğu yer ayrıdır. Ama Index Organized Table da Table üzerinde index oluşturduğu için Tablespace üzerinde aynı yeri kapsar.
Örn : Marketteki ürünün barkodu hiçbir zaman değişmez yani unique’dir. Bu kodların girildiği bir tablo update gerektirmez. Bu doğrultuda bu tabloda Index Organized Table kullanılabilir.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bölüm3:
Materialized View:
Örn: Bizim maliyeti yüksek sorgularımızın olduğunu düşünelim. (Cost: 4983). Bunu biraz daha açalım  üç tabloya giden ve bu üç tablodan oldukça büyük sayıda row ‘lar döndüren bir günlük raporumuz mevcut buraya kadar herşey güzel… Bir düşünelim bu sorguyu günde her birimiz 10 kez çekiyoruz bir de departmanımızda benden başka 6 kişi daha bu sorguyu çalıştırıyor o zaman Materialized View hayat kurtaran bir çözüm olarak doğuyor yaşamımıza Kahkaha
Create materialized view deyip raporda çektiğimiz sorguyu devamına yazarsak materialized view’i oluşturduk demektir.
Hergün bir job halinde materialized view yaratırsak o günden önceki raporları çok hızlı bir şekilde sorgulayabiliriz. Düşünelim 09:00 da bir job’ım var ve bu hergün mesai başlangıcında bu job’ı çalıştırıyorum ve önceki günlere ait dataları çekiyorum. Eğer departmanlar tarafından bu kabul edilirse çok hızlı bir şekilde sorgumun geri dönüşünü alabilirim…
Materialized view olmadan çalıştırılan sorgunun costu 4983 iken metarialized view ile yaratılan sorgunun cost’u ilk çalıştırılmada 1921 iken sonra çalıştırıldığında 2’ye düşer. Cost’un ilk yüksek gelmesinin önüne geçilemez ama bu da çok önemli değildir. Bir sorguyu toplamda 60 kez çalıştırıdığımız düşünülürse:D
Create Materialized View:
Create materialized view join_sales_time_product_mv
enable query rewrite
as
select p.prod_id, p.prod_name
t.time_id, s.channel_id
s.promo_id, s_cust_id
t.week_ending_day, s.amount_id
from sales s, products p, times t
where s.time_id=t.time_id
and s.prod_id=p.prod_id

as den sonra gelen sql bizim gün bazlı rapor çıktısı aldığımız sql’dir.

Bu işlem günlük hayatta uygulama tarafındakilerin çok fazla baş vurduğu yöntemdir.
Örn: Geçen aya dair kredi kartı borcumu detaylı bir şekilde öğrenmek istiyorum. Müşteri temsilcisine bağlanıp bu isteğimi söylediğimde arkaplanda bir rapor çalıştırıp sorgunun sonucunu bana söylemelidir. Bu raporu bir materialized view yaratıp alırsak sürede sonuca kavuşabiliriz.

ORACLE ASM TAVSIYELERI-Oracle Asm Suggestion

ASM Best suggestion
https://docs.google.com/present/edit?id=0ASMnK-SgaHxiZGZ3dGZydGhfMTczZ2p4NmRnZ3Q&hl=en&authkey=CPma87UH

Oracle 11g New Features-11g yeni Özellikler

https://docs.google.com/fileview?id=0ByMnK-SgaHxiYzc3ZDQ0MzItZTVmMC00YmNiLTlkOWMtOGQyNzEyMDliY2M5&hl=en&authkey=CKeBp9ID

Oracle Advance Compress

Table compress yöntemi oracle 9i r2 den beri olan bir yöntemdir. Bu yöntemi bulk operasyonlarda kullanmabiliyorduk.
DML Performans için olumlu bir katkısı olduğunu söylemek oldukça güçtür. daha çok read only datalar için düşünebiliriz. fakat tabiki büyük sorgularda daha az IO neden olması ve buffer cache daha ideal kullanması son derce önemlidir.
Sıkıstırma özellikleri tablo ve partition seviyesinde yapılabiliyordu.
Advanced Compress özeliği ise 11g ile beraber gelmiştir.Bu özellik sayesinde Structred datayı unstructered datayı,backup datalarını ve network datalarını sıkıstırmamız mumkundur.
Böylece maliyetlerimizin ve kullanmak zorunda olduğumuz kaynaklarada azalma mümkündür.

Yerden kazanmak.memeoryden kazanmak ve network hattından kazanmak son derece kolay hale gelecektir.
Oracle 11g advanced Compress

Su anda ortaya çıkan sonuçlara bakıldığında

Yer olarak en az 3 katı bir kazanç

Table scan durumlarında 2.5 katı bir kazanç

DML permossında ise %5in altında bir kötüleşme mümkündür. Buda bize artık günümüzde OLTP sistemlerde bile tablolarımızı sıkıstırma yapabileceğimiz anlamına gelmektedir.

Securefiles üzerinde getirilen deduplicate özelliği sayesinde Duplicate dataların tek fiziksel kopyası saklanması mumkundur. LOB dataların yeni türü olan securefile nın bu özelliği oldukça önemlidir.

Tablo partition ve sub partition seviyesinde uygulanabilir. Yazma ve kopyalama operasyonlarında inanılmaz performans artısı sağlar.

Data pump Compress özelliği sayesinde metadata compress özelliği zaten 10gde vardı. Biz şimdi 11g veri tabanında hem metada hemde data kısmında sıkıstırma yapabiliyoruz.

Rman de sıkıstırma algoritması değiştirilmiş ve %40 daha iyi bir sonuc alınmıştır.En önemlisi ise recovery sırasında decompress gerektirmemesidir.Disk ve tape içinde kullanılabilir.

Özetlemek gerekirse

-Büyük tabloları(taransaction yada warehouse)
-Bütün data tiplerini
-İnanılmaz okuma performası(full table scan)
-Ve 2ile 4 katı yer kazancı compress neden tercih etmemiz gerktiğinin göstergesidir.


Veritabanı Guvenligi -database security-application security

Oracle veritabanı guvenliği

https://docs.google.com/present/edit?id=0ASMnK-SgaHxiZGZ3dGZydGhfMTU4aGJrYjNtY3Y&hl=en&authkey=CLCJ4nQ

Oracle RAC için 10 Sebep-Why Oracle RAC

Why Oracle RAC - Neden Oracle RAC
https://docs.google.com/present/edit?id=0ASMnK-SgaHxiZGZ3dGZydGhfMWcydGQ3MmRy&hl=en&authkey=COKN0rgO


Oracle Active Data Guard

Oracle Active Data Guard has realtime query. Real time query means your physical standby database to be open read-only while Redo data is coming and apply active.

For example You change PROD database

select salary from employees where employee_id=100;

24000

then you change

update employees set salary=10000 where employee_id=100;

commit;


Up-to-date Meantime connect Physical database

select salary from employees where employee_id=100;

10000;

User connected to a physical standby database can query data that is up-to-date with the primary database.

First you must stop redo data applyfor open phy.standby in read only

DGMGRL>edit database orclstby set state='apply-off';

then open database

alter database open;

and last restart redo apply

Dgmgrl>edit database orclstby set state='apply-on';



19.10.2010

TROUG Turkey Oracle User Group

Turk Oracle kullanıcı grubu


TROUG EOUC‘den(EMEA Oracle User Group Community) onay aldı ve dünyadaki butun saygıdeğer gruplarla beraber listelenmeye başladı.

Hepinizi 4 Kasım’daki ücretsiz Oracle Day eventine bekliyoruz.

2010 boyunca TROUG ücretsiz üye olmak için http://www.troug.org/ ziyaret edip sol alttaki menüyü kullanabilirsiniz, ayrıca grubu çevrenizde duyurmak isterseniz alttaki bağlantıları kullanabilirsiniz:

LinkedIn grubu: http://www.linkedin.com/groups?mostPopular=&gid=3530740
LinkedIn davetiyesi: http://www.linkedin.com/osview/canvas?_ch_page_id=1&_ch_panel_id=1&_ch_app_id=7083120&_applicationId=2000&_ownerId=0&appParams={%22go_to%22:%22events/431356%22,%22referrer%22:%22public%22}
Facebook grubu: http://www.facebook.com/group.php?gid=169277558029
Facebook davetiyesi: http://www.facebook.com/event.php?eid=164765406882321

Transportable Tablespace

Lets make transportable tablespace

first database orcl tablespace deneme


export ORACLE_SID=orcl

$ sqlplus system/oracle


CREATE TABLE yeni_sales NOLOGGING TABLESPACE deneme

2 AS SELECT * FROM sales;


connect system/oracle

SQL> ALTER TABLESPACE deneme READ ONLY


$ mkdir /home/oracle/orcl

$ sqlplus system/oracle

SQL> CREATE DIRECTORY orcl_dir as '/home/oracle/orcl';


$ expdp system/oracle DIRECTORY=orcl_dir DUMPFILE=yeni_sales.dmp TRANSPORT_TABLESPACES=deneme


Second database name neworcl

$ mkdir /home/oracle/neworcl $ cp /oracle/deneme.dbf /home/oracle/neworcl

$ cp /home/oracle/orcl/yeni_sales.dmp /home/oracle/neworcl


export ORACLE_SID=neworcl

$ sqlplus system/oracle


SQL> create directory new_dir as ‘/home/oracle/neworcl’;


$ impdp system/oracle DIRECTORY=new_dir DUMPFILE=yeni_sales.dmp logfile=yeni.log transport_datafiles=/home/oracle/neworcl/deneme.dbf





11.10.2010

Turk Oracle Kullanıcı Grubu






Dünyanın birçok yerinde Oracle kullanıcılarını biraraya getirip tecrübelerini ve bilgi

birikimlerini paylaştıkları bir ortamı , sonunda Türkiye’de hayata geçirmiş bulunuyoruz.

Yıllardır Oracle kullanıcıların sorularına cevap veren H.Tonguc Yılmaz’ın moderatorluğünü

yaptığı OracleTurk yahoo group (www.oracleturk.org ) ve benim 2009 yılında kurdugum

Oracle Forum Türkiye ‘nin (www.oracleforum.info ) toplamda binlerce Oracle kullanıcısı

üyesi bulunuyordu. Bizimde , dünyada yıllardır olduğu gibi daha organize bir grup olmamızın

vakti gelmişti.

Turkish Oracle User Group kurucuları arasında ülkemizin ilk Oracle Ace ünvanına sahip uzmanı sayın H.Tonguç Yılmaz ve DBA of the year 2009 ile Oracle ACE Director ünvanına sahip sayın Hüsnü Şensoy’da bulunmaktadır.

TROUG ile üyelerimize Türkiye’nin ve Dünyanın Oracle konusunda guru olmuş uzmanlarını biraraya getireceğiz. Bu değerleri uzmanlarla tanışıp , yaptıkları sunumlara katılabileceksiniz.

Special Interest Groups(SIG) Özel ilgi duyunlar gruplar olusturuyoruz bu gruplar RAC,Oracle BI,Database,Siebel, Java,BEA gibi olacak. Herbir grubumuzun başında bu konuda isim yapmış çok derece değerli uzmanlarımız olacak. Bu uzmanlarımızla fikir alışverişinde bulunabilecek ve tecrübelerini paylaşabileceksiniz.

Her iki ayda bir ebulten çıkaracağız. Bu bültende birçok önemli teknik arkadaşın makalelerini bulabileceksiniz.

4 kasım 2010 Oracle Day'da Lütfi Kırdar Kongre merkezinde sizleri standımıza ve round table slotlarımıza bekliyoruz.

Kayıt olmak için.

Tamamen gönüllü olarak kurduğumuz bu organizasyonun hepimiz için hayırlı olması dileklerimle

Zekeriya Beşiroğlu

Creating a New WebLogic Domain

Scripts are in the /common/bin directory.
run config.sh

-select create new weblogin domain
-select generate a domain configured automatically to support following product
basic weblogic server domain
-administration username and password
-select production mode select oracle jrockit
-select admin server
-select managed server cluster
-admin server name admsvr port 7010
-managed server name mansvr1 port 7011
mansvr2 7013
-give cluster name assign server to cluster select mansvr1 and mansvr2
-configure jdbc setting
dbname port 1521 dbuser dbpassword oracle XA
-test connection
-review and done

7.10.2010

TROUG



Sizlere bizim için çok önemli bir gelişmeden bahsetmek istiyorum Turkish Oracle User Group Niyahet kurmus bulunuyoruz.
29 eylul 2010 tarihinde EOUC (EMEA Oracle User Group Community which is made up of the leaders of the various groups around EMEA) ve Oracle tarafından onaylandık.

9 Ekim Gunu RAC SIG eventimize katılabilirsiniz.
4 Kasım Oracle Day round table slotlarımıza sizleri bekliyoruz.

Detayları aşağıdaki web adresimizden bulabilirsiniz.

http://www.troug.org


Kurucu Üyelerimiz

Zekeriya Beşiroğlu

Ersin İhsan Ünkar

Hasan Tonguç Yılmaz

Hüsnü Şensoy

Orhan Bıyıklıoğlu

Yasin Okcan Saygılı

5.10.2010

How to resolve Could not validate ASMSNMP password due to following error- "ORA-01031: insufficient privileges"

Oracle 11g R2 grid

goto grid home /bin

[grid@node1 bin]$ orapwd file=/u01/app/11.2.0/grid/dbs/orapw+ASM password=oracle_4U

[grid@node1 dbs]$ scp orapw+ASM Node2:/u01/app/11.2.0/grid/dbs/

[grid@node1 dbs]$ scp orapw+ASM Node3:/u01/app/11.2.0/grid/dbs/

Login in to Oracle database as

export ORACLE_SID=+ASM1
export ORACLE_HOME=/u01/app/11.2.0/grid


[grid@node1 bin]$ sqlplus / as sysasm

SQL>create user asmsnmp identified by oracle_4U;

SQL> grant sysdba to asmsnmp;