Archiwum kategorii: db

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

Zmiana engine tabel WordPressa z MyISAM na ARIA

Komplet komend SQL. Oczywiście identycznie można zmienić engine każdej innej tabeli w bazie.

Opcja TRANSACTIONAL=1 oznacza, że włączamy dla tabeli tryb crash-safe.

ALTER TABLE `wp_commentmeta` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_comments` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_links` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_options` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_postmeta` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_posts` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_terms` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_term_relationships` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_term_taxonomy` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_usermeta` ENGINE=`ARIA` TRANSACTIONAL=1;
ALTER TABLE `wp_users` ENGINE=`ARIA` TRANSACTIONAL=1;

Niektóre pluginy mogą założyć sobie dodatkowe tabele. Zmieniamy je analogicznie.