Oracle Portal

Aus XmasWiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Installation Oracle Portal 10.1.2.0.2 (Linux)

Vorbereitende Maßnahmen

Löschen voriger Oracle Instanzen

Dienste löschen

rausfinden ob noch Dienste laufen (oracle ist dabei db user)
> ps -ef | grep oracle
falls noch welche laufen
> pkill -u oracle
falls nicht alle auf einmal entfernt werden können dann
> kill -9 [ID]
bei [ID] die nummer aus der Prozessauflistung

Dateien löschen

> rm /as10gr2/infra -rf

Host Einträge beachten

> vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.0.1 name.domain.com name

Installation der Infrastructure (Infra-Tier)

xhost aktivieren

> xhost +

sollte danach folgendes kommen

> access control disabled, clients can connect from any host


Installer starten

nun als user oracle einloggen (ggf. vorher erstellen)
danach das runInstaller.sh Script im Verzeichnis Disk1 ausführen

Specify Inventory directory and credentials

Bestandsverzeichnis: /as10gr2/infra/oraInventory
Name für Betriebssystemgruppe: oinstall

Root script ausführen

jetzt als root das script /oracle/as10gr2/infra/oraInventory/orainstRoot.sh ausführen

Specify File Locations

Quellpfad: /as10gr2/software/as10gr2/Disk1/stage/products.xml
Name: as10gr2infra
Pfad: /as10gr2/infra

Select a Product to Install

Oracle Application Server Infrastructure 10g 10.1.2.0.2

Select Installation Type

Identity Management und Metadaten-Repository (3.63GB)

Confirm Pre-Installation Requirements

root ankreuzen

Select Configruation Options
  • Oracle Internet Directory
  • Oracle Application Server Single Sign-On
  • Oracle Delegated Administration
  • Oracle Application Server Directory Integration

Specify Port Configuration Options

Automatic

Specify Namespace in Internet Directory

Custom: dc=domain,dc=com

Specify Database Configuration Options

Datenbankname: orcl.name.domain.com
SID: orcl

Specify Database Schema Passwords

Kennwörter gleich: xxx

Specify Instance Name and ias_admin Password

Instance-Name: as10gr2infra
Kennwörter: xxx

Installation des Application Server 10.1.2.0.2 (Middle-Tier)

Specify File Locations

Ziel: as10gr2mid Pfad: /as10gr2/mid

Select a Product to Install

Oracle Application Server 10g 10.1.2.0.2

Select Installation Type

Business Intelligence and Forms

Confirm Pre-Installation Requirements

root ankreuzen


Select Configruation Options
  • Oracle Application Server 10g Portal
  • Oracle Application Server 10g Wireless
  • Oracle Application Server 10g Discoverer
  • Oracle Application Server 10g Personalization
  • Oracle Application Server 10g Report Services
  • Oracle Application Server 10g Forms Services

Seitengruppe anlegen (10.1.4)

Zur Erstellung einer Seitengruppe/ einer Portalseite muss man diese über den Navigator des Application Server anlegen. Der Application Server läuft dabei meistens auf Port 7777 oder 7778 und man kann sich auf der rechten Seite als orcladmin mit Passwort einloggen. Nachdem nun die Standardstartseite sieht, kann man rechts oben auf Navigator klicken und bekommt dann eine Übersicht der bereits vorhandenen Seitengruppen. Klickt man oben links auf Seitengruppe so wird eine neue erstellt. Es empfiehlt sich dabei, zuerst einen Namen zu wählen der

  • keine Umlaute besitzt
  • keine Leerzeichen oder sonstige Sonderzeichen enthält
  • klein geschrieben ist und als Trennzeichen "_" benutzt

Diese Eigenschaften sorgen dafür, dass die Erreichbarkeit und die Anfälligkeit des Systems auf verschiedene Browserprobleme so gering wie möglich ist.
Bei der Erstellung sollte man direkt folgende Sachen einstellen:

  • TAB Hauptbereich -> entfernen der Berechtigungen zum Verwalten und bearbeiten der Vorlagen und Anpassung des Anzeigenamen.
  • TAB Konfigurieren -> Seiten Standardwerte am besten so setzen, dass die eigene Vorlage als Standard gilt und das keine Navigationsseite benutzt wird.
  • TAB Konfigurieren -> Typen und Klassifizierung am besten so einstellen das Mobile Deviceseiten und anderer Schnickschnack deaktiviert ist.
  • TAB Konfigurieren -> Bearbeiten Modi sollte am besten auf Grafisch gesetzt werden.
  • TAB Konfigurieren -> Alle weiteren Sachen einfach deaktivieren. Später kann dann die Umschreiberegel noch eingestellt werden.
  • TAB Elemente -> Elemente sollten ruhig sofort gelöscht werden und der Rich Text Editor aktiviert sein.
  • TAB Zugriff -> Hier sollte anfangs zur Verwaltung nur der orcladmin User eingestellt sein oder der Account des Entwicklers. Genauere Einstellung pro Seite werden in den Vorlagen oder den Seiten selber eingestellt.

