Muniqsoft Training

Auswahl  

APEX Datenbank Initialisierungsparameterempfehlungen 

Oracle
APEX
APEX 18.1:APEX 5.1:APEX 5.0:APEX 4.x:12.1, 12.2
02.08.18 (MP)
11.12.18 (MP)
APEX Initialisierungsparameter

Body

Bei manchen (äh fast allen) Applikationen gibt es die geliebten ReadMe (RTFM) Dateien. Jeder von uns liest diese Dateien natürlich ordnungsgemäß komplett von vorne bis hinten durch. :-)

Sollten durch die Installation einer Applikation diverse Initialisierungsparameter auf bestimmte Werte gesetzt werden müssen, könnte man dem Benutzer folgenden kleinen SQL-Befehl (natürlich angepasst an Ihre Wünsche) mitgeben:

Bei manchen (äh fast allen) Applikationen gibt es die geliebten ReadMe (RTFM) Dateien. Jeder liest diese Dateien natürlich ordnungsgemäß komplett von vorne bis hinten durch. :-)

Sollten durch die Installation einer Applikation diverse Initialisierungsparameter auf bestimmte Werte gesetzt werden müssen, könnte man dem Benutzer folgenden kleinen SQL-Befehl (natürlich angepasst an Ihre Wünsche) mitgeben:


Beispielempfehlung für die Installation von Apex 5.1/18.x mit dem EPG Gateway auf Oracle 12.x/18.x Datenbanken:

