2008-10-29

ORACLE STANDBY


baza PRIMARY

  1. uruchomienie trybu ARCHIVELOG
  2. uruchomienie logowania do redologów wszystkich obiektów - "ALTER DATABASE FORCE LOGGING;"
    spradzenie - " SELECT force_logging FROM v$database
  3. wpisanie do tnsname namiaru na bazę STANDBY
  4. wpisanie do pliku INIT:
    log_archive_dest_1='location=[archivelog_path]'
    log_archive_dest_2='service=[standby_tnsname] mandatory reopen=60'
  5. wyłączenie bazy lub wprowadzenie w tryb backup - "ALTER DATABASE BEGIN BACKUP;"
  6. wykonanie kopii plików bazy - bez redologów;
  7. włączenie bazy lub wyjście z trybu backup = "ALTER DATABASE END BACKUP;"
  8. wykonanie pliku kontrolnego dla bazy STANDBY - "ALTER DATABASE CREATE STANDBY CONTROLFILE AS '[file_path]';"
  9. wykonanie kopii plików archiwalnych bazy powstałych w czasie backupu
  10. przerzucenie skopiowanych plików na bazę STANDBY

baza STANDBY

  1. wpisanie do pliku INIT:
    log_archive_dest_1='location=[archivelog_path]'
    db_name=[similar as master db]
    standby_archive_dest=[archivelog_from_primary_path]
    db_file_name_convert='[datafile_primary_dir_path]','[datafile_standby_dir_path]'
    log_file_name_convert='[redolog_primary_dir_path]','[redolog_standby_dir_path]'
    opis:
    log_archive_dest_1 - wskazuje gdzie będą pliki archiwalne kiedy baza zostanie aktywowana
    standby_archive_dest - wskazuje gdzie będą wrzucane archivelogi z bazy PRIMARY
    db_file_name_convert - ustawia mapowanie ścieżki do katalogu z plikami danych, konieczne ponieważ w pliku controlfile będą namiary z bazy PRIMARY
    log_file_name_convert - analogicznie tylko dla redolgów
  2. skopiowanie plików danych i archivelogów do odpowiedniej lokalizacji (pamiętać o ustawieniu praw i właściciela)
  3. skopiowanie i powielenie wcześniej utworzonego pliku kontrolnego zgodnie z wartościami w pliku INIT
  4. uruchomienie bazy:
    startup nomount
    alter database mount standby database
    alter database recover managed standby database disconnect from session

przydatne kwerendy:
SELECT sequence#,first_time,next_time,applied FROM v$archived_log ORDER BY sequence# desc;
SELECT * FROM v$archive_gap;
SELECT process,status,sequence#,thread# FROM v$managed_standby;
SELECT open_mode FROM v$database;
ALTER SYSTEM ARCHIVE LOG CURRENT;
at standby;
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

otwarcie bazy do odczytu (baza przyjmuje archivelogi jednak ich nie uaktualnia):
alter database open read only;
komunikat:
ERROR at line 1:
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
recover managed standby database cancel;
komuniat:
Media recovery complete.
alter database open read only;
powrót do trybu standby:
shutdown immediate;
dalej w/g punktu 4 - uruchamianie bazy
aktywacja bazy standby:
recover managed standby database cancel;
shutdown immediate;
startup nomount;
alter database mount standby database;
#skopiować ostatni redolog z bazy PRIMARY;
recover standby database;
#w trybie interaktywnym wpisać lokalizację powyższego pliku
alter database activate standby database;
shutdown immediate;
startup;

2008-10-28

ORACLE INSTALL


DEBIAN


groupadd oinstall
groupadd dba
groupadd oper
addgroup nobody

useradd -g oinstall -G dba,oper -s /bin/bash oracle
passwd oracle

.bash_profile
ORACLE_HOME=/home/oracle/database
ORACLE_SID=db1
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH


sysctl.conf
kernel.shmall = 2097152 #Total amount of shared memory available
kernel.shmmax = 2147483648 #Maximum size of shared memory segment
kernel.shmmni = 4096 #Minimum size of shared memory segment
kernel.sem = 250 32000 100 128 #Number of semaphore identifiers
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

sysctl -p

ln ­-s /usr/bin/basename /bin/basename
ln -s /usr/bin/awk /bin/awk

./runInstaller -ignoreSysPrereqs

apt-get install gcc libc6-dev libxp-dev libaio-dev libstdc++5

--error:
ctx_on, Failed to link liborasdkbase.so.10.2
--solution:
apt-get install libxp-dev

--error:
all_no_orcl ihsodbc
--solution:
apt-get install libstdc++5

--error:
tns lost conntact
--solution
libaio-dev

necessary:
- gcc
- make
- binutils
- lesstif2 libc6
- libc6-dev
- rpm
- libaio
- libaio-dev
- libstdc++5
- ibstdc++5-3.3-dev
- build-essential

ln ­s $ORACLE_HOME/lib/libclient10.a $ORACLE_HOME/lib/libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0

FEDORA

yum install libXp
yum install libaio-devel
yum install gcc
yum install compat-libstdc++-33

RUN AS OTHER USER
xhost +
su - oracle
export DISPLAY=:0.0
dbca

2008-10-10

SVN

wgranie pakietów
instalacja cvs2svn
make install
lub
apt-get install apache2
apt-get install subversion
apt-get install libapache2-svn
dodanie grupy svn
dodanie usera na którym jest apache do grupy svn
stworzenie repozytorium
zmiana grupy plików i katalogów repozytorium na grupę svn i uprawnienia 770

konfiguracja w pliku httpd.conf:
LoadModule dav_module /usr/lib/httpd/modules/mod_dav.so
LoadModule dav_svn_module /usr/lib/httpd/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/httpd/modules/mod_authz_svn.so

<Location /svn>
SetOutputFilter DEFLATE
SetInputFilter DEFLATE
DAV svn
SVNParentPath /u02/svn_home
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /u01/apache2/conf/[password_file]
Require valid-user
#SVNIndexXSLT "/svnindex.xsl"
AuthzSVNAccessFile /u01/apache2/conf/[role_file]
SVNPathAuthz off
<Location>


dopisywanie userów:
htpasswd -mb [password_file] user password

