29 Temmuz 2012 Pazar

[EN] RMAN-12012: multiple records for SBT_TAPE parallelism found in catalog

Problem:

[HOSTXXX]/u01/app/oracle/admin/hostxxx/bfile $ rman target rman/passxxx@DBXXX

Recovery Manager: Release 11.1.0.7.0 - Production on Sun Jul 29 06:31:51 2012

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: DBXXX (DBID=1713800945)

RMAN> connect catalog rman/cat_passxxx@rman;

connected to recovery catalog database

RMAN> print script dbxxx_backup_arch;

printing stored script: dbxxx_backup_arch
{SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
SET command id TO 'dbxxx_backup_arch';                                                                                        
CHANGE ARCHIVELOG ALL CROSSCHECK;                                               
CONFIGURE CONTROLFILE AUTOBACKUP ON;                                            
CONFIGURE DEFAULT DEVICE TYPE TO sbt;                                           
CONFIGURE CHANNEL DEVICE TYPE sbt parms 'ENV=(NSR_SERVER=server_bkcp_1,NSR_CLIENT=hostxxx)';                                                                           
CONFIGURE DEVICE TYPE sbt PARALLELISM 5;                                        
backup ARCHIVELOG ALL filesperset 1 format 'dbxxx_arch.%U' delete input;         
}

28 Haziran 2012 Perşembe

[EN] "Oracle XML Database", "Oracle Multimedia", "Oracle Database Packages and Types" components invalid after 11gR2 upgrade because of LIBPATH OS variable

Problem:

After 11.2.0.3 upgrade from 10.2.0.5, "Oracle XML Database", "Oracle Multimedia" and "Oracle Database Packages and Types" components become invalid. They were valid on 10.2.0.5.

===> select substr(comp_name,1,40) comp_name, schema, status, substr(version,1,10) version from dba_registry order by comp_name
COMP_NAME                                SCHEMA                         STATUS      VERSION
---------------------------------------- ------------------------------ ----------- ----------
JServer JAVA Virtual Machine             SYS                            VALID       11.2.0.3.0
OLAP Analytic Workspace                  SYS                            VALID       11.2.0.3.0
OLAP Catalog                             OLAPSYS                        VALID       11.2.0.3.0
Oracle Data Mining                       DMSYS                          VALID       11.2.0.3.0
Oracle Database Catalog Views            SYS                            VALID       11.2.0.3.0
Oracle Database Java Packages            SYS                            VALID       11.2.0.3.0
Oracle Database Packages and Types       SYS                            INVALID     11.2.0.3.0
Oracle Enterprise Manager                SYSMAN                         VALID       11.2.0.3.0
Oracle Expression Filter                 EXFSYS                         VALID       11.2.0.3.0
Oracle Multimedia                        ORDSYS                         INVALID     11.2.0.3.0
Oracle OLAP API                          SYS                            VALID       11.2.0.3.0
Oracle Rule Manager                      EXFSYS                         VALID       11.2.0.3.0
Oracle Text                              CTXSYS                         VALID       11.2.0.3.0
Oracle Workspace Manager                 WMSYS                          VALID       11.2.0.3.0
Oracle XDK                               SYS                            VALID       11.2.0.3.0
Oracle XML Database                      XDB                            INVALID     11.2.0.3.0
Spatial                                  MDSYS                          VALID       11.2.0.3.0
17 rows selected.

21 Haziran 2012 Perşembe

[EN] EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet.

Problem:


[XXXPRO1]/oracle/product/11.1.0/agent11g/bin $ ./emctl upload agent
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation.  All rights reserved.
---------------------------------------------------------------
EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet. If this issue persists check trace files for ping to OMS related errors.

Solution:

When you get this warning you should also check "emctl status agent" output. 


