Migracja bazy z MySQL/MariaDB na Oracle

Pozornie proste zadanie okazało się być wyjątkowo upierdliwe.

  1. Instrukcja ze strony Oracle (z wykorzystaniem SQL Developera) wywołała u mnie myśli samobójcze
  2. Wykorzystanie mysqldump’a z opcją ” –compatible=oracle” wygenerowało plik, którego ani nie udało mi się zaczytać do Oracle 11g ani z powrotem do MariaDB

Musiałem ratować się inaczej…

Z pomocą w takich sytuacjach przychodzi RazorSQL. Narzędzie (niestety płatne), ale na szczęście z 30-to dniową wersją ewaluacyjną. RazorSQL potrafi przenieść dane bezpośrednio między różnymi systemami zarządzania bazą danych.
Testowałem tę opcję z MariaDB w wersji 5.5 i Oracle w wersji 11g XE.

Ważna uwaga. Przy przenoszeniu 'ciut większej’ bazy, RazorSQL będzie zgłaszał błąd przekroczenia Heap Size Java.
Należy wtedy zedytować plik uruchamiający: razorsql.sh, a dokładniej parametr -Xmx. W przykładzie poniżej ograniczamy ilość dostępnej dla RazoraSQL pamięci do 6GB. Standardowo to tylko kilkaset MB.
razorsql.sh po poprawce:

#!/bin/sh
CWD=$(dirname "$0")
CMD="$CWD/razorsql.jar"
$CWD/jre/bin/java -Xms64M -Xmx6G -client -jar ${CMD}
RC=$?
if [ ${RC} != 0 ]; then
echo "Error returned code found. Retrying . . ."
$CWD/jre/bin/java -Xms64M -Xmx640M -client -jar ${CMD}
RC2=$?
if [ ${RC2} != 0 ]; then
echo "Trying local JRE . . ."
java -Xms64M -Xmx640M -client -jar ${CMD}
fi
fi

[bash]Rekursywna zmiana rozszerzeń plików.

Załóżmy, że mamy dużo plików o jakimś tam rozszerzeniu rozsianych w dużej ilości katalogów.
I chcemy tym wszystkim plikom zmienić rozszerzenie na jakieś inne.
np
test/bb/plik2.jpeg
test/cc/plik4.jpeg
test/cc/plik3.jpeg
test/cc/plik5.jpeg
test/aa/plik.jpeg
test/aa/dd/plik7.jpeg

chcemy te pliki. jpeg zmienić na .jpg

Rozwiązanie:
find test -name *.jpeg | awk -F '.' '{OFS=FS;var=$0;$(NF)="";print var" "$0"jpg"}' | xargs -n 2 mv

RHEL 7: zmiana hasła roota

Metoda działa na Red Hat Enterprise Linux 7 oraz Centos 7.

  • W trakcie startu systemu po wyświetleniu menu gruba zatrzymujemy go (strzałka w górę np.). Wybieramy z listy kernel, który chcemy użyć (zapewne będzie to pierwsza linia od góry).
  • Wciskamy 'e’
  • Znajdujemy linię, która zaczyna się od 'linux16′
  • Za słowem 'quiet’ lub przed 'LANG’ dodajemy wpis 'rd.break’
  • Wciskamy CTRL-X
  • Powinien wystartować goły system, z promptem #
  • # mount -o remount,rw /sysroot
  • # chroot /sysroot
  • # passwd – wpisujemy nowe hasło
  • # touch /.autorelabel – wymuszamy odtworzenie kontekstów SELinuxa przy starcie
  • exit, exit

Koniec.

DA: Inkwizycja + TeamViewer = Problem z wyświetlaniem w trybie Full Screen

Dragon Age: Inquisition nie lubi się z TeamViewerem 🙂
W sieci jako rozwiązanie podawane jest całkowite wyłączenie TeamViewera na czas grania w DA:I. Nie ma takiej potrzeby.

Wystarczy w TeamViewerze wyklikać:

  1. Dodatki
  2. Opcje
  3. Zaawansowane
  4. Pokaż opcje zaawansowane
  5. Przycisk SzybkiePołączenie -> Konfiguruj
  6. DragonAgeInquisition.exe

I po problemie. Przyczyną niepoprawnego działania DA:I w trybie Full Screen, nie jest TeamVeawer jako taki, a jedynie przycisk, który standardowo dokleja się do górnej belki okna i pozwala szybko udostępnić komuś obraz. Nie ma przycisku – Nie ma problemu.

MBR w Windows + OCZ Revodrive

Jestem szczęśliwym posiadaczem OCZ Revodrive. Świetna sprawa… dopóki coś się nie schrzani 😉

