wtorek, 10 grudnia 2013

Export job

Działania wykonujemy na użytkowniku system
Najpierw trzeba utworzyć folder do zapisu eksportów (domyślnie DATA_PUMP_DIR)


SQL> CREATE OR REPLACE DIRECTORY tmp AS '/tmp'; dla Linux
SQL> CREATE OR REPLACE DIRECTORY tmp AS 'c:\bck'; dla Windows


nadajemy uprawnienia do odczytu i zapisu

SQL> GRANT read, write ON DIRECTORY tmp TO system;
wszystkie skrypty dotyczą: eksportu zawierającego strukturę i dane
parametr version ustawiony jest na latest można również ustawić na compatible


Mamy do dyspozycji 4 podstawowe rodzaje Export Job

database- full export mode
schema mode np HR
table mode
tablespace mode


Skrypty PL/SQL

1.full export mode

DECLARE
  hd  NUMBER;
BEGIN
  hd := DBMS_DATAPUMP.OPEN(operation => 'EXPORT',job_mode => 'FULL',remote_link => NULL,job_name => 'FULL EXPORT MODE',version => 'LATEST' );
  DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'Full Export Mode', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE  );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'COMPRESSION', value => 'NONE' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE', value => 'BLOCKS' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE_ONLY', value => 1 );
  DBMS_DATAPUMP.START_JOB(handle => hd);
END;
/


2.schema mode np HR

 DECLARE
  hd  NUMBER;
BEGIN
  hd := DBMS_DATAPUMP.OPEN(operation => 'EXPORT',job_mode => 'SCHEMA',remote_link => NULL,job_name => 'SCHEMA_EXPORT',version => 'COMPATIBLE' );
  DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'schema_export', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE  );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'COMPRESSION', value => 'NONE' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'USER_METADATA', value => 1 );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE', value => 'BLOCKS' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE_ONLY', value => 1 );
  DBMS_DATAPUMP.METADATA_FILTER( handle => hd, name => 'SCHEMA_LIST', value => '''HR''' );
  DBMS_DATAPUMP.START_JOB(handle => hd);
END;
/


3.table mode

 DECLARE
  hd  NUMBER;
BEGIN
  hd := DBMS_DATAPUMP.OPEN(operation => 'EXPORT',job_mode => 'TABLE',remote_link => NULL,job_name => 'TABLE_EXPORT',version => 'LATEST' );
  DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'table_export', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE  );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'COMPRESSION', value => 'NONE' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE', value => 'BLOCKS' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE_ONLY', value => 1 );
  DBMS_DATAPUMP.METADATA_FILTER( handle => hd, name => 'SCHEMA_LIST', value => '''HR''');
  DBMS_DATAPUMP.METADATA_FILTER( handle => hd, name => 'NAME_LIST', value => '''COUNTRIES'',''JOBS''' );
  DBMS_DATAPUMP.START_JOB(handle => hd);
END;
/


4.tablespace mode

 DECLARE
  hd  NUMBER;
BEGIN
  hd := DBMS_DATAPUMP.OPEN(operation => 'EXPORT',job_mode => 'TABLESPACE',remote_link => NULL,job_name => 'TABLESPACE_EXPORT',version => 'LATEST' );
  DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'tablespace_export', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE  );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'COMPRESSION', value => 'NONE' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE', value => 'BLOCKS' );
  DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'ESTIMATE_ONLY', value => 1 );
  DBMS_DATAPUMP.METADATA_FILTER( handle => hd, name => 'TABLESPACE_LIST', value => '''SYSAUX'',''TEMP'',''UNDOTBS1'',''USERS''' );
  DBMS_DATAPUMP.START_JOB(handle => hd);
END;
/


Inną metodą zaplanowania job-a jest użycie Oracle SQL Developer'a 
Szczegółowy opis znajduje się na Blogu Oracle Base

Poniżej przykład wygenerowanego skryptu przy pomocy Oracle SQL Developer

