Skrypty z rozdziału 11 książki ORACLE9i, podręcznik administratora.  Więcej informacji w pliku readme.doc.


exp help=Y


exp system/manager file=expdat.dmp compress=Y owner=(HR,THUMPER)


exp demo/demo tablespaces=DATA


break on Owner on Tablespace_Name
column Objects format A20
select
      Owner,
      Tablespace_Name,
      COUNT(*)||' tables' Objects
 from DBA_TABLES
where Owner <> 'SYS'
group by
      Owner,
      Tablespace_Name
union
select
      Owner,
      Tablespace_Name,
      COUNT(*)||' indexes' Objects
 from DBA_INDEXES
where Owner <> 'SYS'
group by
      Owner,
      Tablespace_Name;


break on Tablespace_Name on Owner
column Objects format A20
select
      Tablespace_Name,
      Owner,
      COUNT(*)||' tables' Objects
 from DBA_TABLES
where Owner <> 'SYS'
group by
      Tablespace_Name,
      Owner
union
select
      Tablespace_Name,
      Owner,
      COUNT(*)||' indexes' Objects
 from DBA_INDEXES
where Owner <> 'SYS'
group by
      Tablespace_Name,
      Owner;


break on Grantor skip 1 on Owner on Table_Name
select
      Grantor,          /*Konto, które wykonało nadanie*/
      Owner,            /*Konto właściciela tabeli*/
      Table_Name,       /*Nazwa tabeli*/
      Grantee,          /*Konto nadające prawa dostępu*/
      Privilege,        /*Nadane prawo*/
      Grantable         /*Czy nadane z opcją with admin?*/
from DBA_TAB_PRIVS
where Grantor ! = Owner
order by Grantor, Owner, Table_Name, Grantee, Privilege;


select
      Owner,                /*Właściciel indeksu*/
      Index_Name,           /*Nazwa indeksu*/
      Table_Owner,          /*Właściciel tabeli*/
      Table_Name            /*Nazwa indeksowanej tabeli*/
from DBA_INDEXES
where Owner != Table_Owner;


exp system/manager FILE=expdat.dmp TABLES=(Thumper.SALES)


exp system/manager FILE=expdat.dmp TABLES=(Thumper.SALES:Part1)


exp system/manager FILE=expdat.dmp TABLES=(THUMPER.SALES) QUERY=\"where region=\'North\'\"


select * from SALES where region = 'NORTH';


imp system/manager file=expdat.dmp
imp system/manager file=expdat.dmp buffer=64000 commit=Y


exp system/manager file=thumper.dat owner=thumper grants=N
  indexes=Y compress=Y rows=Y

imp system/manager file=thumper.dat FROMUSER=thumper TOUSER=flower
      rows=Y indexes=Y

imp system/manager file=expdat.dmp full=Y commit=Y buffer=64000

imp system/manager file=expdat.dmp ignore=N rows=N commit=Y buffer=64000

exp system/manager file=expdat.dmp owner=thumper


imp system/manager file=expdat.dmp indexfile=indexes.sql full=Y

imp system/manager file=expdat.dmp fromuser=thumper touser=flower
   indexes=N commit=Y buffer=64000

sqlplus flower/password
@indexes


> tar -cvf /dev/rmt/0hc /db0[1-9]/oracle/CC1



ORACLE_SID=cc1; export ORACLE_SID
ORAENV_ASK=NO; export ORAENV_ASK
. oraenv
sqlplus <<EOF1
connect / as sysdba
shutdown immediate;
exit
EOF1
tu należy wstawić polecenie tworzące rezerwową kopię, np. "tar" 
sqlplus <<EOF2
connect / as sysdba
startup
EOF2



connect internal as sysdba
startup mount cc1;
alter database archivelog;
alter database open;


archive log list


connect / as sysdba
startup mount cc1;
alter database noarchivelog;
alter database open;


select Name,
       Value
  from V$PARAMETER
 where Name like 'log_archive%';