Strasznie sobie namieszałem z MBR. Trzeba było go odzyskać…

  1. Odpal W7 z płytki instalacyjnej.
  2. Znajdź opcję napraw system.
  3. Załaduj drivery, których kopia jest tu: OCZ_x64 (wrzucamy na pendraka, rozpakowujemy)
  4. Zacznie być widoczny dysk, ale nadal nie będzie widać systemu. Wyszukanie systemu przy użyciu narzędzia bootrec działa, ale naprawa mbr już nie.
  5. Tak więc następne narzędzie, które trzeba mieć na pendrive – mbrfix
  6. mbrfix z opcją 'fixmbr’ i działa.

 

Synchronizacja czasu – Linux + ntp. Wersja nieprzesadzona.

Wrzucałem już raz wpis o automatycznej synchronizacji czasu, ale po przemyśleniu tematu doszedłem do wniosku, że rozwiązanie tam zastosowane jest bez sensu. Czemu?

  1. Stawianie serwera ntpd tylko po to, żeby mieć aktualny czas na swojej maszynie, to totalny i typowy overkill. Rozwiązanie to oczywiście działa skutecznie, jest „zalecane w internetach”, ale jego nadmiarowość aż razi.
  2. Standardowa konfiguracja ntpd na CentOS (ale też pewnie w innych dystrybucjach) otwiera od razu port 123 na wszystkich możliwych interfejsach. Po co? No bo ntpd z założenia służy do serwowania czasu, a nie jego zwykłej synchronizacji.
  3. No właśnie. Po co nam serwer, skoro jedynie chcemy być klientami?

Rozwiązanie jest dużo prostsze. W CentOS 6.5, którego teraz głównie używam, standardowo zainstalowane jest cudo o nazwie ntpdate. Na 99,99999% serwerów, wystarczy synchronizacja czasu raz na dobę.

Chyba już widać co chcę przekazać. CRON + ntpdate rozwiążą nasz problem prosto i skutecznie.
Co robimy?

W katalogu /etc/cron.daily zakładamy sobie plik ntpsynchro z prawami do uruchomienia:

[root@centos /]# touch /etc/cron.daily/ntpsynchro
[root@centos /]# chmod +x /etc/cron.daily/ntpsynchro

Następnie wrzucamy do pliku tę zawartość (np. używając: nano /etc/cron.daily/ntpsynchro):
#!/bin/sh
/usr/sbin/ntpdate pl.pool.ntp.org | logger 1> /dev/null 2>&1

Dobrze jest testowo i w celu pierwszej synchronizacji uruchomić skrypt:

/etc/cron.daily/ntpsynchro

A następnie wyświetlić zawartość logu:

cat /var/log/messages | tail

Poprawnie działający skrypt powinien zalogować nam coś w ten deseń:

Jun  4 14:04:52 centos root:  4 Jun 14:04:52 ntpdate[10409]: adjust time server 217.96.29.26 offset 0.000199 sec

Co się właśnie stało? Nasz serwer, który jest w tej całej akcji KLIENTEM zapytał się serwera pl.pool.ntp.org o aktualny czas, zlogował odpowiedź i oczywiście jeżeli była taka potrzeba ustawił na naszej maszynie.
Prawda, że takie rozwiązanie jest bardziej eleganckie, prostsze i bardziej bezpieczne? 🙂

Automatyczna synchronizacja czasu w CentOS 6.5

DEPRECATED – NIE UŻYWAĆ O ILE NIE POTRZEBUJESZ SERWERA DO USTAWIANIA CZASU W WIĘKSZEJ SIECI LOKALNEJ.

 

SPRAWDŹ WPIS: https://marcin.szydelscy.pl/post/2014/synchronizacja-czasu-linux-wersja-nieprzesadzona/

 

 

Prosta usługa, banalna konfiguracja, a przy tym w zasadzie podstawa dla serwerów.

  1. Zaczynamy od wstępnego zsynchronizowania czasu naszej maszyny:
    [root@centos /]# ntpdate tempus1.gum.gov.pl
    
  2. Instalujemy pakiet ntp:
    [root@centos /]# yum install ntp
    
  3. edytujemy plik /etc/ntp.conf:
    • (opcjonalnie) zmieniamy listę serwerów na:
      server tempus1.gum.gov.pl
      server tempus2.gum.gov.pl
      
    • (opcjonalnie) dodajemy plik do logowania informacji z ntpd:
      logfile /var/log/ntp.log
      
  4. Uruchamiamy usługę:
    [root@centos /]# service ntpd start
    
  5. Sprawdzamy czy podłączyła się do serwerów:
    [root@centos /]# ntpq -p
    

    (opcjonalnie) weryfikujemy log usługi:

    [root@centos /]# type  /var/log/ntp.log
    
  6. Dodajemy do 'autostartu’:
    [root@centos /]# chkconfig ntpd on
    

Gratulacje. Od teraz Twój serwer będzie miał zawsze aktualny czas.

Polecam zmianę listy serwerów czasu na podane wyżej. Są to oficjalne serwery Głównego Urzędu Miar, korzystające z czasu serwowanego przez zegar atomowy. Źródło jest solidne i godne zaufania. Oczywiście ustawione w standardowym konfigu poole centosa, też dadzą radę, ale ja tam wolę nasze. 🙂