См.: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
, Что является различием между Oracle SIDs и НАЗВАНИЯМИ УСЛУГ Oracle. Один инструмент конфигурации ищет СЕРВИСНОЕ НАЗВАНИЕ, и затем следующее ищет SIDs! Что продолжается?!
SID Oracle является уникальным именем, которое однозначно определяет Ваш экземпляр/базу данных, где, поскольку Сервисное название является псевдонимом TNS, который Вы даете, когда Вы удаленно соединяетесь со своей базой данных, и это Сервисное название зарегистрировано в файле Tnsnames.ora на Ваших клиентах, и это может совпасть с SID, и можно также дать ему любое другое имя, которое Вы хотите.
SERVICE_NAME является новой возможностью от оракула 8i вперед, в котором база данных может зарегистрировать себя в слушателе. Если база данных регистрируется в слушателе таким образом тогда, можно использовать параметр SERVICE_NAME в tnsnames.ora иначе - SID использования в tnsnames.ora.
Также, если у Вас есть OPS (RAC), у Вас будет различный SERVICE_NAME для каждого экземпляра.
SERVICE_NAMES определяет одно или несколько названий сервиса базы данных, с которым соединяется этот экземпляр. Можно определить имена многочисленных услуг для различения различное использование той же базы данных. Например:
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
можно также использовать сервисные названия для идентификации единственного сервиса, который доступен от двух различных баз данных с помощью репликации.
В среде Oracle Parallel Server, необходимо установить этот параметр для каждого экземпляра.
Короче говоря: SID = уникальное имя Вашего экземпляра DB, ServiceName = псевдоним, используемый при соединении
Проверка файла -s
сообщит вам, существует ли файл и имеет ли размер больше нуля.
./prog >/dev/null 2>some/file ; if [ -s some/file ] ; then mail < some/file ; fi
Для cron вам не нужно перенаправлять почту. Демон cron автоматически отправит вам любой вывод вашей команды по почте. Ваша запись crontab должна выглядеть так:
# every minute
* * * * * ./prog >/dev/null
Если нет вывода STDERR, вы не будете получать почту.
mail v1.6 имеет возможность не отправлять сообщения с пустым телом:
-E Do not send messages with an empty body.
This is useful for piping errors from cron(8) scripts.
Это может быть то, что вы ищете.