Мне нужно выполнить простой запрос на выборку в нашей базе данных оракула. Но для этого требуется несколько часов. Я хочу сделать это с помощью сценария оболочки, чтобы мне не нужно было время от времени отслеживать, выполняется ли запрос, и я хочу отправить вывод по электронной почте, поскольку мне нужны только подсчеты.
Я делаю это на удаленном сервере и не имею прав администратора, чтобы отключить ограничение по времени перед отключением.
Заранее спасибо за помощь.
Вот исходный код, который я пишу.
#!/bin/ksh
######################################################################
# File Name : counts.sh
# Created : 2019/27/19
# Author :
#-----------------------------------------------------------------------
# $Revision: 1.0 $
# $Date: 2019/01/27 08:00:00 $
#-----------------------------------------------------------------------
# Modification History:
# No Date Author Note
#
#-----------------------------------------------------------------------
#
#
########################################################################
DB_USERNAME=$1
DB_PASSWORD=$2
DB_DBASE=$3
#------------------------------------------------------------
# Start Log
#------------------------------------------------------------
DB_CONN=${DB_USERNAME}/${DB_PASSWORD}@${DB_DBASE}
LOG_DATETIME=`date +%Y-%m-%d:%H:%M:%S`
LOG_FILE=/tmp/$LOG_DATETIME.log
EGREP=/bin/egrep
ORA_ERR_STR=ORA
#==Start Table Space ========================================
sqlplus -S ${DB_CONN} > $LOG_FILE << ORAEND
set serveroutput on;
set feedback off
SPOOL /tmp/counts.txt
PROMPT COUNTS
SELECT COUNT(*) FROM schema.db;
spool off;
ORAEND
mailx -s "Counts on $DB_DBASE is" [email protected] < /tmp/counts.txt
#===end of script=========#
Я вызову сценарий оболочки с помощью команды nohup.
.
Сценарий вызова: nohup ksh counts.sh пароль пользователя DB и
🤔 А знаете ли вы, что...
Oracle Database In-Memory Option - это возможность хранить данные в оперативной памяти для быстрого доступа и анализа.
Вы никогда не говорили, что является результатом этого запроса. Да, это считает что-то, но - как выглядит вывод? Одно значение? Один столбец в несколько строк? Много столбцов в одной строке? Много столбцов в еще большем количестве строк?
Поскольку выполнение самого запроса занимает несколько часов, возможно, вы захотите проверить результат, отсортированный по это или тот, выполнить некоторые вычисления и т. д. — если это так, возможно, самый простой вариант —
UTL_MAIL
(или UTL_SMTP
) и отправьте себе письмо, просто сказав, что обработка завершенаДругой вариант — создать выходной файл (используя UTL_FILE
) и отправить его по почте в виде вложения.
Или, если вы хотите сделать это на уровне операционной системы, вы все равно должны создать выходной файл и использовать некоторый инструмент, который позволит вам отправлять почту.