Wednesday, May 28, 2014

Oracle DB - Upgrade 11.1.0.6.0 to 11.1.0.7.0


Opisaću proceduru instalacije 11.1.0.7.0 patche-a za Oracle 11gR1 (11.1.0.6.0) bazu podataka koja je instalirana na Windows Server 2003 x64 operativnom sistemu.

PatchSet se može download-ovati sa Metalink-a (odabrati odgovarajući operativni sistem).

Procedura primjene PatchSet-a je sledeća:

1. Provjera posojeće PatchSet verzije:
CMD> sqlplus /nolog
SQL> conn / as sysdba
Connected.
SQL> SELECT * FROM V$VERSION;
BANNER
------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for 64-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 – Production

SQL> set pages 250
SQL> set lines 1000
SQL> col comp_name for a40
SQL> select comp_name, version, status from dba_registry;

COMP_NAME                                VERSION                        STATUS
---------------------------------------- ------------------------------ -----------
OWB                                      11.1.0.6.0                     VALID
Oracle Application Express               3.0.1.00.08                    VALID
Oracle Enterprise Manager                11.1.0.6.0                     VALID
Oracle Ultra Search                      11.1.0.6.0                     VALID
OLAP Catalog                             11.1.0.6.0                     VALID
Spatial                                  11.1.0.6.0                     VALID
Oracle Multimedia                        11.1.0.6.0                     VALID
Oracle XML Database                      11.1.0.6.0                     VALID
Oracle Text                              11.1.0.6.0                     VALID
Oracle Expression Filter                 11.1.0.6.0                     VALID
Oracle Rules Manager                     11.1.0.6.0                     VALID
Oracle Workspace Manager                 11.1.0.6.0                     VALID
Oracle Database Catalog Views            11.1.0.6.0                     VALID
Oracle Database Packages and Types       11.1.0.6.0                     VALID
JServer JAVA Virtual Machine             11.1.0.6.0                     VALID
Oracle XDK                               11.1.0.6.0                     VALID
Oracle Database Java Packages            11.1.0.6.0                     VALID
OLAP Analytic Workspace                  11.1.0.6.0                     VALID
Oracle OLAP API                          11.1.0.6.0                     VALID
2. Ugasiti Oracle bazu podataka i sve servise koji su instalirani sa bazom.
CMD> sqlplus /nolog
SQL> conn / as sysdba
Connected.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
3. Napraviti backup ORADATA foldera (control fajlove, data fajlove, redo log fajlove, archive fajlove i temp fajlove) kao i backup ORACLE_HOME foldera.

4. Instalirati PatchSet software.

- Startovati installer:


- Kliknuti na dugme Next.


- Odabrati odgovarajući ORACLE_HOME i kliknuti na Next.


- Kliknuti na Next.


- Kliknuti na Next.


 - Kliknuti na Install, i sačekati da installer završi instalaciju software-a:




- Na kraju kliknuti na Exit.

5. Sada je potrebno uraditi upgrade same baze podataka. To je moguće uraditi na dva načina: manuelno (pokretanjem odgovarajućih skripti) i automatski (pomoću Database Upgrade Assistant-a - DBUA). Ja ću predstaviti ovaj prvi način.

- Startovati Listener servis i bazni servis.

- Provjeriti da li su ispunjeni svi uslovi za upgrade Oracle baze podataka.

- Pozicionirati se u folder %ORACLE_HOME%\RDBMS\ADMIN i konektovati se na baznu instancu:
E:\>cd E:\Oracle\product\11.1.0\db_2\RDBMS\ADMIN
E:\Oracle\product\11.1.0\db_2\RDBMS\ADMIN>set ORACLE_SID=db1
E:\Oracle\product\11.1.0\db_2\RDBMS\ADMIN>set ORACLE_HOME=E:\Oracle\product\11.1.0\db_2
E:\Oracle\product\11.1.0\db_2\RDBMS\ADMIN>sqlplus /nolog
SQL*Plus: Release 11.1.0.7.0 - Production on Sri Svi 28 08:46:04 2014
Copyright (c) 1982, 2008, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.

SQL> startup upgrade;
ORACLE instance started.
Total System Global Area  860160000 bytes
Fixed Size                  2134296 bytes
Variable Size             616566504 bytes
Database Buffers          239075328 bytes
Redo Buffers                2383872 bytes
Database mounted.
Database opened.

SQL> spool F:\pre_upgrade.log
SQL> @utlu111i.sql
SQL> spool off;

- Ukoliko log fajl F:\pre_upgrade.log ne sadrži greške nastaviti sa procedurom upgrade-a, a ako sadrži greške potrebna je intervencija na bazi kako bi se te greške otklonile.

- Pokrenuti skriptu za upgrade baze:

SQL> spool F:\upgrade_28.05.2014.log
SQL> @catupgrd.sql
SQL> spool off;

- Skripta za upgrade baze na kraju stopira bazu. Sada je potrebno startovati bazu i izvršiti rekompajliranje svih objekata čiji je status INVALID.

SQL> startup