# Przykładowy skrypt do wykonywania gorących kopii zapasowych dla 
# bazy danych w systemie operacyjnym UNIX, stosującej system plików. 
#
# Ustawienie zmiennych środowiskowych:
ORACLE_SID=cc1; export ORACLE_SID
ORAENV_ASK=NO; export ORAENV_ASK
. oraenv
#
#   Etap 1.  Należy wykonać kopie zapasowe plików danych kolejno z 
#   każdej przestrzeni tabel. Każdą przestrzeń tabel należy kolejno 
#   ustawić w stan kopiowania. Następnie wykonuje się kopie zapasowe 
#   plików danych należących do przestrzeni tabel i po zakończeniu 
#   przywraca przestrzeni tabel jej normalny stan.
#
# Uwaga dla systemu UNIX:  należy ustawić wskaźnik na program Server 
# Manager (nazywany tutaj EOFarch1), tak że sterowanie pliku poleceń 
# pozostanie w programie Server Manager.
#
svrmgrl <<EOFarch1
connect / as sysdba
REM
REM   Wykonanie kopii zapasowej plików danych przestrzeni tabel SYSTEM 
REM 
alter tablespace SYSTEM begin backup;
!cp /db01/oracle/CC1/sys01.dbf /bckp/db01/oracle/CC1
alter tablespace SYSTEM end backup;
REM
REM   Wykonanie kopii zapasowych plików danych przestrzeni tabel RBS 
REM 
alter tablespace RBS begin backup;
!cp /db02/oracle/CC1/rbs01.dbf /bckp/db02/oracle/CC1
alter tablespace RBS end backup;
REM
REM   Wykonanie kopii zapasowych plików danych przestrzeni tabel DATA 
REM   W tym przykładzie przyjęto, że przestrzeń tabel zawiera 
REM   dwa pliki data01.dbf and data02.dbf. W nazwie plików będzie 
REM   zastosowany symbol wieloznaczny *.
REM
alter tablespace DATA begin backup;
!cp /db03/oracle/CC1/data0*.dbf /bckp/db03/oracle/CC1
alter tablespace DATA end backup;
REM
REM   Wykonanie kopii zapasowych plików danych przestrzeni tabel 
REM   indexes 
REM
alter tablespace INDEXES begin backup;
!cp /db04/oracle/CC1/indexes01.dbf /bckp/db04/oracle/CC1
alter tablespace INDEXES end backup;
REM
REM   Wykonanie kopii zapasowych plików danych przestrzeni tabel TEMP 
REM
alter tablespace TEMP begin backup;
!cp /db05/oracle/CC1/temp01.dbf /bckp/db05/oracle/CC1
alter tablespace TEMP end backup;
REM
REM   Należy postępować według tej samej metody w celu wykonania kopii 
REM   zapasowych plików danych pozostałych przestrzeni danych. 
REM
exit
EOFarch1
# REM         Etap 2.  Wykonanie kopii zapasowych zarchiwizowanych 
# REM      plików dziennika powtórzeń.
#
#  Należy ustalić, które pliki znajdują się w katalogu docelowym. 
#  W tym celu należy ustawić zmienną środowiskową jako równą 
#  katalogowi będącemu katalogiem docelowym 
#  tj. (log_archive_dest_1). 
#  W tym przykładzie katalog log_archive_dest_1  
#  to /db01/oracle/arch/CC1.
#
FILES='ls /db01/oracle/arch/CC1/arch*.dbf'; export FILES
#
#  Teraz wykonuje się kopie zapasowe zarchiwizowanych plików dziennika 
#  powtórzeń do urządzenia taśmy za pomocą polecenia "tar". Następnie 
#  usuwa się je z urządzenia docelowego za pomocą polecenia "rm". 
#  Zamiast usuwania można wybrać ich kompresję. 
#
cp $FILES /bckp/db01/oracle/CC1/arch
rm -f $FILES
#
#     Etap 3.  Wykonanie kopii zapasowych pliku sterowania do pliku 
#     dyskowego.
#
svrmgrl <<EOFarch3
connect / as sysdba
alter database backup controlfile to
   '/bckp/db01/oracle/CC1/CC1controlfile.bck';
alter database backup controlfile to trace;
exit
EOFarch3
#
#  Koniec skryptu wykonywania gorącej kopii zapasowej. Teraz kopia
#  wykonana na drugim dysku może zostać przeniesiona na taśmy.