SELECT * FROM (
                SELECT name, nvl(display_value,'NULL') as Wert, CASE
                WHEN name='db_create_file_dest'
                   THEN (select substr(name,1,instr(name,'\',-1)-1)
                FROM v$datafile where rownum=1)
                WHEN name='shared_servers'
                   THEN '>=10 bei EPG'
                WHEN name='max_shared_servers'
                   THEN '>=20 bei EPG'
                WHEN name='job_queue_processes'
                   THEN '>=10'
                WHEN name='session_cached_cursors'
                   THEN '>=100'
                WHEN name='sga_max_size'
                   THEN '>=550M'
                WHEN name='sga_target'
                   THEN '>=550M'
                WHEN name='dispatchers'
                   THEN (select'(PROTOCOL=TCP) (SERVICE='||value ||'XDB)
                         (DISPATCHERS=3)' from v$parameter where
                         name='instance_name')
                WHEN name='audit_trail'
                   THEN 'db,extended oder xml,extended'
                END as empfehlung
                FROM v$parameter)
                WHERE empfehlung IS NOT NULL;


Ausgabe:

NAME                   Wert   EMPFEHLUNG
---------------------- ------ ----------------------------------------
sga_max_size           440M   >=350M
sga_target             440M   >=350M
db_create_file_dest    NULL   C:\ORACLE\PRODUCT\10.2.0\ORADATA\O10G
dispatchers            NULL   (PROTOCOL=TCP)(SERVICE=o10gXDB)
                              (DISPATCHERS=3)
shared_servers         0      >=5 
max_shared_servers     NULL   >=20 
session_cached_cursors 20     >=50 
job_queue_processes    10     >5
audit_trail            NONE   db,extended oder xml,extended


Oder Sie basteln dem Benutzer ein Skript, das die Parameter gleich selber umsetzt:

SELECT * FROM (
                SELECT CASE
                WHEN name='db_create_file_dest'
                   THEN (select 'ALTER SYSTEM SET db_create_file_dest='
                         ||substr(name,1,decode(instr(name,'\'),0,
                         instr(name,'/',-,2),instr(name,'\',-1,2))-1)
                         ||';' from v$datafile where rownum=1)
                WHEN name='shared_servers'
                   THEN 'ALTER SYSTEM SET shared_servers=5;'
                WHEN name='max_shared_servers'
                   THEN 'ALTER SYSTEM SET max_shared_servers=20;'
                WHEN name='job_queue_processes'
                   THEN 'ALTER SYSTEM SET job_queue_processes=10;'
                WHEN name='session_cached_cursors'
                   THEN 'ALTER SYSTEM SET session_cached_cursors=50;'
                WHEN name='sga_max_size'
                   THEN 'ALTER SYSTEM SET sga_max_size=350M SCOPE=SPFILE;'
                WHEN name='sga_target'
                   THEN 'ALTER SYSTEM SET sga_target=350M SCOPE=SPFILE;'
                WHEN name='dispatchers'
                   THEN (select 'ALTER SYSTEM SET dispatchers=
                         (PROTOCOL=TCP)(SERVICE='|| value || 'XDB)
                         (DISPATCHERS=3) scope=spfile;' from v$parameter
                         where name='instance_name')
                WHEN name='audit_trail'
                   THEN 'ALTER SYSTEM SET audit_trail='||chr(39)||
                        'db,extended'||chr(39)||'scope=spfile;'
                END as empfehlung
                FROM v$parameter)
                WHERE empfehlung IS NOT NULL;


Ausgabe:

ALTER SYSTEM SET sga_max_size=350M SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=350M SCOPE=SPFILE;
ALTER SYSTEM SET db_create_file_dest=/opt/oracle/oradata;
ALTER SYSTEM SET dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB) (DISPATCHERS=3) scope=spfile;
ALTER SYSTEM SET shared_servers=5;
ALTER SYSTEM SET max_shared_servers=20;
ALTER SYSTEM SET session_cached_cursors=50;
ALTER SYSTEM SET job_queue_processes=10;
ALTER SYSTEM SET audit_trail='db,extended' scope=spfile;


Natürlich können Sie die Parameterempfehlungen mit Ihren eigenen Wünschen optimieren.

Auch ganz praktisch ist Netzwerk und Konfig Check, der (fast) alles beinhaltet:

SELECT * FROM (
SELECT 1,'Username' as Info1, 'Account Status' as Info2,
'Lock Date' as Info3, 'Expirary Date' as Info4 FROM dual
UNION ALL
SELECT 2,'------------','---------------','--------------','------------------' FROM dual
UNION ALL
SELECT 3,u.username,u.account_status,to_char(u.lock_date,'DD.MM.YY HH24:MI'),
to_char(u.EXPIRY_DATE,'DD.MM.YY HH24:MI')
FROM dba_users u
WHERE (u.username IN ('ANONYMOUS','FLOWS_FILES')
OR u.username LIKE 'APEX%'
OR u.username LIKE 'ORDS%') AND u.username<>'ORDSYS'
UNION ALL
SELECT 4,'#################','#############','#############','#################' FROM dual
UNION ALL
SELECT 5,'COMPO_NAME','VERSION','Status','Modified' FROM dual
UNION ALL
SELECT 6,'------------','---------------','--------------','------------------' FROM dual
UNION ALL
SELECT 7,replace(comp_name,'Oracle ',''),version,status,modified
FROM dba_registry
WHERE comp_id='APEX'
UNION ALL
SELECT 8,'#################','#############','#############','#################' FROM dual
UNION ALL
SELECT 9,'HTTP Port','FTP Port','Image Count','Allow Anonymus Repo Access'
FROM dual
UNION ALL
SELECT 10,'------------','---------------','--------------','------------------' FROM dual
UNION ALL
SELECT 11,to_char(dbms_xdb.gethttpport ),to_char(dbms_xdb.getftpport),
(SELECT count(*)||' ' FROM PATH_VIEW
WHERE UNDER_PATH(res, '/images/',1)>0),(select extractValue(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/httpconfig/allow-repository-anonymous-access')  
from dual) FROM dual
UNION ALL
SELECT 12,'#################','#############','#############','#################' FROM dual
UNION ALL
SELECT 14,'Workspace','Username','Admin/Dev','Account Locked' FROM dual
UNION ALL
SELECT 15,'#################','#############','#############','#################' FROM dual
UNION ALL
SELECT 16,workspace_display_name,user_name,is_admin||'/'||is_application_developer,account_locked
FROM apex_workspace_developers
UNION ALL
SELECT 17,'Parameter','Value','--------------','------------------' FROM dual
UNION ALL
SELECT 18,'------------','---------------','--------------','------------------' FROM dual
UNION ALL
SELECT 19,name,value,null,null from v$parameter where name in ('local_listener','session_cached_cursors')
UNION ALL
SELECT 20,'#################','#############','#############','#################' FROM dual
UNION ALL
SELECT 21,'DAD Names','-----------','--------------','------------------' FROM dual
UNION ALL
SELECT 22,'------------','---------------','--------------','------------------' FROM dual
UNION ALL
SELECT 23, u.dad ,null,null,null FROM XMLTable(XMLNAMESPACES (
DEFAULT 'http://xmlns.oracle.com/xdb/xdbconfig.xsd' ),
'//servlet-list/*[servlet-language="PL/SQL"]' PASSING DBMS_XDB.CFG_GET()
COLUMNS DAD varchar2(15) PATH '/servlet/servlet-name/text()') u
)
ORDER BY 1,2;

Diese und noch viele weitere Tricks lernen Sie in einem unserer schönen APEX Kurse!

Besuchen Sie uns doch bei einer unsere über 40 Oracle Schulungen in München - Unterhaching.