31. 10. 2016

Oracle - RMAN backup hlási čakanie na enqueue

Ak RMAN skript pri zalohovani zakaždým hlási:

waiting for snapshot control file enqueue
waiting for snapshot control file enqueue
waiting for snapshot control file enqueue

Treba killnúť v databáze proces pod SYSom s modulom RMAN, všetko sa rozbehne (bude pár dní starý).

select 'alter system kill session '''||a.sid||','||a.serial#||''';'||'       '|| a.module  KILL_CMD
from v$session a, v$process p
where p.addr=a.paddr and a.status <> 'KILLED' and type <>'BACKGROUND' and a.module like 'rman%'
order by module;


Ak pokillujete všetko krížom krážom a stále to hlási v novom backupe, dá sa pozrieť selectom ktorý proces robí tento lock:

SELECT s.SID, USERNAME AS "User", PROGRAM, MODULE, ACTION, LOGON_TIME "Logon", l.*
 FROM V$SESSION s, V$ENQUEUE_LOCK l
WHERE l.SID = s.SID AND l.TYPE = 'CF'  AND l.ID1 = 0 AND l.ID2 = 2;

U mňa bol v stave killed, takže riešenie je reštartnúť databázu, dovtedy to bude hlásiť.

Oracle - vyhľadanie súborov DB

Ak sme na neznámom (unix?) serveri, kde potrebujeme dohľadať v Oracle či už umiestnenie súborov, alebo logov, hodia sa takéto selecty z databázy.

Štandardné (oracle štýl) nahranie enviromentu danej databázy (cesty do oracle home, klient, TNS atď) skriptom oraenv, následne vyhľadanie cesty k logom (aj alert) na serveri:
oracle@serv:~$ . oraenv
ORACLE_SID = [] ? DB1
The Oracle base remains unchanged with value /u01/app/oracle

oracle@serv:~$ sqlplus / as sysdba

-- najdi trace
SQL> select value from v$diag_info where name = 'Diag Trace';

VALUE
----------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/db1/DB1/trace

-- aj ine cesty SELECT * FROM V$DIAG_INFO;

19. 10. 2016

Zmena windows témy jedným dvojklikom

Často vo firemnom prostredí dochádza k preplácaniu pozadia plochy firemnou reklamou. Je to otravné a zriaďuje to akúsi jednotvárnosť do prostredia v ktorom sa podvedome chceme cítiť príjemne.
Vytvoril a uložil som si vlastnú tému "brano", teda aj vlastný obrázok na pozadí. Do vlastného súboru (c:\brano\tema.cmd) som si vložil nasledujúci kód:

rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"C:\Users\Brano2\AppData\Local\Microsoft\Windows\Themes\brano.theme"

Na tento súbor som si spravil odkaz na ploche. Malá nevýhoda je, že po spustení zmeny ostane vyskočené okno s voľbou tém.

13. 10. 2016

Oracle - pridanie miesta v tablespace

Jedna z klasických úloh DB admina je pridávanie miesta pre databázové objekty. V oracle sa jedná o zväčšenie tablespace, ten sa môže skladať z viacerých súborov. Tieto možno pridávať alebo meniť im veľkosť aj za behu databázy.

Prikladám príkazy na monitoring a zväčšovanie priestoru v tablespacoch.

Oracle - vyhľadanie chyby v kóde procedúry

Čo spraviť ak sa v databáze nachádza invalidný objekt a máme k dispozícií iba klienta sqlplus? Nasledujú kroky kompilácie a v prípade neúspechu debug.

SQL> select * from dba_objects where status='INVALID';

Ak select vráti objekty, je možné najskôr skúsiť kompiláciu.

8. 10. 2016

Oracle - presunutie datafile

Občas je potrebné presunúť dátový súbor oracle databázy na iný filesystém. Zvyčajne kôli kapacitným dôvodom. Ďalšia možnosť je v prípade omylu pri zakladaní, či konsolidácie formátu názvov potrebné premenovanie.

1.metóda (DB offline) - alter database
sqlplus / as sysdba
shutdown immediate
startup mount
alter database rename file '/d1/ora/DB1/data01.dbf' to '/d2/ora/DB1/data01.dbf';
alter database open

2.metóda (DB online) - alter tablespace
sql> alter tablespace DATA offline;
> mv /d1/oracle/DB1/data01.dbf /d2/oracle/DB1/data01.dbf
sql> alter tablespace DATA rename datafile '/d1/ora/DB1/data01.dbf' to '/d2/ora/DB1/data01.dbf';
sql> alter tablespace DATA online;

3.metóda Oracle Enterprise Manager (podobná ako 2., sql kroky sú klikateľné)

Oracle - procesy na pozadí

Zoznam rôznych typov procesov bežiacich pre každú inštanciu databázy oracle (isté zmeny sú od v12 u pluggable databáz) je medzi úvodnou teóriou v školeniach a knihách. Prečo si to nespísať.