2011-12-23

Oracle Scheduler Jobs ein-/ausschalten

ab Oracle Version 10g werden regelmäßig auszuführende, zeitgesteuerte Jobs über den Scheduler (Package: dbms_scheduler) und nicht mehr als Jobs (Package: dbms_jobs) eingerichtet. Immer wieder steht man vor der Aufgabe alle Scheduler-Jobs auf einmal zu deaktivieren, insbesondere z.B. nach dem Clonen einer Produktiv-DB in eine Test-DB.

Komplett ausgeschaltet werden kann der Scheduler mittels:
   dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','TRUE');
Komplett eingeschaltet werden kann der Scheduler mittels:
   dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
Zu beachten ist hier die, auf den ersten Blick, vertauschte Bedeutung von 'TRUE' und 'FALSE'!

Ein einzelner Job kann deaktiviert werden mittels:
   exec dbms_scheduler.disable('<job_name>');
und aktiviert wird er über:
   exec dbms_scheduler.enable('<job_name>');
Hiermit können jedoch nur Jobs des am SQL*Plus angemeldeten Benutzers (aktuelles Schema) ein- bzw. ausgeschaltet werden. Die Dokumentation liefert keinen Hinweis darauf, wie man z.B. als sys alle Scheduler-Jobs auch fremder Schamata ausschalten kann.

Etwas Herumexperimentieren hat aber ergeben, dass ein einzelner Job in einem fremden Schema deaktiviert werden kann mittels:
   exec dbms_scheduler.disable('<owner>.<job_name>');
und aktiviert wird ein Job in einem fremden Schema über:
   exec dbms_scheduler.enable('<owner>.<job_name>');
Man muss also einfach den Job-Namen ersetzen durch Eigentümer.Job-Name.

Die notwendigen Informationen zu den Scheduler-Jobs liefert die View DBA_SCHEDULER_JOBS.

Alle Scheduler-Jobs aller DB-Benutzer auf einmal ausschalten geht mit folgendem PL*SQL Block:
begin
   for v_job_info in (select owner, job_name from DBA_SCHEDULER_JOBS where enabled = 'TRUE')
   loop
      dbms_scheduler.disable(v_job_info.owner || '.' || v_job_info.job_name);
   end loop;
end;

Folgende Scheduler-Jobs sollte man typischer Weise aktiv/eingeschaltet lassen
(und es gibt sicher noch weitere, die laufen sollten):
OWNER                          JOB_NAME
------------------------------ ------------------------------
SYS                            BSLN_MAINTAIN_STATS_JOB
SYS                            DRA_REEVALUATE_OPEN_FAILURES
SYS                            ORA$AUTOTASK_CLEAN
SYS                            PURGE_LOG
ORACLE_OCM                     MGMT_STATS_CONFIG_JOB
ORACLE_OCM                     MGMT_CONFIG_JOB
EXFSYS                         RLM$SCHDNEGACTION
EXFSYS                         RLM$EVTCLEANUP

2011-12-21

DOAG@Talk mit Ducan Mills

Christian Schwitalla (DOAG Leiter der SIG Development / Tools) hat mit Duncan Mills über die Zukunft der Entwicklungswerkzeuge von Oracle gesprochen. Das Gespräch gibt es hier.

2011-12-15

HowTo: Set Default Run Target to TaskFlow Activity

Goal

Eine Fusion Web Application (ADF) soll innerhalb einer Applikation Workspace]  unabhängig vom selektierten Kontext per Tastatur gestartet werden.

Context

- JDeveloper 11gR2

- Fusion Web Application (ADF)

Solution

1

Choose: Run / Choose Active Run Configuration / Manage Run Configuration..

2

Select: Run Configuration / Default

Choose: Edit..

3

Deselect: Attempt to Run Active File Before Default

Select Default Run Target: ..\WEB-INF\adfc-config.xml [your task-flow file]

4

Choose: Launch Settings / ADF Task Flow

Select View Activity: home [your start page]

Choose: Ok

Choose: F11

