29 Nisan 2014 Salı

ORA-01555 caused by SQL statement below (SQL ID: 3pb206068b3qc, Query Duration=1671 sec, SCN: 0x0013.6274b9a6):

Database Alert logunda aşağıdaki hataya farklı zaman aralıklarıyla farklı sql'ler için rastlayabilirsiniz.
Bu hata ilgili hatanın undo tablespace'ı kullanımında undo'da yer kalmaması durumunda ya da parametrelerin optimizasyonun gereken biçimde yapılmamış olmasından kaynaklanmaktadır.
Undo tablespace'inizde gerektiği kadar yer olduğu halde bu hatayı alıyorsak undo retention parametresiyle ilgili bir optimizasyon yapmamız gerekmektedir.

undo retention parametresi'nin optimum değeri aşağıdaki formülle hesaplanır.

UNDO RETENTION TIME=(UNDO SIZE) / (DB BLOCK SIZE × UNDO BLOCK PER SECOND)

Bu değerleri aşağıdaki sql'i çalıştırarak öğrenebiliriz.

SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]",
       SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]",
       ROUND((d.undo_size / (to_number(f.value) *
       g.undo_block_per_sec))) "OPTIMAL UNDO RETENTION [Sec]"
  FROM (
       SELECT SUM(a.bytes) undo_size
          FROM v$datafile a,
               v$tablespace b,
               dba_tablespaces c
         WHERE c.contents = 'UNDO'
           AND c.status = 'ONLINE'
           AND b.name = c.tablespace_name
           AND a.ts# = b.ts#
       ) d,
       v$parameter e,
       v$parameter f,
       (
       SELECT MAX(undoblks/((end_time-begin_time)*3600*24))
              undo_block_per_sec
         FROM v$undostat
       ) g
WHERE e.name = 'undo_retention'
  AND f.name = 'db_block_size'

Bu sql'in çıktısı bize undosize'ımızı mevcut durumdaki undo retention değerimizi ve olması gereken optimum retention değerini verecektir.
Bu sorgu sonucunda aldığımız değere göre undo retention parametresini aşağıdaki gibi set ediyoruz.

ALTER SYSTEM SET UNDO_RETENTION =8536 scope=both;

show parameter undo;
undo_management                      string   AUTO
undo_retention                       integer  8536

undo_tablespace                      string   APPS_UNDOTS1

Diğer ihtimalde; yani undo tablespace'in dolduğu ve yetmediği durumlarda Undo Tablespace'in size'ını hesaplarken aşağıdaki gibi bir script kullanabiliriz.


SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]",
       SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]",
       (TO_NUMBER(e.value) * TO_NUMBER(f.value) *
       g.undo_block_per_sec) / (1024*1024) 
      "NEEDED UNDO SIZE [MByte]"
  FROM (
       SELECT SUM(a.bytes) undo_size
         FROM v$datafile a,
              v$tablespace b,
              dba_tablespaces c
        WHERE c.contents = 'UNDO'
          AND c.status = 'ONLINE'
          AND b.name = c.tablespace_name
          AND a.ts# = b.ts#
       ) d,
      v$parameter e,
       v$parameter f,
       (
       SELECT MAX(undoblks/((end_time-begin_time)*3600*24))
         undo_block_per_sec
         FROM v$undostat
       ) g
 WHERE e.name = 'undo_retention'
  AND f.name = 'db_block_size'

Yine bu script de bize undo tablespace'in şu anki büyüklüğünü ve olması gereken optimal büyüklüğü verecektir.

Kolay gelsin. İyi Çalışmalar.


7 Nisan 2014 Pazartesi

Oracle Linux 6.3 üzerine E-Business Suite Kurulumu

EBS oracle'ın ERP uygulamalarının tamamını içinde bulunduran ürünüdür. E-business suite içerisinde aşağıdaki ERP paketleri yer alır;
Oracle Financials
Oracle HRMS
Oracle Mobile Supply Chain Applications
Oracle Order Management
Oracle Procurement
Oracle Project Portfolio Management
Oracle QuotesOracle Transportation Managemen
Oracle Warehouse Management Systems
Oracle Inventory.
Oracle Enterprise Asset Management


