FAQ по ORACLE |
Ответ: Скрипт Оraenv поставляется с программой инсталляции. Вы можете использовать его для задания значений переменных среды, таких как ORACLE_HOME, ORACLE_SID. Переменную Oracle Home directory однако не следует задавать в скрипте явно.
Следующий пример показывает, как вызывать скрипт oraenv (в неинтерактивном режиме):
export ORACLE_SID=ORCL;
export ORAENV_ASK=NO
. oraenv
Замечание: точка перед "oraenv" необходима, чтобы скрипт oraenv выполнился вашей текущей оболочкой (shell) .
Ответ: Для просмотра списка всех установленных продуктов и версий выполните команду:
cd $ORACLE_HOME/orainst
./inspdver
Ответ: Да, используйте вместо имени файла имя ленточного устройства. Например,
exp userid/password file=/dev/rmt0 table=emp volsize=1.2G
Замечание: Размер задается числом и заканчивается указанием a m, k, b (M, K, B). По умолчанию байты.
Ответ: Да, установите log_archive_dest = /dev/rmt0:100M в своем файле инициализации init.ora.
Можно также использовать ARCHMON с ARCH. Когда достигнут конец ленты, ARCH останавливается, дает сигнал ARCHMON и пользователю сообщается о необходимости установить новую ленту. Когда лента смонтирована, процесс архивирования возобновляется. Эта операция требует оперативного мониторинга.
$ archmon @P:TEST
Ответ: Попробуйте выполнить экспорт и сжатие одновременно.
# Make a pipe
mknod expdat.dmp p # or mkfifo pipe
# Start compress sucking on the pipe in background
compress < expdat.dmp > expdat.dmp.Z &
# Wait a second or so before kicking off the export
sleep 5
# Start the export
exp scott/tiger file=expdat.dmp
Или экспортируйте по сети непосредственно в базу-получатель
Host A:
mknod FIFO.dmp p
exp u/p FILE=FIFO.dmp rest_of_parameters...
Host B:
mknod FIFO2.dmp p
rsh host1 dd if=FIFO.dmp > FIFO2.dmp &
imp u/p FILE=FIFO2.dmp rest_of_parameters...
Ответ: Для ускорения передачи (до 30%) больших объемов данных между двумя базами, перекомпилируйте программы для выполнения операций импорта/экспорта в однозадачном режиме. Этот метод потребует больше памяти и официально не поддерживается компанией Oracle, хотя сами они, похоже, его используют.
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk singletask
# make -f ins_rdbms.mk expst
# make -f ins_rdbms.mk impst
# make -f ins_rdbms.mk sqlldrst
# mv expst $ORACLE_HOME/bin/
# mv impst $ORACLE_HOME/bin/
# mv sqlldrst $ORACLE_HOME/bin/
Теперь используйте expst и impst вместо imp и exp.
Ответ: В примере, приведенном ниже, значение из базы данных задается в качестве переменной среды.
#!/bin/sh
VALUE=`sqlplus -silent "user/password@instance" <<END
set pagesize 0 feedback off verify off heading off echo off
select max(c1) from t1;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo $VALUE
fi
Ответ:
truss -rall -wall -p <PID>
truss -p $ lsnrctl dbsnmp_start
Ответ: Все базы данных на вашей машине должны быть перечислены в файле /etc/oratab Посмотрите этот пример:
#!/bin/ksh
ALL_DATABASES=`cat /etc/oratab|grep -v "^#"|grep -v "N$"|cut -f1 -d:-s`
for DB in $ALL_DATABASES
do
unset TWO_TASK
export ORACLE_SID=$DB
export ORACLE_HOME=`grep "^${DB}:" /etc/oratab|cut -d: -f2 -s`
export PATH=$ORACLE_HOME/bin:$PATH
echo "---> Database $ORACLE_SID, using home $ORACLE_HOME"
sqlplus -s system/${DB}password @<< - EOF
select * from global_name;
exit;
EOF
done
Замечание: 'EOF' должен находиться в 1-ой позиции. Дефис перед EOF двумя строками выше инструктирует коммандный интерпретатор (shell) убирать табуляцию (TABы), (только их, не пробелы) до следующего EOF, что позволяет вам использовать TABы в других местах для улучшения читабельности вашего скрипта.
Ответ: Иногда, когда Вы удаляете табличную область (через команду drop) и затем файлы (используя rm), Oracle не освобождает файловое пространство, пока Вы не закроете его. Это действие требует подтверждения "df -k" командой. Такое поведение считается нормальным для Unix среды.
Используйте команду "fuser" перед удалением файлов Oracle. Если они задействованы другими процессами, пространство так и не освободится после rm команды. Если файл заблокирован SMON, подождите несколько минут до разблокировки.
Ответ: Скопировать Oracle с машины на машину:
# use tar to copy files and directorys with permissions and ownership
tar cf - $ORACLE_HOME | rsh "cd $ORACLE_HOME; tar xf -"
Скопировать в другой каталог на том же сервере:
cd /new/oracle/dir/
(cd $ORACLE_HOME; tar cf - . ) | tar xvf –
Автор примеров Frank Naude.
За дополнительной информацией обращайтесь в компанию Interface Ltd.
INTERFACE Ltd. |
|