Понеделник, Март 08, 2010

Backup & restore of Oracle XE (Express Edition)

Вградените facilities в web frontend-а на XE са крайно безполезни. Не могат да бекнат всичките таблици наведнъж, не могат да бекнат и схемата като цяло. Предложеното решение тук е студен бекъп, спира базата, беква/възстановява, пуска базата, тествано е и работи.

Приемаме, че имате линукс с инсталиран Oracle XE, с наличният контролер скрипт за oracle в /etc/init.d/oracle-xe.

Добавете потребителят си към групите sudo и dba. По желание разрешете достъпът до судо от потребителят ви без парола.

solar@solarpc:~/.bin$ cat backup.sh
#!/bin/bash
# make sure it's enabled!
sudo /etc/init.d/oracle-xe enable
# stopping oracle XE
sudo /etc/init.d/oracle-xe stop
# disable :)
sudo /etc/init.d/oracle-xe disable
# remove old backup
sudo rm /var/dbspace/myxebackup.tar.gz
# tar gzip
sudo tar -C / -czpvf /var/dbspace/myxebackup.tar.gz /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs /usr/lib/oracle/xe/oradata/XE /usr/lib/oracle/xe/app/oracle/flash_recovery_area
# enable
sudo /etc/init.d/oracle-xe enable
# start back oracle
sudo /etc/init.d/oracle-xe start
# end of file

solar@solarpc:~/.bin$ cat restore.sh
#!/bin/bash
# make sure it's enabled!
sudo /etc/init.d/oracle-xe enable
# stopping oracle XE
sudo /etc/init.d/oracle-xe stop
# disable :)
sudo /etc/init.d/oracle-xe disable
# tar gzip
sudo tar -C / -zxpvf /var/dbspace/myxebackup.tar.gz
# enable
sudo /etc/init.d/oracle-xe enable
# start back oracle
sudo /etc/init.d/oracle-xe start
# end of file

Разбира се, променете пътя и името на архива :)

Въпроси:

Q: Защо е необходимата цялата драма със sudo ?
A: Защото suid/guid не работи със скриптове. Най-лесното друго решение е да си напишете C wrapper, който да вика скрипта. Not nice. Really not nice.

Q: Enable/disable ?
A: Не питайте. Факт, че ако базата не е enable-ната, не можете да извикате stop/start. Скриптът просто exit-ва мълчаливо. Един вид workaround. Защо са сложени не е ясно.

Q: tar cfvz - добре, ама p какво прави ?
A: Опитва се възстанови оригиналните притежатал и група на файловете. Иначе ще ги extract-не като root. Ходи се чуди после защо базата нещо не работи :D

Q: Какво пиеш ?
A: Бира.


Наздраве ;)

0 коментара:

Публикуване на коментар