2010-10-22 2 views
3

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

Как я могу запросить значения среды 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 (10 г) на Windows,

ответ

7

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

+2

+1 Интересно. Узнал что-то сегодня, спасибо! –

+0

+1. Я бы предпочел не нуждаться в файле, но это на 99%. :) Принесите это вам, если у кого-то нет лучшего предложения. –

0

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

Это обычно находится в% ORACLE_HOME% \ SQLPLUS \ админ

С моей 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 

Тогда просто reconnnect после выполнения каких-либо сценариев, которые изменяют среду (или запустить @ glogin.sql сам).

+0

Это может быть решение, но это не мешает скриптам плохого поведения от зависания настроек, когда они вызывают другие скрипты. Я не указал его непосредственно в вопросе, но восстановление состояния после каждого скрипта подразумевает, что я пытаюсь избежать необходимости делать что-либо извне/между скриптами вручную. –

1

Вы могли бы быть заинтересованы в those scripts

+0

Хороший ответ, но я заглянул в него, и он сводится к той же команде, что и в решении Адама Хокса: 'STORE SET REPLACE'. Эти сценарии выглядят интересными, хотя, так +1 –

1

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

+0

+1. Также хорошая альтернатива/возможность исследовать. –