После установки Bastille если есть конфиг, натравить на него можно через
#bastille -b
Проверить можно через vsftpd, если он установлен
На команду #service vsftpd status
Ответ: vsftpd dead but subsys locked
Thursday, May 31, 2007
Wednesday, May 30, 2007
Ошибки создания JOBs при импорте схем под system
При импорте множества схем под system объекты job валятся в схему system, а не в схемы, которым они принадлежат. Пока не нашел как решить эту проблему. А пока нужно было удалить кучу созданных объектов JOB и попросить разработчиков создать эти JOB-ы.
Написал такой код для удаления этих job-ов, который сработал.
declare
j number;
begin
for j in (select job from dba_jobs where log_user in ('SYSTEM'))
loop begin
DBMS_JOB.REMOVE(j.job);
COMMIT;
end;
end loop;
end;
Написал такой код для удаления этих job-ов, который сработал.
declare
j number;
begin
for j in (select job from dba_jobs where log_user in ('SYSTEM'))
loop begin
DBMS_JOB.REMOVE(j.job);
COMMIT;
end;
end loop;
end;
Tuesday, May 29, 2007
Полезняшки
select u.sid, substr(u.username,1,12) user_name, s.sql_text
from v$sql s, v$session u
where s.hash_value = u.sql_hash_value
and sql_text not like '%from v$sql s, v$session u%'
order by u.sid;
from v$sql s, v$session u
where s.hash_value = u.sql_hash_value
and sql_text not like '%from v$sql s, v$session u%'
order by u.sid;
Monday, May 28, 2007
Тест с установкой Oracle на CentOS 5
Пока есть время (в преддверии установки нового сервера для разработчиков) решил протестить установку Oracle 10gR2 на CentOS 5 (хотя как я понял 5-я версия RHEL еще не тестировалась Oracle). Первая грабля поджидает сразу после запуска runInstaller'а на сообщении
"Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2". Загляните в /etc/redhat-release и поменяйте версию. Подсказку нашел на одной из
ссылок по установке Oracle 10gR2 на Red Hat 5.
Следующая грабля связана с rawdevices, на базе которых поднимается Oracle ASM.
Я не нашел ни /etc/init.d/rawdevices, ни /etc/sysconfig/rawdevices. Помог FAQ How do I add raw device mapping in Red Hat Enterprise Linux 5?. Ну и ссылка на русскую доку по RHEL возможно пригодится
Установил Oracle и создал базу на базе ASM успешно. Все работает, но когда попробовал перелить несколько схем из другой БД при помощи impdp с network_link, но получил ошибки
ORA-31626: job does not exist
ORA-31650: timeout waiting for master process response
.....Думаю, тестировать далее нет смысла - если будет время продолжим тесты, но сейчас я откажусь от CentOS 5 в своих работах с Oracle 10gR2.
"Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2". Загляните в /etc/redhat-release и поменяйте версию. Подсказку нашел на одной из
ссылок по установке Oracle 10gR2 на Red Hat 5.
Следующая грабля связана с rawdevices, на базе которых поднимается Oracle ASM.
Я не нашел ни /etc/init.d/rawdevices, ни /etc/sysconfig/rawdevices. Помог FAQ How do I add raw device mapping in Red Hat Enterprise Linux 5?. Ну и ссылка на русскую доку по RHEL возможно пригодится
Установил Oracle и создал базу на базе ASM успешно. Все работает, но когда попробовал перелить несколько схем из другой БД при помощи impdp с network_link, но получил ошибки
ORA-31626: job does not exist
ORA-31650: timeout waiting for master process response
.....Думаю, тестировать далее нет смысла - если будет время продолжим тесты, но сейчас я откажусь от CentOS 5 в своих работах с Oracle 10gR2.
dmesg в crontab.root
На установленной системе с HP-UX 11.11 PA-RISC установил Oracle 10g и базу на базе ASM. Экземпляр ASM был построен на asm_diskstring='/dev/rdsk/c18t0*, /dev/rdsk/c20t1*', права на которые принадлежали oracle:dba. Дак вот время от времени права на /dev/rdsk/c20t1* слетали на sys:bin, из-за чего ASM постепенно сыпался. Понятно было, что какой-то процесс вызывает переинициализацию дисков в системе. При этом в /var/spool/cron/crontabs/root никаких процессов кроме скриптов бэкапа нет.
Написал скриптик-чекер, которые проверял права на диски ежеминутно из крона и высылал на эл.почту уведомление об их изменении. Время от времени такие сообщения начали сыпаться на почту и я заметил в, что /tmp появляется файлик ioscan.out именно в то же время когда прилетает уведомление.
Оказалось, что в /var/spool/cron/crontab.root прописана строка 05,15,25,35,45,55 * * * * /usr/sbin/dmesg - >>/var/adm/messages
man dmesg сказал
dmesg - collect system diagnostic messages to form error log
....If the - argument is specified, dmesg computes (incrementally) the new messages since the last time it was run and places these on the standard output....
Отключение этой строки из крона помогло.
Т.е. crontab -e позволяет управлять лишь /var/spool/cron/crontabs/user, а не всем кроном юзера user.
Написал скриптик-чекер, которые проверял права на диски ежеминутно из крона и высылал на эл.почту уведомление об их изменении. Время от времени такие сообщения начали сыпаться на почту и я заметил в, что /tmp появляется файлик ioscan.out именно в то же время когда прилетает уведомление.
Оказалось, что в /var/spool/cron/crontab.root прописана строка 05,15,25,35,45,55 * * * * /usr/sbin/dmesg - >>/var/adm/messages
man dmesg сказал
dmesg - collect system diagnostic messages to form error log
....If the - argument is specified, dmesg computes (incrementally) the new messages since the last time it was run and places these on the standard output....
Отключение этой строки из крона помогло.
Т.е. crontab -e позволяет управлять лишь /var/spool/cron/crontabs/user, а не всем кроном юзера user.
Wednesday, May 23, 2007
Block change tracking (Сказочно, но проверить!)
Отслеживание измененных блоков для оптимизации инкрементального резервирования за счет устранения необходимости полного просмотра файлов данных в ходе резервирования.
Информация о физическом расположении всех изменений, заносится в файл отслеживания изменений change tracking file фоновым процессом CTWR (change tracking writer).
При включенном режиме отслеживания файл измененных блоков автоматически используется RMAN-ом.
Для просмотра включен ли режим отслеживания измененных блоков
sys@ORCL> select status from v$block_change_tracking;
STATUS
----------
DISABLED
Для того, чтобы включить отслеживание измененных блоков без указания имени файла нужно удостовериться установлен ли параметр db_create_file_dest
sys@ORCL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +ASM_DATA
Если параметр включен как в примере выше, то включение без указания имени файла.
sys@ORCL> alter database enable block change tracking;
sys@ORCL> select status,filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------
ENABLED +ASM_DATA/orcl/changetracking/ctf.303.623334603
При выключенном параметре parameter db_create_file_dest
sys@ORCL> alter database enable block change tracking
2> using file '/mydir/rman_change_track.f'
3> REUSE;
Информация о физическом расположении всех изменений, заносится в файл отслеживания изменений change tracking file фоновым процессом CTWR (change tracking writer).
При включенном режиме отслеживания файл измененных блоков автоматически используется RMAN-ом.
Для просмотра включен ли режим отслеживания измененных блоков
sys@ORCL> select status from v$block_change_tracking;
STATUS
----------
DISABLED
Для того, чтобы включить отслеживание измененных блоков без указания имени файла нужно удостовериться установлен ли параметр db_create_file_dest
sys@ORCL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +ASM_DATA
Если параметр включен как в примере выше, то включение без указания имени файла.
sys@ORCL> alter database enable block change tracking;
sys@ORCL> select status,filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------
ENABLED +ASM_DATA/orcl/changetracking/ctf.303.623334603
При выключенном параметре parameter db_create_file_dest
sys@ORCL> alter database enable block change tracking
2> using file '/mydir/rman_change_track.f'
3> REUSE;
Friday, May 18, 2007
/dev/async, см. 393314.1
Symptoms
Database storage is ASM on an HP-UX system.
A disk fails in an ASM diskgroup.
ASM does not recover and I/Os hang indefinitely.
All types of SQL statements requiring I/O can be affected.
Asynchronous I/O is enabled.
Solution
To implement the solution enable minor device number 4 for device /dev/async, i.e.
crw-rw-rw- 1 bin bin 101 0x000004 Sep 12 2006 /dev/async
Major and minor device numbers are assigned to a character device when the device is created with mknod. In order to change minor device number, /dev/async needs to be recreated.
$ /sbin/mknod /dev/async c 101 0x0
Database storage is ASM on an HP-UX system.
A disk fails in an ASM diskgroup.
ASM does not recover and I/Os hang indefinitely.
All types of SQL statements requiring I/O can be affected.
Asynchronous I/O is enabled.
Solution
To implement the solution enable minor device number 4 for device /dev/async, i.e.
crw-rw-rw- 1 bin bin 101 0x000004 Sep 12 2006 /dev/async
Major and minor device numbers are assigned to a character device when the device is created with mknod. In order to change minor device number, /dev/async needs to be recreated.
$ /sbin/mknod /dev/async c 101 0x0
Thursday, May 10, 2007
ограничения network_link
При при заливке при помощи ipmdp с network_link не поддерживаются партиционированные таблицы и таблицы типа xmltype
- определить есть ли партиционированные таблицы в схеме-источнике можно через
select distinct(owner) from dba_objects where object_type like 'TABLE PARTITION';
или, например, для схем User1, User2, User3
select * from dba_tab_partitions where table_owner in ('USER1','USER2','USER1');
- определить есть ли таблицы xmltype схемы-источника можно через
select distinct(owner) from dba_xml_tables;
Также наблюдается проблема с импортом через network_link данных из таблиц, имеющих столбцы типа LONG. Поэтому перед выполнением импорта лучше сразу определить такие таблицы через
select owner,table_name,column_name,data_type from dba_tab_columns
where owner in ('USER1','USER2','USER1') and data_type='LONG' order by 2;
и сделать импорт этих таблиц через DUMPFILE:
- определить есть ли партиционированные таблицы в схеме-источнике можно через
select distinct(owner) from dba_objects where object_type like 'TABLE PARTITION';
или, например, для схем User1, User2, User3
select * from dba_tab_partitions where table_owner in ('USER1','USER2','USER1');
- определить есть ли таблицы xmltype схемы-источника можно через
select distinct(owner) from dba_xml_tables;
Также наблюдается проблема с импортом через network_link данных из таблиц, имеющих столбцы типа LONG. Поэтому перед выполнением импорта лучше сразу определить такие таблицы через
select owner,table_name,column_name,data_type from dba_tab_columns
where owner in ('USER1','USER2','USER1') and data_type='LONG' order by 2;
и сделать импорт этих таблиц через DUMPFILE:
Tuesday, May 08, 2007
Проблема со special файл диска MSA1000 в HP-UX
Несколько дней назад столкнулся с проблемой когда из Oracle ASM (с asm_diskstring=/dev/rdsk/c20t1*), установленном на в HP-UX 11.11 c массивом MSA1000, потерялся один диск... Соответственно, общий объем дисковой группы уменьшился на объем потерянного диска. При этом утилита #/opt/compaq/hpacucli/bld/hpacucli показывает все физические диски с массива и все LUN-ы как доступные. После команд insf, ioscan и ioscan –funC disk special-файл диска /dev/rdsk/c20t1d4 не получает новых атрибутов по дате сканирования как все остальные диски....
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 4 11:58 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 4 11:58 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 4 11:58 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 4 11:58 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 Apr 24 09:29 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 4 11:58 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 4 11:58 /dev/rdsk/c20t1d6
Было предложено удалить и пересоздать этот special-файл след.образом.
1) удалить special files через
# rmsf /dev/rdsk/c20t1d4
# rmsf /dev/rdsk/c20t1d4
2) Запустить insf, ioscan
И если новый special–файл /dev/rdsk/c20t1d4 не создался, то перечитать по хардварному адресу LUN-а, взятому из ioscan –funC disk
bash-2.05b# ioscan -funC disk
disk 75 0/12/0/0.1.11.0.0.1.4 sdisk CLAIMED DEVICE HP MSA VOLUME
insf -e –H 0/12/0/0.1.11.0.0.1.4
Далее для Oracle ASM изменил владельца и атрибуты полученного special-файла
#chown oracle:dba /dev/rdsk/c20t1d4
#chmod 0664 /dev/rdsk/c20t1d4
И сегодня эта же проблема замечена вновь
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 8 09:12 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 8 09:12 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 8 09:11 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 8 09:11 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 May 4 12:58 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 8 09:11 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 8 09:11 /dev/rdsk/c20t1d6
Для временного решения данной проблемы добавил в крон периодическое выполнение скрипта my_checker.sh
# my_checker.sh
#!/usr/bin/sh
RCPNT=my@email.com
LOG=/oracle/product/my_checker.log
LSCMD='ls -l /dev/rdsk/c20t1*'
PATH=/usr/bin:/bin
DATE=`date +'%d/%m/%Y-%H:%M'`
${LSCMD}>> ${LOG}
if grep -i "sys" ${LOG}
then
cat ${LOG}|mailx -s "WARNING from HP-UX at "${DATE} ${RCPNT}
/sbin/init.d/chown_oracle_dba
rm -f ${LOG}
else rm -f ${LOG}
fi
# /sbin/init.d/chown_oracle_dba
#!/usr/bin/sh
PATH=/usr/bin
chown oracle:dba /dev/rdsk/c18t0*
chmod 660 /dev/rdsk/c18t0*
chown oracle:dba /dev/rdsk/c20t1*
chmod 660 /dev/rdsk/c20t1*
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 4 11:58 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 4 11:58 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 4 11:58 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 4 11:58 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 Apr 24 09:29 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 4 11:58 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 4 11:58 /dev/rdsk/c20t1d6
Было предложено удалить и пересоздать этот special-файл след.образом.
1) удалить special files через
# rmsf /dev/rdsk/c20t1d4
# rmsf /dev/rdsk/c20t1d4
2) Запустить insf, ioscan
И если новый special–файл /dev/rdsk/c20t1d4 не создался, то перечитать по хардварному адресу LUN-а, взятому из ioscan –funC disk
bash-2.05b# ioscan -funC disk
disk 75 0/12/0/0.1.11.0.0.1.4 sdisk CLAIMED DEVICE HP MSA VOLUME
insf -e –H 0/12/0/0.1.11.0.0.1.4
Далее для Oracle ASM изменил владельца и атрибуты полученного special-файла
#chown oracle:dba /dev/rdsk/c20t1d4
#chmod 0664 /dev/rdsk/c20t1d4
И сегодня эта же проблема замечена вновь
bash-2.05b# ls -l /dev/rdsk/c20t1*
crw-rw-r-- 1 oracle dba 188 0x141000 May 8 09:12 /dev/rdsk/c20t1d0
crw-rw-r-- 1 oracle dba 188 0x141100 May 8 09:12 /dev/rdsk/c20t1d1
crw-rw-r-- 1 oracle dba 188 0x141200 May 8 09:11 /dev/rdsk/c20t1d2
crw-rw-r-- 1 oracle dba 188 0x141300 May 8 09:11 /dev/rdsk/c20t1d3
crw-rw-r-- 1 oracle dba 188 0x141400 May 4 12:58 /dev/rdsk/c20t1d4
crw-rw-r-- 1 oracle dba 188 0x141500 May 8 09:11 /dev/rdsk/c20t1d5
crw-rw-r-- 1 oracle dba 188 0x141600 May 8 09:11 /dev/rdsk/c20t1d6
Для временного решения данной проблемы добавил в крон периодическое выполнение скрипта my_checker.sh
# my_checker.sh
#!/usr/bin/sh
RCPNT=my@email.com
LOG=/oracle/product/my_checker.log
LSCMD='ls -l /dev/rdsk/c20t1*'
PATH=/usr/bin:/bin
DATE=`date +'%d/%m/%Y-%H:%M'`
${LSCMD}>> ${LOG}
if grep -i "sys" ${LOG}
then
cat ${LOG}|mailx -s "WARNING from HP-UX at "${DATE} ${RCPNT}
/sbin/init.d/chown_oracle_dba
rm -f ${LOG}
else rm -f ${LOG}
fi
# /sbin/init.d/chown_oracle_dba
#!/usr/bin/sh
PATH=/usr/bin
chown oracle:dba /dev/rdsk/c18t0*
chmod 660 /dev/rdsk/c18t0*
chown oracle:dba /dev/rdsk/c20t1*
chmod 660 /dev/rdsk/c20t1*
Monday, May 07, 2007
alter database open resetliogs;
Эксперимент с потерей onlinelogs ...
Для симуляции потери online-logs, удалил их вручуную через 'asmcmd -p' при закрытой базе. При попытке открыть базу после этого ошибка
sys@ORCL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
Делаем recover until cancel (либо until time) и открываем базу.
sys@ORCL> alter database recover until cancel;
sys@ORCL> alter database open resetlogs;
Database altered.
ИЛИ
sys@ORCL> alter database recover automatic until time "to_date('2007-07-05:15:00:00','YYYY-MM-DD:HH24:MI:SS')";
sys@ORCL> alter database open resetliogs;
Database altered.
И ВАЖНО ПОМНИТЬ, что после OPEN RESETLOGS необходимо сразу сделать полный бэкап базы, т.к. все предыдущие потеряют актуальность.
Для симуляции потери online-logs, удалил их вручуную через 'asmcmd -p' при закрытой базе. При попытке открыть базу после этого ошибка
sys@ORCL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
Делаем recover until cancel (либо until time) и открываем базу.
sys@ORCL> alter database recover until cancel;
sys@ORCL> alter database open resetlogs;
Database altered.
ИЛИ
sys@ORCL> alter database recover automatic until time "to_date('2007-07-05:15:00:00','YYYY-MM-DD:HH24:MI:SS')";
sys@ORCL> alter database open resetliogs;
Database altered.
И ВАЖНО ПОМНИТЬ, что после OPEN RESETLOGS необходимо сразу сделать полный бэкап базы, т.к. все предыдущие потеряют актуальность.
expdp & impdp
Как можно сделать импорт-экспорт ....
1) create directory dpump_dir1 as '/home/oracle/dmp', если нет возможности воспользоваться существующей директорией из select * from dba_directories;
2) expdp system/passwd directory=dpump_dir1 dumpfile=myfile.dmp schemas=user1,user2,user3;
3) Копируем файлик на сервер, где нужна копия схемы в '/home/oracle/dmp2';
4) create directory dpump_dir2 as '/home/oracle/dmp2';
5) impdp system/passwd directory=dpump_dir2 dumpfile=myfile.dmp schemas=user1,user2,user3
ИЛИ через network_link
1) create database link mylink
connect to system identified by passwd
using 'service_name';
2) create directory dpump_dir1 as '/home/oracle/dmp'
3) ipmdp system/passwd directory=dpump_dir1 job_name=dpimp_job1 schemas=user1,user2,user2 network_link=mylink
log-и будут "сыпаться" в файл import.log директории /home/oracle/dmp
Жмем ctrl+c, набираем help и "балдеем" :)
Import> help
Вспоминая, что “сердцем” любой операции Data Pump является мастер-таблица. Это ключ к возможности Data Pump продолжать прерванные задания....
Выйдя из интерактивного режима позже подсоединиться к процессу можно по заданному job_name через $impdp system/passwd attach=dpimp_job1
Имя джобы можно посмотреть через
select * from dba_datapump_jobs;
===========
Через пару дней появилась задача перелить в нерабочее время схему обновленную User1 из одной базы в другую под именем User2. Написал скрипт, запускаемый из at или cron под root'ом.
В листинге далее необходимо добавить '<<' перед первым EOF
#!/bin/sh
RCPNT=me@mydomain.ru
ORACLE_HOME=/oracle/product/10.2.0/OraHome1
ORACLE_SID=mydb
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
ORA_NLS10=$ORACLE_HOME/nls/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/local/lib:/lib:/usr/lib
PATH=/bin:/sbin:$ORACLE_HOME/bin:$PATH:$HOME/bin
su - oracle -c "sqlplus system/passwd EOF
drop user user2 cascade;
exit;
EOF"
su - oracle -c "impdp system/passwd directory=data_pump_dir job_name=dp_user2 schemas=user1 remap_schema=user1:user2 network_link=mydb2"
DATE=`date +'%d/%m/%Y-%H:%M'`
echo "See logs of User2 dumped at "${DATE}|mail -s "User2 dumped" ${RCPNT}
# Скрипт проверил - работает.
Засады и ограничения:
1) Скрипт-то сработал и перелил схему, но .... оказалось, что при ремаппинге необходимо "возвращать" пароль импортированной схемы... "Чтите доку как грицо". И поэтому добавляем в скриптик (необходимо добавить '<<' перед первым EOF):
su - oracle -c "sqlplus system/passwd EOF
alter user user2 identified by values oldpasswd_of_user;
exit;
EOF"
Иначе user2 не сможет залогиниться под своим паролем.
Если много юзеров, воспользуемся скриптом
set pages 0;
set feedback off;
set termout off;
spool user_pass.sql;
select 'alter user "'||username||'" identified by values '''||password||''';'
from dba_users REM where username in ('USER1','USER2','USER3');
spool off;
exit;
2) Также при импорте СХЕМЫ (а не базы) по network_link не требуется создавать идентичную схему. Схема будет создана автоматом. За исключением того, что если у импортируемой схемы табличное пространство по умолчанию отличается от Users и такого ТС нет на целевой базе, то его необходимо просто создать.
1) create directory dpump_dir1 as '/home/oracle/dmp', если нет возможности воспользоваться существующей директорией из select * from dba_directories;
2) expdp system/passwd directory=dpump_dir1 dumpfile=myfile.dmp schemas=user1,user2,user3;
3) Копируем файлик на сервер, где нужна копия схемы в '/home/oracle/dmp2';
4) create directory dpump_dir2 as '/home/oracle/dmp2';
5) impdp system/passwd directory=dpump_dir2 dumpfile=myfile.dmp schemas=user1,user2,user3
ИЛИ через network_link
1) create database link mylink
connect to system identified by passwd
using 'service_name';
2) create directory dpump_dir1 as '/home/oracle/dmp'
3) ipmdp system/passwd directory=dpump_dir1 job_name=dpimp_job1 schemas=user1,user2,user2 network_link=mylink
log-и будут "сыпаться" в файл import.log директории /home/oracle/dmp
Жмем ctrl+c, набираем help и "балдеем" :)
Import> help
Вспоминая, что “сердцем” любой операции Data Pump является мастер-таблица. Это ключ к возможности Data Pump продолжать прерванные задания....
Выйдя из интерактивного режима позже подсоединиться к процессу можно по заданному job_name через $impdp system/passwd attach=dpimp_job1
Имя джобы можно посмотреть через
select * from dba_datapump_jobs;
===========
Через пару дней появилась задача перелить в нерабочее время схему обновленную User1 из одной базы в другую под именем User2. Написал скрипт, запускаемый из at или cron под root'ом.
В листинге далее необходимо добавить '<<' перед первым EOF
#!/bin/sh
RCPNT=me@mydomain.ru
ORACLE_HOME=/oracle/product/10.2.0/OraHome1
ORACLE_SID=mydb
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
ORA_NLS10=$ORACLE_HOME/nls/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/local/lib:/lib:/usr/lib
PATH=/bin:/sbin:$ORACLE_HOME/bin:$PATH:$HOME/bin
su - oracle -c "sqlplus system/passwd EOF
drop user user2 cascade;
exit;
EOF"
su - oracle -c "impdp system/passwd directory=data_pump_dir job_name=dp_user2 schemas=user1 remap_schema=user1:user2 network_link=mydb2"
DATE=`date +'%d/%m/%Y-%H:%M'`
echo "See logs of User2 dumped at "${DATE}|mail -s "User2 dumped" ${RCPNT}
# Скрипт проверил - работает.
Засады и ограничения:
1) Скрипт-то сработал и перелил схему, но .... оказалось, что при ремаппинге необходимо "возвращать" пароль импортированной схемы... "Чтите доку как грицо". И поэтому добавляем в скриптик (необходимо добавить '<<' перед первым EOF):
su - oracle -c "sqlplus system/passwd EOF
alter user user2 identified by values oldpasswd_of_user;
exit;
EOF"
Иначе user2 не сможет залогиниться под своим паролем.
Если много юзеров, воспользуемся скриптом
set pages 0;
set feedback off;
set termout off;
spool user_pass.sql;
select 'alter user "'||username||'" identified by values '''||password||''';'
from dba_users REM where username in ('USER1','USER2','USER3');
spool off;
exit;
2) Также при импорте СХЕМЫ (а не базы) по network_link не требуется создавать идентичную схему. Схема будет создана автоматом. За исключением того, что если у импортируемой схемы табличное пространство по умолчанию отличается от Users и такого ТС нет на целевой базе, то его необходимо просто создать.
Wednesday, May 02, 2007
к интеграции Oracle с DP 5.1
При установке интеграции DP с Oracle обращай внимание на наличие /etc/opt/omni/cell/cell_server со строкой dp-сервера. И добавляй в строке определения версии oracle в /opt/omni/lbin/util_oracle8.exe значение '10.*'
При смене сервера dp, например, в Linux нужно в /usr/omni/config/cell/cell_server изменить имя сервера на новое и сделать service xinetd restart
При смене сервера dp, например, в Linux нужно в /usr/omni/config/cell/cell_server изменить имя сервера на новое и сделать service xinetd restart
к установке Oracle ASM on MSA1000 на HP-UX 11.11
В HP-UX 11.11 после "нарезки" LUNs массива MSA1000 при помощи hpacucli, где каждому LUNу соответствует один физический диск, для того, чтобы при создании дисковых групп ASM с normal redundancy не ошибиться в определении failgroups, юзай команды
#ioscan
#insf
#ioscan -funC disk (информация об определенных в системе дисках) и эту ссылку Interpreting Hardware Paths.
Данная ссылка поможет определить разные пути к одному и тому же диску, которые c целью обеспечения failover можно будет оформить в виде масок разных failgroup's.
Например,
SQL> alter system set asm_diskstring='/dev/rdsk/c18t0*','/dev/rdsk/c20t1*';
System altered.
SQL> create diskgroup msa1000 normal redundancy
2 failgroup fg1 disk '/dev/rdsk/c18t0*'
3 failgroup fg2 disk '/dev/rdsk/c20t1*';
Diskgroup created.
После установки библиотеки клиента DP и интеграции c Oracle, проверить доступность ленточек можно через
#ioscan -funC tape
#ioscan
#insf
#ioscan -funC disk (информация об определенных в системе дисках) и эту ссылку Interpreting Hardware Paths.
Данная ссылка поможет определить разные пути к одному и тому же диску, которые c целью обеспечения failover можно будет оформить в виде масок разных failgroup's.
Например,
SQL> alter system set asm_diskstring='/dev/rdsk/c18t0*','/dev/rdsk/c20t1*';
System altered.
SQL> create diskgroup msa1000 normal redundancy
2 failgroup fg1 disk '/dev/rdsk/c18t0*'
3 failgroup fg2 disk '/dev/rdsk/c20t1*';
Diskgroup created.
После установки библиотеки клиента DP и интеграции c Oracle, проверить доступность ленточек можно через
#ioscan -funC tape
Subscribe to:
Posts (Atom)