piątek, 25 kwietnia 2014

Transakcje Płatnik ZUS

Skrypty

----------------------sprawdzanie planów ad hoc

select objtype ,
count(*) as number_of_plans,
sum(cast(size_in_bytes as bigint))/1024/1024 as size_in_MBs,
avg(usecounts) as avg_use_count from sys.dm_exec_cached_plans
group by objtype


----------------------czyszczenie planów ad hoc

DBCC FREESYSTEMCACHE('SQL Plans')


------------------------włączenie  AD-HOC
np. podczas migracji z bazy Access/MS SQL na MS SQL pojawia nam się komunikat :
„SQL Server blocked access to STATEMENT ad hoc distributed queries...”
 użyjemy zapytania

use master
exec sp_configure 'show advanced options', 1
go
reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries', 1
go
reconfigure
go
exec sp_configure 'show advanced options', 0
go
reconfigure
go

-------------zwiększenie czasu oczekiwania na wykonanie zapytań
np dla korekty dokumentów -przy dużej ilości przetwarzania

sp_configure 'remote query timeout', 28800
reconfigure
go

środa, 16 kwietnia 2014

Audit schema HR


Skrypty wykonujemy na użytkowniku sys
Po uworzeniu triggera audit na bazie dane z logowania będą zapisywane do tablicy

Polska Wersja skryptu 
Wersja oryginalna znajduje się na stronie

CREATE TABLE stats$rejestracja (
  uzytkownik           VARCHAR2(200)  NULL,
  sesja                NUMBER(8,0)    NULL,
  host                 VARCHAR2(3000) NULL,
  ostatni_program      VARCHAR2(3000) NULL,
  ostatnia_akcja       VARCHAR2(3000) NULL,
  ostatni_modul        VARCHAR2(3000) NULL,
  dzien_zalogowania    DATE           NULL,
  czas_zalogowania     VARCHAR2(3000) NULL,
  dzien_wylogowania    DATE           NULL,
  czas_wylogowania     VARCHAR2(3000) NULL,
  zalogowany_przez_min NUMBER(38,0)   NULL
)
  STORAGE (
    NEXT       1024 K
  )
/


PROMPT CREATE OR REPLACE TRIGGER logon_audit_trigger
CREATE OR REPLACE TRIGGER logon_audit_trigger
AFTER LOGON ON DATABASE
BEGIN
insert into stats$rejestracja values(
   user,
   sys_context('USERENV','SESSIONID'),
   sys_context('USERENV','HOST'),
   null,
   null,
   null,
   sysdate,
   to_char(sysdate, 'hh24:mi:ss'),
   null,
   null,
   null
);
END;
/

PROMPT CREATE OR REPLACE TRIGGER logoff_audit_trigger
CREATE OR REPLACE TRIGGER logoff_audit_trigger
BEFORE LOGOFF ON DATABASE
BEGIN
-- ***************************************************
-- Update the last action accessed
-- ***************************************************
update
stats$rejestracja
set
ostatnia_akcja = (select action from v$session where
sys_context('USERENV','SESSIONID') = audsid)
where
sys_context('USERENV','SESSIONID') = sesja;
--***************************************************
-- Update the last program accessed
-- ***************************************************
update
stats$rejestracja
set
ostatni_program = (select program from v$session where
sys_context('USERENV','SESSIONID') = audsid)
where
sys_context('USERENV','SESSIONID') = sesja;
-- ***************************************************
-- Update the last module accessed
-- ***************************************************
update
stats$rejestracja
set
ostatni_modul = (select module from v$session where
sys_context('USERENV','SESSIONID') = audsid)
where
sys_context('USERENV','SESSIONID') = sesja;
-- ***************************************************
-- Update the logoff day
-- ***************************************************
update
   stats$rejestracja
set
   dzien_zalogowania = sysdate
where
   sys_context('USERENV','SESSIONID') = sesja;
-- ***************************************************
-- Update the logoff time
-- ***************************************************
update
   stats$rejestracja
set
   czas_wylogowania = to_char(sysdate, 'hh24:mi:ss')
where
   sys_context('USERENV','SESSIONID') = sesja;
-- ***************************************************
-- Compute the elapsed minutes
-- ***************************************************
update
stats$rejestracja
 set
zalogowany_przez_min =   
round((logoff_day - logon_day)*1440)
where
sys_context('USERENV','SESSIONID') = sesja;
END;
/