Archiwum kategorii ‘DB’

PHP i transakcje w MySQL

środa, 16 Maj 2012

Nie jestem programistą, ani Programistą PHP. Czasem robię code review lub piszę protezę dla jakichś systemów.
Po ostatnim przeglądzie uważam, że warto wspomnieć o prostych sposobach na transakcje w (My)SQL.

Jeśli mamy do dyspozycji PDO (PHP Data Objects) i PHP >= 5.1 (ew. 5.0 i PDO jako PECL), to możemy użyć gotowych mechanizmów do obsługi transakcji i wyjątków (od PHP 5.0):

try {
  $dbh->beginTransaction();
  $dbh->exec('pierwsze zapytanie');
  $dbh->exec('drugie zapytanie');
  $dbh->exec('trzecie zapytanie');
  $dbh->commit();
} catch (Exception $e) {
  $dbh->rollBack();
  echo $e->getMessage();
}

(więcej…)

Oracle 11gR2 na SUSE Linux Enterprise Server 11.1

niedziela, 13 Maj 2012

W sieci jest mnóstwo ściąg jak zainstalować Oracle 11gR2 na SLES 11, nawet na stronie Novell, ale instalacja/aktualizacja 11.2.0.2 wygląda trochę inaczej. Mianowicie przy wyborze grupy systemowej (dla SYSDBA i SYSOPER) mamy na liście disk, oinstall i dba. Niezależnie od tego co wybierzemy instalator sprawdza istnienie wszystkich tych grup w systemie (11.2.0.1 tak nie miał). Jeśli którejś nie znajdzie, zwraca błąd INS-30060.


(więcej…)

Gnatt & dbms_scheduler

poniedziałek, 27 Luty 2012

Było zastosowanie Gnatt do kopii Oracle, to teraz do zadań harmonogramu Oracle (przez dbms_scheduler):

set colsep ';'
set head off;
set feed off;
set trimspool on;
set linesize 32767;
set pagesize 32767;
set echo off;
set termout off;
set timing off;

spool sched.csv

SELECT 'Week ' || TO_CHAR(SYSDATE-7, 'iw'), NEXT_DAY(trunc(SYSDATE)-14, 'MONDAY'), NEXT_DAY(trunc(SYSDATE)-7-1/60/60/24, 'SUNDAY') FROM dual;
(więcej...)

Oracle standby

sobota, 28 Styczeń 2012

Ukończyłem dziś szkolenie „Zaawansowana administracja bazą danych Oracle” w ramach Oracle Partner Academy. Szkolenie odbyło się w Krakowie, a prowadził je Kamil Stawiarski.

Ciekawa formuła, a w zasadzie jej brak – to szkolenie odbyło się po raz pierwszy i my niejako kreowaliśmy jak będzie wyglądać w przyszłości. (więcej…)

rlwrap czyli historia w sqlplus

czwartek, 26 Styczeń 2012

Od zawsze irytował mnie brak historii poleceń w sqlplus pod Linuksem. Owszem, można się dostać do ostatniego, ale chodzi mi o wygodne przewijanie góra – dół i ew. edycję. Czemu w ogóle pod Windows to działa, a pod Linuksem nie?
Częściowym rozwiązaniem problemu jest użycie rlwrap. To małe narzędzie pozwala na edycję poleceń wpisywanych w jakimkolwiek programie. Utrzymuje osobną historię dla każdej komendy i obsługuje uzupełnianie słów.
Użycie równie trywialne jak instalacja, np.:

rlwrap sqlplus

(więcej…)

Znak zachęty w SQL*Plus

środa, 16 Listopad 2011

Krótko (ostatnio jakoś brak czasu) i na temat – zmiana znaku zachęty (prompt) w SQL*Plus:
- plik konfiguracyjny glogin.sql znajduje się w $ORACLE_HOME/sqlplus/admin (Unix) lub %ORACLE_HOME%\sqlplus\admin (Windows),
- aby wyświetlić nazwę zalogowanego użytkownika, identyfikator połączenia i datę wystarczy dopisać:

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE> "

I już wśród wielu okien terminali wiemy gdzie pracujemy.

Godzinę można też dodać ustawiając zmienną time:

set time on

Przeczytaj więcej na:

Oracle: RMAN – raport wykonania kopii

środa, 6 Lipiec 2011

Tydzień temu opisałem jak zrobić zestawienie kopii wykonanych przez Bacula, dziś zapytanie, które wyciągnie informacje o kopiach wykonywanych przy użyciu RMAN. Zestawienie, tak jak poprzednio – za miniony tydzień:

SELECT
 TO_CHAR(START_TIME, 'yyyy-mm-dd HH24:MI') AS START_TIME,
 TO_CHAR(END_TIME, 'yyyy-mm-dd hh24:mi') AS END_TIME,
 TRUNC(TO_CHAR(END_TIME-START_TIME)*24) || ' h ' || TRUNC(MOD(TO_CHAR(END_TIME-START_TIME)*24*60,60)) || ' min' AS DURATION,
 DECODE(TRUNC(LOG(1024, OUTPUT_BYTES)) , 0, ROUND(OUTPUT_BYTES / POWER(1024, 0), 2) || ' Byte' , 1, ROUND(OUTPUT_BYTES / POWER(1024, 1), 2) || ' KB' , 2, ROUND(OUTPUT_BYTES / POWER(1024, 2), 2) || ' MB' , 3, ROUND(OUTPUT_BYTES / POWER(1024, 3), 2) || ' GB', 4, ROUND(OUTPUT_BYTES / POWER(1024, 4), 2) || ' TB') AS BACKUP_SIZE ,
 ROUND(OUTPUT_BYTES/INPUT_BYTES*100, 2) || ' %' AS RATIO,
 OBJECT_TYPE
FROM
 V$RMAN_STATUS
WHERE
 OBJECT_TYPE IN ('DB INCR', 'DB FULL', 'ARCHIVELOG')
 AND OPERATION = 'BACKUP'
 AND TO_CHAR(END_TIME, 'iw') >= TO_CHAR(SYSDATE-7, 'iw')
 AND TO_CHAR(START_TIME, 'iw') < TO_CHAR(SYSDATE, 'iw')
ORDER BY
 START_TIME ASC

(więcej...)