set scan off
set serveroutput on
set escape off
whenever sqlerror exit
DECLARE
    h1 number;
    errorvarchar varchar2(100):= 'ERROR';
    tryGetStatus number := 0;
begin
    h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'FULL', job_name => 'EXPORT_JOB_SQLDEV_61', version => 'COMPATIBLE');
    tryGetStatus := 1;
    dbms_datapump.set_parallel(handle => h1, degree => 1);
    dbms_datapump.add_file(handle => h1, filename => 'EXPDAT.LOG', directory => 'DATA_PUMP_DIR', filetype => 3);
    dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 1);
    dbms_datapump.add_file(handle => h1, filename => 'EXPDAT%U.DMP', directory => 'DATA_PUMP_DIR', filesize => '100M',  filetype => 1);
    dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);
    dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');
    dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');
    dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);
    dbms_datapump.detach(handle => h1);
    errorvarchar := 'NO_ERROR';
EXCEPTION
    WHEN OTHERS THEN
    BEGIN
        IF ((errorvarchar = 'ERROR')AND(tryGetStatus=1)) THEN
            DBMS_DATAPUMP.DETACH(h1);
        END IF;
    EXCEPTION
    WHEN OTHERS THEN
        NULL;
    END;
    RAISE;
END;
/

 

czwartek, 7 listopada 2013

Wykonanie kopi online i offline przy użyciu narzędzia RMAN


Wykonanie kopi zapasowej w trybie online

Wykonanie kopi zapasowej bazy

backup database;
 
Kopia wraz z archiwizacja dzienników powtórzeń
 

 backup database plus archivelog;
 
Kopia wraz z kompresja (nie koniecznie)
 
 backup as compressed backupset database;
 
Kopia kopii obrazu bazy danych
 
 backup as copy database;
 
Kopia przestrzeni tabel
 
backup tablespace users;
 
Kopia plików kontrolnych
 
 backup current controlfile;
 

Wykonanie kopi zapasowej w trybie offline


Zamykamy bazę poleceniem

shutdown immediate
 
Zamontujemy bazę poleceniem
 
startup mount
 

Wykonamy skompresowany backup bazy danych (nie koniecznie)

backup as compressed backupset database;

Uruchomienie bazy danych

alter database open;


wtorek, 5 listopada 2013

SPFILE

SPFILE tworzony jest komendą CREATE SPFILE na podstawie tekstowego pliku parametrów.
Jest to postać pliki binarnego utworzonego z tekstowego.
Uwaga jeśli SPFILE został utworzony lub nie znajduje się w odpowiedniej lokalizacji, system domyślnie skorzysta z tekstowego pliku parametrów init<SID_BAZY>.ora.

Utworzenie pliku


CREATE  SPFILE FROM PFILE=’/opt/oracle/init.ora’
CREATE  SPFILE=’/opt/oracle/xe_spfile.ora’ FROM PFILE=’/opt/oracle/init.ora’

Aby do startu instancji wykorzystać inny niż domyślny plik SPFILE należy w tekstowym pliku parametrów podać ścieżkę parametru SPFILE, np.

SPFILE=/opt/oracle/xe_spfile.ora

a następnie uruchomić serwer ORACLE komendą STARTUP np.

STARTUP PFILE=/opt/oracle/init.ora

Bywa często że trzeba wykonać eksport SPFILE do pliku tekstowego PFILE

CREATE PFILE=’/opt/oracle/init.ora’ FROM SPFILE=’/opt/oracle/orcl_spfile.ora’;




sobota, 19 października 2013

Sesje cz.2

Ekspresowe:) zabicie sesji:

ALTER SYSTEM KILL SESSION 'sid, serial#';

SQL> alter system kill session '268,1268';

Rozłączenie użytkownika z serwerem:

ALTER SYSTEM DISCONNECT SESSION 'sid, serial#';
SQL> alter system disconnect session '315,1223' immediate;

Rozłączenie użytkownika po zakończeniu bieżącej transakcji:
   