2011-12-01

Überwachungsvorlagen im Enterprise Manager Grid Control 11g: Quellcode zum Vergleich der Metrik-Werte aus den Überwachungsvorlagen und den Zielsystemen

Im Enterprise Manager Grid Control kann die Konfiguration von Metriken und deren Schwellwerten über alle Datenbanken und anderen Ziele hinweg mit Überwachungsvorlagen vereinfacht und vereinheitlicht werden. Was ist jedoch, wenn in einer gewachsenen Oracle-Infrastruktur nachträglich die Überwachung vereinheitlicht werden soll?

Dann ist ein aufwändiger Abgleich bereits vorhandener Metrikeinstellungen zwischen einer Vorlage und dem Zielsystem bzw. zwischen den Zielsystemen untereinander nötig. Im Enterprise Manager Grid Control kann immer nur ein Zielsystem mit einer Vorlage verglichen werden. Das ist somit sehr mühselig.

Mit Hilfe des folgenden Codes kann eine komplette Ansicht der Metrikwerte der gewünschten Vorlagen und der gewünschten Zielsysteme generiert werden.

Code:

1. Anlegen der Tabellen:

-- Tabelle anlegen
create table TEAM_METRIC_VERGLEICH
(
  ZEILE            NUMBER,
  TYP              VARCHAR2(7),
  TEMPLATE_NAME    VARCHAR2(64),
  TARGET_NAME      VARCHAR2(256),
  TARGET_TYPE      VARCHAR2(64),
  METRIC_NAME      VARCHAR2(64),
  COLUMN_LABEL     VARCHAR2(323),
  SPALTEN_LABEL    VARCHAR2(323),
  COLLECTION_NAME  VARCHAR2(64),
  KEY_VALUE        VARCHAR2(256),
  WARN             VARCHAR2(4000),
  CRIT             VARCHAR2(4000),
  DIFF             CHAR(1),
  VATER            NUMBER,
  GRUPPE           NUMBER,
  OCCURRENCE_COUNT NUMBER,
  METRIC_GUID      RAW(16),
  TARGET_GUID      RAW(16),
  TEMPLATE_GUID    RAW(16)

);

-- Create table
create table TEAM_TARGETS_METRIC
(
  TARGET_NAME     VARCHAR2(256) not null,
  TARGET_TYPE     VARCHAR2(64) not null,
  TYPE_QUALIFIER1 VARCHAR2(64),
  HOST_NAME       VARCHAR2(256),
  GRUPPE          VARCHAR2(256),
  DATENBANK       VARCHAR2(256),
  METRIC_KNZ      NUMBER,
  RULES_KNZ       NUMBER,
  TARGET_GUID     RAW(16) not null
);

Bsp.:

insert into TEAM_TARGETS_METRIC
select    target_name, target_type, t.type_qualifier1, t.host_name,
  decode(target_type, 'host', '------------------', target_name) gruppe,
  decode(target_type, 'host', '------------------', target_name) datenbank,
            -1 metric_knz,
            0 rules_knz,           
      target_guid
from MGMT$TARGET t
where  t.target_type in ( 'host' ,'oracle_database','rac_database');

2. Skript zur Vergleichsberechnung:

declare
/*
Kurzbeschreibung:
Innerhalb dieses Skripts wird die Tabelle TEAM_METRIC_VERGLEICH mit den Metrik-Daten der Vorlagen und der Zielsystem (Datenbankinstanzen, Host, ..) gefüllt. Danach werden die Werte der Metriken zwischen der Vorlage und der Ziele miteinander verglichen.

Voraussetzung:
1) Der Name der Vorlagen, deren Metriken mit den Ziel-Metriken verglichen werden sollen, haben einen eindeutigen Präfix. Bsp.: „Vorlage_“.
Der Präfix muss in das nachfolgende Skript eingetragen werden.
2) Es werden für den Vergleich nur die Ziele verwendet, die in der Spalte METRIC_KNZ der Tabelle TEAM_TARGET_METRIC eine 1 stehen haben.
  
select target_name from team_targets_metric where metric_knz = 1
*/