ORACLE instance started.
Total System Global Area  860160000 bytes
Fixed Size                  2134296 bytes
Variable Size             717229800 bytes
Database Buffers          138412032 bytes
Redo Buffers                2383872 bytes
Database mounted.
Database opened.

SQL> spool F:\recompile.log
SQL> @utlrp.sql
SQL> spool off;

6. Na kraju provjeriti verziju upgrade-ovane baze:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE    11.1.0.7.0      Production
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 – Production

SQL> set pages 250
SQL> set lines 1000
SQL> col comp_name for a40
SQL> select comp_name, version, status from dba_registry;

COMP_NAME                                VERSION                        STATUS
---------------------------------------- ------------------------------ -----------

OWB                                      11.1.0.6.0                     VALID
Oracle Application Express               3.0.1.00.12                    VALID
Oracle Enterprise Manager                11.1.0.7.0                     VALID
Oracle Ultra Search                      11.1.0.7.0                     VALID
OLAP Catalog                             11.1.0.7.0                     VALID
Spatial                                  11.1.0.7.0                     VALID
Oracle Multimedia                        11.1.0.7.0                     VALID
Oracle XML Database                      11.1.0.7.0                     VALID
Oracle Text                              11.1.0.7.0                     VALID
Oracle Expression Filter                 11.1.0.7.0                     VALID
Oracle Rules Manager                     11.1.0.7.0                     VALID
Oracle Workspace Manager                 11.1.0.7.0                     VALID
Oracle Database Catalog Views            11.1.0.7.0                     VALID
Oracle Database Packages and Types       11.1.0.7.0                     VALID
JServer JAVA Virtual Machine             11.1.0.7.0                     VALID
Oracle XDK                               11.1.0.7.0                     VALID
Oracle Database Java Packages            11.1.0.7.0                     VALID
OLAP Analytic Workspace                  11.1.0.7.0                     VALID
Oracle OLAP API                          11.1.0.7.0                     VALID




Tuesday, May 20, 2014

Oracle DB - DATAPUMP


Oracle DATAPUMP (expdp/impdp) je alat koji je prevashodno namijenjen za transfer podataka iz jedne baze u drugu bazu ali može se koristiti i za tzv. logički backup Oracle schema-e ili za logički backup cjelokupne baze podataka. DATAPUMP alati EXPDP i IMPDP predstavljeni su u Oracle 10g verziji baze i oni predstavljaju naprednije verzije već postojećih alata exp i imp.

Pomoću DATAPUMP alata expdp moguće je napraviti export podataka iz jedne baze a pomoću alata impdp moguće je taj export importovati u drugu ili istu bazu. Fajl koji se kreira prilikom export-a podataka iz baze je takođe (kao i kod exp/imp alata) DUMP fajl koji u binarnom formatu sadrži objekte iz baze, metapodatke tih objekata kao i njihove kontrolne podatke.

 EXPDP/IMPDP komande (parametri) mogu biti izvršene na tri načina:

1. Pomoću command line interface-a (parametri se specificiraju u okviru command line interface-a)
2. Pomoću parametarskog fajla (parametri se specificiraju u posebnom fajlu)
3. Interaktivni unos parametara (potrebni parametri interaktivno se unose u expdp/impdp interface)

 DATAPUMP alati podržavaju pet različitih mode-ova za migraciju podataka:

* Full export/import mode (izvršava export/import cjelokupne baze podataka)
* Schema mode (default-ni mod, export/import podataka određene schema-e)
* Table mode (izvršava export/import određenih tabela i objekata koji zavise od tih tabela)
* Tablespace mode (vrši export/import objekata koji se nalaze u određenom tablespace-u)
* Transportable Tablespace Mode (vrši export/import samo metadata podataka o tabelama u okviru određenog tablespace-a)

Da bi se alat DATAPUMP mogao koristiti potrebno je ispuniti odgovarajuće uslove:

- Postojanje odgovarajućeg Oracle direktorijuma (folder-a) u koji će se smještati DUMP fajlovi. Ovaj direktorijum je definisan Oracle parametrom DATA_PUMP_DIR.

- Kreiranje posebnog Oracle korisničkog naloga (kao bi se izbeglo korišćenje SYS analoga) koji će imati pravo da vrši export/import procedure. Korisničkom nalogu koji će biti zadužen za DATAPUMP poslove moraju se grant-ovati i sledeće privilegije: create table, datapump_exp_full_database, datapump_imp_full_database, read i write on directory (Oracle DATAPUMP folder).


Evo i procedure setup-a Oracle DATAPUMP parametara:

1. Kreiranje direktorijum na nivou operativnog sistema.

$ pwd
/home/oracle
$ mkdir datapump
$ cd datapump/
/home/oracle/datapump

2. Konfiguracija Oracle direktorijuma.

SQL> conn / as sysdba
Connected.

SQL> create directory datapump_dir as '/home/oracle/datapump';
Directory created.

 3. Kreiranje i podešavanje korisničkog naloga koji će biti zadužen za DATAPUMP poslove.