[XXXPRO1]/oracle/product/11.1.0/agent11g/bin $ ./emctl status agent
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0 
Copyright (c) 1996, 2010 Oracle Corporation.  All rights reserved.
---------------------------------------------------------------
Agent Version     : 11.1.0.1.0
OMS Version       : 11.1.0.1.0
Protocol Version  : 11.1.0.0.0
Agent Home        : /oracle/product/11.1.0/agent11g/hostxxx01
Agent binaries    : /oracle/product/11.1.0/agent11g
Agent Process ID  : 8091
Parent Process ID : 8080
Agent URL         : https://hostxxx01:1830/emd/main
Repository URL    : https://hostemgrid01:1159/em/upload
Started at        : 2012-06-21 11:13:55
Started by user   : oracle
Last Reload       : 2012-06-21 11:13:55
Last successful upload                       : (none)
Last attempted upload                        : (none)
Total Megabytes of XML files uploaded so far :     0.00
Number of XML files pending upload           :      273
Size of XML files pending upload(MB)         :    52.42
Available disk space on upload filesystem    :    47.97%
Collection Status                            : Disabled by Upload Manager
Last attempted heartbeat to OMS              : 2012-06-21 11:26:12
Last successful heartbeat to OMS             : unknown
---------------------------------------------------------------
Agent is Running and Ready

7 Haziran 2012 Perşembe

[TR] Tablo Büyüme Boyut Tahmini


Bir tablonun zamanla ne kadar büyüyeceği aşağıdaki adım ve formüller kullanılarak tahmin edilebilir. Tahmin, tabloya zaman içerisinde düzenli veri yüklenmesi durumunda geçerlidir. Yani belli aralıklarda tabloya daha az yada daha yoğun veri yüklenmesi durumunda tahmin tutarsız olacaktır. Büyüme tahmini, aynı zamanda Enterprise Manager üzerinden de yapılabilir.

18 Mayıs 2012 Cuma

[EN] ORA-00230: operation disallowed: snapshot control file enqueue unavailable

Problem: 

Starting Control File and SPFILE Autobackup at 18-MAY-2012 08:03:33
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03015: error occurred in stored script db_alfa_backup_db_02
RMAN-03009: failure of Control File and SPFILE Autobackup command on ORA_SBT_TAPE_1 channel at 05/18/2012 08:03:40
ORA-00230: operation disallowed: snapshot control file enqueue unavailable

Recovery Manager complete.
Backup process end time:Fri May 18 08:03:49 EEST 2012

6 Nisan 2012 Cuma

[EN] Run root.sh from a directory that has read/execute access to the grid owner 'oracle'

Problem:
To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:
/oracle/app/oracle/product/11.2.0/grid/perl/bin/perl -I/oracle/app/oracle/product/11.2.0/grid/perl/lib -I/oracle/app/oracle/product/11.2.0/grid/crs/install /oracle/app/oracle/product/11.2.0/grid/crs/install/roothas.pl

xynndp09:/oracle/app/oracle/product/11.2.0/grid/perl/bin/perl -I/oracle/app/oracle/product/11.2.0/grid/perl/lib -I/oracle/app/oracle/product/11.2.0/grid/crs/install /oracle/app/oracle/product/11.2.0/grid/crs/install/roothas.pl
Using configuration parameter file: /oracle/app/oracle/product/11.2.0/grid/crs/install/crsconfig_params
su: Illegal option -c
usage:   su  [-]  [username  [arguments]]
         su  [-]  -d  [username]
Run root.sh from a directory that has read/execute access to the grid owner 'oracle'

29 Mart 2012 Perşembe

[EN] The user is root. OPatch cannot continue if the user is root. OPatch failed with error code 255

Problem: The user is root. OPatch cannot continue if the user is root. OPatch failed with error code 255


[HHYTS]/u01/app/oracle/admin $
[HHYTS]/u01/app/oracle/product/11.2.0/dbhome_1/oui/bin $ sudo su -
[root@hhytsdb1 ~]#
[root@hhytsdb1 ~]# cd /u01/app/oracle/patchdepot
[root@hhytsdb1 patchdepot]# export PATH=$PATH:/u01/app/11.2.0.3/grid/OPatch
[root@hhytsdb1 patchdepot]# opatch apply 13513783
The user is root. OPatch cannot continue if the user is root.