k_vorlage_praefix   varchar2(80) := 'Vorlage_';

begin
-- Alten Daten löschen
delete from TEAM_METRIC_VERGLEICH;

-- Fülle die Tabelle mit den Vorlagen-Daten
insert into TEAM_METRIC_VERGLEICH (  typ, template_name,  target_name, target_type, metric_name,
            column_label,  spalten_label,  collection_name, key_value, warn,  crit, occurrence_count, diff,  vater, template_guid, metric_guid )
select   'VORLAGE' typ,  t.template_name, '- Vorl.' target_name, t.target_type, t.metric_name,
            t.column_label,  t.column_label spalten_label,     t.collection_name, t.key_value,
            decode( t.warning_operator, 0 , '>' ,   1 ,' =' ,     2 , '<' ,   3, '<=',    4 , '>=' ,    5, 'CONTAINS' ,    6, 'NE' ,    7, 'MATCH', warning_operator)||' '||t.warning_threshold warn,
            decode( t.critical_operator, 0 , '>' ,   1 ,' =' ,     2 , '<' ,   3, '<=',    4 , '>=' ,    5, 'CONTAINS' ,    6, 'NE' ,    7, 'MATCH', critical_operator)||' '||t.critical_threshold crit,
            null , '-' diff, 0 vater, template_guid, metric_guid
from MGMT$TEMPLATE_METRIC_SETTINGS t
where  template_name like k_vorlage_praefix||'%'
order by  t.target_type,  t.metric_name ,  t.column_label,  t.key_value;

-- Fülle die Tabelle mit den Ziel-Metrik-Daten
insert into TEAM_METRIC_VERGLEICH (  typ, template_name,  target_name, target_type, metric_name,
            column_label,  spalten_label,  collection_name, key_value, warn,  crit, occurrence_count, diff,  vater, target_guid, metric_guid )
 select  'TARGET' typ, '' ,  t.target_name, t.target_type, t.metric_name,
            t.column_label, t.column_label spalten_label, t.collection_name , t.key_value,
            decode( t.warning_operator, 0 , '>' ,   1 ,' =' ,     2 , '<' ,    3, '<=',    4 , '>=' ,    5, 'CONTAINS' ,    6, 'NE' ,    7, 'MATCH', warning_operator)||' '||t.warning_threshold warn,
            decode( t.critical_operator, 0 , '>' ,   1 ,' =' ,     2 , '<' ,    3, '<=',    4 , '>=' ,    5, 'CONTAINS' ,    6, 'NE' ,    7, 'MATCH', critical_operator)||' '||t.critical_threshold crit        
           ,occurrence_count ,'-' diff  , -1 vater, target_guid, metric_guid
     from MGMT$TARGET_METRIC_SETTINGS t
     where target_name in (select target_name from team_targets_metric where metric_knz = 1  )
order by  t.target_type,  t.metric_name ,  t.column_label,  t.key_value;

-- Berechnung

--    Vorbereitung
update TEAM_METRIC_VERGLEICH set key_value = ' '
where key_value is null ;

update TEAM_METRIC_VERGLEICH set spalten_label = replace(spalten_label,' - '||key_value),
      vater = zeile,
      diff = '.'
where typ = 'VORLAGE';

-- Sonderbehandlung für User Defind Metriken
update TEAM_METRIC_VERGLEICH set spalten_label = collection_name
where typ = 'TARGET'
  and metric_name in ( 'SQLUDM', 'SQLUDMNUM', 'SQLUDMSTR');
  

update TEAM_METRIC_VERGLEICH set key_value = ''
where spalten_label = key_value;

-- Template-Name zu den Ziel-Zeilen hinzufügen
update TEAM_METRIC_VERGLEICH t set (template_name, template_guid) =
   (  select distinct template_name, template_guid
         from TEAM_METRIC_VERGLEICH v
      where v.typ = 'VORLAGE'
              and t.metric_guid = v.metric_guid
   )