ALTER SYSTEM DISCONNECT SESSION 'sid, serial#'; POST     TRANSACTION'sid, serial#' - identyfikatory sesji użytkownika z perspektywy V$SESSION

UWAGA!
Nie można zabić bieżącej sesji
Zabijana sesja domyślnie jest zaznaczana  do zabicia (KILLED) i zabijana po zakończeniu wszystkich jej transakcji
 

Ponowna próba zbicia tej sesji generuje błąd ORA-00031: sesja zaznaczona do zlikwidowania

Na skróty
Inny sposobem jest użycie programu SQL Developer. Z głównego menu wybieramy TOOLS ->MONITOR SESSIONS-> wybieramy połączenie do schema np HR -> wybieramy SID -> kill session


poniedziałek, 16 września 2013

Uprawnienia do statystyk AWR

Skrypt dla AWR wprowadź użytkownika uprawnieniach administratora bazy
potrzebne uprawnienia

Prompt Enter DBA user name to grant AWR privileges to.

grant select on DBA_HIST_DATABASE_INSTANCE to &&usr;
grant select on DBA_HIST_SNAPSHOT to &&usr;
grant select on DBA_HIST_SNAP_ERROR to &&usr;
grant select on DBA_HIST_BASELINE to &&usr;
grant select on DBA_HIST_WR_CONTROL to &&usr;
grant select on DBA_HIST_DATAFILE to &&usr;
grant select on DBA_HIST_FILESTATXS to &&usr;
grant select on DBA_HIST_TEMPFILE to &&usr;
grant select on DBA_HIST_TEMPSTATXS to &&usr;
grant select on DBA_HIST_SQLSTAT to &&usr;
grant select on DBA_HIST_SQLTEXT to &&usr;
grant select on DBA_HIST_SQL_SUMMARY to &&usr;
grant select on DBA_HIST_SQL_PLAN to &&usr;
grant select on DBA_HIST_SQLBIND to &&usr;
grant select on DBA_HIST_OPTIMIZER_ENV to &&usr;
grant select on DBA_HIST_EVENT_NAME to &&usr;
grant select on DBA_HIST_SYSTEM_EVENT to &&usr;
grant select on DBA_HIST_BG_EVENT_SUMMARY to &&usr;
grant select on DBA_HIST_WAITSTAT to &&usr;
grant select on DBA_HIST_ENQUEUE_STAT to &&usr;
grant select on DBA_HIST_LATCH_NAME to &&usr;
grant select on DBA_HIST_LATCH to &&usr;
grant select on DBA_HIST_LATCH_CHILDREN to &&usr;
grant select on DBA_HIST_LATCH_PARENT to &&usr;
grant select on DBA_HIST_LATCH_MISSES_SUMMARY to &&usr;
grant select on DBA_HIST_LIBRARYCACHE to &&usr;
grant select on DBA_HIST_DB_CACHE_ADVICE to &&usr;
grant select on DBA_HIST_BUFFER_POOL_STAT to &&usr;
grant select on DBA_HIST_ROWCACHE_SUMMARY to &&usr;
grant select on DBA_HIST_SGA to &&usr;
grant select on DBA_HIST_SGASTAT to &&usr;
grant select on DBA_HIST_PGASTAT to &&usr;
grant select on DBA_HIST_RESOURCE_LIMIT to &&usr;
grant select on DBA_HIST_SHARED_POOL_ADVICE to &&usr;
grant select on DBA_HIST_SQL_WORKAREA_HSTGRM to &&usr;
grant select on DBA_HIST_PGA_TARGET_ADVICE to &&usr;
grant select on DBA_HIST_INSTANCE_RECOVERY to &&usr;
grant select on DBA_HIST_JAVA_POOL_ADVICE to &&usr;
grant select on DBA_HIST_THREAD to &&usr;
grant select on DBA_HIST_STAT_NAME to &&usr;
grant select on DBA_HIST_SYSSTAT to &&usr;
grant select on DBA_HIST_SYS_TIME_MODEL to &&usr;
grant select on DBA_HIST_OSSTAT_NAME to &&usr;
grant select on DBA_HIST_OSSTAT to &&usr;
grant select on DBA_HIST_PARAMETER_NAME to &&usr;
grant select on DBA_HIST_PARAMETER to &&usr;
grant select on DBA_HIST_UNDOSTAT to &&usr;
grant select on DBA_HIST_SEG_STAT to &&usr;
grant select on DBA_HIST_SEG_STAT_OBJ to &&usr;
grant select on DBA_HIST_METRIC_NAME to &&usr;
grant select on DBA_HIST_SYSMETRIC_HISTORY to &&usr;
grant select on DBA_HIST_SYSMETRIC_SUMMARY to &&usr;
grant select on DBA_HIST_SESSMETRIC_HISTORY to &&usr;
grant select on DBA_HIST_FILEMETRIC_HISTORY to &&usr;
grant select on DBA_HIST_WAITCLASSMET_HISTORY to &&usr;
grant select on DBA_HIST_DLM_MISC to &&usr;
grant select on DBA_HIST_CR_BLOCK_SERVER to &&usr;
grant select on DBA_HIST_CURRENT_BLOCK_SERVER to &&usr;
grant select on DBA_HIST_CLASS_CACHE_TRANSFER to &&usr;
grant select on DBA_HIST_ACTIVE_SESS_HISTORY to &&usr;
grant select on DBA_HIST_TABLESPACE_STAT to &&usr;
grant select on DBA_HIST_LOG to &&usr;
grant select on DBA_HIST_MTTR_TARGET_ADVICE to &&usr;
grant select on DBA_HIST_TBSPC_SPACE_USAGE to &&usr;
grant select on DBA_HIST_SERVICE_NAME to &&usr;
grant select on DBA_HIST_SERVICE_STAT to &&usr;
grant select on DBA_HIST_SERVICE_WAIT_CLASS to &&usr;