set pagesize 0 feedback off

select 
    'alter tablespace '||Tablespace_Name||' begin backup;'
  from DBA_TABLESPACES
 where Status <> 'INVALID'

spool alter_begin.sql
/
spool off


tar -cvf /dev/rmt/0hc /db0[1-9]/oracle/CC1


set pagesize 0 feedback off

select 
    'alter tablespace '||Tablespace_Name||' end backup;'
  from DBA_TABLESPACES
 where Status <> 'INVALID'

spool alter_end.sql
/
spool off



#     Etap 1: Zatrzymanie procesu archiwizacji. W ten sposób 
# dodatkowe, zarchiwizowane pliki dziennika powtórzeń nie zostaną 
# przez kilka sekund zapisane do docelowego katalogu podczas tego 
# procesu. W tym czasie zbierane będą nazwy plików.
#
# svrmgrl <<EOFarch1
# connect / as sysdba
# archive log stop;
# REM
# REM  Należy opuścić program Server Manager, wykorzystując ustawiony
# REM  wcześniej znacznik.
# exit
# EOFarch1
#
#     Etap 2: Zapisanie nazw plików znajdujących się w katalogu 
#  docelowym. W tym celu ustawia się zmienną środowiskową, która jest
#  równa wykazowi katalogów dla katalogu docelowego.
#  W tym przykładzie parametr log_archive_dest jest równy
#  /db01/oracle/arch/CC1.
#
FILES='ls /db01/oracle/arch/CC1/arch*.dbf'; export FILES
#
#     Etap 3: Należy powrócić do programu Server Manager i ponownie 
#  uruchomić  proces archiwizacji. Należy ustawić wskaźnik (w tym 
#  przykładzie nazywany EOFarch2)
#
# Jeśli zajdzie potrzeba wykonania tego kroku, należy usunąć 
# znak komentarza sprzed następnych 5 wierszy kodu
# svrmgrl <<EOFarch2
# connect / as sysdba
# archive log start;
# exit
# EOFarch2
#
#     Etap 4. Należy wykonać kopie zapasowe zarchiwizowanych plików 
#  dziennika powtórzeń do urządzenia taśmy za pomocą polecenia "tar". 
#  Następnie usuwa się je z urządzenia docelowego za pomocą polecenia 
#  "rm".
#
# Nalezy przeedytować poniższe polecenie, tak aby pasowało do nazwy
# urządzenia taśm w lokalnym systemie
tar -rvf /dev/rmt/0hc $FILES
#
#     Etap 5. Usunięcie tych plików z katalogu docelowego.
#
rm -f $FILES
#
#     Koniec skryptu wykonywania kopii zapasowych zarchiwizowanych 
#     plików dziennika powtórzeń.




execute DBMS_LOGMNR_D.BUILD
('mydb_dictionary.ora',
'G:\Oracle\Ora90\database',
options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE); 


execute DBMS_LOGMNR.END_LOGMNR;


execute DBMS_LOGMNR.ADD_LOGFILE(
LogFileName=> '/oracle/ora90/redo01.ora',
Options=> DBMS_LOGMNR.NEW);

execute DBMS_LOGMNR.ADD_LOGFILE(
LogFileName=> '/oracle/ora90/redo02.ora',
Options=> DBMS_LOGMNR.NEW); 


execute DBMS_LOGMNR.ADD_LOGFILE(
DictFileName=> '/oracle/ora90/dictionary.ora',


execute DBMS_LOGMNR.START_LOGMNR(
DictFileName => '/oracle/dictionary.ora',
StartTime => TO_DATE('01-JUNE-2001 12:31:00', DD-MON-YYYY HH:MI:SS'),
EndTime => TO_DATE('01-JULY-2001 00:00:00', DD-MON-YYYY HH:MI:SS'));


execute DBMS_LOGMNR.START_LOGMNR(
DictFileName => '/oracle/dictionary.ora',
StartScn => 125,
EndScr => 300);


select Sql_Redo, Sql_Undo
  from V$LOGMNR_CONTENTS;