where typ = 'TARGET';

-- Differenz berechnen: für Metriken mit einem KEY_VALUE- Wert
update TEAM_METRIC_VERGLEICH t set diff =
   ( select  decode( nvl(v.key_value,'#') ,  nvl(t.key_value,'#'),
                  decode( nvl(v.warn,'#') ,  nvl(t.warn,'#'),
                      decode( nvl(v.crit,'#'), nvl(t.crit,'#'), '.', 'X'), 'X'), 'X')
        from TEAM_METRIC_VERGLEICH v
        where v.typ = 'VORLAGE'
              and t.metric_guid = v.metric_guid
              and t.key_value  = v.key_value
              and t.spalten_label  = v.spalten_label        
   )
where typ = 'TARGET'
  and template_name is not null
  ;

-- Differenz berechnen: für die restlichen Metriken
update TEAM_METRIC_VERGLEICH t set diff =
   ( select  decode( nvl(v.key_value,'#') ,  nvl(t.key_value,'#'),
                  decode( nvl(v.warn,'#') ,  nvl(t.warn,'#'),
                      decode( nvl(v.crit,'#'), nvl(t.crit,'#'), '.', 'X'), 'X'), 'X')
        from TEAM_METRIC_VERGLEICH v
        where v.typ = 'VORLAGE'
              and t.metric_guid = v.metric_guid
              and v.key_value  = ' '
              and t.spalten_label  = v.spalten_label
   )
where typ = 'TARGET'
  and template_name is not null
  and diff is null
  ;

commit;

end;

3. Anzeige:

select nvl(p.gruppe,'X') nr, nvl(p.nr,999) nr, m.*
from   team_pruefungen  p,
(     select  v.template_name,  v.target_name,  v.spalten_label, v.key_value, v.warn, v.crit, v.diff, metric_guid gruppe, v.occurrence_count, v.metric_name,v.target_type, 
               v.spalten_label sortierung, decode(target_type,'host','host','datenbank') sort_1
      from TEAM_METRIC_VERGLEICH v
      where template_name is not null and typ = 'VORLAGE'
      union all
      select  v.template_name, v.target_name, v.spalten_label, v.key_value, v.warn, v.crit, v.diff, metric_guid gruppe, v.occurrence_count, v.metric_name,v.target_type, 
            v.spalten_label, decode(target_type,'host','host','datenbank') sort_1
      from TEAM_METRIC_VERGLEICH v
      where template_name is not null and  typ = 'TARGET'
      union all
      select  distinct v.template_name,  '***************','********','********','********','********','********', 
              metric_guid gruppe,  null, '********', v.target_type, 
              v.spalten_label, decode(target_type,'host','host','datenbank') sort_1
      from TEAM_METRIC_VERGLEICH v
      where typ = 'VORLAGE'
)    m
where m.gruppe = p.metric_guid(+)
order by 1, 2, 10, 4, 6
;

Den Artikel zu diesem Code finden Sie in der DOAG News Ausgabe 6/Dezember 2011
Thema: „Überwachungsvorlagen im Enterprise Manager Grid Control 11g,
Vergleich und Vereinheitlichung von überwachten Metriken“
Autoren: Claudia Gabriel und Ralf Appelbaum, TEAM GmbH

2011-10-15

Umfrage von Grant Ronald, Oracle Group Product Manager - Application Development Tools

Vielleicht hat der eine oder andere diesen Aufruf :

Your Chance to Change the ADF Future

von Grand Ronald noch nicht mitbekommen. Vielleicht können 5 Minuten eine ganze Produktentwicklung beeinflussen !? Also wer noch nicht hat, sollte aber...

2011-09-23

TEAM auch auf der DOAG Konferenz 2011 wieder vertreten

