Павел Лузанов и Владимир Бегун

Understanding SQL*Plus. Конфигурации и запуск


Ольге
Владимир Бегун.

Лене и Лизе
Павел Лузанов.

Реализации SQL*Plus

Прежде всего, давайте определимся, что мы имеем в виду, когда говорим о SQL*Plus. Это не такой простой вопрос, как может показаться на первый взгляд. Оказывается, что существует несколько различных реализаций этого продукта!

Рассмотрим их по порядку:

Консольный SQL*Plus

Это основная реализация продукта, которую мы будем рассматривать, работающая в терминальном режиме на *nix-платформах и в DOS-окне на платформе Windows.

Исполняемый файл для запуска находится в подкаталоге bin домашней директории Oracle и называется sqlplus (sqlplus.exe для Windows *).

Если вы используете OS Windows NT/2000/XP, то работу в консольном SQL*Plus могут упростить некоторые возможности, предоставляемые этими OS для консольных приложений.

Графический SQL*Plus (Win)

Существует только на платформе Windows. Представляет собой такое же консольное приложение, но в графическом окне. По своим возможностям он практически идентичен консольному варианту.

Исполняемый файл для запуска находится в подкаталоге bin домашней директории Oracle и называется sqlplusw (plus80w.exe для восьмой версии и plus33w.exe для 7.3).

Среди преимуществ этой реализации можно отметить ещё более простое использование выделения и вставки текста. Выделите мышью нужный фрагмент текста и, не отпуская левой кнопки мыши, нажмите на правую кнопку. Выделенный фрагмент будет вставлен в позицию курсора. Причем нужно отметить, что выделенный фрагмент не помещается в стандартный буфер Windows, который вам по прежнему доступен через Ctrl-C/Ctrl-V, как и в любом графическом Windows приложении.

Ещё одним приятным и не слишком известным фактом, является возможность изменить название и размер используемого шрифта. Авторы сошлись на том, что они оба ненавидят шрифт используемый по умолчанию.

Для тех, кто использует эту реализацию SQL*Plus, не самой лучшей новостью станет известие о том, что в будущих версиях графического SQL*Plus больше не будет. Ему на смену идет iSQL*Plus (эту информацию можно найти в файле $ORACLE_HOME92/sqlplus/doc/README.htm, поставляемым к SQL*Plus версии 9.2).

Мы не видим ничего плохого в использовании этой реализации, более того, один из авторов ею активно пользуется.

SQL*Plus Worksheet

SQL*Plus Worksheet является компонентом Enterprise Manager, хотя может вызываться и автономно. Как и у Enterprise Manager, пользовательский интерфейс SQL*Plus Worksheet написан на Java. Но это только пользовательский интерфейс. Для выполнения команд и скриптов используется обычный sqlplus в фоновом режиме.

Вообще говоря, это очень странный продукт. Единственное чем он выгодно отличается от рассмотренных ранее реализаций, так это наличием истории команд. Но при этом Worksheet не поддерживает: START, EXIT, GET, HOST, SPOOL, WHENEVER... и это далеко не полный перечень. Вероятно нет смысла использовать сильно урезанную версию продукта, если доступна полнофункциональная версия (в наши планы не входит описание различных "hacks", при помощи которых можно добиться от Worksheet полной функциональности SQL*Plus).

На проходящей в момент написания этого документа конференции Oracle OpenWorld (10-14 ноября 2002, Сан-Франциско) представлена новая версия Enterprise Manager, с полностью переписанным пользовательским интерфейсом. Java в основном заменена HTML+JScript. Если учесть что iSQL*Plus выполнен именно в такой же архитектуре, то можно предположить, что SQL*Plus Worksheet ждёт та же участь, что и графический SQL*Plus.

iSQL*Plus

iSQL*Plus представляет собой модную ныне Web-реализацию SQL*Plus. Продукт работает в трехзвенной архитектуре: Web браузер <-> iSQL*Plus <-> База Данных. Пользовательский интерфейс выполнен при помощи HTML+JScript.