Schema für Seitengruppe anlegen (10.1.4)

Damit man für eine Seitengruppe auch ein eigenes Schema besitzt muss man dieses anlegen und mit entsprechenden Rechten versehen. Dafür am besten den Navigator aufrufen, dort auf Datenbankobjekte klicken und auf Schema klicken um eins anzulegen. Dafür sollte man entweder orcladmin sein oder als Admin mit DB-Rechten angemeldet sein.
Nun gibt man ein Schemaname und ein Passwort an worauf in der Datenbank ein entsprechendes Schema erstellt wird. Dies reicht für den Zugriff auf die Portalrelevanten Tabellen und Views noch nicht aus. Man muss nun ein Script auf dieses Schema anwenden und wodurch es die entsprechenden GRANT's bekommt.
Einloggen per putty als Oracle-User (ORACLE_HOME sollte auf das Middle-Tier gesetzt sein). An folgende Stelle navigieren und entsprechende Befehl ausführen:

oracle@server>. mid.env
~@server>cd /ORACLE_HOME/portal/admin/plsql/wwc
/ORACLE_HOME/portal/admin/plsql/wwc@Mid>sqlplus /nolog
SQL> conn portal/passwort
SQL>@provsyns.sql schemaname

Falls Zielobjekt oder Host nicht erreichbar ist kan auch die Verbindung mittels der SID hinter dem Passwort vorgenommen werden ( conn portal/passwort@SID ). Damit sollte nun das Schema entsprechende Berechtigungen besitzen. Falls der Listener nicht läuft muss dieser vorher mit

lsnrctl start

gestartet werden.

Portlets einbauen

Um nun Portlets in der Anwendung zu benutzen kann man einerseits auf die bereits vorhandenen Portlets zurückgreifen wovon das Webclipping und das Omni-Portlet mit die interessantesten darstellen.
Andererseits kann man eigene Portlets erstellen dies ist möglich über PL/SQL und Java. Beide Arten von Portlets sind je nach Einsatzbereich sinnvoller.
Während PL/SQL Portlets direkt in der Datenbank des Portals laufen und gerade Berechnungen bzw. Funktionen der Datenbank schnell zu benutzen sind, so ist der Code meist nur mit Aufwand in andere Systeme zu portieren. Auch sind große Projekte bzw. Portlets evtl. irgendwann nicht so optimal zu überschauen.
Demgegenüber sind Javaportlets portierbarer und bieten meist einen besseren Überblick bei großen Programmen. Auch kann es ausschlaggebend sein, wenn bestimmte Weboberflächen bzw. Look and Feels von Nöten sind sowie bestimmte Techniken.
Momentan werden alle Portlets von mir in PL/SQL geschrieben da weder Portierbarkeit, noch vorhandene Code aus Java imigriert werden musste, von belang war. Außerdem sind die meisten Portlets recht übersichtlich und es waren schon Grundstrukturen vorhanden.

PL/SQL Portlets - Datenbankprovider einrichten

Um nun Portlets zu benutzen benötigt man sogennante Datenbankprovider. Diese stellen für bestimmte Seitengruppen die entsprechenden Portlets sowie die Funktionen zur Verfügung. Ein solcher Provider wird als Package ähnlich der Portlets selber in der Datenbank erstellt und enthält alle Informationen über die vorhandenen Portlets. Man legt, nach dem Kompilieren in der Datenbank auch einen Eintrag im Portal an, und erstellt dort einen Eintrag im Navigator (Tabreiter Provider). Hier die möglichen Einstellungen:

Name: name_portlet_provider
Anzeigename: Name (Ausgeschrieben)
Timeout: 100 Sekunden
Timeout-Meldung: name_portlet_provider timed out.
Implementierungsstil: Datenbank

Eigentümerschema: name
Package-Name: name_portlet_provider
Anmeldehäufigkeit: Einmal pro Benutzer-Session

