LINUX COMMANDS

Ściąga Admina Komentarze (0) »
tail -f [plik] show file online
ctrl + C, fg [nr jobs], jobs background process manager>/td>
iptables -L -t nat -v|drop list all rules from chain nat without drop
iptables -m [cel] –help goal desc
sort -u sort and output only unique rows
ctrl z pause
bg [program] put on background
jobs show background jobs
fg [nr z jobs] recover from background
find / -perm +4000 search files with setuid for owner, 2000 for group
find -perm -002 -mtime,-atime,-ctime -n,+n search files with write privilege at least, -mtime (modyfy),-atime (access),-ctime(time change privileges),-n (within n days),+n (more then n days ago)
find / -name plik -exec /bin/execfile {} \; run execfile on search file
find -type d -exec /bin/chmod 774 {} \; change privileges only on directories
lspci listuje urządzenia dla pci podobnie lsusb
date[opcje], hwclock –systohc konfiguracja daty
strobe skanowanie
scripts wyciąganie tekstu z binarek
file [plik] pokazanie rodzaju pliku
file -s [raw_device] pokazanie filesystemu
md5sum -b [plik] suma md5 z pliku
lsmod lista modułów
strings [plik] wypisanie np. z pliku w C ciagów znaków
uniq -d wypisuje tylko linie powtarzajace sie
strace [polecenie] 2> [plik] zapis w [plik] informaciji o wykonywanych przez polecenie instrukcjach
strace -f -e open [polecenie] jw tyko -f procesy potomne, -e open otwierane pliki
echo “$((`date -d ‘10 mar’ +%s`-`date +%s`))/86400″|bc obliczanie dni pomiędzy określonymi datami
zcat /usr/src/2.4.32-libata1.patch.gz | patch -p1 patchowanie jądra – bedąc w katalogu ze źródlami
logger [tekst] wpis do logów dowolnego tekstu
sed -e’s/a//g’ edytor liniowy
shc -f kompilacja plików w bashu
expect automatyczne wykonywanie programów
which [polecenie] ścieżka polecenia
locate [plik] proste wyszukiwanie pliku
man -k [slowo],apropos [slowo] wyszukiwanie manuali w których występuje [slowo]
/proc/sys/kernel/printk ustawienia dotyczace komunikatow
mbmon odczyty z czujnikow na plycie glownej
ab testowanie serwera Apache
mii-tools testowanie linkow
tcpdump -D wypisuje wszystkie interfejsy
tcpdump ‘tcp[tcpflags] & {tcp-syn) !=0′ nasłuch pakietow SYN
tcpdump -nv dst and ‘icmp[icmptype] = icmp=echo’ nasłuch tylko icmp-echo
hdparm -it /dev/hda testowanie prędkości dysku
iperf -s|iperf -c [IP servera] testowanie prędkości łącza komendy odpowiednio dla serwera i dla klienta
ethtool zestawienie kart sieciowych
type [program] pokazuje ścieżkę do programu
SVGAtextmode 80×40x9 ustawianie rozdielczości pod konsolą
cfdisk /dev/hda1 do kasowania i tworzenia partycji
mkfs -t xfs -f /dev/hda1 do formatowania partycji
man [polecenie]| col -b >[plik] zamiana mana na plik tekstowy
ldd [polecenie] pokazuje z jakich bibliotek korzysta polecenie
dpkg –get-selections “*” wyświetla listę zainstalowanych pakietów
watch powtarzanie polecen z wyswietlaniem wyniku na konsole
mysql>load data local infile ‘[path_do_pliku]‘ into table [nazwa_tabeli] fields terminated by ‘[znak]‘([kolumna1],[kolumna2]); wrzut danych do tabeli mysql
ps auxSwwf pokazuje procesy z wykorzystaniem zasobow, w strukturze zaleznosci
dpkg-reconfigure locales rekonfiguracja ustawień lokalnych
cp /usr/share/zoneinfo/Europe/Poland /etc/localtime zmiana ustawień strefy czasowej
locale wyświetlenie ustawień lokalnych, w cudzysłowie te które pobierane ze zmiennej LANG, bez cudzysłowia te konfigurowalne indywidualnie
locale -a wyświetlenie dostępnych ustawień
gbd debuger c
netselect-apt wybór najszybszego repozytorium
tzconfig,tzselect konfiguracja strefy czasowej
dircolors -p >.dircolorseval `dircolors -b .dircolors` zmiana kolorów plikow
smbclient -L [serwername] -U [user] -W [workgroup] przeglądanie zasobów na serwerze w$
mount -t cifs //[serwername]/[share] /[mount_point] montowanie zasobów w$
dos2unix [file] konwersja plików z w$
dmidecode |grep MB sprawdzanie podpięcia pamięci
dmidecode -s sprawdzanie wersji biosu, chassis,serwer,tag etc.
blkid sprawdzanie uuid, label urządzeń blokowych
unset usuwanie zmiennych środowiskowych
chkconfig –list sprawdzenie uruchamianych usług
basename wyciaganie samej nazwy bez ścieżki
echo ${zm:0:3} wyciąganie ze zmiennej zm od 1 do 3 pozycji w prawo
command1 && command2 gdy wynik błędu z command1 jest 0 to wykonuje command2
command1 || command2 gdy wynik błędu z command1 jest różne od 0 to wykonuje command2
tarowanie z wykluczeniem plikow tar -cf [archive_name].tar [dir_path] –exclude [dir_path]/[exclude_dir] –exclude [dir_path]/[exclude_dir]
tarowanie z usunięciem i wyszukaniem tar –remove-file -czf [archive_name].tar.gz -C [dir_path] `find [dir_path] -name “[name]\.*” -exec basename {} \;`
tarowanie logow find [dir_logpath] -mtime 18 -exec tar –remove –append –file=[destination_path]/filename`date -d “18 days ago” +%F`.tar {} \;
sprawdzenie zawartości tar -tf [plik].tar
sprawdzenie aliasów alias -p
szukanie plików w bieżącym katalogu zmodyfikowanych między 495 a 312 dniem find ./ -maxdepth 1 -mtime +312 -mtime -495 -exec basename {} \;
dodawanie plików do istniejącego archiwum tar –append –file=[archiwum].tar plik
ładnie sformatowany output z basha awk ‘{printf(”%-25s%-10s%-10s%-10s%\n”,$1,$2,$3,$4)}’
ethtool -s eth0 speed 10 duplex half autoneg off zmiana ustawień karty
ETHTOOL_OPTS=”autoneg off speed 100 duplex full” wpis do ifcfg-ethx
ssh-keygen -t rsa
cat id_rsa.pub >> .ssh/authorized_keys
generacja kluczy (pc local)
dołączenie klucza do zaufanych (pc remote)
alternatives –install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/jdk1.6.0_17/jre/plugin/i386/ns7/libjavaplugin_oji.so 2 add symbolic link /usr/lib/mozilla/plugins/libjavaplugin.so to alternatives with name libjavaplugin.so and with source /usr/java/jdk1.6.0_17/jre/plugin/i386/ns7 and priority 2
change default priority alternatives –config libjavaplugin.so
check alternatives alternatives –display libjavaplugin.so
chkconfig [command]
on
turn on command during start
partprobe refresh table partitions
cpio -t < file.cpio
cpio -id < file.cpio
check cpio
unpack cpio
getfacl [dir] | [file] show extended acl list
setfacl -m user:[user]:rwx [dir] | [file] set extended acl
vmstat [delay] [how_many] virtual memory stats
iostat [delay] [how_many] cpu and i/o stats
sar [delay] [how_many] collected stats
sar -r collected mem stats
pwck,grpck verify passwd and group file
paste file1 file2 > file3 concatenate files by columns
cut -f3 file get 3-rd column from file
cut -c3-5 file get 3-5 character from file