Впервые продукт появился вместе с Oracle 9.0.1 на платформе Windows. С версией 9.2 он доступен и на *nix системах. Если у вас есть установленный Oracle 9i Release 2 вместе с Oracle HTTP Server, то iSQL*Plus уже должен быть установлен и сконфигурирован. Попробуйте открыть следующий URL: http://your_hostname/isqlplus

iSQL*Plus - продукт новый и судя по всему, развиваться будет достаточно бурно. Между ним и консольным SQL*Plus есть существенные различия. Например, он не поддерживает следующие команды: EXIT, GET, HOST, SPOOL, WHENEVER... и это далеко не полный перечень.

В связи с тем, что наше изложение в основном касается разработки скриптов для SQL*Plus, а Web-интерфейс это не платформа для их запуска, мы не будем уделять особое внимание этому продукту. Более того, многие наши скрипты не будут работать в нём в силу вышеупомянутых ограничений iSQL*Plus.

Server Manager

Да-да, вы не ослышались. Именно Server Manager, бывший SQL*DBA.

Конечно же, Server Manager нельзя считать реализацией SQL*Plus, но с учетом того, что вся функциональность Server Manager была перенесена в SQL*Plus (в связи с объявленным прекращением развития и поддержки продукта), а некоторые команды у них и до этого были общие, то можно сказать, что Server Manager это подмножество SQL*Plus.

Последняя версия Oracle, с которой поставлялся Server Manager - 8.1.7. Не за горами те дни, когда и она будет объявлена в desupport. Зачем же тогда вспоминать про Server Manager, ворошить прошлое? Наверное, ради исторической справедливости. Помянем.

Заканчивая разговор о реализациях SQL*Plus, скажем, что по нашему мнению, в обозримом будущем останутся две реализации: консольный SQL*Plus и iSQL*Plus.

Переменные среды, влияющие на работу

Переменные общие для всех продуктов

ORACLE_HOME
Домашняя директория Oracle.
Задаёт каталог, в который установлено ПО Oracle, в том числе и SQL*Plus.
NLS_LANG
Мы не будем вам рассказывать о поддержке NLS в продуктах Oracle, эта тема достойна отдельного внимания. Остановимся лишь на проблеме, связанной с русскими символами в консольном SQL*Plus на платформе Windows.

Как известно, графические приложения в Windows используют кодировку 1251 для отображения русских символов (Oracle character set CL8MSWIN1251), а консольные приложения - кодировку 866 (Oracle character set RU8PC866). Таким образом, если в консольном SQL*Plus под Windows использовать набор символов CL8MSWIN1251, то вместо русских символов на экране будут "закорючки". Наиболее простое решение этой проблемы заключается в том, чтобы перед запуском консольного SQL*Plus выполнить команду:

c:\>chcp 1251 
При этом убедитесь, что в свойствах DOS-окна вы выбрали шрифт "Lucida Console", а не "Точечные шрифты" предлагаемый по умолчанию.
Это решение не работает в Windows 98.
ORACLE_SID
Идентификатор экземпляра Oracle.
(Для более опытных пользователей: попробуйте выполнить @@@)
TWO_TASK
Определяет значение по умолчанию для host string.
Не действует в Windows
LOCAL (Win)
Тоже что и TWO_TASK, но на платформе Windows.
TNS_ADMIN
Определяет директорию, в которой находятся файлы настройки TNS, например, tnsnames.ora

Переменные специфичные для SQL*Plus