SQL> create user datapump_admin identified by pass1 default tablespace users quota unlimited on users;
User created.
SQL> grant create table to datapump_admin;
Grant succeeded.
SQL> grant datapump_exp_full_database to datapump_admin;
Grant succeeded.
SQL> grant datapump_imp_full_database to datapump_admin;
Grant succeeded.
SQL> grant read, write on directory datapump_dir to datapump_admin;
Grant succeeded.

Sada korisnički nalog datapump_admin ima sva potrebna prava da bi izvršio bilo koju DATAPUMP proceduru.


EXPORT Procedura

Komanada za export svih podataka iz cjelokupne baze podataka:

$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1

$ expdp datapump_admin/pass1 directory=datapump_dir dumpfile=full.dmp logfile=full.exp.log full=y

Ova će komanda izvršiti export svih podataka iz baze u fajl full.dmp koji će biti smješten u folder /home/oracle/datapump. Takođe, u isti folder biće smješten i log fajl export procesa.

Ovaj se export može izvršiti i na drugi način, pomoću parametarskog fajla. Prvo je potrebno kreirati parametarski fajl:

$ vi fillexp.par

userid=datapump_admin/pass1
directory=datapump_dir 
dumpfile=full.dmp 
logfile=full.exp.log 
full=y

Sada je komanda za export svih podataka iz baze sledeća:
$ expdp parfile=fullexp.par

Za export podataka iz samo neke schema-e potrebno je navesti parametar "schemas=". Moguće je navesti jednu ili više schema-a za export. Npr:
vi user_test.par

userid=datapump_admin/pass1 
directory=my_datapump_dir
schemas=test
reuse_dumpfiles=y
Export komanda je:
$ expdp parfile=user_test.par dumpfile=test_schema.dmp logfile=test_schema.exp.log

Pored već navedenih parametara postoji još veliki broj parametara koje je moguće navesti prilikom DATAPUMP export procedure, neki od njih su kompresija podataka, zatim enkripcija podataka, kao i detaljno specificiranje onoga što se želi export-ovati (samo tabele, samo struktura objekata (DDL), itd.).


IMPORT Procedura

Što se tiče IMPDP podešenja ona su identična EXPDP podešenjima, tj. mora se kreirati Oracle direktorijum i odgovarajući korisnički nalog. Sintaksa komandi je slična.

Import FULL exporta podataka iz baze.

Parametarski fajl:
$ vi fullimp.par

userid=datapump_admin/pass1
directory=datapump_dir 
dumpfile=full.dmp 
logfile=full.imp.log 
full=y
content=all
table_exists_action=truncate

Import komanda:
$ impdp parfile=fullimp.par

Import schema exporta podataka.

Parametarski fajl:
$ cat test_imp.par

userid=datapump_admin/pass1 
directory=datapump_dir 
dumpfile=test_schema.dmp 
logfile=test_schema.imp.log 
schemas=test
content=all
table_exists_action=replace

Import komanda:
$ impdp parfile=test_imp.par 



 

Tuesday, May 13, 2014

Oracle AS aplikacija - Problem sa fokusom


Prijavljen mi je problem u radu aplikacije koja radi na Oracle Application Serveru Forms&Reports Services.

Problem je bio sledeći:

- Korisnik se prijavi na aplikaciju i neko vrijeme radi bez problema.
- U nekom trenutku korisnik na aplikaciji ne može više raditi pomoću miša jer aplikacija "gubi" fokus.
- Korisniku aplikacije ostaje samo da radi pomoću tastature ili da restartuje program.

Jedino što sam na sistemu mogao da primijetim jeste greška u JAVA konzoli:

java.lang.NoSuchMethodException: sun.java2d.SunGraphicsEnvironment.setFallbackFont(java.lang.String)
    at java.lang.Class.getMethod(Unknown Source)
    at oracle.forms.engine.Main.initDesktop(Unknown Source)
    at oracle.forms.engine.Main.start(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.NoSuchMethodException: sun.java2d.SunGraphicsEnvironment.preferLocaleSpecificFonts()
    at java.lang.Class.getMethod(Unknown Source)
    at oracle.forms.engine.Main.initDesktop(Unknown Source)
    at oracle.forms.engine.Main.start(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Pretraga GOOGLE-a i MetaLink-a mi nije bila od neke pomoći.

Znajući da je ovaj sistem je instaliran prije više od 8 godina i da se problem javio tek od skora, tj. nakon implementacije JAVA JRE-a (zbog promjene OS-a na radnim stanicama) umjesto JInitiator-a za rad korisnika na aplikaciji pretpostavio sam da je problem u nekopatibilnosti verzija Oracle Application Server-a 9i (9.0.4.0) Forms&Reports Services-a i JAVA JRE-a (1.6.0_34) sa kojim aplikacija radi na radnim stanicama korisnika.

Odlučio sam da uradim upgrade Application Server-a na verziju 10gR2 (10.1.2.3).

I bio sam upravu, nakon upgrade-a aplikacija je radila bez ikakvih problema i bez grešaka u JAVA konzoli.