Passend zu den Themen, die Sie hier im Blog lesen können, werden einige Autoren auch in diesem Jahr wieder mit zahlreichen Vorträgen auf der DOAG Konferenz 2011 zu sehen sein. Folgende Titel sind im Konferenzprogramm enthalten:

  • RAC Migration von 10gR2 auf 11gR2 über Data Guard mit Handicaps
  • Migration von ProStore® Logistic Intelligence von OBIEE 10g auf 11g
  • Klassisch und doch agil - Scrum Erfahrungen
  • Upgrade Guide für Oracle ADF auf dem WebLogic Server
  • Anwendungsentwicklung im Post-Forms-Zeitalter

Ebenfalls wird die Firma TEAM GmbH mit einem Stand vor Ort in Nürnberg vertreten sein, an dem Sie die Chance haben, mit uns, den Autoren, in die Diskussion einzusteigen.

Abgerundet wird die Konferenz in diesem Jahr mit dem Schulungstag zum Thema:
       Oracle Discoverer und nun? Update, Migration oder Integration?

Ihr individuelles Konferenzprogramm können Sie sich auch mit dem von uns entwickelten iConfGuide für die DOAG-Konferenz zusammenstellen. Hier der QR-Code:

Weitere Details finden Sie auf den DOAG Seiten oder auch selbstverständlich hier bei TEAM.

TELDE – Verwendung von autorized_keys

Anforderung

Login auf die Server soll über SSH und Putty per Zertifikat sichergestellt werden.

Lösung

Mit OpenSSL einen SSH-KEY erstellen, UNIX Umgebung konfigurieren  und den SSH-Key in das entsprechende PUTTY Format konvertieren und importieren

Komponenten

  Bereich Komponente
  TELDE OES, JDK
  Putty  

Umsetzung

Bereich Gegenstand
Putty Action: Start Putty
  Action: Open Save Session telde.local als oracle
   
SSH-KEY erzeugen

[oracle@telde ~]$ mkdir .ssh

[oracle@telde ~]$ chmod 700 .ssh

[oracle@telde ~]$ ssh-keygen -b 1024 -f .ssh/id_rsa -C oracle@telde.local
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
0f:f2:a4:fc:49:d1:cc:d9:b5:96:27:f1:c2:a2:e6:7b oracle@telde.local
[oracle@telde ~]$ cd .ssh

[oracle@telde .ssh]$ cat id_rsa.pub >> authorized_keys

[oracle@telde .ssh]$ chmod 600 authorized_keys

   
Private Key im PuttyGen importieren 1
  2
   
Konfiguration der Putty Session 3
  4
   
Test

5

 

Hinweis

Nicht vergessen, die letzten Einstellungen vor dem öffnen der Verbindung innerhalb von Putty zu speichern :) !

2011-09-02

Aufruf-Änderung der „Execute_Report_Object“-Methode

Ein weitere Änderung, die wir bei der Migration von ProStore LI festellen mussten, ist dass sich der Aufruf der „Execute_Report_Object“-Methode geändert hat.

Änderungen:
Aus „Path“ ist „bipPath“ geworden und die Parameter werden nun mit einem „?“ getrennt übergeben.

Problem beim BI Publisher Login nach Migration auf 11g

 

Der Release der BI Suite Version 11g stellte uns, von der Firma TEAM, vor die Herausforderung unsere Softwarelösung ProStore® LI, welche die BI Suite als Basis für die Auswertungen nutzt, auf die Version 11g zu migrieren.

Ein Schritt in diesem Migrationsprozess war die Migration des alten BI Publisher Repositorys.
Nach dem das Repository problemlos mit dem Upgrade Assistent migriert wurde, mussten wir feststellen, dass kein Login am BI Publisher mehr möglich war.

Wie ist das zu erklären?
Mehrmaliges Upgraden des Repository und Einspielen des Backups gaben Aufschluss: In der alten Version existierte ein User „Administrator“, der sowohl User in der OBIEE Security und außerdem als Super User im BI Publisher definiert war. Diese Dopplung schloss ein Login aus.

Lösung:

Vor der Migration muss der Super User des BI Publisher auf einen Namen ungleich „Administrator“ geändert werden.

2011-06-30