SQLPATH
Задает список директорий, в которых SQL*Plus будет искать скрипты для исполнения. В качестве разделителя директорий используется символ ":" на *nix платформах и ";" на платформе Windows.
SQLPLUS_FONT
Введена с выходом SQL*Plus 8.1.6. Задаёт шрифт, который будет использоваться в графическом SQL*Plus. Попробуйте задать для этой переменной значение: Courier New Cyr, это явно лучше того, что используется по умолчанию. Кстати, если кто не знает, то шрифт используемый по умолчанию называется Fixedsys, размер 16. Врага нужно знать в лицо!
SQLPLUS_FONT_SIZE
Введена с выходом SQL*Plus 8.1.6. Задаёт размер шрифта, который будет использоваться в графическом SQL*Plus. Если со зрением у вас всё в порядке, то значение 14 заметно увеличит объём выводимой на экран информации.
SQLPLUS_FONT_CHARSET
Введена с выходом SQL*Plus 9.2. Задаёт набор символов, который будет использоваться для указанного в SQLPLUS_FONT шрифта. До появления этой переменной, приходилось выбирать шрифт, который по умолчанию использует кириллицу, например Courier New Cyr. Теперь, в качестве шрифта можно задать любой, поддерживающий кириллицу, например Courier New, а нужный набор символов (RUSSIAN) задать в SQLPLUS_FONT_CHARSET.

Способы задания переменных среды (Win)

Задание переменных на платформе *nix не таит в себе никаких неожиданностей. Переменные создаются соответствующей командой установленного у вас shell.

В Windows всё не так просто. Переменные среды можно задать разными способами. Наиболее распространённым является задание переменных в Реестре (Registry). Именно этот способ используется при установке ПО Oracle.

В последних версиях Oracle поддерживает установку продуктов в разные ORACLE_HOME на один и тот же компьютер под управлением OS семейства Windows. И для каждого ORACLE_HOME имеется соответствующая ветвь в Реестре для установки переменных. Таким образом, вполне возможно, что у вас есть несколько NLS_LANG, SQLPATH и т.д.

Альтернативно, эти переменные можно задать не в Реестре, а именно как переменные среды - в Панели Управления->Система->Дополнительно для Windows NT/2000/XP или в файле autoexec.bat для Windows 95/98.

Такой способ задания имеет некоторые особенности:

Запуск и останов. Простой пример

Ну что же, вооружившись предварительной информацией, ничто не может помешать нам приступить к первому запуску SQL*Plus.

Т.к. SQL*Plus - это инструмент для работы с базой данных, то для выполнения этой работы вам обязательно нужно соединиться с каким-либо экземпляром Oracle. SQL*Plus, как и многие другие продукты Oracle, позволяет это сделать, передав первым параметром в командной строке информацию о соединении:

> sqlplus username/password@connect_string

Например, для пользователя user01 с паролем pass01 имеющим желание выяснить некоторую информацию в базе данных prod01:

> sqlplus user01/pass01@prod01

Впрочем, вы можете не указывать информацию о соединении в командной строке, а просто ввести sqlplus и SQL*Plus сам запросит у вас эту информацию.

Если вы нигде не ошиблись, то соединение пройдет успешно, и вы получите приглашение SQL*Plus:

SQL> 

Добро пожаловать в мир Oracle!

Конечно, шлёпать по клавиатуре придется много, зато вы можете использовать практически все возможности сервера Oracle, "не заслонённые" никаким GUI!

Впрочем, хорошего помаленьку. Пора на выход :-)
Выход кстати, осуществляется командой EXIT.

Синтаксис командной строки

Настало время более внимательно рассмотреть команду sqlplus.

Вот её полный синтаксис для версии SQL*Plus 9.2:

> sqlplus -h

SQL*Plus: Release 9.2.0.1.0 - Production

Usage: SQLPLUS [ [<option>] [<logon>] [<start>] ]
where <option> ::= -H | -V | [ [-L] [-M <o>] [-R <n>] [-S] ]
      <logon>  ::= <username>[/<password>][@<connect_string>] | / | /NOLOG
      <start>  ::= @<URI>|<filename>[.<ext>] [<parameter> ...]
        "-H" displays the SQL*Plus version banner and usage syntax
        "-V" displays the SQL*Plus version banner
        "-L" attempts log on just once
        "-M <o>" uses HTML markup options <o>
        "-R <n>" uses restricted mode <n>
        "-S" uses silent mode