czwartek, 5 września 2013

Etapy zatrzymywania bazy Oracle

Cztery podstawowe etapy

1.SHUTDOWN;

domyślne, zatrzymywanie normalne,użytkownicy zostają rozłączeni, nie wymaga odtworzenia bazy

2.SHUTDOWN TRANSACTIONAL; 

zatrzymywanie po zakończeniu transakcji, nie wymaga odtworzenia bazy

3.SHUTDOWN IMMEDIATE;

zatrzymywanie natychmiastowe, użytkownicy zostają rozłączeni, nie wymaga odtworzenia bazy, transakcje wycofane

4.SHUTDOWN ABORT;

zatrzymywanie awaryjne, nagle przerwanie,wymaga odtworzenia bazy



wtorek, 27 sierpnia 2013

Proces nasłuchujący LISTENER

LISTENER 

to proces nasłuchujący na porcie domyślnie 1521 i ustalonym adresie IP. U Podstawowa konfiguracja wymaga podania nazwy serwera lub adresu IP oraz portu na którym ma nasłuchiwać. Wpisy dokonujemy w pliku listener.ora znajdującym się w katalogu $ORACLE_HOME/network/admin
np 
/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora


LISTENER  =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.1)(PORT = 1521))
)



Komendy

lsnrctl start -uruchamia
lsnrctl status -sprawdza status
lsnrctl stop -zatrzymuje


Procedura kontroli listenerów (procesu nasłuchu)

W konsoli wpisujemy lsnrctl status.
Jeżeli listener jest uruchomiony to komenda pokarze nam raport z  którego możemy się dowiedzieć na jakich portach listener nasłuchuje dla Oracle.
Możemy także sprawdzić czy  proces listenera działa przez sprawdzenie procesów za pomocą polecenie ps -ef|grep lsn

Komenda ta zwróci nam informacje m.in

  • wersja bazy danych Oracle
  • rodzaj systemu operacyjnego na którym postawiony jest system bazodanowy
Jak wyszukać procesy uruchomione przez Oracla?

wpisujemy do konsoli komende

ps -ef | grep ora

sobota, 24 sierpnia 2013