OPatch failed with error code 255
[root@vfxadb03 patchdepot]# whoami
root

Solution: OPatch can not run as user root. When "opatch apply" statement runs, it initiates Java OPatch and Java OPatch can not run as user root. But when "opatch auto" statement runs, it initiates "autopatch" and autopatch can run as user root. So when you get this error, it means you must use "opatch auto".

24 Mart 2012 Cumartesi

[EN] Error starting ORMI server ... port 5520 The socket name is already in use

Problem: Enterprise Manager Console won't start with error "Error starting ORMI server ... port 5520. The socket name is already in use".

Solution: 

1. Shutdown Enterprise Manager Console.
emctl stop dbconsole

2. Check if there are any processes with name like "oc4j". If there are, kill them.
ps -ef | grep oc4j
kill -9 ....

3.  Open Enterprise Manager Console.  
emctl start dbconsole

[EN] 8 Quick Steps of IPS via ADRCI

----------- STEP 1 ------------------

[ASOS3]/u01/app/oracle/admin/asos3/bdump $ adrci

ADRCI: Release 11.2.0.3.0 - Production on Fri Mar 23 10:13:47 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"

----------- STEP 2 ------------------

adrci> show home

ADR Homes:
diag/rdbms/asos/ASOS3
...
...

----------- STEP 3 ------------------

11 Mart 2012 Pazar

[TR] Global Database Name

Global Database Name
-------------------------------



Distributed bir Database Sistemine dahil olan tüm db'lerin Global Database Name'leri farklı olmak zorundadır.

Global Database Name, bir db yaratılırken aşağıdaki 2 başlangıç parametresinin değerleriyle belirlenir ve data dictionary'de saklanır. Formül şu şekildedir;

Global Database Name = DB_NAME.DB_DOMAIN (DB_NAME, en fazla 8 karakter olabilir)

Örnekler;
ALFADB.xxdomain.com
sales.us.oracle.com

Db yaratıldıktan sonra; DB_DOMAIN başlangıç parametresi değiştirilirse, aynı zamanda Global Database Name de değiştirilmiş olmaz. Global Database Name'i de bu şekilde güncellemek için ayriyetten "ALTER DATABASE RENAME GLOBAL_NAME TO db_name.yeni_db_domain;" komutu çalıştırılmalıdır.

Bir db'nin Global Database Name'ini öğrenmek için aşağıdaki komut kullanılır;

SELECT * FROM GLOBAL_NAME;

[TR] ORA-02020: too many database links in use

Db'de bir oturum açılıp bu oturum üzerinden bir db link kullanıldığında; commit yada rollback yapılmış olsa bile, o oturum sona erene kadar yada bağlantı manuel olarak kapatılana kadar network bağlantısı açık kalır. Network bağlantısının açık kalması demek, db link bağlantısı ile birbirine bağlanan remote db ve lokal db tarafında birer process'in sürekli olarak aktif olması demektir. Eğer db link o oturumda bir daha kullanılmayacaksa, aradaki network bağlantısının aşağıdaki komutla kapatılması şiddetle tavsiye edilir. Aşağıdaki komut sadece, bağlı olunan oturumda belirtilen db link için açık olan network bağlantılarını kapatır. "ALTER SESSION" sistem yetkisi gerektirir.

ALTER SESSION CLOSE DATABASE LINK dblnk1;