Синтаксис командной строки у вашей версии может быть иным, поэтому не будет лишним, если вы посмотрите на то, что доступно в вашей версии SQL*Plus.

Итак, в командной строке можно указать: ряд опций (option), информацию о соединении (logon) и имя файла, который должен быть выполнен сразу после запуска (start).

Пример с выполняемым файлом мы посмотрим чуть позже, а пока лишь заметим, что, начиная с версии 9.2 (9.0.1 на Windows) появилась возможность в качестве имени файла указывать URI.

Из трёх возможных вариантов соединения, в предыдущем разделе мы рассмотрели первый (username/password@connect_string). Посмотрим на остальные.

"/" - используется при внешней идентификации пользователей и в основном используется на *nix платформах (см. вариант команды CREATE USER ... IDENTIFIED EXTERNALLY).

/NOLOG - позволяет запустить SQL*Plus без соединения с Oracle. Соединение потребуется установить перед первым обращением к базе данных. Это делается командой CONNECT.

Теперь об опциях, кстати, можно использовать как прописные, так и строчные буквы.

"-H" и "-V" слишком неинтересные, чтобы на них останавливаться отдельно.

К "-M" и "-R" мы вернёмся позже.

А вот "-L" и "-S" есть смысл рассмотреть более внимательно.

Опция "-L"

Введена в 9.2. При запуске, SQL*Plus будет выполнять только одну попытку соединения с Oracle. Если вы немного работали с SQL*Plus, то, наверное знаете, что если неправильно указать информацию о соединении, то SQL*Plus запросит её ещё раз, и только после третьей неуспешной попытки соединения, управление вернется к операционной системе. Такое поведение может быть оправдано только в случае работы в интерактивном режиме (когда есть кому повторно вводить имя/пароль) и очень неудобно при выполнении пакетной обработки (например из cron, at).

Используя опцию -L, будет предпринята только одна попытка соединения и если она окажется неудачной, то SQL*Plus завершится с ошибкой (аналогичной выполнению EXIT FAILURE).

Если вы используете более раннюю версию SQL*Plus, которая не поддерживает опцию -L, то аналогичного результата (одна попытка соединения) можно добиться следующим образом:

Запускаем SQL*Plus без соединения с Oracle

> sqlplus /nolog @myscript.sql 
Файл myscript.sql начинается командами:
WHENEVER SQLERROR EXIT ROLLBACK
CONNECT username/password@connect_string 

Опция "-S"

"Молчаливый" режим. В этом режиме sqlplus не будет выводить информацию о соединении/отсоединении от Oracle, также не будет выводиться подсказка (SQLPROMPT). Такой режим очень полезен при выполнении командных файлов, т.к. позволяет избавиться от дополнительной, ненужной информации.

Если вы выполнили команду
> sqlplus -s username/password@connect_string 
то не подумайте, что SQL*Plus "повис". Моргающий курсор означает, что от вас ждут ввода команд, а все сообщения и приглашения "съела" опция "-S".
:-)

Более сложный пример

Ну а теперь, попробуем сделать что-нибудь полезное. Давайте попытаемся получить первую пятёрку объектов с большим числом extents в схеме пользователя подсоединённого к базе (мы работаем используя логин SCOTT).

Для этого, создадим текстовый файл, с именем top_obj.sql, и содержащим:


COLUMN segment_name HEADING "Object Name" FORMAT a30 COLUMN segment_type HEADING "Type" COLUMN kb HEADING "Size, KB" FORMAT 999,999,999,990 SELECT segment_name, segment_type, ROUND (bytes/1024) AS kb FROM ( SELECT segment_name, segment_type, bytes FROM user_segments ORDER BY bytes DESC ) WHERE ROWNUM < 6; EXIT

Давайте, выполним этот скрипт:

c:\>sqlplus -s scott/tiger@orcl @top_obj.sql

Object Name                    Type                       Size, KB
------------------------------ ------------------- ----------------
EMP                            TABLE                           128
DEPT                           TABLE                           128
BONUS                          TABLE                           128
SALGRADE                       TABLE                           128
DUMMY                          TABLE                           128


c:\>

Как и можно было предположить, ничего серьёзного в демонстрационной схеме SCOTT не имеется.

Стартовые файлы: login.sql и glogin.sql

Последнее что нам осталось рассмотреть это использование файлов login.sql и glogin.sql. Даже если вы о них раньше и не слышали, то вероятно уже догадались, что эти файлы представляют собой SQL*Plus-скрипты и автоматически выпоняются при запуске SQL*Plus.

Первым из этих двух отрабатывает glogin.sql. Он предназначен для администратора и позволяет ему выполнить определенные стартовые действия для любого пользователя, запускающего SQL*Plus. Файл login.sql предназначен для индивидуальных пользователей и помогает им настроить SQL*Plus по своему усмотрению.

SQL*Plus будет искать файл login.sql либо в текущей директории, из которой он был запущен, либо в одном из каталогов, перечисленных в переменной SQLPATH.

Файл glogin.sql искать не нужно, этот файл должен находиться в каталоге $ORACLE_HOME/sqlplus/admin (%ORACLE_HOME%\sqlplus\admin - для Windows).

Если провести аналогию между СУБД Oracle и любой OS семейства *nix, то SQL*Plus можно назвать оболочкой (shell) для СУБД, а login.sql и glogin.sql выступают в качестве .profile и /etc/profile для оболочек sh или bash.

Так что же можно разместить в стартовом файле?

Да всё что угодно: удобные настройки системных переменных (SET), форматирование часто используемых в запросах столбцов (COLUMN), возможно даже выполнение каких-либо действий в базе данных.

Единственное о чём не нужно забывать, так это то, что стартовый файл будет выполняться каждый раз при запуске SQL*Plus и это может вызвать проблемы связанные с производительностью, если в вашем приложении SQL*Plus вызывается часто, а стартовый файл содержит много ресурсоёмких (долго работающих) операций.

Вот пример файла login.sql:


1. DEFINE _editor=vi SET TERMOUT OFF 2. SET APPINFO ON SET TERMOUT ON SET SERVEROUTPUT ON SIZE 1000000 FOR WRAPPED 3. SET TRIMSPOOL ON LINESIZE 80 PAGESIZE 25 SET LONG 5000 COLUMN object_name FORMAT a30 4. COLUMN name FORMAT a30 COLUMN money FORMAT 999G999G990D99 VARIABLE n NUMBER 5. VARIABLE vc30 VARCHAR2(30) VARIABLE vc4000 VARCHAR2(4000) VARIABLE rc REFCURSOR 6. @set_prompt.sql