PL/SQL Portlets - Portlet erstellen

...
Falls ein Portlet zur Navigation oder allgemein vom Portal über Benutzer angesprochen wird, so muss es dann in der Datenbank so erstellt werden, dass der Nutzer PORTAL_PUBLIC darauf zugreifen kann. Dies schafft man mittels diesem Befehl:

GRANT EXECUTE ON schema.packagename TO PORTAL_PUBLIC;

...
Um alle Tabellen anfragen zu können und Inhalte zu testen muss man teils den Context setzen dies geschieht so: portal.wwctx_api.set_context('orcladmin','passwort');

Abfragen des Passworts für portal

Vorher Oracle Home auf infra setzen.
%ORACLE_HOME%\bin\ldapsearch -h %OIDHOST% -p %OIDPORT% -D cn=orcladmin -w %IAS_PASSWORD% -b "cn=IAS Infrastructure Databases,cn=IAS,cn=Products,cn=OracleContext" -s sub "orclResourceName=portal" orclpasswordattribute

Umschreibregel einbauen (10.1.4)

Ersetzmuster in Oracle Portal

In Oracle Portal muss man dafür an zwei Stellen was anpassen. Die erste Einstellung sorgt dafür, dass alle Links die aufgerufen werden, entsprechend umgeschrieben werden, so dass nicht mehr /portal/page/portal erscheint. Die zweite Regel sorgt dafür, dass der Apache von intern die Umschreibung und Anfragen anpasst.
-> Navigator -> Seitengruppen -> Eigenschaften (von entsprechender Seitengruppe) -> Konfigurieren -> URL-Umschreiberegeln (ganz unten)
Dort müssen dann folgende beiden Einträge rein:

Suchmuster: /portal/page/portal/name
Ersetzmuster: /name

Redirect/Rewrite Rule Einstellungen in Apache

Hier die Einstellungen für den Apache:
Einloggen auf dem Server mittels Putty. Am besten direkt als User welcher den Applicationserver betreibt (meist portal oder oraportal). Nun muss man das Environment auf das Middle Tier setzen. Bei sorgfältig eingerichteten Systemen sollte man im Homeverzeichnis des portal/oraportal Users Dateien für ein solches Environment vorfinden. Diese heißen dann "mid.env" und man ruft sie auf mit ". mid.env" (Achtung Leerzeichen nach dem Punkt).
Ist keine Environment-Datei vorhanden muss man ORACLE_HOME selber auf das Verzeichnis des Middle-Tier setzen.
Danach muss man die httpd.conf des Apache (vom Middle-Tier) anpassen und folgende Zeile hinzufügen:

RewriteRule ^/name(.*)$ /portal/page/portal/name$1 [PT]

Für https rewriting folgendes (dabei darauf achten, falls eine Adresse mehrfach angepasst wird wird immer das ursprungsmuster benutzt):
RewriteEngine On
RewriteOptions inherit

RewriteRule ^/kundenportal(.*)$ /portal/page/portal/kundenportal$1 [PT]

RewriteCond %{SERVER_PORT} !443
RewriteRule ^/portal/page/portal/kundenportal(.*)$ https://www.xmasman.de/kundenportal$1 [R]

Nun muss der Apache noch die Configuration neu einlesen:

dcmctl updateconfig -ct ohs -d -v

Und dann noch den Apache über opmn neu starten:

opmnctl stopproc process-type=HTTP_Server
opmnctl startproc process-type=HTTP_Server

Jetzt sollte die Adresse im Browser gehen. Falls es Probleme gibt evtl. Cache auf Serverseite löschen und eigenen Browser auch den Cache löschen.

Starten und Stoppen des Application Server