ORACLE RECOVERY

Oracle Komentarze (0) »

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’;

ORACLE MEMORY

Oracle Komentarze (0) »

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

Oracle Komentarze (0) »

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

Oracle Komentarze (0) »

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

Oracle Komentarze (0) »

for more read documentation
format signs:

%s set nr
%p piece of set nr
%c copy nr for multi copy
%d database name
%I database id
%t time index in sec
%D day of month
%M month
%Y year
%T year,month,day YYYYMMDD
%u eight digit name consist of set nr and time
%U uniq file name (necessary for many channel), consist of database id,day nr,month,year,file nr
%F for 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] lub

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; # czyszczenie konfiguracji dla danego parametru
example of 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
example of backup script:
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 example of backup script above we get four entries

!setting tags is not neccessary because in default you get nice format TAGYYYYMMDDTHH24MISS

list commands:

rman> list all script names;
rman> list copy of database;
rman> list backup [summary];
rman> list backup by file;
rman> list backup of database [summary];
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

rman> crosscheck backup | archivelog | copy #check if backup files are still exist and they obtain status AVAILABLE or EXPIRED, (you can test 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 commands: 
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 olso) 
rman> report obsolete redundancy 7;
rman> report obsolete recovery window of 7 days; 

delete commands:

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

backup commands:

