Hallo,
ich bin oracle-entwickler. mit db-administration habe ich wenig erfahrungen.
bei unserer anwendung habe ich das folgende problem:
ich habe eine neue tabele angelegt, in die alle änderungen, die durch die anwender an datensätzen durchgeführt werden, protokolliert wird. das heißt, es wird bei einer änderung untersucht, ob der datensatz schon einen eintrag in der tabelle hat, falls ja, wird der eintrag korregiert und falls nicht , wird ein insert-kommando durchführt.
*************************
if :global.NE 4 and :global.NE 3 and :global.NE 214 and :global.NE 2141 then
select count(*) into flag_count
from tb_modi_flag
where nid=:ANSPRECHPARTNER.OBJE_ID and aid=:GLOBAL.USEL_OBJR_A_ID ;
if flag_count = 0 then
insert into TB_MODI_FLAG
(nid,aid,flag,username,gruopname,datum,adrsid)
values
(:ANSPRECHPARTNER.OBJE_ID,:FIRMA.OBJE_ID,‚M‘,USER,:global.akt_gruppe,sysdate,:ADRESSE.ADRS_ID);
silent_commit;
end if;
if flag_count > 0 then
update TB_MODI_FLAG
set nid = :ANSPRECHPARTNER.OBJE_ID,
aid = :FIRMA.OBJE_ID,
flag = ‚M‘,
username = USER,
gruopname = :global.akt_gruppe,
datum = sysdate,
adrsid = :ADRESSE.ADRS_ID
where nid = :ANSPRECHPARTNER.OBJE_ID and
aid = :GLOBAL.USEL_OBJR_A_ID;
silent_commit;
end if;
end if;
*******************************
das ist von mir komplett getestet worden und es funktioniert alles ganz gut, solange ich oder wenigere leute die routine nutzen.
nach der version-freigabe für alle anwender habe ich festgestellt, daß es probleme mit der datenbank gibt. das äußerst sich so, daß man sich nicht erneut einloggen kann bzw. man hat probleme mit speichern. um weiter zu arbeiten, muß ich die danbank neu starten. das problem taucht nicht immer auf, sondern manchaml täglich, manchmal alle 2 tage. zur zeit ist das modul, das die aufgabe hat, die änderungen der datensätze zu protokolieren, ausgeschlatet.
in einer log-datei habe ich eine fehlermeldung entdeckt (deadlock detected), die besagt, daß der user sich nicht anmelden kann, denn die fehlermeldung deutet darauf hin, daß ein problem mit einem sql-kommando gibt, das die anmeldungen in eine tabelle protokolliert. wie gesagt, es handet sich dabei um einen folge-fehler.
was allerdings den folgefehler auslöst, ist mir noch nicht bekannt.
ich habe die werte in initdin.ora angeschaut und höher gesetzt, aber es half auch nicht weiter. die datei sieht wie folgt aus:
************************
individuelle DB-Parameter (Name, Control-Files, etc)
ifile = /products/oracle/OraHome1/dbs/configdin.ora
#rollback_segments = (rbs01, rbs02, rbs03, rbs04, rbs05, rbs06, rbs
07, rbs08)
rollback_segments = (rbs01, rbs02, rbs03, rbs04, rbs05, rbs06, rbs
07)
audit_trail = db
#db_block_buffers = 20000
db_block_buffers = 32767
db_file_multiblock_read_count = 16
db_files = 100
#sort_area_size = 2000000
jb 23.05.2000 Werte laut Tuning-Buch und Test auf Test-DB
sort_area_size = 1000000
sort_area_retained_size = 1000000
dml_locks = 200
global_names = TRUE
log_buffer = 163840
log_checkpoint_interval = 10000
log_checkpoint_timeout = 3600
max_dump_file_size = 10240
open_cursors = 650
os_authent_prefix = ‚OPS$‘
processes = 200
remote_os_authent = TRUE
#sequence_cache_entries = 50
#sequence_cache_hash_buckets = 25
shared_pool_size = 240000000
timed_statistics = FALSE
transactions = 225
transactions_per_rollback_segment = 16
************************
Hat jemand eine idee, was ich zu machen habe. ich arbeite mit oracle 8i, forms 4.5.
danke und gruß