Um den Application Server zu starten für das Portal muss man mehrere Sachen beachten. Erstmal benötigt man dafür ein sog. Infra-Tier und ein Middle-Tier. Auf dem Infra-Tier läuft die Datenbank und mehrere grundlegende Funktionen. Auf dem Middle-Tier läuft das Portal.
Um die beiden Instanzen zu starten und zu stoppen legt man sich am besten Shellscripte an. Dies könnten dann zum Beispiel die Namen "infra.env" und "mid.env" heißen. Wenn man nun diese benutzt bzw. den Server startet oder stoppt, muss man als der User am System angemeldet sein, welcher für die Oracle Prozesse zuständig ist. Dieser heißt dann meistens oraportal oder oracle. Inhalt einer infra.env könnte dann so aussehen:

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
export NLS_LANG=German_Germany.AL32UTF8
export ORACLE_BASE=/as10gr2
export ORACLE_HOME=$ORACLE_BASE/infra
export ORACLE_SID=asdb
export ORACLE_HOSTNAME=portal.mt-ag.com
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jre/1.4.2/lib/i386/server:$ORACLE_HOME/jre/1.4.2/lib/i386/native_threads:$ORACLE_HOME/perl/lib/site_perl/5.6.1/i686-linux:/usr/lib:/usr/X11R6/lib
export PATH=$ORACLE_HOME/dcm/bin:$ORACLE_HOME/bin:.:$ORACLE_HOME/ldap/odi/bin:$ORACLE_HOME/perl/bin:.:$PATH:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/jdk/bin
export DISPLAY=:13.0
unset USERNAME
umask 022
export PS1="\w"'@Infra> '
set -o emacs
alias b='cd $ORACLE_BASE'
alias o='cd $ORACLE_HOME'
alias n='cd $ORACLE_HOME/network/admin'
alias a='cd $ORACLE_HOME/Apache/Apache'

Diese Datei beinhaltet Angaben zum Homeverzeichnis, SID, Hostname und verschiedene Pfadangaben. Aktivieren kann man diese mittels console über den Befehl ". infra.env". Analog dazu die mid.env.

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# User specific environment and startup programs
export NLS_LANG=German_Germany.AL32UTF8
export ORACLE_BASE=/as10gr2
export ORACLE_HOME=$ORACLE_BASE/mid
export ORACLE_SID=asdb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jre/1.4.2/lib/i386/server:$ORACLE_HOME/jre/1.4.2/lib/i386/native_threads:$ORACLE_HOME/perl/lib/site_perl/5.6.1/i686-linux:/usr/lib:/usr/X11R6/lib
export PATH=$ORACLE_HOME/dcm/bin:$ORACLE_HOME/bin:.:$ORACLE_HOME/ldap/odi/bin:$ORACLE_HOME/perl/bin:.:$PATH:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/jdk/bin
export DISPLAY=:13.0
unset USERNAME
umask 022
export PS1="\w"'@Mid> '
set -o emacs
alias b='cd $ORACLE_BASE'
alias o='cd $ORACLE_HOME'
alias n='cd $ORACLE_HOME/network/admin'
alias a='cd $ORACLE_HOME/Apache/Apache'

Enterprise Manager

Um verschiedene Einstellungen zu tätigen oder sachen zu deployen benötigt man den Enterprise Manager. Diesen startet man mit im Middle-Tier Environment für den Application Server und im Infra-Tier für die Datenbank. Bei entsprechend gesetzten Umgebungsvariablen wird er so aufgerufen:

emctl start iasconsole
emctl stop iasconsole
Einloggen kann man sich per ias_admin und dem entsprechenden Passwort.

Beispiele

Ausgabe aller Textitems aus einer Region einer bestimmten Seitengruppe

DECLARE
Cursor items is
SELECT 
   i.id
  ,i.display_name
  ,i.description
  ,i.publish_date
 FROM portal.WWSBR_ALL_ITEMS i
 WHERE i.caid = <id der Seitengruppe>
 AND i.itemtype = 'basetext'
 AND i.folder_id = <id der Seite>
 AND i.folder_region_id = <id der Region>
 ORDER BY sequence;
 
 item items%ROWTYPE;
BEGIN
 portal.WWCTX_API.set_context('orcladmin', passwort);
 for item in items
 loop
  htp.p(item.display_name);   
 end loop;
END;


HTML Vorlagen (Page Skin / Item Skin)

Hier gibts 2 Wege solche zu definieren:

  1. Definition ab Oracle Portal 10g2 über Bereich HTML-Vorlagen direkt im Navigator
  2. Definition über Provider: Provider > Lokal erstellte Provider > Gemeinsame Komponenten > Benutzeroberflächen-Vorlagen

Referenzieren von URLs/PageId in Portlets

Im Portlet Provider in der Prozedur:
procedure show_portlet (p_portlet_record in out wwpro_api_provider.portlet_runtime_record)
Abfrage der URL
im builder übergeben:
p_portlet_record in wwpro_api_provider.portlet_runtime_record
danach dort mittels
p_portlet_record.page_url
abfragen. Diesen dann mit der general_func auf die pageid gehen
xxx_general_func.get_page_id(p_url => p_portlet_record.page_url)
.