Archiwum kategorii ‘DB’

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...)

Bacula i własne zestawienia

wtorek, 28 Czerwiec 2011

Bacula oprócz gotowych zestawień informacji (wyświetlanych przy pomocy komend np. status czy list) umożliwia tworzenie własnych, możliwych do wykorzystania w raportach czy po prostu pomocnych przy codziennej pracy. Z racji tego, że wszystkie dane przechowywane są w bazie SQL (MySQL lub PostgreSQL) można to zrobić dowolnym klientem (np. Orbada :>). Można też przygotować zapytania i wywoływać je z poziomu bconsole – daje to pewną „interaktywność”.

Sam napisałem własne i dopisuję na potrzeby chwili kolejne zapytania. (więcej…)

jdbc:mysql i data

czwartek, 16 Czerwiec 2011

Orbada
Od jakiegoś czasu jestem (szczęśliwym) użytkownikiem Orbada – narzędzia do administracji i zarządzania bazą danych. Podczas wyświetlania dat, które są zerowe (np. ustawione domyślnie na ’0000-00-00 00:00:00′) zwraca takie błędy:

java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
Caused by: java.sql.SQLException: Value '[B@13ad88b' can not be represented as java.sql.Timestamp

Nie jest to oczywiście błąd Orbada, a sterownika JDBC, z którego program korzysta przy połączeniach. Obejście to zmodyfikowanie connection string poprzed dodanie zeroDateTimeBehavior=convertToNull.


Nie reklamuję Orbada tylko dlatego, że Andrzej to mój kolega z pracy – to naprawdę dobry program. Spróbujcie sami, polećcie innym i wspomóżcie projekt (za niedługo będą nawet ładne koszulki z logo).

Oracle: Recovery Manager: format string

czwartek, 28 Kwiecień 2011

Ile środowisk, tyle strategii kopii. Jakiś czas temu postanowiłem wykonując pełne kopie używać stałych nazw i nadpisywać je w kolejnym cyklu. Wynikało to poniekąd z braku miejsca na dwie pełne kopie i wszystkie przyrostowe czy ArchiveLog robione w międzyczasie. Optymistycznie założyłem wtedy, że taki skrypt zadziała (z pamięci, więc coś może się nie zgadzać):

RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK FORMAT='/backup/%d_%p' MAXPIECESIZE=750G;
BACKUP REUSE INCREMENTAL LEVEL 0 DATABASE TAG='level0';
RELEASE CHANNEL d1;
}

No i zadziałało, ale nie tak jak się spodziewałem. (więcej…)