OPEN_LINKS başlangıç parametresi; lokal db'deki bir oturumun, db link üzerinden aynı anda kaç tane network bağlantısı açabileceğini belirler. Burada söz konusu remote db sayısı 1 de olabilir 1'den fazla da olabilir önemli olan kullanılan birbirinden farklı db link sayısıdır. Yani mesala bu parametrenin değeri 5 iken, aynı remote db'ye farklı db linkler üzerinden en fazla 5 tane network bağlantısı açılabilir. Ancak aynı db link istenildiği kadar kullanılabilir zira tüm kullanımlar aynı network bağlantısı üzerinden gider. Bu limit aşıldığında ORA-02020 hatası alınır. Bu parametrenin varsayılan değeri 4'tür ve statik bir parametredir. Daha önce açılmış sık kullanılmayan db link network bağlantıları; biraz önce anlatılan yöntemle kapatılmak suretiyle, açık db link network bağlantı sayısı kontrol altına alınabilir. Aksi halde bu parametreye takılmak kaçınılmazdır.

[TR] Oracle nesne isim çözünürlüğü mekanizması

Oracle veritabanında; SQL cümleleri içerisinde db nesne isimlerinin, aşağıdaki formatta belirtilmesi tavsiye edilir.

          şema_ismi.nesne_ismi.nesne_bileşen_ismi

Ancak SQL cümleleri içerisinde genelde bu format kullanılmaz. Çoğunlukla "şema_ismi" ve "nesne_bileşen_ismi" belirtilmez, sadece "nesne_ismi" belirtilir. Bu sebeple Oracle, SQL cümleleri içerisinde tam ve kesin olarak hangi nesnenin belirtildiğini saptamak üzere bir mekanizma geliştirmiştir. Oracle nesne
isim çözünürlüğü mekanizması. Bu mekanizma şu mantıkta çalışır;

1. SQL komutundaki birinci parça kontrol ediliyor.

 A1. Birinci parça, SQL komutunu çalıştıran db kullanıcısının şeması altındaki bir nesne ile eşleşiyor mu kontrol edilir. Eşleşiyorsa A2'ye geçilir.Eşleşmiyorsa, B1'e geçilir.

[TR] Database Gateway for Microsoft SQL (DG4MSQL) kurulum operasyonu

OPERASYON: alfadb1 (10.1.3.143) üzerine DG4MSQL kurulumu. (Linux)


Kurulum
-------


DG4MSQL software mevcut ORACLE_HOME'dan farklı bir dizine kuruldu (/oradata/DG4MSQL).

Mevcut ORACLE_HOME'a kurulsaydı bazı dosyaları ezme riski vardı. Bu durum Metalinkte de belirtiliyor.

Kurulumdan önce "Oracle® Database Gateway Installation and Configuration Guide 11g Release 2 (11.2) for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 E12013-02" dökümanından öngereksinimler kontrol edildi. Herhangi bir eksiklik yoktu.

Kurulum sırasında aşağıdaki bilgilerin girilmesi gerekiyor.

8 Mart 2012 Perşembe

[EN] PIN, UNPIN, PURGE SQL FROM SHARED POOL

select address||','||hash_value from v$sqlarea where sql_id = 'd12dc094hz335';

exec sys.dbms_shared_pool.keep   ('00000003CB2559C0,1225755749','C',1);
exec sys.dbms_shared_pool.unkeep ('00000003CB2559C0,1225755749','C',1);
exec sys.dbms_shared_pool.purge  ('00000003CB2559C0,1225755749','C',1);

[TR] Veritabanında aynı isimli database file var mı?

SELECT SUBSTR(file_name, INSTR(file_name, '/', -1, 1) + 1) pure_file_name, COUNT(*)
FROM dba_data_files
GROUP BY SUBSTR(file_name, INSTR(file_name, '/', -1, 1) + 1)
ORDER BY 2 DESC;

[TR] Kullanıcı adı ve parolası bilinmeyen bir şemada private database link yaratma

-- Kullanıcı adı ve parolası bilinmeyen bir şemada private database link yaratmak için kullanılır.

grant create database link to SEMA1;

create or replace procedure SEMA1.procx ( str in varchar2) is
begin
execute immediate str;
end;
/

call SEMA1.procx('drop database link dblnk1');
call SEMA1.procx('create database link "dblnk1" connect to REMOTE_SEMA1 identified by  remote_sema1_sifre" using ''tns_kaydi''');
call SEMA1.procx('select * from dual@dblnk1');

