2009-03-27

LINUX MAILX

1 Command line

mailread
mail -fread from mbox file
mail -s "[title]"send mail with title option

2 Help:

  • ? | l[ist] | hel[p] #list commands

3 Mesages list

n[nr]Show message number nr.
+The next undeleted message, or the next deleted message for the undelete command.
-The next previous undeleted message, or the next previous deleted message for the undelete command.
.The current message.
$The last message.

4 Move:

z+screen forward
z-screen backward
=show number of current message
+next message
$last message

5 Main

h[eaders]show headers of all
f[rom] *list all mails with headers
folderdirectory list
to [msglist]list top of message
q[uit]save and exit
rreply to all
xexit without save
e[dit] [msglist]edit
si[ze]size current message
p[rint]print current message
p 3print 3-rd message
folist directories
setshow variables
set name=stringdefine variable
uns[et]unset

6 Manipulation:

d[elete] [msglist]delete current message
u[ndelete] [msglist]undelete message
Uset message as unread
s[ave] [msglist]save

7 All messages.

n-mrange of message numbers.
addressAll messages from address
/stringAll messages with string in the subject line (case ignored).
:cAll messages of type c, where c shall be one of:
dDeleted messages.
nNew messages.
oOld messages (any not in state read or new).
rRead messages.
uUnread messages.

2009-03-17

ORACLE FLASHBACK

1 Prerequisites

  • database ARCHIVELOG mode
  • UNDO_MANAGEMENT=auto

2 Configuration steps

  1. setting param DB_RECOVERY_FILE_DEST which point to flashback logs location
  2. setting param DB_RECOVERY_FILE_DEST_SIZE which specify summary size of all logs
  3. setting param DB_FLASHBACK_RETENTION_TARGET which specify logs store time in miutes
  4. startup database in mount mode
  5. turn on flashback
    • sql> ALTER DATABASE FLASHBACK ON;
  6. check:
    • sql> SELECT log_mode,flashback_on FROM v$database;
  7. open database

3 Estimating log store space

  1. setting DB_FLASHBACK_RETENTION_TARGET
  2. sql> SELECT estimated_flashback_size FROM v$flashback_database_log;