konfiguracja pliku z rolami [role_file]:
[groups]
grupa1 = user1,user2
grupa2 = user2,user3
[repozytorium:/[katalog]
@grupa1 = rw
@grupa2 = r
user3 = rw


migracja Z CVS DO SVN
cvs2svn --encoding cp1250 -s [sciezka_projekt_svn] [sciezka_projekt_cvs]
cvs2svn --encoding cp1250 --dumpfile [sciezka_plik_dump] [sciezka_projekt_cvs]

nowe REPOZYTORIUM
svnadmin create /[repository_path]

import z dumpa do REPOZYTORIUM
cat [dumpfile_path] | svnadmin load [sciezka_projekt_svn] --działa
svnadmin load [sciezka_projekt_svn] [dumpfile_path] --miałem problemy

zmienić prawa do repozytorium
w przypadku błędu:
m:human-readable errcode="13" Could not open the requested SVN filesystem /m:human readable
brak jest uprawnień do czytania przez apache



sprawdzenie LOCKS
svnadmin lslocks /[repository_path]

usunięcie LOCKS
svn unlock --force

nowy BRANCH/TAG z już istniejącego
svn copy -r [ver] http://[trunk_path] http://[new_trunk_path] -m "[komentarz]"

nowy KATALOG
svn mkdir http://[trunk_path]/[new_dir]

dodanie KATALOGU z kompa do TRUNKA
svn import [local_dir_path] http://[trunk_path]/[new_dir]

usuwanie KATALOGU (zawsze można odtworzyć)
svn delete http://[trunk_path]/[dir]

ściągnięcie określonego nr rewizji
svn checkout -r [rewizja] http://[repo_path]
svn checkout http://[trunk_path]@[rev]9814

sprawdzenie z jakiej rewizji został zbudowany TAG:
svn log -v --stop-on-copy http://[tag_path]

sprawdzenie wersji na serwerze
svn status -u

find . -perm +2000 -exec chmod 2775 {} \;



BACKUP
svnadmin hotcopy /[repository_path] /[backup_dir_path]

DUMP przepisuje repozytorium do jednego pliku z wszystkimi rewizjami
svnadmin dump /[repository_path] [-r LOWER[:UPPER]]> [dumpfile]
#rewizje od 100 do 200
svnadmin dump /[repository_path] -r 100:200 > [dumpfile]

wrzuca z dumpa tylko pliki określone w path
svndumpfilter include [dumpfile] [repository_path] > [dumpfile_after]

wrzuca z dumpa wszystkie pliki za wyj╣tkiem wykluczonych w path
svndumpfilter exclude [dumpfile] [repository_path] > [dumpfile_after]

wciągnięcie z utworzeniem nowego projektu
svnadmin create calc; svnadmin load calc




VIM

VIM

/usr/share/vim/vim63/colors color schema files
:color [col] #change color schema
shift + v #check block by row
ctrl + v #check block
y #copy block to buffer
d #cut block to buffer
p #paste block
> #move block right
< #move block left

Basic commands

a | i #edit mode
ESC #back to command mode

Command mode

:r [file] #open file
:w #write file
:q #quit
:wq lub zz #write and quit
:set mouse=a #use mouse
^u-------------- one page up
--------k------- one row up
0----h---l-----$ row begin,one char left,one char right,end row
--------j------- one row down
^d-------------- one down
1G #firs row of file
crt G #last row of file
nG #go to line nr n

Edit text

o #go to edit mode below
O #go to edit mode above
x #delete char below cursor
dw #delete from cursor to end of word
dd #delete row
D #delete from cursor to end of row
nx #delete n char from cursor to right
ndd #delete n rows
dG #delete from cursor to end of file
d1G #delete from cursor to begin of file
d$ #delete from cursor to end of row
dn$ #delete from cursor to n row
u #undo
U #undo from changes of current line
:e! #przywołanie stanu sprzed poprzedniego zapisu do pliku.
rc #zastępuje znak pod kursorem na znak c.
R #tryb edycji z nadpisywaniem.
:e ++enc=[encoding] #zmiana kodowania w trybie edycji
:w ++enc=latin2 [nowy_plik] #zmiana kodowania i zapis do pliku

Kopiowanie i przenoszenie tekstu

yy lub Y #kopiowanie linii do bufora.
nyy lub nY #kopiowanie n linii do bufora.
yw #kopiowanie słowa do bufora.
nyw #kopiowanie n słów do bufora.
y$ #kopiowanie do bufora od kursora do końca linii.
"ayy lub aY #kopiowanie linii do bufora o nazwie a.
"byw #kopiowanie słowa do bufora o nazwie b.
"bynw #kopiowanie n wyrazów do bufora o nazwie b.
:1,5w [buf] #kopiowanie lini od 1 do 5 do zbioru o nazwie buf
:e [buf] #załadowanie zbioru buf do bufora
p #wklejenie zawartości bufora (bez nazwy) na prawo od kursora.
np jak wyżej ale n razy.
P #wklejenie zawartości bufora (bez nazwy) na lewo od kursora.
"ap #wklejenie zawartości bufora o nazwie a po prawej stronie od kursora.
"bnP #n kopii po lewej stronie od kursora z bufora o nazwie b.

Szukanie w tekście i zastępowanie

fc #znajduje następny znak c i ustawia kursor po prawej.
Fc #znajduje następny znak c i ustawia kursor po lewej.
/str #szuka ciągu znaków str od kursora w prawo i do końca tekstu.
?str #jak wyżej ale w lewo i do początku tekstu.

Ustawienia:

:retab #zmiana tab na space
:set list|nolist #ukryte znaki
:set hlsearch|nohlsearch #wyłączenie podświetlania znalezionego ciągu
:set number|nonumber #numerowanie wierszy
:syntax on|off #podświetlanie składni
:set wrap #zawijanie wierszy
:set ic #wyszukiwanie ignore case
:set mouse=a #włączenie myszy
:set noet ts=[nr] sw=[nr] #rozmiar przesunięcia po wciścięciu ts-tabspace lub sw-shiftwidth,przesunięciu>
:set expandtab #zamiana tab na space
:set incsearch #wyszukiewanie już podczas wpisywania
:set showmode #pokazywanie trybu
:set showcmd #pokazywanie poleceń1G
:map #sprawdzenie mapowania klawiszy
ctrl+p #w trybie wprowadzanie dopełnianie składni
:set autoindent #tworzenie wcięcia przy nowej lini
:set smartindent #tworzenie inteligentnych wcięć
:set foldmethod=indent #chowanie tekstu na podstawie wcięć, zo-otwieranie,zc-zamykanie
:set paste #tryb do wklejania

Okna:

:split [file] #otwarcie file w nowym oknie
:vsp [file] #j.w
ctrl+w #przechodzenie między oknami
ctrl+w + #zwiększenie okna
ctrl+w - #zmniejszenie okna
ctrl+s #duplikat okna
ctrl+v #j.w.
ctrl+c #zamknięcie bieżącego okna
ctrl+o #zamknięcie pozostałych okien
ctrl+p #przejście do poprzedniego okna

Przykłady:

:map #2 :w - przypisuje klawiszowi F2 funkcję zapisywania
:1,5 s/word1/word2 #zmiana w liniach od 1 do 5 ciągu word1 na word2
:2,$norm i* #wstaw * na pocztku od lini 2 do ostatniej
:%norm A6 #wstaw 6 na końcu każdej lini
:$norm 6o #dodaj 6 pustych lini
:%norm Rwyraz #nadpisz pierwsze znaki każdej lini slowem wyraz
:% s/"//g #wywalenie cudzysłowia w całej lini - g, dla wszystkich wierszy - %
:g/^#/d #usuwanie wszystkich lini z komentarzem strona z przykładami

2008-10-09

ORACLE LINKS


LIBS

oracle-libs
RedHat5 oracle-validated
Oracle Linux

public YUM server
WWW

databasesecurity
arjuba
oracle-base
idevelopment
techonthenet
ploug
red-database-security

ORACLE.COM

old good html metalink
Free and Open Source Software
compat librarises
Critical Patch Updates and Security Alerts
Critical Patch Updates and Security Alerts FAQ
inside OCP
DBA articles
Reference

BLOG

onlineappsdba
Jaffar Hussain
Berardo Damele
Laurent Schneider
Alexander kornbrust
Ivan Kartik
Ayyappa Yelburgi

METALINK
SubjectDoc ID
Oracle® Database on AIX®,HP-UX®,Linux®,Mac OS® X,Solaris®,Tru64 Unix® Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.1)Note:169706.1

PYTHON LINKS

chilkat
wikibooks
podstawy

SECURITY LINKS

milw0rm

WINSHIT CMD

A

Append - Pozwala programom otwierać pliki danych w określonych katalogach tak jak w bieżącym katalogu.
Arp - Wyświetla lub modyfikuje tabelę translacji adresów IP do adresów fizycznych używanych przez protokół rozróżniania adresów (ARP).
Assoc - Wyświetla lub modyfikuje skojarzenia rozszerzeń plików.
Asr_fmt - Automatyczne odzyskiwanie systemu.
Asr_ldm - manager dysków logiczny
AT - Polecenia i programy usługi planowania poleceń AT do uruchomienia na komputerze o określonej godzinie i dacie. Usługa Harmonogram musi być uruchomiona, aby używać poleceń AT.
Atmadm - Statystyki Menedżera wywołań ATM systemu Windows.
Attrib - Wyświetla lub zmienia atrybuty plików.
Auditusr - ustawia zasady inspekcji dla poszczególnych użytkowników.

B

Bootcfg - Konfigurowanie, ustawień pliku BOOT.INI
Break - Przerwanie w systemie DOS. Brak efektu w windowsie XP.

C

Cacls -Słyzu do modyfikacji, listy kontroli dostępu plików.
Calc - Kalkulator. (WIN)
Call - Wywołuje jeden program wsadowy z innego.
Cd - Change Directory Wyświetla nazwę bieżącego katalogu lub zmienia go.
Charmap - Tablica znaków.(WIN)
Chcp - Sprawdza/ustawia numer aktywnej strony kodowej.
Chdir - Wyświetla nazwę bieżącego katalogu lub zmienia go.
Chkdks - Sprawdza dysk i wyświetla raport o jego stanie.
Chkntfs - Wyświetla lub modyfikuje stan sprawdzania dysku podczas rozruchu.
Cipher - Wyświetla lub zmienia szyfrowanie katalogów [plików] w partycjach NTFS.
Cleanmgr - Oczyszczanie dysku. (WIN)
Cliconfg - Narzędzie sieciowe klienta servera SQL. (WIN) // ISS
Clipbrd - Podgląd wieloschowka.
Cls - Czyści ekran.
Cmd - Uruchamia nowa konsole.
Cmstp - Instalator Profilu Managera połączeń.
Color - Ustawienia koloru konsoli.
Command - Windosowki dos.
Comp - Porównuje zawartość dwóch plików bądź zestawu plików.
Compact - Wyświetla informacje o kompresji i umożliwia jej zmianę na partycjach NTFS.
Control - Panel Sterowania (WIN)
Convert - Konwertuje wolumin z FAT na NTFS.
Convlog - Microsoftowski - Konwerter dzienników internetowych.
Copy - Kopiuje plik.
CScript - Host skryptów systemu Windows.


D

Date - Ustawienie bądź wyświetlenie daty.
Dcomcnfg - Microsoft Managment Console (WIN)
Debug - program testujący i edytujący narzędzia.
Defrag - Defragmentacja dysku.
Del - Usuwa pliki.
Diantz - Aplikacja do kompresowania.
Dir - Wyświetla listę katalogów i plików znajdujących się w danym folderze
Diskcomp - Porównuje zawartość dwóch dyskietek.
Dickcopy - Kopiuje dyskietkę, na druga dyskietkę.
DiskPart - Program do zarządzania dyskami, partycjami.
Doskey - Edytuje wiersze polecenia, ponownie wywołuje polecenia systemu Windows XP i tworzy makra.
Driverquery - Wyświetlenie listy zainstalowanych sterowników urządzeń.
Dxdiag - Diagnostyka DirectX.


E


Edlin - Wierszowy edytor tekstu.
Echo - Wyświetla komunikaty lub włącza i wyłącza wyświetlanie poleceń.
Endlocal - Sprawia, że zmiany środowiska w pliku wsadowym nie będą lokalne.
Erase - Usuwa pliki lub foldery.
Eventcreate - Tworzenie niestandardowego identyfikatora i komunikatu w okreslonym dzienniku zdarzeń. Admin+
Eventtriggers - Konfigurowanie i wyświetlenie "wyzwalaczy zdarzeń" na systemie lokalnym i zdalnym. Admin+
Exit - Zamyka cmd.exe lub skrypt wsadowy.
Expand - Dekompresuje jeden lub więcej plików.


F