Комментарии:

  1. Переменная _editor определяет редактор, который будет вызываться при выполнении команды EDIT для редактирования SQL буфера.

    Редактировать приходится часто, поэтому желательно сразу установить хороший редактор, каковым на наш взгляд является vi (или один из его клонов, например vim, доступный для большинства платформ, включая Windows).

    Из наблюдений.
    Редко можно встретить людей равнодушных к редактору vi. Его либо сильно не любят (в основном), либо с удовольствием используют. При этом, большинство отрицательно настроенных не знают как в этом редакторе выполнить вырезание/копирование/вставку блока текста, уже не говоря об использовании регулярных выражений и даже команды "."(точка)
  2. Иметь включенной установку APPINFO очень важно, т.к. это позволяет регистрировать в v$session информацию о запускаемых скриптах и мы еще об этом расскажем. Сейчас же заметим, что необходимость включать этот фрагмент в стартовый файл появилась только с SQL*Plus 9i. Именно с версии 9.0.1 значение по умолчанию для APPINFO стало OFF.

    Также обратите внимание на предварительное отключение вывода сообщений (SET TERMOUT OFF). Это сделано, с целью избежать вывода сообщения об ошибке в случае запуска SQL*Plus с опцией /NOLOG. Сообщение об ошибке возникает из-за того, что при включении APPINFO производится обращение к базе данных, а именно к пакету DBMS_APPLICATION_INFO, выполнить которое невозможно без соединения с базой данных.

  3. Установка прочих системных переменных.
    Здесь, что называется, на вкус и цвет... Одним словом, настраивайте, так как вам нравится.

  4. Форматирование часто используемых столбцов.
    Этот раздел говорит сам за себя. Определите набор столбцов, доставляющих наибольшие хлопоты с выводом, и отформатируйте их по "вкусу". Сюда, как правило, попадают длинные символьные столбцы, столбцы с типом данных "деньги" и пр.

  5. Объявление bind переменных.
    Предварительно объявленные, эти переменные помогут cэкономить время на наборе, например, при запуске хранимых процедур с OUT параметрами.

    Мы не боимся активного использования клавиатуры, но зачем же самим себе добавлять работы!

  6. Настройка подсказки.
    Очень удобно вместо скучного
    SQL>
    видеть что-нибудь более информативное, например
    scott@dbname>
    Настройка подсказки производится запуском скрипта set_prompt.sql, который для того чтобы быть найденным, должен находиться в одном из каталогов, перечисленных в переменной SQLPATH. Содержимое файла set_prompt.sql может быть таким:

    SET TERMOUT OFF DEFINE prompt = "SQL> " COLUMN global_name NEW_VALUE prompt SELECT LOWER(USER) || '@' || DECODE (SIGN(INSTR(global_name, '.')), 1, LOWER(SUBSTR(global_name, 1, INSTR(global_name,'.')-1)), /* else */ LOWER(global_name) )||'> ' global_name FROM global_name; SET SQLPROMPT '&prompt' UNDEFINE prompt COLUMN global_name CLEAR SET TERMOUT ON

    Отключение вывода (SET TERMOUT OFF) здесь сделано по тем же самым соображениям, что и при установке SET APPINFO ON.

    Ещё один момент, на который нужно обратить внимание. После установки подсказки, ничто не мешает нам выполнить команду CONNECT и установить новое соединение, при этом наша прежняя подсказка не изменится. Для того чтобы подсказка была всегда актуальна, нужно вместо команды CONNECT заставить себя пользоваться скриптом conn.sql:

    scott@orcl> @conn system/manager@orcl
    Connected.
    system@orcl>
    

    Содержимое файла conn.sql


    CONNECT &1 UNDEFINE 1 @set_prompt.sql SET SERVEROUTPUT ON SIZE 1000000 FORMAT WRAPPED

    Этот скрипт выполняет соединение с базой данных, пользуясь информацией, переданной первым параметром, и затем выполняет set_prompt.sql для настройки подсказки. Именно благодаря использованию set_prompt.sql в conn.sql, содержимое первого не было напрямую вставлено в login.sql, а было оформлено в виде отдельного скрипта.

    Повторное включение SERVEROUTPUT также необходимо, ведь после установки соединения нужно в новой сессии выполнить DBMS_OUTPUT.ENABLE, что, к сожалению автоматически не производится, несмотря на то, что SHOW SERVEROUTPUT бодро сообщает ON.

    Наверное, уже нет смысла повторять, где должен находиться файл conn.sql, чтобы SQL*Plus мог легко его найти.

Возможные ошибки при запуске

Неверно задан ORACLE_HOME
Если на вашем компьютере есть несколько ORACLE_HOME, т.е. вы выполнили несколько установок ПО Oracle (различные версии СУБД, App Server, Developer Suite и т.д.), то вполне возможна ситуация, когда вы пытаетесь запустить sqlplus не из той директории, которая указана в ORACLE_HOME.