rman> backup as copy database – copy at files which format is simmilar as datafiles
rman> backup as backupset database – copy at set?
rman> backup database;

other commands:

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 database for catalog:
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 on schema [rman_user]):
rman catalog [rman_user]/[pass]@[sid_rman_base] lub
rman> connect catalog [rman_user]/[pass]@[sid_rman_base]
rman> create catalog
register database in catalog (in table [rman_user].db occur new entry):
rman catalog [rman_user]/[pass] target [sys_user]/[pass]@[sid] lub
rman> connect catalog [rman_user]/[pass]@[sid_rman_base]
rman> connect target [sys_user]/[pass]@[sid]
you get:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20001: target database not found in recovery catalog
rman> register database;

base tables of 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
in default is incremental backupset
levels can be 0,1,2,3,4
backupset on level 0 – all blocks like FULL BACKUP
backupset on 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)

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];
}

recovery:
all db:
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

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’;
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;

odtwarzanie do momentu w czasie:
należy ustawić zmienną:
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;
}
rman> alter database open resetlogs
! wszystko musi się znaleźć w jednym bloku run ponieważ inaczej będzie odtwarzał do stanu bieżącego a nie do punktu w czasie, z uwagi na fakt że set będzie się odnosił tylko do instrukcji RESTORE a już nie do RECOVER

! jezeli już raz odtwarzaliśmy do momentu w czasie i otworzyliśmy bazę z opcją RESETLOGS, to w przypadku gdy okazało się że nie trafiliśmy, a chcielibyśmy odtworzyć inny moment w czasie to dostaniemy komunikat:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time

należy wtedy wykonać zapytanie:
rman> list incarnation of database;

otrzymamy listę wszystkich tzw. inkarnacji, ponieważ w momencie odtwarzania do punktu w czasie i otwierania bazy w trybie RESETLOGS otrzymujemy komunikat:
database opened
new incarnation of database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

tak więc lecąc dalej wykonujemy (na niezamontowanej bazie):
rman> reset database to incarnation [nr inkarnacji];
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 dat
abase open resetlogs;

!Jeżeli chcemy podać inną lokalizację plików źródłowych:
rman> catalog start with ‘[backup_datafile_path]‘


ORACLE ERRORS

Oracle Komentarze (0) »