Fc - Porównuje parę lub zestaw plików i prezentuje różnice między nimi.
Find - Szuka ciągu znaków w pliku lub plikach.
Findstr - Szuka ciągu znaków w plikach.
For - Wykonuje dane polecenie dla wszystkich plików/zmiennych ze zibioru plikow, programie wsadowym.
Format - Formatuje dysk.
Fsutil - zawansowane działania na systemach plików. (wiele podpoleceń)
FTP - przesyłanie plików do i z komputera na którym jest uruchomiony server ftp.
Ftype - Wyświetla lub modyfikuje skojarzenia typy plików używanych w skojarzeniach.


G

Getmac - Wyświetlenie adresu/ów MAC. Admin+
Goto - Kieruje program cmd.exe do oznaczonego etykietą wiersza w programie wsadowym.
Graphics - Program umożliwiający druk grafik.
Gpresult - Wyświetlenie zestawu zasad RSoP dla danego użytkownika oraz systemu.
GPUdate - Odświeżanie zasad grupy systemu operacyjnego Wndows.
Graftabl - Umożliwia wyświetlenie rozszerzonego zestawu znaków w trybie graficznym systemu Wondows.


H


Help - Podaje informacje o danym poleceniu to samo co "polecenie" /?.
Hostname - Pokazuje nazwę hosta.

I


IF - polecenie wykonujące przetwarzanie warunkowe w programach wsadowych.
Iisreset - Zarządzanie usługami internetowymi (restart,start,stop). IIS+
Ipconfig - Pokazuje informacje o numerach IP (ipconfig /all).
Ipxroute - Program do sterowania routingiem źródłowym i IPX.


K

Kb16 - Konfigurator klawiatury aby spełniała wymagania konkretnego języka.


L

Label - Edycja etykiety woluminu dysku.
Lodctr - Aktualizuje nazwy liczników Monitora wydajności i teksty objaśniające dla liczników rozszerzalnych.
Logman - Zarządzanie usługą dziennika zdarzeń i alertów, tworzenie dziennika sesji.
Lpq - Wyświetla stan zdalnej kolejki LPD. (drukarki).
Lpr - Wysyła zadanie drukowania do drukarki sieciowej.

M

Mkdir - Tworzenie katalogu.
Mmc - Microsoft Mamagment OCnsole (Win).
Mode - Konfiguracja urządzeń systemowych.
More - Prezentuje dane po jednej stronie/ekranie naraz.
Mountvol - Robi, usuwa lub wyświetla listę punktów instalacji partycji.
Move - Przenosi pliki i zmienia nazwy plików i katalogów.
Msiexec - Instalator windows.


N

Nbtstat - Wyświetlenie statystyk protokołu oraz bieżących połączeń TCP/IP używając NBT (NetBIOS przez TCP/IP).
Net - Polecenia usług sieciowych.
Netsh - Lokalne lub zdalne wyświetlenie bądź konfiguracja sieci, działającej na komputerze.
Netstat - statystyka protokołu oraz połączenia TCP/IP.
Notepad - Uruchominie notatnika windows.
Nslookup - Wyświetlenie informacji do diagnozowania infrastruktury systemu DNS.
Ntsd - jest to pomoc dla programistów. Nie powinno się tego używać bez odpowieniej wiedzy.

O

Openfile - Wyświetlenie lub rozłączenie plików i folderów otwartych w systemie. admin+


P

Path - Ustawianie bądź wyświetlanie ścieżki dla plików wykonywalnych.
Pathping - Wyświetlenie stopnia utraty pakietów na określonym routerze lub łaczu. Pomocne przy wyszukiwaniu wadliwych łączy w sieci.
Pause - Zawiesza działanie pliku wsadowego, raportując to komunikatem.
Pentnt - Wykrywanie błędu dzielenia zmiennoprzecinkowego.
Perfmon - Monitoring wydajności komputera (WIN).
Ping - Sprawdzanie łączności ze zdalnym serverem.
Popd - Zmienia bieżący katalog na katalog znajdujący się w poleceniu PUSHD.
Powercfg - Wyświetla informacje oraz pozwala na konfigurowanie zasilanie systemu. Admin+
Print - Drukowanie pliku tekstowego.
Prompt - Zmienia tekst zgłoszenia (monit) programu cmd.exe.
PushD - Zachowuję nazwę bieżącego katalogu używaną przez polecenie POPD przed zmianą danego katalogu na określony katalog.


R


Rasdial - Automatyzacja procesu połączenia usługi Klient Microsoft. Wyswietla aktualne połączenia.
Rcp - Kopiowanie plików do i z komputera na którym jest uruchomiona usługa RCP.
Recover - Narzędzie do odzyskiwania informacji z uszkodzonego dysku.
Reg - Umożliwia działanie na rejestrze systemu windows.
Regsvr32 - Rejestrator plików .dll w postaci składników poleceń do rejestru.
Relog - Służy do stworzenia nowych dzienników wydajności z istniejących już dzienników, zmieniając częstotliwość próbkowania i format zapisu dziennika.
Rem - Komentarz w plikach wsadowych.
Rename - Zmiana nazwy pliku.
Replace - Zamienia pliki o tych samych nazwach z jednego katalogu do drugiego.
Reset session - Polecenie służące do zresetowania (usunięcia) sesji na serwerze terminali.
Rexec - Usługa umożliwiająca na wykonanie polecenia w systemie innym niż z rodziny Windows, posiadający usługę Rexex (demon).
Rmdir - Usuwa katalog.
Route - Wyświetlanie oraz modyfikacja wpisów w lokalnej tabeli routingu protokołu IP.
Rsh - Usługa umożliwiająca wykonanie polecenia na zdalnych komputerach.
Rsm - Usługa zarządzająca zasobami nośników za pomocą Magazynu wymiennego.
Runas - Możliwość uruchomienia określonych programów i narzędzi z uprawnieniami innymi niż uprawnienia związane z bieżącym logowaniem.


S

Sc - Zarządzanie usługami,tworzenie servisow.
Schtasks - Zarządzanie zaplanowanymi zadaniami, lokalnie i zdalnie. Admin+
Secedit - Konfiguracja oraz analiza zabezpieczeń systemu poprzez porównanie konfiguracji bieżącej z szablonem.
Set - Ustawianie oraz wyświetlanie zmiennych środowiskowych w cmd.exe.
Setlocal - Zmienna pozostaje tylko w pliku wsadowym i nie ma bezpośredniego wpływu na zmienne środowiskowe.
Sfc - Kontroler plików systemu Windows.
Shadow - Służy do monitorowania innej sesji usług terminalowych.
Shift - Zmienia pozycję parametrów wsadowych w plikach wsadowych.
Shutdown - Polecenie zarządzające wyłączeniem/restartem komputera, lokalnego zdalnego.
Sort - Polecenie sortujące dane wyjściowe (zawartość plików) i zapisuje wynik w innym pliku bądź wyświetla na ekranie.
Start - Uruchamia oddzielne okno aby uruchomić dany program, plik.
Subst - Służy do kojarzenia ścieżki z literą dysku.
Sysocmgr - Instalator ograniczonego zestawu składników opcjonalnych.
Systeminfo - Podstawowe informacje o konfiguracji systemu. admin+


T

Taskkill - Służy do zamykania jednego lub więcej procesów.
Tasklist - Wyświetlenie wszystkich procesów.
Taskmgr - Ctr+Alt+Del :>
TcmSetup - Ustawienie bądź wyłączenie klienta TAPI.
Telnet - program służący do zarządzania komputerem zdalnym bądź lokalnym, na którym jest uruchomiony server telnet.
tlntadmn - parametry oraz ustawienia lokalnego servera telnet.
tftp - Przesyłanie i odbieranie plików za pomocą TFTP.
Time - Pokazuje i ustawia czas.
Title - Ustawia tytuł dla cmd.exe.
Tracerpt - Służy do przetwarzania dzienników śledzenia zdarzeń.
Tracert - Tace Rout - prześledzenie drogi pakietów z naszego komputera do servera na TCP/IP
Tracert6 - Trace rout na IPv6.
Tree - Graficzne przedstawienie struktury folderów.
Tscon - Służy do połączenia sesji użytkownika z sesją terminalową.
Tsdiscon - Polecenia rozłączające sesję terminala.
Tskill - Zamyka proces na lokalnym bądź zdalnym komputerze. admin+
Tsshutdn - Polecenia zamykające server w kontrolowany sposób.
Type - Wyświetla zawartość jednego bądź kilku plików tekstowych.
Typeperf - Jest to program pokazujący dane na temat wydajności, może jest też zapisc w logu.


U

Unlodctr - Służy do usuwania nazwy licznika wydajności i tekst wyjaśnienia związanego z usługą lub sterownikiem urządzenia z rejestru systemowego.
Userinit - Otwarcie "Moje Dokumenty" dla zalogowanego usera.
Utilman - Manager narzędzi. (lupa i takie tam badziewia)


V


Ver - Wersja systemu.
Verifier - weryfikator sterowników.
Vol - Wyświetlanie etykiety partycji/woluminu.
Vssadmin - Kopiowanie partycji w tle. admin+


W

W32 - Program do diagnostyki usługi "Zegar systemu Windows".
Winchat - Chat systemu windows, działający na lanie.
Winhlp32 - Aplikacja otwierająca pliki pomocy.
Winmine - saper (WIN).
Winmsd - Informacje o systemie Windows. (WIN)
Winver - Wersja systemu. (WIN)
WMIC - "Windows Management Instrumentation Command-line" zarządzanie instrumentacjami windows.
Write - Otwarcie wordpada.
Wscript - Host skryptów systemu windows.
Wuauclt:- Update Systemu windows.


X

Xcopy - Służy do kopiowania drzew katalogów i plików.

LINUX LINKS

distrowatch
yum
antynet
opensource alternatives

2008-10-04

ORACLE RECOVERY