Kurulumu Oracle Enterprise Linux 6.3 üzerine yapacağım. https://edelivery.oracle.com/  Adresinden EBS 12.1.1'i indiriyoruz yaklaşık 47 GB'lık stage dosyasını indirmemiz gerekiyor. 64 bit linux ve EBS üzerinden kurulum yapacağım..Oracle Linux üzerinde birçok rpm yükleyeceğimiz için yum yapılandırması ve internet bağlantısı olan bir sanal makine konfigürasyonu kurmanızı öneriyorum. Aynı zamanda Ben 350 GB'lık bir disk tanımladım.

Öncelikle işletim sistemimizin certification matrixten durumunu inceleyerek oracle EBS kurulumuna uygun olup olmadığını inceliyoruz..Aşağıdaki tabloda hangi linux versiyonlarının hangi sürümleriyle çalışmamız gerektiği konusunda gerekli bilgiler yer almaktadır.
The following table lists the supported operating system versions.
Operating System NameSupported Version
Oracle Linux4 - Update 4 or higher (64-bit)
Oracle Linux5 - Update 1 or higher (64-bit)
Oracle Linux6 - Update 0 or higher (64-bit)1
Red Hat Enterprise Linux4 - Update 4 or higher (64-bit)2
Red Hat Enterprise Linux5 - Update 1 or higher (64-bit)
Red Hat Enterprise Linux6 - Update 0 or higher (64-bit)1
SUSE Linux Enterprise Server10 - GA, SP1 or higher (64-bit)
SUSE Linux Enterprise Server11 - SP2 or higher (64-bit)1

Daha sonra işletim sistemimizin kernel versiyonunu kontrol ediyoruz. Gerek görülürse kernel upgrade'i yapıyoruz. Linuz üzerinde
# uname -r komutuyla kernel versiyonumuzu öğrenebiliriz.  

Operating SystemKernel
Oracle Linux 42.6.9-42.0.0.0.1.EL
Oracle Linux 52.6.18-53.1.4.EL51
Oracle Linux 62.6.32-71.el6, 2.6.32-100.28.5.el62
Red Hat Enterprise Linux AS/ES 42.6.9-42.EL
Red Hat Enterprise Linux AS/ES 52.6.18-53.1.4.EL51
Red Hat Enterprise Linux 62.6.32-71.el6, 2.6.32-100.28.5.el62
SUSE Linux Enterprise Server 102.6.16.21-0.8
SUSE Linux Enterprise Server 113.0.13-0.27-default

Gerekli RPM paketlerini kurmamız gerekiyor. Oracle Enterprise Linux 6 - 64 bit için sistemimizde yüklü olması gereken RPM listesi aşağıdaki gibidir. Bu paketleri kurmak için yum paket yönetim aracını kullanıyoruz.Yum'un linux üzerinde nasıl konfigüre edildiğini aşağıda bulabilirsiniz.
Operating SystemRequired Packages
Oracle Linux 6*
Red Hat Enterprise Linux 6*
GA (6.0) or higher of Oracle Linux 6 is required
GA (6.0) or higher of Red Hat Enterprise Linux (RHEL) 6 is required
The following packages (or versions of packages) are not part of the OS distribution media and must be downloaded separately (from http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/) for both Oracle Linux 6 and RHEL 6 and installed manually on the application tier:
  • openmotif21-2.1.30-11.EL6.i686 (32-bit)1
  • xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386 (32-bit)
