Я больше знаком с Windows, поэтому Linux в настоящее время для меня довольно странное место, поэтому, пожалуйста, простите меня, если это глупый вопрос.
В принципе, я хотел бы знать, есть ли у кого-нибудь предложения и / или рекомендации по написанию сценариев для выключения / запуска, резервного копирования и ряда других обычных задач администратора баз данных.
Я также хотел бы получить любое руководство по настройке скриптов для изменения envionments / homes в многодомной среде.
Я забыл упомянуть оболочку по умолчанию для RHEL 5.
Спасибо.
Oracle управляется с помощью инструментов sqlplus и rman независимо от операционной системы. Ваши скрипты не должны требовать слишком большого количества изменений для работы в Linux.
Как было сказано, используйте crontab (посмотрите справочную страницу cron) и не забудьте добавить учетную запись, которую вы используете для обслуживания, в группу dba.
Обычно я работаю с двумя сценариями: первый устанавливает среду, а второй - вызов, который выполняет действие.
Это могло быть так:
shutdown_DevDB1.sh
#!/bin/sh
set ORACLE_SID=DevDB
set ORACLE_HOME=/opt/oracle/Home1
set ORA_SCRIPTS=/opt/oracle/scripts
if [ -f $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql ]; then
$ORA_SHUT = $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql
else
$ORA_SHUT = $ORA_SCRIPTS/generic/shutdown.sql
fi
$ORA_SCRIPTS/shutdown.sh
shutdown.sh
#!/bin/sh
echo `date`: shutting down $ORACLE_SID.
$ORACLE_HOME/bin/sqlplus /nolog @$ORA_SHUT
if [ $! != 0 ]; then
echo Impossible to shut down $ORACLE_SID
exit -1
fi
echo $ORACLE_SID has been shut down.
shutdown.sql
connect / as sysdba
shutdown immediate;
quit;
В большинстве случаев вы можете просто скопировать первый сценарий и изменить первые три строки. А если у вас есть база данных с некоторыми особенностями, поместите файл sql в нужное место, чтобы использовать его вместо общего.
Я бы посоветовал изучить cron как можно скорее, вы, вероятно, обнаружите, что / etc / crontab сообщает вам несколько «полезных» вещей, и есть каталоги ярлыков для регулярных интервалов:
- /etc/cron.hourly
- /etc/cron.daily
Дополнительно crontab -u -l покажет crontab для пользователь и обычно он хранится в / var / spool / cron в Linux. Ничто из этого не является специфическим для Oracle, однако это важно для автоматического и надежного запуска заданий, очень полезно для создания моментальных снимков базы данных, резервного копирования и т. Д. И т. Д.
Сценарии для запуска и завершения работы обычно скрываются в '/etc/init.d' и часто предоставляются / устанавливаются программным пакетом при первоначальной установке.
Если вы можете отредактировать свой вопрос, включив в него более подробную информацию о вашей среде, это позволит кому-нибудь дать более полный ответ на вашу проблему :-)
Я бы рекомендовал использовать язык сценариев, а не сценарии оболочки для более сложных задач. Постоянное соединение с базой данных с помощью множества разрозненных задач намного проще, если вы можете установить дескриптор базы данных. В сценариях оболочки вы обычно вызываете несколько инструментов командной строки, каждый из которых должен установить соединение с базой данных, которая впоследствии разрывается, когда инструмент завершает работу.
У О'Рейли есть книга, в которой Perl и Oracle рассматриваются конкретно с точки зрения администраторов баз данных, а не с точки зрения разработчиков приложений:
http://oreilly.com/catalog/9780596002107/
Это может оказаться вам весьма полезным.
Изменение env. довольно просто, вы можете использовать несколько псевдонимов, чтобы переключить ORACLE_HOME и PATH на разные установки базы данных:
alias dbprob='export ORACLE_HOME=/ora/app/10.2/dbprod'
alias dbtest='export ORACLE_HOME=/ora/app/10.2/dbtest'
Что касается простого сценария запуска / остановки, посмотрите на следующий URLв скрипте oracle.sh, который является собственным скриптом запуска RHEL
Чтобы добавить, возьмите книгу по написанию сценариев оболочки и убедитесь, что у вас есть хорошие практические знания об этом. Sh и его производные немного лучше подходят для написания сценариев, чем файлы CMD Windows - основная парадигма не так уж и отличается, но работает несколько лучше.
Один из других плакатов упоминал perl, для которого доступно большое количество библиотек для работы с Oracle. Посмотрите www.cpan.org и начните поиски. Python также поддерживает довольно много библиотек Oracle, из которых, пожалуй, самой интересной является библиотека Энтони Тунинги. CX_Oracle и связанные с ним инструменты.
Если вы хотите разобраться в Linux / Unix, эта публикация в Stackoverflow содержит ссылки на множество ресурсов и список хороших книг по различным аспектам системы. Есть много-много книг по Oracle, и я думаю, что «Эксперт один на один Oracle» Тома Кайта и «Эффективный Oracle by Design» являются хорошим началом.
Наконец, если вы работаете с Oracle, получите практические знания о словаре данных. Это чрезвычайно полезно и (IMHO) немного лучше, чем на SQL Server.
Вам также следует взглянуть на Oracle Enterprise Manager / Grid Control для управления средой базы данных. Он имеет богатый набор предопределенных для вас возможностей управления (включая такие задачи, как запуск / остановка экземпляра). Еще одна мысль.
Посмотрите также на oraToolKit - Швейцарский армейский нож для Oracle.
Это неплохо, он помогает с задачами установки Oracle на различных платформах, запуском / завершением работы с использованием их "appctl" и различных задач или параметров резервного копирования.