drop procedure SEMA1.procx;
revoke create database link from SEMA1;

[TR] DBSNMP ve SYSMAN kullanıcılarının şifrelerini değiştirme (11g)

SYSMAN
------

1. Değişkenler doğru olarak ayarlanır.

export ORACLE_SID=xxx
export ORACLE_HOME=yyy

2. Konsol kapatılır.

emctl stop dbconsole

3. Her ikisinin de kapalı olduğundan emin olunur.

emctl status dbconsole
emctl status agent

4. Şifre değiştirilir.

[TR] Online index build-rebuild kill temizleme

Bir index yaratma yada rebuild etme işlemi istenerek yarıda kesilir veya başka bir oturum tarafından bu oturum kill edilirse, index gerçekte var olmadığı halde data dctionary'de kaydı kalır. Bu tutarsızlığı temizlemek için sırasıyla aşağıdaki prosedür uygulanır.

Bu prosedür SMON tarafından otomatik ve periyodik olarak düm db'yi kapasayacak şeklide zaten yapılır.

1. Index'in data dictionary'de olduğu teyid edilir.

select * from dba_indexes where owner = 'SEMA1' and index_name = 'INDEX1';

2. Index'in fiziksel olarak db'de bulunmadığı, drop etmeye çalışılarak test edilir.

drop index SEMA1.INDEX1;

drop index sema1.index1
          *
ERROR at line 1:
ORA-08104: this index object 66960 is being online built or rebuilt


[EN] TOAD login.sql SAMPLE

-- For most of TOAD users the following login.sql script should be adequate

SET LINESIZE  2000
SET TAB OFF
SET VERIFY OFF
SET PAGESIZE 999
SET TRIMOUT ON
SET TRIMSPOOL ON
set serveroutput on size 1000000
SET ESCAPE ON
set sqlprompt'===>'
SET ECHO ON

[EN] WHICH SPs ARE USING DATABASE LINKS

select * from dba_dependencies where referenced_link_name is not null and (owner,name,type) in
(select owner,object_name,object_type from dba_objects
where object_type in ('FUNCTION','TRIGGER','PROCEDURE','PACKAGE','VIEW')
--and status = 'INVALID'
and owner = 'SEMA1')

[EN] COMPILE ALL SPs

---compile all invalid
$>cd $ORACLE_HOME/rdbms/admin
$> sqlplus / as sysdba
SQL> @utlrp.sql


---compile all bodies

SELECT 'ALTER PACKAGE ' || a.owner || '.' || a.object_name || ' COMPILE BODY;'
FROM    dba_objects a
WHERE   a.object_type = 'PACKAGE BODY'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));


---compile all specs

SELECT 'ALTER PACKAGE ' || a.owner || '.' || a.object_name || ' COMPILE;'
FROM    dba_objects a
WHERE   a.object_type = 'PACKAGE'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));


---compile all procs

SELECT 'ALTER PROCEDURE ' || a.owner || '.' || a.object_name || ' COMPILE;'
FROM    dba_objects a
WHERE   a.object_type = 'PROCEDURE'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));

---compile all funcs

SELECT 'ALTER FUNCTION ' || a.owner || '.' || a.object_name || ' COMPILE;'
FROM    dba_objects a
WHERE   a.object_type = 'FUNCTION'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));


---compile all trigs

SELECT 'ALTER TRIGGER ' || a.owner || '.' || a.object_name || ' COMPILE;'
FROM    dba_objects a
WHERE   a.object_type = 'TRIGGER'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));

---compile all views

SELECT 'ALTER VIEW ' || a.owner || '.' || a.object_name || ' COMPILE;'
FROM    dba_objects a
WHERE   a.object_type = 'VIEW'
AND     a.status      = 'INVALID'
AND     a.owner       = Decode(Upper('BUNYAMIN'), 'ALL',a.owner, Upper('BUNYAMIN'));