The following packages must be installed from the Oracle Linux 6 or RHEL 6 distribution media on both the application and database tiers:
  • binutils-2.20.51.0.2-5.11
  • compat-db43-4.3.29-15.el6.i686
  • gcc-4.4.4-13.el16.x86_64
  • gcc-c++-4.4.4-13.el16.x86_64
  • glibc-2.12-1.7.el6.i686 (32-bit)
  • glibc-2.12-1.7.el6.x86_64
  • glibc-common-2.12-1.7.el6.x86_64
  • glibc-devel-2.12-1.7.el6.i686 (32-bit)
  • glibc-devel-2.12-1.7.el6.x86_64
  • libgcc-4.4.4-13.el6.i686
  • libgcc-4.4.4-13.el6.x86_64
  • libstdc++-devel-4.4.4-13.el6.i686
  • libstdc++-devel-4.4.4-13.el6.x86_64
  • libstdc++-4.4.4-13.el6.i686
  • libstdc++-4.4.4-13.el6.x86_64
  • libXi-1.3-3.el6.i686
  • libXp-1.0.0-15.1.el6.i686
  • libXp-1.0.0-15.1.el6.x86_64
  • libaio-0.3.107-10.el6.i686
  • libaio-0.3.107-10.el6.x86_64
  • libgomp-4.4.4-13.el6.x86_64
  • make-3.81-19.el6.x86_64
  • gdbm-1.8.0-36.el6.i686
  • gdbm-1.8.0-36.el6.x86_64
  • sysstat-9.0.4-11.el6.x86_64
  • util-linux-ng-2.17.2-6.el6.x86_64
  • unzip-5.52-3.0.1.el5.x86_642
  • compat-libstdc++-296-2.96-144.el6.i686
  • compat-libstdc++-33-3.2.3-69.el6.i686
Additionally, the following RPMs are required for the database tier running 11gR2 (users must upgrade the bundled 11gR1 DB to 11gR2 either before or after installing 12.1) on the database tier:
  • compat-libcap1-1.10-1.x86_64
  • compat-libstdc++-33-3.2.3-69.el6.x86_64
  • elfutils-libelf-devel-0.148.1-el6.x86_64
  • libaio-devel-0.3.107-10.el6.x86_64
  • unixODBC-2.2.14-11.el6.i686
  • unixODBC-devel-2.2.14-11.el6.i686
  • unixODBC-2.2.14-11.el6.x86_64
  • unixODBC-devel-2.2.14-11.el6.x86_64
  • xorg-x11-utils-7.4-8
Note:
1: The openmotif package version must be 2.1.30 (for example, openmotif-2.3.3-1 is not supported).
2: This unzip package (available from EL 5 distribution) is only required for purposes of running Rapid Install to unzip the required EBS files as part of the installation and should be reverted after the install of EBS. Alternatively, users can backup the existing unzip 6.0 in /usr/bin, copy the unzip 5.5 from the EBS staging directory to /usr/bin for purposes of installing EBS, and then restore the unzip 6.0 when done.



Ortamda proxy varsa yum'u kullanmak için aşağıdaki dosyaya şu satırları eklemeliyiz
# vi /etc/yum.conf
proxy=http://yourproxyaddress:port/
proxy_username=youruser
proxy_password=yourpasswordeğer

yum için repository tanımlı değilse tanımlamak için şu işlemleri yapmalıyız
# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo
Paket indirmek için
# yum install paketadi 
komutunu kullanıyoruz.