szacowanie ilości danych do wprowadzenia przy odtwarzaniu (róznica pomiędzy tym co w plikach danych a tym co w redologach):

SELECT * FROM v$instance_recovery;

wymagane do archiwizacji:

  • v$datafile
  • v$controlfile
  • v$logfile
  • SPFILE.ora
  • PWD.ora

przełączenie całej bazy do archiwizacji:

ALTER DATABASE BEGIN|END BACKUP;

sprawdzenie plików w procesie backupu:

SELECT file#,status FROM v$backup;

ustawianie takiego samego nr SCN dla wszystkich plików danych-CHECKPOINT:

ALTER SYSTEM SWITCH LOGFILE;

kopia pliku kontronlnego:

ALTER DATABASE BACKUP CONTROLFILE TO '';

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

wywołanie checkpointa:

ALTER SYSTEM CHECKPOINT;

podano za http://www.ploug.org.pl/plougtki.php?action=read&p=8&a=6

zawartość naglówka pliku danych:

start SCN,
nr sekwencyjny bieżącego redologa w momencie punktu kontrolnego,
licznik punktów kontrolnych dla danego pliku

zawartość controlfile:

stop SCN dla kazdego pliku danych (dla pracującej bazy nieskończony),
nr sekwencyjny bieżącego redologa w momencie punktu kontrolnego,
licznik punktów kontrolnych dla każdego pliku danych

zamknięcie bazy (normal,imediate) to zrobienie punktu kontrolnego czyli:

  1. zwiększenie licznika punktów kontrolnych w nagłówku pliku danych
    oraz zwiekszenie licznika punktów kontrolnych w controlfile dla w/w pliku,
  2. uaktualnienie nr sekwencyjnego bieżącego redologa w nagłówku pliku danych i w controlfile
  3. stop SCN dla określonego pliku danych w controlfile przyjmuje taką wartość jak start SCN tego pliku

uruchomienie bazy (sprawdzenie czy):

  1. licznik punktów kontrolnych w nagłówku pliku = licznik punktów kontrolnych w controlfile dla pliku
  2. nr sekwencyjny bieżącego redologa w nagówku pliku = nr sekwencyjny w controlfile
  3. start SCN w pliku danych = stop SCN w controlfile dla pliku

W przypadku gdy baza danych zostanie zamknięta w trybie ABORT punkt kontrolny nie zostanie wykonany. Oznacza to, że wartości stop SCN (w pliku kontrolnym) dla wszystkich plików danych nie zostaną zrównane z odpowiadającymi im wartościami start SCN (por. rysunek 3b). Jeżeli pliki danych nie zostały wczytane z kopii bezpieczeństwa, to po ponownym otwarciu bazy danych liczniki punktów kontrolnych i numery sekwencyjne w plikach danych posiadają takie same wartości, jak odpowiadające im liczniki i numery sekwencyjne w pliku kontrolnym. Natomiast, wartości parametrów start SCN i stop SCN są różne. Oznacza to, że system powinien zaaplikować zmiany zapisane we włączonych (online) plikach dziennika powtórzeń.

W przypadku gdy po zamknięciu bazy danych dowolny plik danych zostanie zastąpiony plikiem archiwalnym, wartość licznika punktów kontrolnych i numer sekwencyjny w jego nagłówku nie będą zgodne z odpowiadającymi im wartościami w pliku kontrolnym. Niezgodność ta zostanie wykryta w momencie otwierania bazy danych. Wówczas system zgłosi potrzebę odtworzenia bazy danych. Po wydaniu odpowiedniego polecenia, do archiwalnego pliku danych zostaną zaaplikowane zmiany pochodzące ze zarchiwizowanych plików dziennika powtórzeń. Do pliku danych będą aplikowane zmiany zapisane w plikach dziennika począwszy od numeru wskazywanego w nagłówku tego pliku danych, a skończywszy na pliku dziennika wskazywanym w pliku kontrolnym - dla odtwarzania pełnego lub wskazanym pliku dziennika - dla odtwarzania częściowego.

Zaleca się sporządzanie kopii jednej przestrzeni tabel w danej chwili. Oprócz archiwizacji plików składających się na przestrzenie tabel, należy sporządzić również kopie pliku kontrolnego i wszystkich zarchiwizowanych plików dziennika powtórzeń zapisywanych w czasie archiwizacji przestrzeni. W celu odtworzenia stanu bazy danych na podstawie kopii archiwalnej, wykonanej w trybie online, system musi zaaplikować zapisy ze wszystkich tych zarchiwizowanych plików dziennika powtórzeń, które zostały utworzone w czasie między wydaniem polecenia alter tablespace ... begin backup, a alter tablespace ... end backup. Do odtworzenia pełnego są również potrzebne pozostałe zarchiwizowane pliki dziennika, zapisane po zakończeniu archiwizacji.

W celu wykonania archiwizacji fizycznej w trybie online całej bazy danych należy wykonać poniższe operacje:
  1. Uruchomić bazę danych w trybie ARCHIVELOG
  2. Odczytać numer sekwencyjny najstarszego włączonego (online) pliku dziennika powtórzeń (Oldest online log sequence) wydając polecenie: sql> archive log list
    W celu odtworzenia bazy danych w przypadku awarii nośników niezbędne będzie zaaplikowanie zapisów w zarchiwizowanych plikach dziennika powtórzeń o numerach począwszy od numeru sekwencyjnego najstarszego włączonego (online) pliku dziennika powtórzeń.
  3. Przełączyć wybraną przestrzeń tabel w tryb archiwizacji wydając polecenie:
    sql> alter tablespace nazwa_przestrzeni begin backup;
  4. Wykonać kopie bezpieczeństwa wszystkich plików składających się na wybraną w kroku 3przestrzeń tabel.
  5. Wyłączyć tryb archiwizacji dla przestrzeni tabel wskazanej w kroku 3 wydając polecenie:
    sql> alter tablespace nazwa_przestrzeni end backup;
  6. Powtórzyć kroki 3, 4 i 5 dla pozostałych przestrzeni tabel.
  7. Odczytać numer sekwencyjny bieżącego pliku dziennika powtórzeń (Current log sequence) wydając polecenie:
    sql> archive log list
    Current log sequence
    określa numer ostatniego zarchiwizowanego pliku dziennika powtórzeń, którego kopię należy sporządzić aby możliwe było odtworzenie bazy danych.
  8. Wymusić przełączenie plików dziennika poleceniem:
    sql> alter system switch logfile;
  9. Wykonać kopię bezpieczeństwa wszystkich zarchiwizowanych plików dziennika powtórzeń począwszy od pliku o numerze określonym w kroku 2, a skończywszy na pliku o numerze określonym w kroku 7.
  10. Wykonać kopię bezpieczeństwa pliku kontrolnego wydając polecenie:
    sql> alter database backup controlfile to 'nazwa_pliku';

2008-10-03

ORACLE MEMORY

ustawianie pamięci:
SGA
parametr sga_target można zmieniać dynamicznie do wartość sga_max_size, natomiast parametr sga_max_size może być zmianiany tylko statycznie czyli z restartem bazy
sga_target > 0 - automatyczne zarządzanie pamięcią
a wpisy:
  • db_cache_size,
  • java_pool_size,
  • large_pool_size,
  • shared_pool_size
oznaczają ich minimalną wartość

sga_target = 0 - ręczne ustawianie pamięci i powyższe parametry ustawić ręcznie

sga_max_size - do jakiej wartości można ręcznie podwyższyć sga_target

SHARED_POOL_SIZE - pamięć w Bajtach dla współdzielnonych SQL i PL/SQL i dla danych słownikowych (Library Cache, Data Dictionary Cache)
DB_CACHE_SIZE - rozmiar bufora danych dla podstawowego rozmiaru bloku danych
PGA
PGA - (dla procesu) pamięć zawierająca kursor, zmienne, obszary sortowania, łaczenia itp.
ustawienie pamięci w spfile:
ALTER SYSTEM SET sga_max_size=[size]M scope=spfile;
ALTER SYSTEM SET sga_target=[size]M scope=spfile;
sprawdzenie zużycia pamięci:
SELECT name,bytes/(1024*1024) as MB FROM v$sgainfo;
SELECT component, min(final_size) low, (min(final_size/1024/1024)) lowMB,

max(final_size) high, (max(final_size/1024/1024)) highMB
FROM v$sga_resize_ops GROUP BY component ORDER BY component;
sprawdzenie ustawień pamięci:
SHOW SGA
SELECT * FROM v$sgastat;
SELECT * FROM  v$pgastat;
SELECT name, value FROM v$parameter WHERE name in ('sga_max_size', 'shared_pool_size','db_cache_size', 'large_pool_size','java_pool_size');
SELECT * FROM v$sgastat WHERE name LIKE 'free memory';

ORACLE OPTIMALIZATION

sprawdzenie liczby bloków:
SELECT blocks, extents FROM dba_segments WHERE segment_name='[table]' AND owner='[owner]';
sprawdzenie liczby bloków zajętych przez segment:
SELECT blocks, empty_blocks FROM dba_tables WHERE table_name = '[table]' AND owner='[owner]';
optymalizacja przestrzeni:

zmiejszenie ilosci bloków zformatowanych pod wcześniej zainstertowane dane, które to dane następnie zostały zdeletowane, a bloki zostały automatycznie przesunięte do FREELIST, czyli obniża się HWM, jednak zaalokowana liczba bloków przez segment pozostaje nie zmieniona, ponadto bloki migrują do wolnej przestrzeni w miejsce pustych bloków dlatego zmienia się row_id i block_id.
ALTER TABLE [table] MOVE;
następnie proces Automatic Space Segment Management powinien wszystko wyczyścić, oczywiście przestrzeń musi być w trybie Extent Management Local, jeżeli nie to trzeba to zrobić ręcznie jak poniżej