4 Recover from flashback logs

  1. startup database in mount mode
  2. sql> FLASHBACK DATABASE TO…
    • TIMESTAMP SYSDATE-1]
    • TO TIMESTAMP to_timestamp('2009-09-28 11:00','yyyy-mm-dd hh24:mi')
    • TO SCN [scn#];
  3. sql> ALTER DATABASE OPEN READ ONLY;
    • at READ-ONLY mode it is possible to verify data
    • if data are not correct, so repeat steps from 1 to 3
  4. turn off database
  5. startup database in mount mode
  6. sql> ALTER DATABASE OPEN RESETLOGS;

5 Views

  • sql> SELECT oldest_flashback_scn,oldest_flashback_time,flashback_size FROM v$flashback_database_log;
    oldest_flashback_scn, oldest_flashback_timeoldest timestamp when data can be recovered
    (To verify this operation, try delete oldest flashback log then put above SELECT command and oldest point was changed)
    estimated_flashback_sizethe neccessary space to ensure DB_FLASHBACK_RETENTION_TARGET
    flashback_size
  • sql> SELECT * FROM v$flash_recovery_area_usage;
  • sql> SELECT * FROM v$recovery_file_dest;
  • sql> SELECT SCN_TO_TIMESTAMP(10213123) FROM DUAL;

6 Recyclebin

6.1 Show recyclebin

  • sql> SHOW RECYCLEBIN

6.2 Recover table from recyclebin

  • sql> DROP TABLE [table_name]
  • sql> FLASHBACK TABLE [table_name] TO BEFORE DROP;

6.3 Droping table without recyclebin

  • sql> DROP TABLE [table_name] PURGE;

6.4 Purging recyclebin

  • sql> PURGE TABLE [table_name];
  • sql> PURGE TABLESPACE [ts_name];
  • sql> PURGE TABLESPACE [ts_name] USER [user];
  • sql> PURGE RECYCLEBIN
  • sql> PURGE DBA_RECYCLEBIN;

7 ERRORs

[ symptom ]

  • ORA-38729: Not enough flashback database log data to do FLASHBACK

[ solution ]

  • timestamp older then oldest_flashback_time

2009-03-16

LINUX CRYPTSETUP

create:
cryptsetup --verbose --verify-passphrase luksFormat /dev/sda1
open:
cryptsetup luksOpen /dev/sda1 usb
format:
mkfs.ext2 /dev/mapper/usb
mount:
mount /dev/mapper/usb /usb
umount:
umount /usb
close:
crypsetup luksClose usb

on disk

cryptsetup luksFormat [partition]
cryptsetup luksOpen [partition] [name]
mkfs.ext4 /dev/mapper/[name]
mount /dev/mapper/[name]
cryptsetup luksClose [name]
start during boot:
cryptsetup luksDump /dev/mapper/vg_euplnb1001-lv_01 |grep UUID >> /etc/crypttab
/etc/crypttab
[name] /dev/disk/by-uuid/220ec734-ccbd-497a-8632-eae4f28608ae none luks
/etc/fstab
/dev/mapper/[name] /mnt/[mount_point] ext4 defaults 0 0

2009-03-15

LINUX TCPDUMP

tcpdump -XXnve -i eth1 'arp [7]==2' -s0
#read data with header in ASCI and HEX - use option -XX, which 8-th byte in ARP header will be 2(DEC) - count from 0 to 7, means answer on ARP broadcast
tcpdump -XXnve -i eth1 'tcp [13]==18' -s 0
#read data as above, which 14th byte in TCP header:
18(DEC) = 12 (HEX) = 00010010(BIN) means set flags SYN and ACK, C|E|U|A|P|R|S|F where letters mean flags in bits code
0 0 0 1 0 1 1 0 means set flag ACK,RST,SYN - 22(DEC) and 16(HEX)

describe TCPDUMP output

ARP answer on  broadcast:
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
12:55:53.464953 00:c0:a8:fe:6f:f2 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 192.168.1.212 tell 192.168.1.24
0x0000:  ffff ffff ffff 00c0 a8fe 6ff2 0806 0001  ..........o.....
0x0010:  0800 0604 0001 00c0 a8fe 6ff2 c0a8 0118  ..........o.....
0x0020:  0000 0000 0000 c0a8 01d4 0000 0000 0000  ................
0x0030:  0000 0000 0000 0000 0000 0000            ............
Description in order:
1w/8k/1-4 means 1 row/8 column/position form 1 to 4:
1w/1k/1-...1w/3k/-4 destination MAC
1w/4k/1-...1w/6k/-4 source MAC
1w/7k/1-4  typ ramki: 0806 - ARP; 0800 - IP; 8035 - reverse ARP; 8137 - IPX
------------------------START IP protocol----------------------------------------------
1w/8k/1-4  device address type: 0001 - Ethernet
2w/1k/1-4  protocol address type: 0800 - IP
2w/2k/1-2  length device address in Btes
2e/2k/3-4  length proctocol address in Bytes
2w/3k/1-4  operation: 0001 - question; 0002 - answer
2w/4k/1-...2w/6k/-4 sender MAC
2w/7k/1-...2w/8k/-4 sender IP
3w/1k/1-...3w/3k/-4 recipient MAC
3w/4k/1-...3w/5k/-4 recipient IP

send 1 tcp packet with flags SYN,ACK,RST and data "ABC" which means 3 Bytes from file "wy" by hping3:
hping3 192.168.1.253 -S -A -R -E wy -d 3 -c 1
we receive:
ROUTER:/# tcpdump -XXnve -i eth1 'tcp [13]==22' -s0 and host 192.168.1.4
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:30:10.508842 00:0c:76:e7:f1:d3 > 00:30:4f:23:b8:4e, ethertype IPv4 (0x0800), length 60: IP (tos 0x0, ttl  64, 
id 57585, offset 0, flags [none], length: 43) 192.168.1.4.2029 > 192.168.1.253.0: SR [tcp sum ok] 1842019365:1842019368(3) 
ack 2138831316 win 512 [RST ABC]
0x0000:  0030 4f23 b84e 000c 76e7 f1d3 0800 4500  .0O#.N..v.....E.
0x0010:  002b e0f1 0000 4006 158a c0a8 0104 c0a8  .+....@.........
0x0020:  01fd 07ed 0000 6dca fc25 7f7b f9d4 5016  ......m..%.{..P.
0x0030:  0200 ba09 0000 4142 4300 0000            ......ABC...
----------------------------------------------------------------------------------------
1w/1k/1-...1w/3k/-4 destination MAC
1w/4k/1-...1w/6k/-4 source MAC
1w/7k/1-4  typ ramki: 0806 - ARP; 0800 - IP; 8035 - reverse ARP; 8137 - IPX
------------------------START IP protocol----------------------------------------------
1w/8k/1   wersja protokołu
1w/8k/2   header length in Bytes
1w/8k/3-4  TOS type
2w/1k/1-4  whole length hader plus data
2w/2k/1-4  datagram ID
2w/3k/1   fragmentation sign
2w/3k/2-4  shift
2w/4k/1-2  TTL field
2w/4k/3-4  protocol type: 06 - TCP; 17 - UDP; 01 - ICMP;
2w/5k/1-4  control sum header
2w/6k/1-...2w/7k/-4 sender IP
2w/8k/1-...3w/1k/-4 recipient IP
------------------------START TCP protocol---------------------------------------------
3w/2k/1-4  source port
3w/3k/1-4  destination port
3w/4k/1-...3w/5k/-4 output data order nr
3w/6k/1-...3w/7k/-4 input data order nr
3w/8k/1-2  header length
3w/8k/3-4  cody bits: 02 - SYN; 12 - SYN,ACK; 16 - SYN,ACK,RST
4w/1k/1-4  input data window
4w/2k/1-4  header control sum
4w/3k/1-4  pointer data
------------------------START data----------------------------------------------------
4w/4k/1-  dane 41,42,43 in ASCI means ABC

LINUX POSTFIX


#################################################################
# USTAWIENIA GLOWNE #
#################################################################

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

# komunikat wyswietlany po polaczeniu z postfixem
smtpd_banner = $myhostname ESMT

mail_name = Microsoft (5.0.2195.5329)
# jw wieksze zmiany w zrodle w plik_postfix/src/bounce/bounce_notify_until.c

# setgid_group = postdrop

# FQDN maszyny
myhostname = [domena]
# FQDN dla poczty wychodzacej taka jak hostname to co bedzie w polu
myorigin = [domena]
# FQDN bez nazwy hosta
mydomain = [domena]
#dla jakich domen serwer bedzie dostarczal poczte lokalnie, poczta przychodzaca akceptowana wylacznie na te domeny
mydestination = [domena],localhost.localdomain, localhost
# adresy sieci,dla ktorych serwer poczty bedzie wykonywal relay, z ktorych bedzie mozna przekierowac poczte(relay)
mynetworks = 127.0.0.0/8
# domyslnie postfix przetwarza poczte od klientow z mynetworks oraz od klientow z relay_domains moze byc /plik w ktorym beda te domeny, dla innych lokalizacji pop-before-smtp lub pop-before-smtp
relay_domains = [domena]

# listy baz aliasow calkowicie kontrolowane przez postfixa
alias_database = hash:/etc/aliases
# lista baz aliasow type:name tutaj typ - hash a name - sciezka do pliku
alias_maps = hash:/etc/aliases
# o skladni [nazwa:wartosc] gdzie nazwa - nazwa alisu a wartosc - adres,forward na dany adres,
#wartosc - |komenda - na przyklad przekazanie do procmaila,
#wartosc - :include:/plik - mail wysylany do adresatow w plik,
#wartosc = /plik - mail wpisywany do pliku gdy /plik/ to typ Maildir

# allow_mail_to_commadns = alias, forward #aby powyzsze komendy mogly byc wykonane nalezy dopisac jeszcze include
# allow_mail_to_files = alias, forward #aby powyzsze komendy mogly byc wykonane nalezy dopisac jeszcze include

# mailbox_command = procmail -a "$EXTENSION"
# obrabianie maili przez procmaila

mailbox_size_limit = 51200000
message_size_limit = 20480000
inet_interfaces = all

# ilosc wolnego miejsca na dysku w systemie plikow kolejek ktorego postfix nie moze przekroczyc, nie bedzie wariowal po zapelnieniu dysku a jedynie odsylal wiadomosci
queue_minfree = 40000000

# notify clases
#ustalamy jakie komunikaty bede kierowane na adres postmaster@domena parametry ponizej
#bounce #wysyla postmasterowi kopie niedostarczonej poczty
#2bounce
#delay #inf o opoznionej poczcie
#policy #inf o odrzuconych zadaniach przez postfix np przez filtry
#protocol #inf o wywolaniu niezaimplementowanych komend
#resource #inf o poczcie nie wyslanej z powodu klopotow z zasobami serwera
#software #inf o poczcie nie wyslanej z powodu klopotow programowych

#relayhost =
#disable_dns_lookups = yes #logowanie IP a nie nazw
#sender_canonical_maps = hash:/plik #mapowanie uzytkownikow z /plik [user user_po_zmapowaniu] i postmap /plik
#relocated_maps = hash:/plik #wysylanie nadawcy maila odpowiedzi od razu z /plik [user "user zmienil adres na user@wp.pl"]
#home_mailbox #ustawienie typu skrzynki pocztowej domyslnie /var/mail/user gdy Maildir/ to kazdy mail w innym pliku
#default_proces_limit #kontrola procesow domyslnie 100
#initial_destination_concurrency #liczba polaczen do zdalnego hosta
#default_destination_concurrency_limit #max ilosc poloczen > liczby procesow
#local_destination_concurrency_limit #ilosc jednoczesnych maili do jednego uzytkownika
#queue_run_delay #czestotliwosc z jaka skanuje kolejke deferred w poszukiwaniu poczty do wyslania domyslnie 1000s
#maximal_queue_lifetime #jak dlugo ma byc przechowywana poczta ktorej nie udalo sie wyslac np 5s to 5 sekund 5d to 5 dni
#minimal_backoff_time #min czas przez jaki wiadomosc nie bedzie przetwarzana po nieudanej probie dostarczenia
#maximal_backoff_time #max jw
#qmgq_message_recipient_limit #dlugosc listy niedostepnych hostow
#line_length_limit #max dlugosc lini tekstu po przekroczeniu ktorej linia zostanie podzielona
#header_size_limit #max dlugosc naglowka
#extract_recipient_limit #ile adresow odbiorcy zostanie wyluskanych z naglowka
#bounce_size_limit #ile bajtow wiadomosci zostanie zwrocone gdy przekroczy sie wartosc powyzej
#qmgr_message_recipient_limit #liosc struktur adresow odbiorcy w pamieci
#qmgr_message_active_limit #max liczba maili w kolejce active
#duplicate_filter_limit #ilosc adresow odbiorcy pamietanych przez local i cleanup
#always_bcc = user@linux.pl #kopia kazdego maila zostanie wyslana do user@linux.pl
#command_time_limit #czas oczekiwania na |polecenie z pliku aliasow
#usluga_time_limit #czas transportu maila przez program pipe do polecenia
#luser_relay = admin@linux.pl #przechwytywanie poczty dla uzytkownikow ktorzy nie istnieja w systemie
# debug_peer_list = 1.2.3.4 #?do logow

#################################################################
# WIRTUALNE DOMENY #
#################################################################

# virtual_maps = hash:/plik #w /plik wpisuje sie w pierwszej lini [linux.pl cokolwiek] a w nastepnych [userwirt@linux.pl user
#to znaczy ze mail dla usrewirt trafia do user
#wydac komende postmap /plik

# transport_maps = hash:/plik #w /plik wpisujemy [linux.pl virtual] co oznacza ze domena linux.pl jest obslugiwana wirualnie
# virtual_mailbox_base = /home/virtuals #lokalizacja wirualnych skrzynek /home/virtuals - podstawa
# virtual_mailbox_maps = hash:/plik #tablica dopasowania /plik wpisuje sie [user@linux.pl /sciezka] to dla danego usera sciezka to /home/virtuals/sciezka
# virtual_uid_maps = hash:/plik #w /plik wpisujemy user@linux.pl 505
# virtual_gid_maps = static:1000 #dla kazdego uzytkownika zostanie uzyty gid=1000

# virtual_maps = hash:/etc/postfix/virtual
# virtual_mailbox_base = /home/virtuals
# virtual_mailbox_maps = hash:/

#################################################################
# BEZPIECZENSTWO #
#################################################################

smtpd_helo_required = yes
smtpd_recipient_limit = 50
# max liczba wysylanych na raz wiadomosci

strict_rfc821_envelopes = yes

smtpd_delay_reject = no
# gdy yes to restrykcje sprawdzane dopiero po otrzymaniu adresu odbiorcy

smtpd_error_sleep_time = 3
# czas na jaki przerywa dzialanie serwer jesli powstanie blad w sesji SMTP domyslnie 5s

smtpd_soft_error_limit = 3
# liczba bledow sesji SMTP po przekroczeniu ktorej serwer zerwie polaczenie domyslie 10s

smtpd_hard_error_limit = 5
# po ilu bledach polaczenie zostanie przerwane domyslnie 100

# smtpd_sender_restrictions = #sprawdzane poczty na podstawie adresu odbiorcy listu (from)
# reject_unknown_client #odrzucenie ip ktorego nie ma w DNS
# reject_unknown_sender_domain #odrzuca mail jesli po @ nie ma wpisu w DNS
# reject_unknown_recipient_domain #
# reject_invalid_hostname #
# reject_non_fqdn_hostname #odrzuca mail jesli czesc po @ nie jest pelna
# check_sender_access hash:/plik #przeszukuje /plik ktory zawira co zrobic np heniek@ reject lub heniek@wp.pl ok lub wp.pl reject
#aby dzialalo wpisac postmap /plik aby utworzyc /plik.db
# reject_non_fqdn_sender

smtpd_sender_restrictions = reject_unknown_client, reject_unknown_sender_domain, reject_invalid_hostname,reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_rbl_client dynamic.dnsbl.rangers.eu.org, reject_rbl_client spam.dnsbl.rangers.eu.org, check_relay_domains

# smptd_recipient_restrictions = #dla adresu odbiorcy listu, na podstawie adresu nadawcy listu(rcpt to)
# reject_non_fqdn_recipient #odrzuc list jezeli adres odbiorcy nie jst pelny
# reject_unknown_recipient_domain #odrzuc jezeli adres docelowy nie istnieje w DNS
# check_recipient_access hash:/plik #przeszukuje plik podany jako argument i na jego podstawie decyduje czy wyslac list
# permit_auth_destination #przyjmij mail jesli nasz serwer jest jego celem lub adres przeznaczenia zawiera sie w zmiennaj $relay_domains
# reject_unauth_destination #jw tylko odrzuc list jezeli nasz serwer nie jest jego celem ...
# check_relay_domains #jesli ip ktory wysyla pasuje do relay_domains lub celem jest ip z relay_domains to przyjmij, w przeciwnym wypadku odrzuc
# reject_rbl_client /plik_z_lista_rbli #
# reject_unknown_hostname
# reject_non_fqdn_hostname

smtpd_recipent_restrictions = reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, check_relay_domains

# smtpd_client_restrictions = #dla hosta laczacego sie z serwerem, sprawdzenie komputera z ktorego wysylana jest wiadomosc
# check_sender_access regexp:/etc/postfix/bany, #
# permit_mynetworks, #pozwolenie dla hostow ujetych w zmiennej $mynetworks
# reject_unknown_client, #odrzucenie ip ktorego nie ma w DNS
# check_helo_access hash:/etc/postfix/helo.access, #
# check_client_access hash:/plik, #sprawdaz ip/nazwe kompa w /plik i pisze co z nim robic np 192.168.1.15 OK
# check_client_access cidr:/plik #baza cidr w /plik pozwala na blokowanie zakresow ip np dla korei i chin z www.okean.com
# permit #dwa zachowania gdy na koncu gdy powyzsze reguly nie pasuja
# reject


smtpd_client_restrictions = reject_unknown_client, reject_rbl_client dynamic.dnsbl.rangers.eu.org, reject_rbl_client, spam.dnsbl.rangers.eu.org

# smtpd_helo_restrictions = #helo $hostname
# reject_unauth_pipelining #gdy serwer smtp ktory wysyla do nas maila nie czeka na odpowiedz to go odrzuc
# reject_invalid_hostname #
# permit_mynetworks, #
# check_helo_access hash:/plik #/plik zawiera [ REJECT you aren't me
# localhost REJECT you aren't me]
# reject_rbl_client /plik #lista rbli

smtpd_helo_restrictions = reject_invalid_hostname, reject_invalid_hostname, check_helo_access hash:/etc/postfix/helo_access

mailbox_command = /usr/bin/procmail


content_filter=smtp-amavis:[127.0.0.1]:10024


#################################################################
# DODATKOWE #
#################################################################
#apt-get install pflogsumm
#polecenie pflogsumm.pl -e -d yesterday /var/log/mail.log
#dodatkowo polecenie postsuper
#dodatkowo mailq pokazuje kolejke
#dodatkowo postcat /var/spool/postfix/deferred/0/0/plik |more pokazuje skolejkowana wiadomosc

2009-03-03

ORACLE STATISTICS

exec DBMS_STATS.GATHER_SCHEMA_STATS('[username]', cascade=>TRUE);
exec #dla tabeli wraz z indeksami DBMS_STATS.GATHER_TABLE_STATS('[username','[table_name]',cascade=>TRUE); #dla całego schematu wraz z indeksami

TIMED_STATISTICS = TRUE

SELECT last_analysed FROM DBA_TABLES - data zbierania statystyk

EXPLAIN PLAN
$oracle_home/rdbms/admin/utlxplan.sql - tworzy tabelę PLAN_TABLE dla generowania planów poprzedzonych:
EXPLAIN PLAN SET STATEMENT_ID = '[nazwa]' FOR SELECT ...

TRACE
TIMED_STATISTICS TRUE
ALTER SESSION SET SQL_TRACE = TRUE - generacja pliku śladu dla zapytań(obciąża bazę),
który będzie znajdował się w katalogu;
show parameter UDUMP; (USER DUMP DEST) #uruchomiony przez usera
show parameter BDUMP; (BACKGROUND DUMP DEST) #uruchomiony przez proces tła
MAX_DUMP_FILE_SIZE #max rozmiar pliku
[instance_name]_[process_name]_[process_id].trc #tracefile format
TKPROF
! tkprof czyta pliki do 2GB
jeżeli plik trace jest większy niż 2GB należy utworzyć plik fifo:
mkfifo [plik_fifo]
wywołać komendę tkprof na pliku fifo:
TKPROF [plik_fifo] [output_file] ...
przejść do innej konsoli i wywołać:
cat [plik_trace] > [plik_fifo]

TKPROF [trace_file] [output_file] SORT=([option] if option sort is not set, order is similar as tracefile, many options means that TKPROF sums the value of the options) PRINT=[only with sort opition - limit number of SQL in output file] SYS=[no - dont list SQL executed by SYS user]


options:

PARSEEXECFETCH
PRSCNTEXECNTFCHCNTnumber of times
PRSCPUEXECPUFCHCPUCPU time spending
PRSELAEXEELAFCHELAelapsed time spent
PRSDSKEXEDSKFCHDSKnumber of disk physical reads
PRSQRYEXEQRYFCHQRYnumber of buffers for consistent read
PRSCUEXECUFCHCUnumber of buffers for current read

EXEROWFCHROWnumber of rows processed, fetched
PRSMISEXEMISFCHMISnumber of library cache misses

example:
tkprof ../db_ora_10196.trc db_ora_10196-1.txt sys=no sort=prsela,exeela,fchela

dobre wyjaśnienie na blogu
podane za Oracle® Database Performance Tuning Guide
10g Release 2 (10.2)
Part Number B14211-03:

CALL Value Meaning
PARSE Translates the SQL statement into an execution plan, including checks for proper security authorization and checks for the existence of tables, columns, and other referenced objects.
EXECUTE Actual execution of the statement by Oracle. For INSERT, UPDATE, and DELETE statements, this modifies the data. For SELECT statements, this identifies the selected rows.
FETCH Retrieves rows returned by a query. Fetches are only performed for SELECT statements.

SQL Trace Statistic Meaning
COUNT Number of times a statement was parsed, executed, or fetched.
CPU Total CPU time in seconds for all parse, execute, or fetch calls for the statement. This value is zero (0) if TIMED_STATISTICS is not turned on.
ELAPSED Total elapsed time in seconds for all parse, execute, or fetch calls for the statement. This value is zero (0) if TIMED_STATISTICS is not turned on.
DISK Total number of data blocks physically read from the datafiles on disk for all parse, execute, or fetch calls.
QUERY Total number of buffers retrieved in consistent mode for all parse, execute, or fetch calls. Usually, buffers are retrieved in consistent mode for queries. Consistent mode czyli spójny tryb wszystkich danych dla SCN z którego pochodzi statement, bufory pochodzące z tego trybu obejmują te z undo, konieczne dla utrzymania stanu z tego samego SCN
CURRENT Total number of buffers retrieved in current mode. Buffers are retrieved in current mode for statements such as INSERT, UPDATE, and DELETE.

SQL Trace Statistic Meaning
ROWS Total number of rows processed by the SQL statement. This total does not include rows processed by subqueries of the SQL statement.



AUTOTRACE
[oracle_home]/sqlplus/admin/plustrce.sql - skrypt do ustawienia roli PLUSTRACE potrzebnej do korzystania z AUTOTRACE
SET AUTOTRACE TRACEONLY | ON EXPLAIN | ON STATISTICS | ON EXPLAIN STATISTICS #bez wyników zapytań
SET AUTOTRACE ON EXPLAIN | ON STATISTICS | ON EXPLAIN STATISTICS #wraz z wynikami zapytań
SET AUTOTRACE OFF

ZBIERANIE STATYSTYK (przestarzałe)
utlbstat.sql - początek (usuwanie tabel zawierających kopie V$ i ponowne odtworzenie i zebranie tam nowych danych
utlestat.sql - koniec (generacja reportu report.txt

STATSPACK
$oracle_home/rdbms/admin/spcreate.sql - uruchamia poniższe skrypty:
$oracle_home/rdbms/admin/spcusr.sql - tworzenie usera PERFSTAT (log w spcusr.lis)
$oracle_home/rdbms/admin/spctab.sql - tworzy tabele (log w spctab.lis)
$oracle_home/rdbms/admin/spckg.sql - tworzy pakiety (log w spcpkg.sql)
EXECUTE STATSPACK.SNAP; - generacja migawki (punktu w którym zbierane są statystyki)
EXECUTE STATSPACEK.STATSPACK_MODIFY_PARAMETERS - zmiana parametrów zbierania migawek
$oracle_home/rdbms/admin/spreport.sql - generuje raport
$oracle_home/rdbms/admin/spauto.sql - generuje joba dla migawek gdzie interwał:
SYSDATE+1 - raz dziennie
SYSDATE+1/48 - raz na 1/2 h
SYSDATE+1/24 - raz na 1 h
$oracle_home/rdbms/admin/sptrunc.sql - usuwanie zawartości wszystkich tabel
$oracle_home/rdbms/admin/sppurge.sql - usuwanie w/g migawek
$oracle_home/rdbms/admin/spdrp.sql - uruchamia poniższe skrypty:
$oracle_home/rdbms/admin/spdtab.sql - usuwa tabele i pakiety
$oracle_home/rdbms/admin/spdusr.sql - usuwa usera PERFSTAT

DBMS_STATS
pakiet służy do zbierania statystyk dla optymalizatora kosztowego wyzwalany przez GATHER_STATS_JOB
SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB'; $oracle_home/rdbms/admin/dbmsstat.sql - specyfikacja pakietu
$oracle_home/rdbms/admin/prvtstat.plb - ciało pakietu


select * from dba_hist_sql_plan where options='FULL SCAN' and operation='TABLE' and object_owner like '%[user]%';