Etapy uruchamiania bazy Oracle

Trzy podstawowe etapy

1. Alokacja pamięci oraz uruchomienie procesów. 


Ten tryb wykorzystuje się w momencie utraty pliku kontrolnego, aby go ponownie utworzyć
Odczytuje parametry z pliku SPFILE (binarny) lub PFILE (tekstowy)

STARTUP NOMOUNT;


2. Montowanie bazy danych czyli odczyt pliku kontrolnego i sprawdzenie obecności i integralności 
pozostałych plików np. plików danych, redo logów...

STARTUP MOUNT;

ALTER DATABASE MOUNT; (uwaga stosuje się w przypadku gdy baza została już uruchomiona w
trybie NOMOUNT)


3. Otwarcie bazy dla wszystkich użytkowników

STARTUP;
ALTER DATABASE OPEN; (uwaga stosuje się w przypadku gdy baza została już uruchomiona w trybie MOUNT)

Czwarty etap rzadko wykorzystywany to tryb RESTRICT tylko dla adminów, którzy planują przeprowadzić procedurę eksportu, importu danych, aktualizacji struktury i chcą zablokować użytkowników na ten czas.



STARTUP RESTRICT;


Odblokowanie trybu RESTRICTED jest możliwe za pomocą komendy:


ALTER SYSTEM DISABLE RESTRICTED SESSION;

piątek, 23 sierpnia 2013

Odtwarzanie przestrzeni danych i plików systemowych

Odtwarzanie przestrzeni danych (tablespace)

RMAN> sql ' alter tablespace users offline' ;
RMAN> restore tablespace users;
RMAN> recover tablespace users;
RMAN> sql ' alter tablespace users online' ;


Odtwarzanie pliku spfile

RMAN> set DBID = 1399813587;
RMAN> startup nomount;
RMAN> restore spfile from autobackup;
RMAN> shutdown immediate;



Odtwarzanie pliku kontrolnego

RMAN> set DBID = 1399813587;
RMAN> startup nomount;
RMAN> restore controlfile from autobackup;
RMAN> shutdown immediate;


Odtwarzanie plików danych

RMAN> sql ' alter database datafile 3 offline' ;
RMAN> sql ' alter database datafile ' \u01\app\oracle\oradata\baza\users01. dbf' offline' ;
RMAN> restore datafile 3;
RMAN> restore datafile ' \u01\app\oracle\oradata\users01. dbf' ;
RMAN> rcover datafile 3;
RMAN> rcover datafile ' \u01\app\oracle\oradata\users01. dbf' ;
RMAN> sql ' alter database datafile 3 online' ;
RMAN> sql ' alter database datafile ' \u01\app\oracle\oradata\users01. dbf' online' ;


czwartek, 22 sierpnia 2013

Tryb Archivelog i autobackup control file

Linux

Uwaga
Domyślna opcja NOARCHIVELOG jest wystarczająca, aby zapewnić ochronę przed błędami systemu operacyjnego oraz błędami samej instancji bazy.

shutdown immediate
su - oracle
sqlplus /nolog
connect / as sysdba
startup mount exclusive;
alter database archivelog;
archive log start;
alter database open;


lub

shutdown immediate
startup mount
alter database archivelog;
alter database open;


Konfiguracja Archivelog

show parameter log_archive_dest;

Konfiguracja obszaru FRA (Flash Recovery Area)

alter system set db_recovery_file_dest_size=10G;
alter system set db_recovery_file_dest=' /opt/backup/fra' ;

Konfiguracja lokalizacji archivelog

alter system set log_archive_dest_1=' location=/opt/backup/archivelog1' ;
alter system set log_archive_dest_2=' location=USE_DB_RECOVERY_FILE_DEST' ;

su - oracle
rman target orcl/PASSWORD

Recovery Manager: Release 11.2.0.1.0 - Production on Fri Nov 30 07:09:30 2012Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: ORCL (DBID=1390091403)
RMAN> configure controlfile autobackup on;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN> exit

sobota, 17 sierpnia 2013