błąd przy uruchamianiu bazy:
Tue Jun 17 02:15:54 2008
Shutting down archive processes
Tue Jun 17 02:15:59 2008
ARCH shutting down
ARC2: Archival stopped
wynika z faktu że uruchomiły się 3 procesy archiwizujące ARC0, ARC1, ARC2 a parametr bazy:
log_archive_max_processes=2
błąd przy instalacji bazy na linuxie z serwerem xorg:
potrzeba instalacji xorg-X11-deprecated-libs
błąd przy instalacji produktów oracle:
/usr/lib/libXtst.so.6: undefined reference to `__stack_chk_fail@GLIBC_2.4′
/usr/lib/libXtst.so.6: undefined reference to `__fprintf_chk@GLIBC_2.3.4′
/usr/lib/libXtst.so.6: undefined reference to `__sprintf_chk@GLIBC_2.3.4′
ściągnąć ze strony oracle (w linkach jest namiar) biblioteki

ORACLE DPUMP

Oracle Komentarze (0) »

crate oracle directory by dba:
CREATE OR REPLACE DIRECTORY [oracle_dir] as ‘[path_to_directory_on_disk]‘;
remove oracle directory:
DROP DIRECTORY [oracle_dir];
check oracle directory:
SELECT directory_name, directory_path FROM dba_directories;
grant privileges to user:
GRANT READ, WRITE ON DIRECTORY [katalog oracle] TO [user];
expdp:
EXPDP [user]/[pass] SCHEMAS=[schema] LOGFILE=[logfile] DIRECTORY=[oracle dir] DUMPFILE=[dumpfile] PARALLEL=[parallel write to many files - use witch option %U as sufix in file name]
impdp:
IMPDP [user]/[pass] DUMPFILE=[plik dumpa] PARFILE=imp.par

[imp.par]
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]

other:
DUMPFILE=dpump_dir1:plik1.dpump, dpump_dir2:plik2.dmp
FILESIZE=2G

chack current state of dump process:
SELECT job_name,state FROM v$datapump_job;
SELECT * FROM v$datapump_session;

estimate dump size:
EXPDP [user]/[pass] FULL=y ESTIMATE_ONLY=y DIRECTORY=[katalog] 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

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

dpump by NETWORK_LINK:
- on source db:
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]
 
connect to console:
EXPDP|IMPDP user/pass ATTACH=[nazwa_joba]
ctrl C #go to console mode from log mode

console commands:
exit_client #go from console mode to system
continue_client #go from console mode to log mode
help
add_file=plik1,plik2 #add files
kill_job #stop job end exit
pararell=[nr] #change numbers of process
start_job #start job which was stoped
status
stop_job[=IMMEDIATE] – stop job for a while



ORACLE LISTENER

Oracle Komentarze (0) »

pamiętać należy że jeżeli dodajemy drugą instancję lub bazę musimy sprawdzić czy w pliku init.ora jest:
LOCAL_LISTENER=[nazwa listenera]
i albo go wywalić albo wpisać poprawnie ponieważ potem przy komendzie
LSNRCTL.EXE opcja STATUS będzie podawana konfiguracja nie z tego pliku listener.ora

$oracle_home/bin/lsnrctl korzysta z pliku $oracle_home/network/admin/listener.ora umieszczonego w tym samym $oracle_home
sqlplus korzysta z pliku $oracle_home/network/admin/tnsnames.ora w zależności od ustawionej zmiennej systemowej ORACLE_HOME
uruchamianie:
lsnrctl start [listener_name]
w winshit wywołanie po raz pierwszy stworzy nowy service

konfiguracja listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = [sid_pierwszej_bazy])
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = [IP])
(PORT = 1521)
)
)
)

SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = [sid_drugiej_bazy])
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
)
)

LISTENER1 =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = [IP])
(PORT = 1522)
)
)


LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=[ip1])(PORT=[port]))
(ADDRESS=(PROTOCOL=tcp)(HOST=[ip2)(PORT=[port2]))
)

)

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=db1)
(ORACLE_HOME=d:\oracle\product\10.2.0\db_1)
)
(SID_DESC=
(SID_NAME=db2)
(ORACLE_HOME=d:\oracle\product\10.2.0\db_1)
)
) 

tnsnames.ora:
alias=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(Host=host.domain)
(Port=1521)
)

(CONNECT_DATA=
(SID=dbsid)
)
)

ERRORS:
ORA-01150 #check listener.ora
ORA-12154 #check tnsnames.ora

Linux Error: 110: Connection timed out dla lsnrctl status #compare /etc/hosts via listener.ora

ORA-12560 – dla w$ sprawdzić w services.msc czy serwis został uruchomiony

ORACLE SQLPLUS

Oracle Komentarze (0) »

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
WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj