[root@dbserver38 ~]# umount /mnt/hd2tb
umount: /mnt/hd2tb: not mounted
[root@dbserver38 ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@dbserver38 ~]# mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: layout defaults to n1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda1 appears to contain an ext2fs file system
size=1953519872K mtime=Fri Sep 28 19:39:38 2018
mdadm: /dev/sda1 appears to be part of a raid array:
level=raid10 devices=4 ctime=Wed Apr 4 12:07:08 2018
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=1953519872K mtime=Wed Apr 4 18:18:58 2018
mdadm: /dev/sdb1 appears to be part of a raid array:
level=raid10 devices=4 ctime=Wed Apr 4 12:07:08 2018
mdadm: /dev/sdc1 appears to be part of a raid array:
level=raid10 devices=4 ctime=Wed Apr 4 12:07:08 2018
mdadm: /dev/sdd1 appears to be part of a raid array:
level=raid10 devices=4 ctime=Wed Apr 4 12:07:08 2018
mdadm: size set to 976759936K
Continue creating array? y
mdadm: array /dev/md0 started.
[root@dbserver38 ~]# mount -t ext4 -o rw,noatime,max_batch_time=0,nobarrier,data=writeback /dev/md0 /mnt/hd2tb
Показаны сообщения с ярлыком dbserver. Показать все сообщения
Показаны сообщения с ярлыком dbserver. Показать все сообщения
понедельник, 8 октября 2018 г.
понедельник, 13 ноября 2017 г.
Восстановление DBSERVER
Причина:
частично вышел из строя HDD-160GB, на котором была установлена ОС.
Разбираться и проверять времени не было, поэтому просто заменили его на другой HDD-160GB.
Перед переустановкой ОС сохранить копии:
/etc/fstab
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf
db_informer расположен в [HDD 2TB]/db_informer/;
distr расположен в [HDD 2TB]/distr/;
0bmenka расположен в [HDD 2TB]/0bmenka/;
oracle расположен [RAID-0 из двух HDD-1TB]/:
- oracle_ee/;
- oraInventory/.
(Директории Oracle нужно переместить в другое место, затем установить Oracle в те же папки, затем остановить его и заменить директории на перемещенные)
ОС Oracle Enterprise Linux 5.11 x64
При установке:
- SELinux - disabled;
- KEDump - disabled;
- Firewall - disabled.
После установки:
yum install samba
затем заменить
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf (заменять его не пришлось, пока не понял почему - ОС каким-то образом сама нашла RAID-0, сама его собрала, мне оставалось его только смонтировать)
После подачи Интернет:
yum автоматически скачает обновленный образ загрузки (я пока не знаю, как это отключить), но этот обновленный образ приводит к ошибке (я пока тоже не знаю как это исправить), поэтому в указанном файле нужно будет в параметре "default" указать пункт меню, который отвечает за загрузку прежнего образа:
/etc/grub.conf
Текущие точки монтирования (их и нужно придерживаться)
[root@dbserver38 /]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdd1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sdc1 on /mnt/diska type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/hd2tb type ext4 (rw,noatime,nodiratime,max_batch_time=0,nobarrier)
Дополнительно:
- оказалось, что раздел с RAID-0 (/dev/md0) содержит ошибки, поэтому лечим их ("до монтирования"): fsck.ext4 -a /dev/md0
- не поднялся OEM - нужно пересоздать репозиторий (но это в нерабочее время):
1) emca -deconfig dbcontrol db -repos drop
2) emca -config dbcontrol db -repos create
частично вышел из строя HDD-160GB, на котором была установлена ОС.
Разбираться и проверять времени не было, поэтому просто заменили его на другой HDD-160GB.
Перед переустановкой ОС сохранить копии:
/etc/fstab
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf
db_informer расположен в [HDD 2TB]/db_informer/;
distr расположен в [HDD 2TB]/distr/;
0bmenka расположен в [HDD 2TB]/0bmenka/;
oracle расположен [RAID-0 из двух HDD-1TB]/:
- oracle_ee/;
- oraInventory/.
(Директории Oracle нужно переместить в другое место, затем установить Oracle в те же папки, затем остановить его и заменить директории на перемещенные)
ОС Oracle Enterprise Linux 5.11 x64
При установке:
- SELinux - disabled;
- KEDump - disabled;
- Firewall - disabled.
После установки:
yum install samba
затем заменить
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf (заменять его не пришлось, пока не понял почему - ОС каким-то образом сама нашла RAID-0, сама его собрала, мне оставалось его только смонтировать)
После подачи Интернет:
yum автоматически скачает обновленный образ загрузки (я пока не знаю, как это отключить), но этот обновленный образ приводит к ошибке (я пока тоже не знаю как это исправить), поэтому в указанном файле нужно будет в параметре "default" указать пункт меню, который отвечает за загрузку прежнего образа:
/etc/grub.conf
Текущие точки монтирования (их и нужно придерживаться)
[root@dbserver38 /]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdd1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sdc1 on /mnt/diska type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/hd2tb type ext4 (rw,noatime,nodiratime,max_batch_time=0,nobarrier)
Дополнительно:
- оказалось, что раздел с RAID-0 (/dev/md0) содержит ошибки, поэтому лечим их ("до монтирования"): fsck.ext4 -a /dev/md0
- не поднялся OEM - нужно пересоздать репозиторий (но это в нерабочее время):
1) emca -deconfig dbcontrol db -repos drop
2) emca -config dbcontrol db -repos create
grub.conf
dbserver:
загрузчик GRUB.
После автоматического обновления ПО в grub.conf появилась новая запись о свежей версии образа для загрузки, но она загружается с ошибками.
Чтобы вернуть прежний образ загрузки изменил:
grub.conf:
загрузчик GRUB.
После автоматического обновления ПО в grub.conf появилась новая запись о свежей версии образа для загрузки, но она загружается с ошибками.
Чтобы вернуть прежний образ загрузки изменил:
grub.conf:
default=1 (было 0)
(чтобы загружался этот пункт меню)
title Oracle Linux Server-base (2.6.18-398.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet numa=off transparent_hugepage=never
initrd /initrd-2.6.18-398.el5.img
воскресенье, 23 октября 2016 г.
Установка PostgreSQL 9.5 на Oracle Linux 5
По мотивам: http://tecadmin.net/install-postgresql-9-5-on-centos/#
1) yum install postgresql95-server postgresql95
2) service postgresql-9.5 initdb
3) service postgresql-9.5 start
4) для автозапуска при старте сервера:
P.S. Пришлось вручную добавить в /var/lib/pgsql/.bash_profile:
1) yum install postgresql95-server postgresql95
2) service postgresql-9.5 initdb
3) service postgresql-9.5 start
4) для автозапуска при старте сервера:
chkconfig postgresql-9.5 on
P.S. Пришлось вручную добавить в /var/lib/pgsql/.bash_profile:
alias psql = '/usr/pgsql-9.5/bin/psql'
понедельник, 21 сентября 2015 г.
[в процессе] Рекомендации для тестовых баз Oracle
Сравнение режимов ARCHIVELOG и NOARCHIVELOG: http://my-oracle.it-blogs.com.ua/post-282.aspx.
«... тестовая база – NOARCHIVELOG; промышленная – ARCHIVELOG».
Ускорение импорта дампов:
http://www.freelists.org/post/oracle-l/Disable-logging-in-tablespace-vs-using-hidden-parameter-disable-logging,5
http://www.dba-oracle.com/t_import_impdp_import_performance_speed.htm
Тесты:
mount -t ext4 -o noatime,nodiratime,max_batch_time=0,nobarrier /dev/md0 /mnt/hd2tb
Импорт дампа от 02.09.2015:
- стандартная команда (до оптимизации RAID-0) = 2 часа 30 минут;
- стандартная команда (после оптимизации RAID-0) = 1 час 37 минут;
- дополненная команда (после оптимизации RAID-0) = 2 часа 16 минут;
была дополнена опциями:
COMMIT=Y
BUFFER=64000
- стандартная команда (после оптимизации RAID-0) = 1 час 49 минут.
=================
Перемонтировал с помощью команды:
mount -t ext4 -o rw,noatime,max_batch_time=0,nobarrier,data=writeback /dev/md0 /mnt/hd2tb
+ отключил журналирование в ext4 (http://fenidik.blogspot.ru/2010/03/ext4-disable-journal.html):
Проверяю:
- стандартная команда (после оптимизации RAID-0) = 1 час 28 минут.
- стандартная команда (после оптимизации RAID-0) = 1 час 55 минут.
- стандартная команда (после оптимизации RAID-0) = 1 час 50 минут.
Новая проверка:
mkfs.ext4 -T largefile -O ^has_journal /dev/md0
mount -t ext4 -o rw,noatime,max_batch_time=0,nobarrier,data=writeback /dev/md0 /mnt/hd2tb
./importdp.sh F_IRKOBL_150902 azkbase2015_20150902_1900.dmp
- стандартная команда (после оптимизации RAID-0) = 1 час 20 минут.
«... тестовая база – NOARCHIVELOG; промышленная – ARCHIVELOG».
Ускорение импорта дампов:
http://www.freelists.org/post/oracle-l/Disable-logging-in-tablespace-vs-using-hidden-parameter-disable-logging,5
If you want fast import you can do several things, first of all get all the
DDL statements
1. import only data
2. create indexes with the DDL and adding NOLOGGING and parallel clauses
3. create the constraints but keep them DISABLED
4. Enable the constraints by setting parallel degree at table level, by
doing so parallel executions can be used
http://www.dba-oracle.com/t_import_impdp_import_performance_speed.htm
доп.опции для impdp:
COMMIT=Y
BUFFER=64000
_disable_logging=true (ТОЛЬКО для тестовых баз) (пока проверить не удалось, т.к. СУБД не позволяет задать такой параметр)
Тесты:
mount -t ext4 -o noatime,nodiratime,max_batch_time=0,nobarrier /dev/md0 /mnt/hd2tb
Импорт дампа от 02.09.2015:
- стандартная команда (до оптимизации RAID-0) = 2 часа 30 минут;
- стандартная команда (после оптимизации RAID-0) = 1 час 37 минут;
- дополненная команда (после оптимизации RAID-0) = 2 часа 16 минут;
была дополнена опциями:
COMMIT=Y
BUFFER=64000
- стандартная команда (после оптимизации RAID-0) = 1 час 49 минут.
=================
Перемонтировал с помощью команды:
mount -t ext4 -o rw,noatime,max_batch_time=0,nobarrier,data=writeback /dev/md0 /mnt/hd2tb
+ отключил журналирование в ext4 (http://fenidik.blogspot.ru/2010/03/ext4-disable-journal.html):
# Enable writeback mode. This mode will typically provide the best ext4 performance.
tune2fs -o journal_data_writeback /dev/sda10
# Delete has_journal option
tune2fs -O ^has_journal /dev/sda10
# Required fsck
e2fsck -f /dev/sda10
# Check fs options
dumpe2fs /dev/sda10 |more
Проверяю:
- стандартная команда (после оптимизации RAID-0) = 1 час 28 минут.
- стандартная команда (после оптимизации RAID-0) = 1 час 55 минут.
- стандартная команда (после оптимизации RAID-0) = 1 час 50 минут.
Новая проверка:
mkfs.ext4 -T largefile -O ^has_journal /dev/md0
mount -t ext4 -o rw,noatime,max_batch_time=0,nobarrier,data=writeback /dev/md0 /mnt/hd2tb
./importdp.sh F_IRKOBL_150902 azkbase2015_20150902_1900.dmp
- стандартная команда (после оптимизации RAID-0) = 1 час 20 минут.
пятница, 11 сентября 2015 г.
[в процессе] Попытка повысить производительность RAID-0
Изначально RAID-0 был собран тут. Тогда была выбрана ФС "ext3".
Считаю, что повысить производительность можно заменив ФС на "ext4" вместо "ext3".
Созданы резервные копии
Отключение RAID-0
Создание RAID-0
Создаем mdadm.conf:
Монтируем, проверяем, если все хорошо, то прописываем точку монитрования в fstab.
После проверки оказалось, что процесс импорта дампа выполняется недопустимо медленно.
Найдено решение (googleб по фразе «low oracle performance "ext4"»):
http://www.oracle.com/us/technologies/linux/oracle-linux-with-flash-2004731.pdf, стр. 6:
=========================
by
аргументация выбора
Считаю, что повысить производительность можно заменив ФС на "ext4" вместо "ext3".
Созданы резервные копии
/etc/mdadm.conf
/etc/fstab
Отключение RAID-0
umount /mnt/hd2tb
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
fdisk /dev/sda
d - удалить раздел
w - запись изменений на диск
fdisk /dev/sdb
d - удалить раздел
w - запись изменений на диск
Создание RAID-0
fdisk /dev/sda
n - создать раздел
p - основной
1 - с номером 1
t - изменить тип раздела
fd - тип раздела указать auto Linux raid
w - запись изменений на диск
fdisk /dev/sdb
n - создать раздел
p - основной
1 - с номером 1
t - изменить тип раздела
fd - тип раздела указать auto Linux raid
w - запись изменений на диск
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
Далее, нужно вычислить stride и stripe-width для mkfs.ext4:
stride = chunk_size / file_system_block_size
chunk_size - см. /proc/mdstat (cat /proc/mdstat)
file_system_block_size - см. результат команды "blockdev --getbsz /dev/md0"
stripe-width = stride * (количество HDD для пользовательских данных (не для контрольных данных) в RAID)
mkfs.ext4 -b 4096 -E stride=16,stripe-width=32 /dev/md0
Создаем mdadm.conf:
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' > /etc/mdadm.conf
Монтируем, проверяем, если все хорошо, то прописываем точку монитрования в fstab.
После проверки оказалось, что процесс импорта дампа выполняется недопустимо медленно.
Найдено решение (googleб по фразе «low oracle performance "ext4"»):
http://www.oracle.com/us/technologies/linux/oracle-linux-with-flash-2004731.pdf, стр. 6:
mount -t ext4 -o noatime,nodiratime,max_batch_time=0,nobarrier /dev/md0 /mnt/hd2tb
=========================
by
аргументация выбора
вторник, 31 марта 2015 г.
[в процессе] BFT_BASESINFO
qlaster
CREATE TABLE CUSTOMER
(ID NUMBER(5,0) NOT NULL ENABLE,
CAPTION VARCHAR2(100 BYTE),
DESCRIPTION VARCHAR2(100 BYTE),
CTLNAME VARCHAR2(100 BYTE),
CONSTRAINT PK_ACCBOOK PRIMARY KEY (ID));
CREATE TABLE CUSTOMER
(ID NUMBER(5,0) NOT NULL ENABLE,
CAPTION VARCHAR2(100 BYTE),
DESCRIPTION VARCHAR2(100 BYTE),
CTLNAME VARCHAR2(100 BYTE),
CONSTRAINT PK_ACCBOOK PRIMARY KEY (ID));
пятница, 13 марта 2015 г.
importdp.sh - вариант без FROM_USERNAME
Формат команды
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
четверг, 12 марта 2015 г.
importdp.sh - вариант с FROM_USERNAME
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
вторник, 3 марта 2015 г.
Информация о винчестере с ОС
[root@dbserver ~]# smartctl -i /dev/sdd
[root@dbserver ~]# fdisk -l /dev/sdd
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.39-400.215.10.el5uek] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Blue Serial ATA
Device Model: WDC WD1600AAJS-75PSA0
Serial Number: WD-WMAP98490365
LU WWN Device Id: 5 0014ee 0003feca0
Firmware Version: 05.06H05
User Capacity: 160,000,000,000 bytes [160 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Tue Mar 3 12:37:09 2015 KRAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
[root@dbserver ~]# fdisk -l /dev/sdd
Disk /dev/sdd: 160.0 GB, 160000000000 bytes
60 heads, 12 sectors/track, 434027 cylinders
Units = cylinders of 720 * 512 = 368640 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 * 1 284 102234 83 Linux
/dev/sdd2 285 434027 156147480 8e Linux LVM
воскресенье, 1 марта 2015 г.
/etc/fstab, /dev/sda1, boot fail
Когда из файла /etc/fstab комментирую строку про /dev/sda1:
после перезагрузки Linux не загружается, сообщая:
upd:
Оказалось, что сам дебил - причина была в том, что комментирование строки я выполнял устанавливая символ ";" в начале строки, а надо было ставить символ "#" (ну либо, действительно, удалять строку).
[root@dbserver ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sda1 /mnt/hd2tb ext3 defaults 0 2 ;вот эту
после перезагрузки Linux не загружается, сообщая:
...
Checking filesystems
fsck.ext3: No such file or directory while trying to open /dev/sda1
upd:
Оказалось, что сам дебил - причина была в том, что комментирование строки я выполнял устанавливая символ ";" в начале строки, а надо было ставить символ "#" (ну либо, действительно, удалять строку).
пятница, 27 февраля 2015 г.
dbserver, RAID-0, stripe
Инфа:
/dev/sda - это HDD Western Digital Se WD1002F9YZ 1TB
fdisk /dev/sda - cоздан раздел /dev/sda1
/dev/sdb - это HDD Western Digital Se WD1002F9YZ 1TB
fdisk /dev/sdb - cоздан раздел /dev/sdb1
Создан RAID-0 (из двух разделов, последовательность HDD по серийным номерам следующая: 1) WD-WMC5K0D5T51D; 2) WD-WMC5K0D1A6A3):
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sda1
После перезапуска системы собирается автоматически (по рекомендации из raid.wiki.kernel.org):
mdadm --detail --scan >> /etc/mdadm.conf
fdisk /dev/md0 - создан раздел /dev/md0p1 и отформатирован под ext3:
mkfs.ext3 /dev/m0p1
Точка монтирования:
mount -t ext3 /dev/md0p1 /mnt/hd2tb
+ прописка в /etc/fstab
[root@dbserver ~]# smartctl -i /dev/sdb
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.39-400.215.10.el5uek] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD1002F9YZ-09H1JL1
Serial Number: WD-WMC5K0D5T51D
LU WWN Device Id: 5 0014ee 003ed344d
Firmware Version: 01.01M03
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Feb 27 18:44:27 2015 KRAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
[root@dbserver ~]# smartctl -i /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.39-400.215.10.el5uek] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD1002F9YZ-09H1JL1
Serial Number: WD-WMC5K0D1A6A3
LU WWN Device Id: 5 0014ee 059418b6d
Firmware Version: 01.01M03
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Feb 27 18:44:52 2015 KRAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
/dev/sda - это HDD Western Digital Se WD1002F9YZ 1TB
fdisk /dev/sda - cоздан раздел /dev/sda1
/dev/sdb - это HDD Western Digital Se WD1002F9YZ 1TB
fdisk /dev/sdb - cоздан раздел /dev/sdb1
Создан RAID-0 (из двух разделов, последовательность HDD по серийным номерам следующая: 1) WD-WMC5K0D5T51D; 2) WD-WMC5K0D1A6A3):
mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sda1
После перезапуска системы собирается автоматически (по рекомендации из raid.wiki.kernel.org):
mdadm --detail --scan >> /etc/mdadm.conf
При необходимости можно собрать вручную:
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sda1
fdisk /dev/md0 - создан раздел /dev/md0p1 и отформатирован под ext3:
mkfs.ext3 /dev/m0p1
Точка монтирования:
mount -t ext3 /dev/md0p1 /mnt/hd2tb
+ прописка в /etc/fstab
dbserver, mount, HDD 2TB
Инфа:
/dev/sda - это Western Digital RE WD2000FYYZ 2TB
fdisk /dev/sda - cоздан раздел /dev/sda1 и отформатирован под ext3:
mkfs.ext3 /dev/sda1
Точка монтирования:
mkdir /mnt/hd2tb
mount -t ext3 /dev/sda1 /mnt/diska
+ прописка в /etc/fstab
[root@dbserver ~]# smartctl -i /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-2.6.39-400.215.10.el5uek] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD2000FYYZ-01UL1B1
Serial Number: WD-WCC1P1030551
LU WWN Device Id: 5 0014ee 25eccf34f
Firmware Version: 01.01K02
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Feb 27 18:35:46 2015 KRAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
/dev/sda - это Western Digital RE WD2000FYYZ 2TB
fdisk /dev/sda - cоздан раздел /dev/sda1 и отформатирован под ext3:
mkfs.ext3 /dev/sda1
Точка монтирования:
mkdir /mnt/hd2tb
mount -t ext3 /dev/sda1 /mnt/diska
+ прописка в /etc/fstab
вторник, 10 февраля 2015 г.
dbserver.mdb, delete
Надо бы не забыть автоматизировать вот эту часть:
DELETE FROM ORA_USERS WHERE orausername not in (
'F_ANGARSK_150115',
'F_BRATSK_150123_TEST',
'F_IRKOBL_150113',
'F_IRKOBL_150124',
'F_IRKOBL_150201',
'F_IRKOBL_150205',
'F_IRKOBL_150205_B',
'F_IRKOBL_2014_150110',
'F_IRKOBL_2014_150203_B',
'P_BRATSK_141127',
'P_IRKOBL_150112',
'P_IRKOBL_150128',
'P_IRKOBL_150201',
'P_IRKOBL_150205',
'P_IRKOBL_150205_B',
'Z_IRKOBL_141202',
'Z_IRKOBL_141217',
'Z_IRKOBL_150120'
);
DELETE FROM ORA_USERS WHERE orausername not in (
'F_ANGARSK_150115',
'F_BRATSK_150123_TEST',
'F_IRKOBL_150113',
'F_IRKOBL_150124',
'F_IRKOBL_150201',
'F_IRKOBL_150205',
'F_IRKOBL_150205_B',
'F_IRKOBL_2014_150110',
'F_IRKOBL_2014_150203_B',
'P_BRATSK_141127',
'P_IRKOBL_150112',
'P_IRKOBL_150128',
'P_IRKOBL_150201',
'P_IRKOBL_150205',
'P_IRKOBL_150205_B',
'Z_IRKOBL_141202',
'Z_IRKOBL_141217',
'Z_IRKOBL_150120'
);
четверг, 11 декабря 2014 г.
Нынешние изменения в dbserver
Для повышения производительности в dbsrever внесены следующие изменения:
alter system set sga_max_size=11G,scope=spfile; /* было 6912M */
alter system set sga_target=11G,scope=spfile; /* было 6912M */
alter system set commit_write=batch,nowait; /* было 'пусто', есть риск повреждения БД, но работать будет побыстрее (П. Будковский) */
alter system set sga_max_size=11G,scope=spfile; /* было 6912M */
alter system set sga_target=11G,scope=spfile; /* было 6912M */
alter system set commit_write=batch,nowait; /* было 'пусто', есть риск повреждения БД, но работать будет побыстрее (П. Будковский) */
четверг, 27 ноября 2014 г.
AWR для Oracle SE и DBMS_SHARED_POOL
Включение механизма сбора данных для AWR-отчетов в Oracle Standart Edition.
(ист.)
sqlplus / as sysdba
SQL> alter system set control_management_pack_access = "DIAGNOSTIC+TUNING" scope=both;
System altered.
SQL> @$ORACLE_HOME/rdbms/admin/dbmspool.sql
Package created.
Create the dbmspool package body:
SQL> @$ORACLE_HOME/rdbms/admin/prvtpool.plb
View created.
Package body created.
Grant execution privilege on the package:
SQL> grant execute on dbms_shared_pool to sysman;
Grant succeeded.
SQL> grant execute on dbms_shared_pool to dba;
Grant succeeded.
exit
//Пересоздание репозитория
su - oracle
emca -deconfig dbcontrol db -repos drop
emca -config dbcontrol db -repos create
OEM -> вкладка Server -> Automatic Workload Repository -> в блоке General нажать "Edit" -> выставить "Retention Period (Days)" = 31.
(ист.)
sqlplus / as sysdba
SQL> alter system set control_management_pack_access = "DIAGNOSTIC+TUNING" scope=both;
System altered.
SQL> @$ORACLE_HOME/rdbms/admin/dbmspool.sql
Package created.
Create the dbmspool package body:
SQL> @$ORACLE_HOME/rdbms/admin/prvtpool.plb
View created.
Package body created.
Grant execution privilege on the package:
SQL> grant execute on dbms_shared_pool to sysman;
Grant succeeded.
SQL> grant execute on dbms_shared_pool to dba;
Grant succeeded.
exit
//Пересоздание репозитория
su - oracle
emca -deconfig dbcontrol db -repos drop
emca -config dbcontrol db -repos create
OEM -> вкладка Server -> Automatic Workload Repository -> в блоке General нажать "Edit" -> выставить "Retention Period (Days)" = 31.
среда, 5 ноября 2014 г.
Подписаться на:
Сообщения (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
►
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)