Instalacja klienta Oracle na Serwerze Aplikacji i stacji roboczej

Serwer Aplikacji/Terminali: 

1. Instalację przeprowadzać z konta posiadającego prawa administratora. 
2. Serwer w angielskiej wersji językowej powinien zostać ustawiony w opcji „Regional and Language Options” na polską lokalizację. 
3. Dodać prawo do „Create globar objects” dla kont użytkowników nie administratorów w systemie Windows:

1. Click Start, point to Programs, point to Administrative Tools, and then click Local Security Policy.
2. Expand Local Policies, and then click User Rights Assignment.
3. In the right pane, double-click Create global objects.
4. In the Local Security Policy Setting dialog box, click Add.
5. In the Select Users or Group dialog box, click the user account that you want to add, click Add, and then click OK.
--- Działa z grupą Autenticated users lub Domain users w przypadku Domeny.
6. Click OK. 


4. Skopiować wzorcowego TNSNAMES.ORA do lokalizacji „{Oracle Home}/network/admin”

XEbase =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.51)(PORT = 1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.52)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME =XE)
)
)
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.52)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME =XE test)
)
)


Stacja Robocza Klienta: 

Instalację przeprowadzać z konta posiadającego prawa administratora. 
1. Skopiować wzorcowego TNSNAMES.ORA do lokalizacji „{Oracle Home}/network/admin”

np:

KZXE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.27)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.28)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE2)
)
)
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.28)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.27)(PORT = 1521))
(LOAD_BALANCE = YES)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testXE)
)
)


czwartek, 11 lipca 2013

Domyślne odtwarzanie bazy Oracle / wybór bazy do odtworzenia

Domyślnie Oracle odtwarza zawsze ostatnią bazę.

1. Odtwarzanie z tasiemki (urządzenia)

Zatrzymujemy Oracle

sqlplus /nolog
connect / as sysdba
shutdown immediate;


Montujemy bazę lecz nie otwieramy

startup mount;

Wykonujemy skrypt RMAN (odtwarzanie z tasiemki)

rman target  /
@backup.rman

run {
allocate channel t1 type 'sbt_tape';
restore database;
recover database;
release channel t1;
}



Otwieramy bazę

shutdown immediate;
startup;



Wybór bazy do odtworzenia z taśmy

list backup;

Zatrzymujemy Oracle

sqlplus /nolog
connect / as sysdba
shutdown immediate;


Montujemy bazę lecz nie otwieramy

startup mount;

Wykonujemy skrypt RMAN (odtwarzanie z tasiemki)

rman target  /
@backup.rman

run {
allocate channel t1 type 'sbt_tape';
restore database from tag 'TAG20091230T124556';
recover database;
release channel t1;
}

Zatrzymujemy i uruchamiamy Oracle

shutdown immediate;
startup;


2. Odtwarzanie z dysku

Zatrzymujemy Oracle

sqlplus /nolog
connect / as sysdba
shutdown immediate;


rman target  /

Uruchamiamy bazę bez montowania

RMAN> startup nomount;

Ustawiamy identyfikator bazy DBID

RMAN> set DBID = 1786613587;

Odtwarzamy plik kontrolny controlfile

RMAN> restore controlfile from autobackup;

Montujemy bazę i odtwarzamy pliki danych bazy 

RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database noredo;
RMAN> alter database open resetlogs;


środa, 20 lutego 2013

deadlocks - zakleszczenia

Zakleszczenie (deadlocks) powstaje, gdy dwie równolegle działające transakcje próbują modyfikować te same dane i w pewnym momencie dochodzi do wzajemnego zablokowania zasobów

System Oracle wykrywa zakleszczenie i rozwiązuje je wykorzystując algorytm wyboru tej transakcji, która zostanie przerwana, tzn. jej ostatnie polecenie zostanie przerwane, wycofane. Właściciel transakcji, dla której nastąpiło zakleszczenie otrzymuje wówczas

komunikat:

ORA-00060: deadlock detected while waiting for resource