Ayrıca Linux üzerinde aşağıdaki yazılımların kurulu olduğundan emin olmalıyız..
make,gcc,ksh,g++,linux32,ld 
Bunları kontrol etmek için which komutunu kullanabiliriz. (mesela make'i kontrol etmek için : which make)

Linux üzerinde /etc/sysctl.conf dosyasında kernel parametrelerini aşağıdaki değerlere set ediyoruz.

ParameterValue
kernel.semmsl2561
kernel.semmns320001
kernel.semopm1001
kernel.semmni1421
kernel.shmall20971524
kernel.shmmaxHalf the size of the physical memory (in bytes), and at least 21474836482
kernel.shmmni4096
kernel.msgmax8192
kernel.msgmnb65535
kernel.msgmni2878
fs.file-max131072
net.ipv4.ip_local_port_range10000 650003
net.core.rmem_default262144
net.core.rmem_max4194304
net.core.wmem_default262144
net.core.wmem_max262144

# vi /etc/sysctl.conf  komutuyla dosyamızı açtıktan sonra aşağıdaki satırları ekliyoruz.
kernel.shmall = 4294967296
kernel.sem = 256 32000 100 142
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.msgmax = 8192
kernel.msgmnb = 65535
kernel.msgmni = 2878
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
Bu satırları ekledikten sonra terminalden sysctl -p komutunu çalıştırarak yeni kernel parametrelerinin Linuxu restart etmeden aktif hale gelmesini sağlıyoruz.

/etc/resolv.conf dosyasını açıp aşağıdaki satırları ekliyoruz.
options attempts:5
options timeout:15

/etc/hosts dosyasını açıp 
ip adresi     fullname   hostname  formatında server bilgilerimizi ekliyoruz.
10.20.2.167 srvebs.veys.com  srvebs 

/etc/security/limits.conf dosyasını açıp aşağıdaki limit değerlerini ekliyoruz.
* hard nofile 65535
* soft nofile 4096
* hard nproc 1638
* soft nproc 2047

Daha sonra kurulumdan önce geçilmesi gereken bir patchimiz var. Oracle  supporttan  6078836 numaralı patchi indirerek readme'sini okuyarak bu patchi uyguluyoruz.
Aşağıdaki sembolik linki oluşturuyoruz. Bu linki oluşturmadığımız takdirde 10.1.2 home'unda 
/usr/lib/libXtst.so.6: undefined reference to  `__stack_chk_fail@GLIBC_2.4'
/usr/lib/libXtst.so.6: undefined reference to  `__fprintf_chk@GLIBC_2.3.4'
/usr/lib/libXtst.so.6: undefined reference to  `__sprintf_chk@GLIBC_2.3.4' 
şeklinde hatalar alabiliriz.

# unlink /usr/lib/libXtst.so.6
# ln -s /usr/X11R6/lib/libXtst.so.6.1 /usr/lib/libXtst.so.6

Linux üzerinde ilgili kullanıcıları ve dizinleri oluşturuyoruz son olarak
groupadd dba
useradd -m -g dba orademo
useradd -m -g dba appldemo 
mkdir -p /demo/database
mkdir -p /demo/app
chown -R orademo:dba /demo/database
chown -R appldemo:ddba /demo/app
chmod -R 777 /demo


Daha sonra oracle e-delivery sitesinden Oracle EBS 12.1 kurulum dosyalarını indiriyoruz.
Oracle EBS database ve apps olmak üzere iki katmandan oluşur.Kurulum yaparken bunlar aynı makinede olabileceği gibi farklı nodelar üzerinde de konfigürasyon yapılabilir. Ben bu yazımda single node üzerinde kurulum yapacağım. Multinode kurulumdan daha sonra bahsedeceğim..
indirdiğimiz kurulum dosyalarını unzip ediyoruz. Daha sonra startCD/disk1/rapidwiz altında ./rapidwiz 'i çalıştırıyoruz.











Cannot Find Orainventory hatası almamız muhtemeldir; bug olarak metalinkte çözümü yer alıyor. Bu durumda
1./etc dizinine gidip oraInst.loc dosyasını oluşturuyoruz
2.Dosyanın içeriğine 
inventory_loc=/oracle/oraInventory parametresini ekliyoruz. /oracle/oraInventory yerine kendi kurulum yapacağımız dizini yazıyoruz.
3.daha sonra bu oraInventory directorysini yaratıyoruz.
4.chmod -R 777 /oracle/oraInventory

Kurulumdan sonra 12415211 numaralı patchi aşağıdaki adımlarla uyguluyoruz
 $ cd <12.1_INSTALL_DIR>/apps/tech_st/10.1.2/lib
$ cp -p -R stubs stubsORIG
$ cd stubs
$ cp <PATCH_INSTALL_DIR>/12415211/files/lib/stubs/libgcc_s-2.3.2-stub.so .
$ ln -s libgcc_s-2.3.2-stub.so libgcc_s.so.1
$ ln -s libgcc_s.so.1 libgcc_s.so
$ORACLE_HOME/appsutil/clone/adlnktools.sh

$ cd <12.1_INSTALL_DIR>/apps/tech_st/10.1.3/lib
$ cp -p -R stubs stubsORIG
$ cd stubs
$ cp <PATCH_INSTALL_DIR>/12415211/files/lib/stubs/libgcc_s-2.3.2-stub.so .
$ ln -s libgcc_s-2.3.2-stub.so libgcc_s.so.1
$ ln -s libgcc_s.so.1 libgcc_s.so
$<INSTALL_DIR>/apps/tech_st/10.1.3/appsutil/clone/adlnkweboh.sh