Резервное копирование среды SQL Plus во время сценария - PullRequest
3 голосов
/ 22 октября 2010

Некоторые сценарии, которые я унаследовал, будут слепо вызывать SET FEEDBACK OFF или SET ECHO OFF в начале сценария, а затем устанавливать их в ON или OFF в конце сценария.Я хотел бы изменить эти сценарии, чтобы определить, какое значение было установлено до запуска сценария, и установить для среды значение, равное этому значению, когда сценарий завершится.

Как запросить значения среды SQL Plus,сохранить их и восстановить после завершения сценария?

Один из методов, о котором я подумал:

SPOOL env-backup.sql
SHOW ECHO FEEDBACK TIMING

REM ...

@env-backup.sql

Но

  • Значения SHOW ECHO FEEDBACK TIMING выплевывание не может быть выполнено напрямую (ECHO OFF против SET ECHO OFF)
  • Я бы не хотел создавать еще один файл (или любые изменения в БД)

Не то чтобы это обязательно связано, но я использую SqlPlus из Oracle XE (10g) на Windows

Ответы [ 4 ]

7 голосов
/ 22 октября 2010

SQL * Plus имеет команду STORE только для этого.Он выводит файл, который имеет все настройки среды.Выполнение файла восстановит эти настройки.Введите `HELP STORE 'в командной строке SQL * Plus для получения дополнительной информации.

1 голос
/ 23 октября 2010

Если вы хотите, чтобы каждый SQL выполнялся независимо, вы можете вызвать их с помощью команды HOST. То есть для некорректно работающих скриптов вызовите HOST SQLPLUS username/password@tnsname @script.sql, и он запустится в новом процессе.

1 голос
/ 22 октября 2010

Вас могут заинтересовать эти сценарии

0 голосов
/ 22 октября 2010

Почему бы просто не указать нужные значения для вашего соединения в предоставленном скрипте glogin.sql?

Обычно он находится в% ORACLE_HOME% \ sqlplus \ admin

Из моего glogin.sql:

--
-- Copyright (c) 1988, 2005, Oracle.  All Rights Reserved.
--
-- NAME
--   glogin.sql
--
-- DESCRIPTION
--   SQL*Plus global login "site profile" file
--
--   Add any SQL*Plus commands here that are to be executed when a
--   user starts SQL*Plus, or uses the SQL*Plus CONNECT command.
--
-- USAGE
--   This script is automatically run
--
set pagesize 60
set linesize 500
set wrap off

Затем просто переподключитесь после запуска любых сценариев, которые изменяют вашу среду (или запускайте @ glogin.sql).

...