Ausbildungspfad - Oracle ADF

1

 

 

 

Im Rahmen der Oracle ADF Community wurde eine Präsentation erstellt, die einen empfohlenen Ausbildungspfad für Oracle ADF zeigt. Die Präsentation ist Online verfügbar auf der Plattform Prezi.

2011-04-15

Deinstallation Oracle Database 11gR2

Öfter mal was Neues.... 1

Wer schon mal versucht hat eine Oracle 11gR2 Database unter Windows zu deinstallieren, wird schnell feststellen, dass es den Oracle Universal Installer mit der Option "Produkt entfernen" nicht mehr gibt !

Ab Oracle 11gR2 wird dies jetzt mit einem Command Line Tool “deinstall.bat” durchgeführt.

2

2011-04-12

BI Publisher 11G Problem mit Dezimalstellen

Problemstellung:

Auf unserem frisch installierten OBIEE 11G Testsystem mit eine Oracle 11G R2 Datenbank gab es ein Problem, mit der Anzeige und Addition von Zahlenwerten mit Dezimalstellen.

Die Werte konnten weder in einer Pivot-Tabelle noch in einem Diagramm korrekt dargestellt werden. Bei Werten ohne Nachkommastellen gab es das Problem nicht.

Lösung:

In das Script startWeblogic.cmd folgenden Zeile einfügen:

set JAVA_OPTIONS=-Dfile.encoding=UTF-8 -Duser.language=en -Duser.region=US%JAVA_OPTIONS%

 

Anmerkung:

Bei der Version 11.1.1.6 scheint diese Einstellung Probleme zu machen bei erstellen von Berichten aus Answers-Auswertungen.

2011-02-22

Team stellt Konferenz-Guide für die DOAG mit Oracle ADF zur Verfügung

Beginnend mit der letztjährigen DOAG Konferenz und Ausstellung hat die Firma TEAM eine, speziell auf das IPhone abgestimmte, Webapplikation erstellt, mit der sich die rund 2000 Teilnehmer vor Ort die aktuellsten Informationen rund um die Vorträge und die Ausstellung anzeigen lassen konnten.

 image

 

Neben einer Volltext- und Attributsuche über die mehr als 400 Vorträge konnten sich die Anwender ein eigenes Konferenz-Programm zusammenstellen und online die besuchten Vorträge mit einem Feedback versehen. Der komplette Ausstellerkatalog und ein Lageplan des Konferenzzentrum in Nürnberg rundeten diesen mobilen Konferenz Guide ab.

Der vollständige Lebenszyklus dieser Applikation, vom UseCase-Entwurf über die Schritte Prozessfluss-, Datenmodell und Implementierung bis hin zum Deployment auf dem Weblogic-Server ist mit der neuesten Version des JDeveloper 11g und dem enthaltenen Applikation Development Framework (ADF) erstellt.

Nach dem Erfolg dieser Applikation auf der DOAG Konferenz 2010 wird die DOAG diesen Service auch für die diesjährigen Konferenzen, beginnend mit der DOAG 2011 Applications zur Verfügung stellen. Neben der Unterstützung für das IPhone und IPad sollen in diesem Jahr auch andere Smartphone-Systeme (Blackberry, Android) zur Verfügung gestellt werden.

2011-01-19

Grid Control Agent läuft, aber Windows Service nicht mehr! Was tun?

Gelegentlich kommt es vor, dass der Windows Service für den GC Agent (z.B. Oracleagent10gAgent) beendet ist, obwohl im Taskmanager der emagent.exe Prozess noch läuft. In diesem Fall kann der Agent dann nicht über Services und auch nicht über "emctl stop/start agent" beendet bzw. neu gestartet werden. Der Status mit "emctl status agent" wird korrekt als "Agent is Running and Ready" ausgegeben.

Beim Killen über den Taskmanager wird der Prozess immer wieder automatisch neu gestartet!

Dann hilft:
> emctl istop agent
in der Kommandozeile.

siehe hierzu auch “My Oracle Support” ID 459387.1