В этом случае sqlplus может просто не запуститься или будет работать некорректно ("вылетит" с сообщением SP2-0152: ORACLE may not be functioning properly).

Неправильно настроен TNS
Если вы неправильно ввели host string или у вас неправильно настроен TNS (или вы не знаете, о чем сейчас идет речь), то вполне возможно при попытке запуска sqlplus вы получите что-то подобное:
c:\>sqlplus scott/tiger@wrong_host_string

SQL*Plus: Release 8.1.7.0.0 - Production on Thu Nov 14 11:05:39 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

ERROR:
ORA-12154: TNS:could not resolve service name
Мы не ставили своей целью рассказать о настройке TNS, поэтому вам лучше обратиться к вашему администратору. Если такой возможности нет, то никогда не будет лишним обратиться к документации для дальнейшего выяснения вопросов связанных с сетевыми настройками Oracle.

Oracle9i Net Services Administrator's Guide Release 2 (9.2) Part Number A96580-01
Oracle9i Net Services Reference Guide Release 2 (9.2) Part Number A96581-01

Неверно заданы имя/пароль пользователя
Без комментариев

Экземпляр БД, с которой хотите соединиться, не запущен.
Обратитесь к DBA, если это не вы, конечно.

Не создана таблица SQLPLUS_PRODUCT_PROFILE
После запуска SQL*Plus выдает сообщение:
Error accessing PRODUCT_USER_PROFILE
Warning:  Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
При этом соединение прошло успешно, и вы можете работать в SQL*Plus.

Для реализации некоторых мер безопасности SQL*Plus при каждом запуске обращается к таблице SQLPLUS_PRODUCT_PROFILE, которая должна находиться в схеме пользователя SYSTEM. Если этой таблицы по какой-либо причине нет, то нужно войти в SQL*Plus как SYSTEM и выполнить команду:

SQL> @?/sqlplus/admin/pupbld.sql
       

Пожалуй это всё, что мы хотели рассказать вам о вопросах, связанных с конфигурированием, настройкой и запуском SQL*Plus.

Нам было бы интересно узнать ваше мнение. Поэтому можете смело присылать свои вопросы, замечания и предложения, связанные с этой статьей. Как говориться:

SET FEEDBACK ON

За дополнительной информацией можете обратиться на www.orafaq.org. Это хорошая отправная точка для поиска информации связанной с Oracle.

Примечания

* Старые версии (до 8i) консольного SQL*Plus для Windows поставлялись с двумя исполняемыми файлами, например в восьмой версии это были: sqlplus.exe и plus80.exe.

На этой детали можно было бы не останавливаться, но если вы работаете с восьмой версией, и попробуете из DOS окна запустить sqlplus.exe, то к удивлению обнаружите, что при этом открывается другое DOS-окошко, в котором запускается plus80.exe. Чем это плохо? Это плохо тем, что, запуская из командной строки скрипт, выводящий на экран какую-либо информацию, вы эту информацию не увидите, она промелькнет во вновь открытом окне, которое сразу же закроется, вместе с выходом из SQL*Plus.

В этом случае нужно использовать plus80.exe
Вернуться к тексту

** Операционные системы Windows NT/2000/XP предоставляют для консольных приложений дополнительные возможности (по сравнению, скажем с Windows 98):

Вернуться к тексту

27 Ноября 2002г.

Владимир Бегун. Примечание.

The statements and opinions expressed here are my own and do not necessarily represent those of Oracle Corporation.

Copyright(c) 2002, 2003 Pavel Luzanov, Vladimir Begun
All Rights Reserved

You may use library or code examples in your non-commerical use subject to citing the original authors in your documentation and to understanding that NO WARRANTY is implied. For commerical use or purpose, you must contact the authors of any library or code example for permission.

An example of appropriate credit is:

"This product uses code for /whatever/ written by Pavel Luzanov and Vladimir Begun, which is being used by their permission."

Hosted by www.Geocities.ws

1