zmniejszenie zaalokowanej liczby bloków przez segment:
ALTER TABLE [table] ENABLE ROW MOVEMENT;ALTER TABLE [table] SHRINK SPACE;
obliczanie wielkości przestrzeni wycofania:
undo_blk/s - ilość bloków wycofań na sekundę,
86400 - ilość sekund w ciągu dnia
undo_blk/s = SELECT (SUM(undoblks))/ SUM ((end_time - begin_time) * 86400) FROM v$undostat;ts_size = (show parameter undo_retention) * undo_blk/s * db_block_size + db_block_size
lub zapytanie:
SELECT (UR * (UPS * DBS)) + (DBS) AS "Bytes" FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'), (SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS FROM v$undostat), (select block_size as DBS from dba_tablespaces where tablespace_name= (select value from v$parameter where name = 'undo_tablespace'));
sprawdzenie twardych zapytań:
select pa.SID, pa.VALUE "Hard parses",ex.VALUE "Execute Count" from v$sesstat pa,v$sesstat ex where pa.sid = ex.sid and pa.statistic#=(select statistic# from v$statname where name ='parse count (hard)') and ex.statistic#=(select statistic# from v$statname where name = 'execute count') order by "Hard parses" desc;
select * from (select sql_text,parse_calls,executions from v$sqlstats order by parse_calls)where rownum < 10 #jeżeli zbliżone parse_calls do executions to te pytania są za często parsowane

ORACLE UPGRADE

podstawowa procedura upgarade dla wersji 10:

1. przeczytać dokument README.html
2. sprawdzić System Requirements
3. ustawić zmienną systemową $ORACLE_HOME
4. wyłączyć wszystkie usługi bazy
5. zainstalować patcha na binaria bazy (modyfikuje,dodaje tylko pliki binarne w $ORACLE_HOME)
6. wykonać skrypt sprawdzający bazę danych:
STARTUP UPGRADE
SPOOL preupgrade_check.log
@$ORACLE_HOME/rdbms/admin/utlu102i.sql
SPOOL OFF
7. sprawdzić spool i zweryfikować, po ewentualnej korekcie wykonąć skrypt ponownie
8. wykonać upgrade bazy danych (modyfikuje obiekty w przestrzeni SYSTEM)
STARTUP UPGRADE
SPOOL patch.log
@$ORACLE_HOME/rdbms/admin/catupgrd.sql
SPOOL OFF
9. wyłączyć bazę:
SHUTDOWN IMMEDIATE
10. uruchomić bazę i skompilować pakiety:
STARTUP
@$ORACLE_HOME/rdbms/admin/utlrp.sql
11.sprawdzić komponenty po upgrade:
SELECT comp_name,version,status FROM sys.dba_registry;
OGÓLNE:
catupgrd.sql - wykonuje skrypty do upgrade, które to z kolei tworzą i zmieniają tabele słownikowe, widoki, typy, pakiety etc.,
czas upgrade poszczególnych komponentów:
SELECT * FROM registry$log;


podstawowa procedura upgarade dla wersji 9:
przeczytać dokument README.html
sprawdzić System Requirements

ALTER SYSTEM SET java_pool_size=150M scope=spfile
ALTER SYSTEM SET shared_pool_size =150M scope=spfile
wyłączyć wszystkie usługi bazy
zainstalować patcha na binaria bazy

upgrade zainstalowanej bazy
  • sqlplus /nolog
  • sql> STARTUP MIGRATE
  • sql> SPOOL PATCH.LOG
  • sql> @$ORACLE_HOME/rdbms/admin/catpatch.sql
  • sql> SPOOL OFF
zrestartować bazę
w razie problemów naprawić i wykonać ponownie
wykonać plik do kompilacji pakietów
  • sql> @$ORACLE_HOME/rdbms/admin/utlrp.sql
sprawdzanie patchy:
@$ORACLE_HOME/opatch/opatch lsinventory
@$ORACLE_HOME/opatch/opatch lsinventory -detail

ORACLE RMAN

for more read documentation

symbols:

%sset nr
%ppiece of set nr
%ccopy nr for multi copy
%ddatabase name
%Idatabase id
%ttime index in sec
%Dday of month
%Mmonth
%Yyear
%Tyear,month,day YYYYMMDD
%ueight digit name consist of set nr and time
%Uuniq file name (necessary for many channel), consist of database id,day nr,month,year,file nr
%Ffor controlfile c-[db_ID]-[YYYYMMDD]-[hex sequence from 00 to ff - max 256 different values]

connect to database without catalog using controlfile:

rman> connect target /
rman> connect target [sys_user]/pass@[sid_target]

connect to catalog, and next to database

(in one catalog may be register many databases):
rman> connect catalog [rman_user]/[pass]@[sid_rman_base]
rman> connect target [sys_user]/pass@[sid_target]
or;
rman catalog [rman_user]//[pass]@[sid_rman_base] target [sys_user]/pass@[sid_target]

settings:

rman> show all;
rman> configure retention policy to redundancy [number_of_files];
rman> configure retention policy to recovery window of [number od days] days;
rman> configure device type disk backup type to compressed backupset;
rman> configure device type disk backup type to [copy|backupset];
rman> configure [parametr] clear; #clear configuration for present parameter

default settings:

CONFIGURE RETENTION POLICY TO REDUNDANCY ;
CONFIGURE BACKUP OPTIMIZATION OFF; #default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; #default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/rmandata/%F.rbk';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; #default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; #default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; #default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/oracle/rmandata/data-%I-%T-%s-%p-%U.rbk';
CONFIGURE MAXSETSIZE TO UNLIMITED; #default
CONFIGURE ENCRYPTION FOR DATABASE OFF; #default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; #default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; #default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/product/10.2.0/db_1/dbs/snapcf_sow01.f'; #default

backup script example:

run {
backup full tag "FULL"
filesperset 20
database;
sql 'alter system archive log current';
backup format '/oracle/rmandata/arc-%I-%T-%s-%p-%U.rbk'
archivelog all delete input;
}
! if you set CONFIGURE CONTROLFILE AUTOBACKUP ON - for any command "BACKUP" automaticaly will be backuped controlfile, thus we get two entries for one backup in command "list backup",

in an example above we get four entries
!setting tags is not neccessary because default setting is easy to find TAGYYYYMMDDTHH24MISS


check backup progress:

SELECT status,operation,object_type,row_type,to_char(start_time,'YYYY-MM-DD HH24:MI:SS)') FROM v$rman_status ORDER BY start_time;

last 1 day:
SELECT rs.status,rs.operation,rs.object_type,rs.row_type,to_char(rs.start_time,'YYYY-MM-DD HH24:MI:SS'),ro.output FROM v$rman_status rs,v$rman_output ro WHERE rs.start_time >= trunc(sysdate-1) AND rs.stamp=ro.stamp ORDER BY rs.start_time,ro.recid;

last 10 minutes:
SELECT rs.status,rs.operation,rs.object_type,rs.row_type,to_char(rs.start_time,'YYYY-MM-DD HH24:MI:SS'),ro.output FROM v$rman_status rs,v$rman_output ro WHERE rs.start_time >= sysdate-10/(24*60) AND rs.stamp=ro.stamp ORDER BY rs.start_time,ro.recid;

last 1 day (short version):
SELECT rs.stamp,rs.status,rs.object_type,rs.operation,rs.row_type,trunc(rs.input_bytes/1073741824,2)||' GB ' as input ,trunc(rs.output_bytes/1073741824,2) || ' GB ' as output , to_char(rs.start_time,'MM-DD HH24:MI:SS') as starttime,to_char(rs.end_time,'MM-DD HH24:MI:SS') as endtime FROM v$rman_status rs WHERE rs.start_time >= trunc(sysdate-1) ORDER BY rs.start_time;

last 1 day (long version):
SELECT rs.stamp, rs.status, rs.object_type, rs.operation, rs.row_type, trunc(rs.input_bytes/1073741824,2) || ' GB ' as bytes_input, trunc(rs.output_bytes/1073741824,2) || ' GB ' as bytes_output, to_char(rs.start_time,'YYYY-MM-DD HH24:MI:SS') as starttime, to_char(rs.end_time,'YYYY-MM-DD HH24:MI:SS') as endtime, ro.output FROM v$rman_status rs, v$rman_output ro WHERE rs.start_time >= trunc(sysdate-1) AND rs.stamp=ro.stamp ORDER BY rs.start_time,ro.recid;

list:

rman> list all script names;
rman> list copy of database;
rman> list backup [summary];
rman> list backup [summary] [completed after "04-AUG-11"]; rman> list backup by file;

rman> list backup of database [summary];
rman> list backup of database [summary] [completed after "04-AUG-11"];
rman> list backup of database by backup tag [tag_name];
rman> list backup of tablespace;
rman> list backup of controlfile;
rman> list backup of spfile;

rman> list backup of database archivelog all;
rman> list backup of archivelog all [summary];

rman> list backup of datafile '[path]' | [nr] [summary];

rman> list backupset [nr],[nr],[nr];
rman> list archivelog all; #list current archivelog

crosscheck:

rman> crosscheck backup | archivelog | copy #check if backup files are still exist and they obtain status AVAILABLE or EXPIRED, (you can test it by move backup files to other location and then bring it back)
rman> list expired backupset; #backups that were not found during a crosscheck, crosscheck must be first
rman> list expired backup of archivelog summary;
rman> list expired copy of archivelog all;
rman> list incarnation of database;

report:

rman> report schema;
rman> report need backup; #what is neccessary to backup according present backup policy
rman> report need backup days 7;
rman> report need backup redundancy 7;
rman> report need recovery window of 7 days;
rman> report obsolete; #old files according present policy, (if you change policy, report will be change also)
rman> report obsolete redundancy 7;
rman> report obsolete recovery window of 7 days; 

delete:

rman> delete obsolete; #remove expired according present backup policy
rman> delete expired archivelog all;

backup:

rman> backup as copy database #copy files in format which is as same as datafiles
rman> backup as backupset database - copy at set?
rman> backup database;

other:

sql> select obsolete,backup_type,file_type,fname from v$backup_files;
sql> select * from v$rman_status;
sql> select * from v$rman_output;
rman> run {execute script [script_name];}
rman> run {sql '[sql_command'}
rman> run {host '[os_command]'}
rman> delete script [script_script];
rman> create script {[data_script];}

create catalog database:

sql> create tablespace [ts_rman] datafile '[file]' size [size]m autoextend on next [size]m;
sql> create user [rman_user] identified by [password] default tablespace [ts];
sql> grant resource,connect,recovery_catalog_owner to [rman_user];

create structure of catalog database with schema [rman_user]):

rman catalog [rman_user]/[pass]@[sid_rman_base]
or
rman> connect catalog [rman_user]/[pass]@[sid_rman_base]
rman> create catalog

register database in catalog:

(new entries on table [rman_user].db)
rman catalog [rman_user]/[pass] target [sys_user]/[pass]@[sid]
or
rman> connect catalog [rman_user]/[pass]@[sid_rman_base]
rman> connect target [sys_user]/[pass]@[sid]
you get output:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20001: target database not found in recovery catalog
rman> register database;

description of tables in schema [rman_user]:

DB #inf about register databases
DBINC #inf about databases and DBINC_KEY - database incarnation key
DF,DFATT #inf about database files
SCR,SCRL #scripts
ORL #inf about redologs
TS,TSATT #inf about tablespaces
TF,TFATT #inf about temp tablespaces

views:

V$BACKUP_CORRUPTION #damaged blocks of backupset
V$COPY_CORRUPTION #damaged blocks of copy files
[rman_user].RC_STORED_SCRIPT
[rman_user].RC_STORED_SCRIPT_LINE

backupsets:

FULL BACKUP #full backup all blocks, can not be used with incremental backup
default is incremental backupset
levels can be 0,1,2,3,4
backupset at level 0 #all blocks like FULL BACKUP
backupset at level 1 #contain blocks which were changed from parent backup (base on SCN which is wrote inside each block, if child block SCN > parent block SCN than it is copied)
INCREMENTAL BACKUP SET #backupset of level n, which contain blocks which were modified from backupset of level n or n-1
INCREMENTAL CUMULATIVE #backupset of level n, which contain blocks which were modified from backupset of level n-1 or lower

options:

BACKUP INCREMENTAL LEVEL=0 DATABASE
BACKUP INCREMENTAL LEVEL=1 CUMULATIVE DATABASE
BACKUP (tablespace [ts_name1,ts_name2)
BACKUP ARCHIVELOG FROM TIME '[time]' | FROM LOG SEQ=[nr_seq]
BACKUP ARCHIVELOG UNTIL TIME '[time]' | UNTIL LOG SEQ=[nr_seq]
BACKUP ARCHIVELOG ALL DELETE INPUT #backup with remove
COPIES [nr] FORMAT '[1st_copy]','[2nd_copy] ' #a number of copies (up to 4)

recovery all:

sql> STARTUP MOUNT;

rman> RESTORE DATABASE; #or
rman> RESTORE DATABASE UNTIL TIME "to_date('2009/08/18 16:00','YYYY/MM/DD HH24:MI')"; #or
rman> RESTORE DATABASE FROM TAG="[tag_name]"; #check TAG from command "list backup"
rman> RECOVER DATABASE; #get alertlogs from backup
rman> ALTER DATABASE OPEN;

! MAKE FULL BACKUP

recovery tablespace:

rman> SQL 'ALTER TABLESPACE [ts_name] OFFLINE';
rman> RESTORE TABLESPACE [ts_name];
rman> RECOVER TABLESPACE [ts_name];
rman> SQL 'ALTER TABLESPACE [ts_name] ONLINE';

recovery datafile:

rman> SQL 'ALTER DATABASE DATAFILE [file_nr] OFFLINE';
rman> RESTORE DATAFILE [file_nr];
rman> RECOVER DATAFILE [file_nr];
rman> SQL 'ALTER DATABASE DATAFILE [file_nr] ONLINE';

backup without alertlog from disk:

rman> SHUTDOWN IMMEDIATE;
rman> STARTUP NOMOUNT;
rman> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
rman> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/[backup_datafile_path]/ora_df%t_s%s_s%p' MAXPIECESIZE 4000M;
rman> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
rman> CONFIGURE CONTROLFILE AUTOBACKUP ON;
rman> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/[backup_controlfile_path]/%F';

rman> BACKUP DATABASE;
rman> ALTER DATABASE OPEN;

recovery cold backup without alertlog:

remove all datafiles etc.
rman> set DBID=[dbid]
rman> set controlfile autobackup format for device type disk to '[backup_controlfile_path]/%F';
rman> restore controlfile from autobackup;
rman> alter database mount;
rman> recover database; (!get  error RMAN-03002, RMAN-06054)
rman> recover database noredo;
rman> alter database open resetlogs;

recover till timestamp

set variable:
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

rman> run {
set until time "to_date('2009-09-25:18:18','yyyy-mm-dd:hh24:mi')";
restore database;
recover database;
alter database open resetlogs; }

! all above commands must be included at one run block, otherwise rman recover to current state and to point of time

! if we've recovered database till timestamp and we've opened in RESETLOGS option before and we recognize that database data are not correct and we try to recover from other timestamp, we get an error:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
so what we have to do is:
rman> list incarnation of database; #we get list of all incarnations
if we try to open database we get:
database opened
new incarnation of database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

so go on:
run database at mount mode:
rman> reset database to incarnation [Inc Key];
rman> run {
set until time "to_date('2009-09-26 23:32','yyyy-mm-dd hh24:mi')";
restore controlfile;
alter database mount;
restore database;
recover database;}
rman> alter database open resetlogs;


change localization of source files

rman> catalog start with '[backup_datafile_path]'

example scripts:

rman> create script [script_name] {
rman> allocate channel [channel_name] type disk;
rman> set limit channel [channel_name] kbytes=10000; --limit of backup piece
rman> backup
rman> filesperset 20 --a number of files in one backupset (default 4 datafiles and,16 archivelogs),
-- ! one backupset include many files but one files could not be in many backupsets
rman> format '[dir_path/file_%s_%p_%t]' -- %s-backupset nr, %p-backup piece nr, %t-4byte timestamp
(archivelog all);
rman> release channel [channel_name];
}

rman> create script [script_name] { rman> allocate channel [channel_name] type disk; rman> copy rman> datafile '[file_path.dbf]' to '[file_path.bck]', rman> datafile '[file_path.dbf]' to '[file_path.bck]', rman> current controlfile to '[controlfile_path.bck]' rman> tag='[tag_name]'; rman> release channel [channel_name]; }
create script [script_name] { rman> allocate channel [channel_name] type disk; rman> copy controlfile to '[path_control.bck]'; rman> release channel [channel_name]; }
create script [script_name] { rman> allocate channel [channel_name] type disk; rman> backup rman> filesperset 3 rman> tag='[tag_name]' rman> format '[dir_path/fileincrement_%s_%p_%d]' (database include current controlfile); release channel [channel_name]; }
rman> create script [script_name] { rman> allocate channel [channel1_name] type disk; rman> allocate channel [channel2_name] type disk; rman> set limit channel [channel1_name] kbytes 10000; rman> set limit channel [channel2_name] kbytes 10000; rman> backup full rman> filesperset 3 rman> tag='[tag_name]' rman> format '[dir_path/fileincrement_%s_%p_%d]' (datafile 1,2,3 channel [channel1_name) (datafile 4,5,6 channel [channel1_name); rman> release channel [channel1_name]; rman> release channel [channel2_name]; }
rman> create script [scirpt_name]{ rman> allocate channel [channel_name1] type disk; rman> allocate channel [channel_name2] type disk; rman> backup rman> format '/[backup_dir]/controlfile_t%t_s%s_p%p' rman> (current controlfile); rman> backup rman> incremental level 0 rman> tag db_intr_0 rman> filesperset 5 rman> format '/[backup_dir]/datafile_t%t_s%s_p%p' rman> (database); rman> sql 'alter system archive log current'; rman> backup rman> filesperset 20 rman> format '/[backup_dir]/archivelog_t%t_s%s_p%p' rman> (archivelog all delete input); rman> release channel [channel_name1]; rman> release channel [channel_name2]; }

ORACLE DPUMP

1 Database directory

  • CREATE OR REPLACE DIRECTORY [oracle_dir] as '[path_to_directory_on_disk]';
  • DROP DIRECTORY [oracle_dir]
  • SELECT directory_name, directory_path FROM dba_directories;
  • GRANT READ, WRITE ON DIRECTORY [oracle_dir] TO [user]

2 Dpump Order

  1. type definitions
  2. table definitions
  3. table data
  4. table indexes
  5. integrity constraints, views, procedures, triggers
  6. bitmap, function-based, domain indexes

3 Views

  • SELECT job_name,owner_name,state FROM dba_datapump_jobs;

4 expdp:

  • EXPDP [user]/[pass] SCHEMAS=[schema] LOGFILE=[log_file] DIRECTORY=[directory] DUMPFILE=[dump_file] PARALLEL=[parallel write to many files - use witch option %U as sufix in file name]
  • expdp [user]/[pass] directory=[dir] dumpfile=[file]_%U.expdp logfile=[logfile] filesize=4G \ job_name=[name] cluster=N parfile=[file].par

5 impdp:

  • IMPDP [user]/[pass] DUMPFILE=[dump_file] PARFILE=[parameter_file]

6 impdp parameter file

REMAP_SCHEMA=[old_user]:[new_user>]
REMAP_TABLESPACE=[old_ts]:[new_ts]
REMAP_TABLESPACE=[old_ts]:[new_ts]
DIRECTORY=[oracle directory]
LOGFILE=[logfile]
PARALLEL=[a number of processes]
STATUS=[time in sek]
JOB_NAME=[job name]
schemas=[schema]
include=TABLE:"LIKE '[table_prefix]%'"
include=VIEW:"LIKE '[view_prefix]%'"
include=SYNONYM:"LIKE '[synonym_prefix]%'"
include=PACKAGE:"LIKE '[package_prefix]%'"
include=INDEX:"LIKE '[index_prefix]%'"
include=TRIGGER:"LIKE '[trigger_prefix]%'"
include=SEQUENCE:"LIKE '[sequence_prefix]%'"

7 Parameters

7.1 include/exclude param

  • include #only object with iclude will be exported/imported
  • exclude #all objects exclude few followed by exclude parameter will be exported/imported

7.2 parallel param

  • oracle white paper - Parallel Capabilities of Oracle Data Pump
  • only for enterprise edition
  • significantly reduce the elapsed time for large indexes
  • split job between more worker processes
  • MCP(Master Control Process) controlling the pool of worker processes

7.2.1 remarks

  • set the degree of parallelism to two times the nr of CPU
  • for expdp parallel <= nr of dump files
  • for impdp parallel <= nr of files in the dump file set

7.2.2 expdp

  • in typical export there are both data and metadata, the first worker process will unload the metadata: ts, schemas, grants, roles, tables, indexes etc. all the rest unload the data, if the metadata worker finishes and there are still data objects to unload it will start unloading the data too

7.3 dumpfile param

  • PX process ( Parallel Execution Processes)
  • parallel param <= dumpfile param
  • during expdp each woker or parallel execution Process requires exclusice access to the dump file, so having fewer dump files than the degree of parallelism will mean that some workers of PX processes will be unable to write the information they are exporting
  • during impdp the workers and PX processes can all read from the same files, but parallel parameter should be significantly larger than the number of files in the dump file set

7.4 version param

  • expdp version=10.2

8 Checking current state of dpump process

  • SELECT job_name,state FROM v$datapump_job
  • SELECT * FROM v$datapump_session

9 Estimating dump size:

  • EXPDP [user]/[pass] FULL=y ESTIMATE_ONLY=y DIRECTORY=[oracle_dir] logfile=[logfile]
  • !warning
    during estimation, dump size will be lower than original db size, because for indexes during dump only their definition is written, and finally indexes are rebuid, you must notice that index is based on ROWID which changing during dump

10 Importing tables:

  • IMPDP [user]/[pass] TABLES=[tabela] REMAP_SCHEMA=[src_schema]:[dst_schema] DIRECTORY=[directory] PARALLEL=[nr] DUMPFILE=[dumpfile]

11 Dpump by NETWORK_LINK:

source db activity:

  • CREATE DATABASE LINK [link_name] CONNECT TO [src_user] IDENTIFIED BY [src_password] USING [src_tnsname]
  • choose mode IMPDP or EXPDP (the difference is that IMPDP connect with source db, get data and write them
    directly to destination db, to specified schema, in the other side EXPDP write data only to file)
  • IMPDP [dst_user]/[dst_password] NETWORK_LINK = [link_name] DIRECTORY = [dir_name] SCHEMAS = [schema_name] LOGFILE = [logfile_name]
  • EXPDP [dst_user]/[dst_password] NETWORK_LINK = [link_name] DIRECTORY = [dir_name] SCHEMAS = [schema_name] LOGFILE = [logfile_name] DUMPFILE = [file_name]

12 Console:

  • EXPDP/IMPDP [user]/[pass] ATTACH=[job_name]
  • commands:
    COMMANDDESC
    help
    C-clog mode => console mode
    exit_clientconsole mode => system
    continue_clientconsole mode => log mode
    add_file=plik1,plik2add files
    kill_jobstop job end exit
    pararell=[nr]change numbers of process
    start_jobstart job which was stoped
    status
    stop_job[=IMMEDIATE]stop job for a while

13 ERROR

13.1 ORA-39087

  • failed directory

13.2 ORA-29283

  • failed grants for directory

13.3 ORA-31633

[ symptom ]

  • unable to create master table "SYSTEM.EXPDP_MANUAL"

[ solution ]

  • drop table system.expdp_manual

ORACLE LISTENER

Protocol (B28317-02/4)

ProtocolParameterDescription
IPCPROTOCOLSpecify ipc as the value.A protocol used by client applications that resides on the same node as the listener to communicate with the database. IPC can provide a faster local connection than TCP/IP.
KEYSpecify a unique name for the service. Oracle recommends using the service name or the Oracle System Identifier (SID) of the service.
Example: (PROTOCOL=ipc)(KEY=sales)
TCP/IPHOSTSpecify the host name or IP address of the computer.
PORTSpecify the listening port number.
Example:(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)

lsnrctl

COMMANDDESCRIPTION
show displaymode
set displaymode compat/normal/verbose/raw
servicesinformation about the database services, instances, and service handlers (dispatchers and dedicated servers) to which the listener forwards client connection requests.
lsnrctl [command] [listener_name]
lsnrctl help
lsnrctl help [command]

Misc

  • Allways verify service which status is READY and then at client side, put SERVICE_NAME value in tnsnames.ora

MsSQL (Database Gateway)

  1. http://docs.oracle.com/cd/B28359\_01/gateways.111/b31043/conf\_sql.htm#CIHGDGFC
  2. Install gateway from database package ../gateways/runInstaller
  3. edit $ORACLE_HOME/dg4msql/admin/initdg4msql.ora
    • It is possible to create many files ex.: initdg4msql.ora, initdg4msql1.ora, initdg4msql2.ora for many connections
    • HS params: http://docs.oracle.com/cd/B28359\_01/gateways.111/e10311/apd.htm
      HS_FDS_CONNECT_INFO=[MsSQL_hostname]:1433//[db_name]
      HS_FDS_RECOVERY_ACCOUNT=RECOVERMsSQL account
      HS_FDS_RECOVERY_PWD=RECOVERMsSQL account password
      HS_FDS_TRANSACTION_LOG=MsSQL table name for transaction logs
      HS_FDS_TRACE_LEVEL=OFF/ON/DEBUG
  4. MsSQL - create RECOVER login
  5. MsSQL - create RECOVER schema
  6. MsSQL - create RECOVER user
    • Owned Schemas: RECOVER
    • Database role membership: db_datareader, db_datawriter, db_ddladmin
  7. create MsSQL table HS_TRANSACTION_LOG at RECOVER schema, which comprise columns below: (if table name is different it must be set parameter HS_FDS_TRANSACTION_LOG at initdg4msql.ora)with columns:
    • GLOBAL_TRAN_ID char(64) not null
    • TRAN_COMMENT char(255)

    add ALL role for above table to PUBLIC

    For automatization above steps use script $ORACLE_HOME/dg4msql/admin/dg4msql_tx.sql as RECOVER user on MsSQL

    • isql -U[recover_account] -P[recover_account_pass] [-Sserver] -i[dg4msql_tx.sql]
    • osql -U[recover_account] -P[revocer_accout_pass] -d[dbname] -i[script]
    • MsSQL do not accept semicolon at the end of line, at last line put "go"
  8. run script for superadmin tranlation views:
    • create view dbo.ALL_CONS_COLUMNS_vw and grant SELECT to PUBLIC
    • create view dbo.ALL_IND_COLUMNS_vw and grant SELECT to PUBLIC
    • create view dbo.USER_CONS_COLUMNS_vw and grant SELECT to PUBLIC
    • create view dbo.USER_IND_COLUMNS_vw and grant SELECT to PUBLIC

    $ORACLE_HOME/dg4msql/admin/dg4msql_cvw.sql isql -U[system_admin_user] -P[system_admin_pass] [-Sserver] [-ddatabase] -e -i dg4msql_cvw.sql

  9. edit listener.ora
    SID_LIST_MSSQL=
      (SID_LIST=(SID_DESC=(SID_NAME=[gateway_sid])(ORACLE_HOME=[oracle_home_path])(PROGRAM=dg4msql)))
    MSSQL=
      (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=[local_hostname])(PORT=[port#])))
    
  10. edit tnsnames.ora
    • for CONNECT_DATA=(SID=[gateway_sid]) # gateway_sid must be the same as listener.ora SID
    • add parameter HS=OK (Oracle Heterogeneous Service)
    [ALIAS]=
     (DESCRIPTION=
       (ADDRESS= (PROTOCOL=TCP)(HOST=[local_hostname])(PORT=[port#]))
       (CONNECT_DATA=(SID=[gateway_sid]))
       (HS=OK))
    

ERROR

ORA-28545

[ symptom ]

ORA-28545: error diagnosed by Net8 when connectiong to an agent error
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from...

[ solution ]

  • listener is not active

ORA-28513

[ symptom ]

ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from...

[ solution ]

  • check file name $ORACLE_HOME/dg4msql/admin/initdg4…

ERROR

ORA-01150check listener.ora
ORA-12154check tnsnames.ora, client does not even try to connect to remote server
Linux Error: 110: Connection timed out dla lsnrctl statuscompare /etc/hosts via listener.ora
ORA-12560for winshit check service at services.msc
ORA-12514 TNS:listener does not currently know of service requested in connectcheck lsnrctl status at server side, care about name of services
ORA-12545 client can't connect to serverfor cluster check client side /etc/hosts, and put VIP addresses

ORACLE SQLPLUS

col [column] format a[nr]
set heading off
set feedback offset linesize [nr] - value between 1- 32767
set termout offset pagesize [nr] - "0" means no limit
set serveroutput on size unlimited - means no buffer limit for output dbms_output
set numwidth 50 - wyłączenie zaokrąglania cyfr
config $oracle_home/sqlplus/glogin.sql
set linesize 1000
set pagesize 1000
set sqlprompt "_user _connect_identifier> "
connectint without tnsnames.ora:
- client10g:
sqlplus user/password@//hostname:port_nr/db_sid
- client9i:
sqlplus user/password@"(descripteion=(address_list=(address=(pototcol=tcp)(host=hostname)(port=port_nr)))(connect_data=(sid=db_sid)))"
sqlplus linux vs previous command:
install rlwrap
rlwrap sqlplus

2008-10-01

ORACLE MANAGEMENT

compile invalid objects

exec dbms_utility.compile_schema('[USERNAME]')

desc table from dictionary:

SELECT * FROM dictionary;
SELECT * FROM dict_columns WHERE table name='[table_name]';

desc package:

desc [package_name];

check init parameters valid values:

SELECT * FROM v$parameter_valid_values;

prepare script to rebuild indexes:

SELECT 'ALTER INDEX [user].' || segment_name || ' REBUILD TABLESPACE [ts];' FROM dba_segments WHERE segment_type='INDEX' and owner='[user]';

check tables with tablespaces:

SELECT segment_name,tablespace_name,owner FROM dba_segments WHERE segment_type='TABLE' and owner='[user]' ORDER BY tablespace_name;

prepare script for roleback pending transactions:

SELECT 'EXEC DBMS_TRANSACTION.ROLLBACK_FORCE(''' || local_tran_id || ''');' FROM dba_2pc_pending WHERE upper(state)='PREPARED';

check chars:

SELECT '''''' FROM dual;

add message to alertlog:

EXEC sys.dbms_system.ksdwrt(2, 'My own message');

set date:

ALTER SESSION SET nls_date_format ='yyyy-mm-dd hh24:mi:ss';

restrict access:

ALTER SYSTEM [ENABLE | DISABLE] RESTRICTED SESSION
SELECT logins FROM v$instance;

check client NLS:

sql> @[%NLS_LANG%] - na w$
sql> @[$NLS_LANG] - na nixach

roll sequence:

SELECT [seq_name].nextval FROM dual;

check current session id :

SELECT sid FROM v$session WHERE audsid = sys_context('userenv','sessionid');

check user with process:

SELECT p.addr,s.machine,s.username,p.spid FROM v$process p,v$session s WHERE p.addr=s.paddr AND s.type != 'BACKGROUND' ORDER BY 3;

check current SQL:

SELECT u.sid, substr(u.username,1,12) user_name, s.sql_text FROM v$sql s,v$session u WHERE s.hash_value = u.sql_hash_value AND sql_text not like '%from v$sql s, v$session u%'ORDER BY u.sid;

check data from past:(for rows which were DELETE,INSERT,UPDATE):

SELECT * FROM [table] as of timestamp to timestamp('2008-01-01 10:00:00','YYYY-MM-DD HH24:MI:SS');
SELECT * FROM [table] AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '60' minute;
depend on param UNDO_RETENTION [sec] setting dynamicaly
SELECT tuned_undoretention as time[s] FROM v$undostat;

check timezone in database and OS:

SELECT dbtimezone FROM dual;
SELECT sessiontimezone FROM dual;
SELECT systimestamp FROM dual;
SELECT current_timestamp FROM dual;

check DDL source:

SET LONG 100000
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘PRETTY’, false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘SEGMENT_ATTRIBUTES’, true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘STORAGE’, true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘TABLESPACE’, true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘CONSTRAINTS’, false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘REF_CONSTRAINTS’, false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, ‘CONSTRAINTS_AS_ALTER’, false);
SELECT DBMS_METADATA.GET_DDL (OBJECT_TYPE, OBJECT_NAME, USER) from dual;

SELECT text FROM dba_source WHERE owner=[user] and name=[object_name] and type=[type] ORDER BY line;
SELECT name,text FROM dba_source WHERE owner=[user] and type=[type] and lower(text) like lower('%[text]%');

e.g. check source of tablespace UNDO_TS:

set long 2000
SQL> SELECT dbms_metadata.get_ddl('TABLESPACE','UNDO_TS') from dual;

e.g. check source of user SYSMAN:

SELECT dbms_metadata.get_ddl('USER','SYSMAN') FROM dual;

check long operation progress:

SELECT sofar,totalwork,time_remaining/60 MIN,message FROM v$session_longops where sid=[sid];

remove data:

- with tablespace UNDO:
DELETE FROM [table_name];
commit;
- without tablespace UNDO, reset HWM, without WHERE:
TRUNCATE TABLE [table_name]

check last 10 session from remote hosts:

SELECT * FROM (SELECT a.session_id,b.machine,b.logon_time FROM v$active_session_history a,v$session b WHERE a.session_id=b.sid and upper(b.machine) not like '%[SERVER_NAME]%' GROUP BY a.session_id,b.machine,b.logon_time ORDER BY b.logon_time) WHERE rownum <10;

run script to compile all objects:

[ORACLE_HOME]/rdbms/admin/utlrp.sql
which launch script
[ORACLE_HOME]/rdbms/admin/utlprp.sql with param=0
- param=0 - parallel run equal CPU_COUNT
- param=1 - single run
- parametr=N - N number of parallel run

run SQL from bash:

script.sh
sqlplus /nolog lsls <<EOF
connect / as sysdba
select username from dba_users;
EOF

set large page for winshit (Oracle9i 64-bit for Windows and Oracle10g 32-bit and 64-bit for Windows):

turn off lock_sga in init file
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_[home] - ORA_LPENABLE = 1

ORACLE REDOLOGS

add new group:
ALTER DATABASE ADD LOGFILE GROUP [nr] ('[file]','[file]') size [size]M;
ALTER DATABASE ADD LOGFILE ('[file]') size [size]M;

remove group (group must by inactive - check v$log):
ALTER DATABASE DROP LOGFILE GROUP [group_nr];
add file to group:
ALTER DATABASE ADD LOGFILE MEMBER '[file]' TO GROUP [goup_nr];
remove file from group:
ALTER DATABASE DROP LOGFILE MEMBER '[file]';
turn on/off archivelog (mount mode):
ALTER DATABASE ARCHIVELOG|NOARCHIVELOG;
force archivie and switch redolog:
ALTER SYSTEM ARCHIVE LOG CURRENT;
(mount mode)
ALTER SYSTEM ARCHIVE LOG GROUP [group_nr];
archivelog info:
ARCHIVE LOG LIST;
switch redolog:
ALTER SYSTEM SWITCH LOGFILE;
 

force writing DIRTY BLOCKS from buffers (buffer cache) to datafile:
ALTER SYSTEM CHECKPOINT;
also for:
- change redologs(?)
- achieve LOG_CHECKPOINT_INTERVAL
- finish LOG_CHECKPOINT_TIMEOUT
- set ts of database in BACKUP mode

(SCN will be change only in header file of backup tablespace. During backup, in the other header files, SCN will be change normally without feedback with SCN in backup tablespace.
Tablespace after BACKUP mode adjust SCN to other files)
natomiast o ile zmiana redologów powoduje checkpoint to brak takiej zależności w drugą stronę


checkpoint (write blocks from cache to files):
ALTER SYSTEM CHECKPOINT;
1a. SCN in logfiles not change
1b. SCN in header datafiles change

 
check files checkpoint and SCN:
SELECT file#,checkpoint_change;checkpoint_time FROM v$datafile_header;
to show SCN must be set SQLPLUS param:
set numwidth 18
check current SCN (change every 3 sec.):
SELECT current_scn FROM v$database;
SELECT dbms_flashback.get_system_change_number FROM dual;
set rolling grop of redologs:
ARCHIVE_LAG_TARGET=1800 (default 0)

redolog is writing again only when data from it war written to datafiles and to archivelogs

switch redolog process:
ALTER SYSTEM SWITCH LOGFILE;
1a. new redolog group get status CURRENT witch current SCN,
1b. present redolog group get status ACTIVE it means that it is necessary to recover,
2a. oracle wait for finish writing data to datafile

2b. SCN in header files is changed(SELECT checkpoint_change# FROM v$datafile_header;) is equal SCN of current redolog group (SELECT first_change# FROM v$log;)
2c. present redolog group change status from ACTIVE to INACTIVE (SELECT * FROM v$log;)

check redolog load:
SELECT le.leseq "Current log sequence No",
100*cp.cpodr_bno/le.lesiz "Percent Full",
cp.cpodr_bno "Current Block No",
le.lesiz "Size of Log in Blocks"
FROM
x$kcccp cp,
x$kccle le
WHERE
le.leseq =cp.cpodr_seq
and bitand(le.leflg,24)=8;

x$kcccp - kernel cache, controlfile checkpoint progress
x$kccle - kernel cache, controlfile logfile entry

VIEWS
V$LOG
V$LOGFILE
V$LOG_HISTORY
V$ARCHIVE_DEST
V$ARCHIVED_LOG