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:
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!