wtorek, 18 marca 2014

Usunięcie użytkownika oramon

Powołany użytkownik oramon - czyli wszystkie obiekty tego użytkownika utworzone w schema
Jak go usunąć z wszystkimi jego zależnościami ?

DROP USER oramon CASCADE;
DROP PUBLIC SYNONYM db_alert;



-- usunięcie powiązanych obiektów


EXECUTE DBMS_IJOB.DROP_USER_JOBS('ORAMON');

-- wyłączenie isusnięcie wszystkich jobs które wykonują się na użytkowniku oramon

{
FOR rec IN (SELECT job FROM sys.dba_jobs WHERE upper(what) LIKE 'ORAMON.%') LOOP
  DBMS_JOB.BROKEN(rec.job, TRUE, SYSDATE);
END LOOP;
}

poniedziałek, 10 lutego 2014

Skrypt bash do Backup'u RMAN (Linux)

Tworzenie skryptu sh

tworzymy plik

touch backuporacle.sh

nadajemy uprawnienia do pliku

chmod 755 backuporacle.sh

edytujemy 

vi backuporacle.sh

wpisujemy

#!/bin/bash
sleep 10
USER=oracle
PASSWD=xxxxx
DBASE=orcl
RMAN=/opt/oracle/product/11.2.0/bin/rman
SCRIPT=/home/oracle/scripts/backuporacle
$RMAN target $DBASE/$PASSWD nocatalog @$SCRIPT


Skrypt RMAN Backup dla urządzenia 1 taśma

run {
allocate channel t1 type 'sbt_tape';
backup database plus archivelog;
backup spfile format 'spfile_%d_%s_%T.bak' tag 'spfile backup';
backup current controlfile format 'ctl_%t_dbid%I.bak' tag 'controfile backup';
release channel t1;
}



dla 4 taśm 

run {
allocate channel tape1 type 'sbt_tape';
allocate channel tape2 type 'sbt_tape';
allocate channel tape3 type 'sbt_tape';
allocate channel tape4 type 'sbt_tape';
backup database;
release channel tape1;
release channel tape2;
release channel tape3;
release channel tape4;
}

czwartek, 9 stycznia 2014

ZUS przerwy technologiczne



Dostępność serwerów ZUS sprawdzamy wchodząc na stronę



Jeśli strona nie wyświetla się oznacza to przerwę technologiczną ZUS


W przypadku gdy jeden z serwerów ZUS nie będzie działał możemy ustawić przekaz elektroniczny dla działającego serwera ZUS :)

Wybieramy z górnego menu Przekaz następnie wybieramy Ustawienia przekazu elektronicznego przechodzimy do zakładki Inne następnie zaznaczamy opcję  przy Użyj tego adresu do wymiany danych z ZUS a w polu obok wpisujemy adres: działającego serwera ZUS

węzły internetowe:

Wrocław http://www.ewd2.wroclaw.zus.pl/
lub
Warszawa http://www.ewd2.warszawa.zus.pl/
 

Aby sprawdzić poprawność wybranego serwera wybieramy z górnego menu Przekaz następnie wybieramy Ustawienia przekazu elektronicznego , na zakładce Ustawienia ogólne powinna być zaznaczona metoda przekazu „Komunikacja automatyczna ZUS pod adresem” z uzupełnionym adresem działającego serwera ZUS zamiast opisu automatyczny wybór

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