Отправляет email-рассылки с помощью сервиса Sendsay

Открыто о СУБД Oracle на русском

  Все выпуски  

Открыто о СУБД Oracle на русском : SQL*Plus - завершаем тему...


Информационный Канал Subscribe.Ru

Выпуск 64

Уважаемые подписчики рассылки!

Это завершающий выпуск в серии, посвященной утилите SQL*Plus. Посетители моего сайта часто ищут информацию об SQL*Plus или вообще документацию по Oracle, так почему бы им не помочь. Сообщите мне, пожалуйста, свое мнение о данной публикации.


Команда SHOW

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

<команда SHOW> ::=
SHO[W] <опция>
<опция> ::=
<имя системной переменной>
  | ALL
  | BTI[TLE]
  | ERR[ORS] [[<объект>] [<схема>.]<имя объекта>]
  | LNO
  | PARAMETERS [<часть параметра>]
  | PNO
  | REL[EASE]
  | REPF[OOTER]
  | REPH[EADER]
  | SGA
  | SPOO[L]
  | SQLCODE
  | TTI[TLE]
  | USER
<объект> ::=
FUNCTION   | PROCEDURE
  | PACKAGE
  | PACKAGE BODY
  | TRIGGER
  | VIEW
  | TYPE
  | TYPE BODY
  | DIMENSION
  | JAVA CLASS

Назначение опций представлено в табл. 16.

Таблица 16. Опции команды SHOW.

Опция Назначение
ALL Выдает значения всех опций SHOW, кроме ERRORS и SGA, и всех системных переменных.
BTI[TLE] Выдает текущее определение BTITLE (нижнего колонтитула).
ERR[ORS] Выдает ошибки компиляции хранимой программной единицы. При компиляции выдается сообщение, что ошибки есть. Для получения детальной информации об ошибках необходимо выполнить команду SHOW ERRORS. При выполнении этой команды без аргументов, выдается информация об ошибках при компиляции последней созданной или измененной программной единицы. Если же указать тип и имя программной единицы, будут выданы ошибки, полученные при ее компиляции.

Выдается номер строки/столбца (в столбце LINE/COL), в которых обнаружена ошибка, и текст сообщения об ошибке (в столбце ERROR). Форматом выдачи можно управлять с помощью команды COLUMN.

LNO Показывает номер текущей строки на странице.
PARAMETERS Выдает имя, тип и текущее значение одного или нескольких параметров инициализации. При вызове без дополнительных параметров, эта команда выдает информацию обо всех параметрах инициализации. Если указать части имен параметров, будет выдана информация только о параметрах, в имена которых указанные части присутствуют.

Для использования этой опции необходима объектная привилегия SELECT на представление V_$PARAMETER.

PNO Выдает номер текущей страницы результатов.
REL[EASE] Выдает номер версии сервера Oracle, к которой подключена утилита SQL*Plus.
REPF[OOTER] Выдает текущее определение REPFOOTER.
REPH[EADER] Выдает текущее определение REPHEADER.
SGA Выдает информацию об области SGA экземпляра, к которому подключена утилита SQL*Plus.

Для использования опции SGA необходима объектная привилегия SELECT на представление V_$SGA.

SPOO[L] Выдает информацию о том, направляются ли результаты в файл или на принтер.
SQLCODE Выдает код завершения последнего оператора SQL.
TTI[TLE] Выдает текущее определение TTITLE (верхнего колонтитула).
USER Выдает имя текущего пользователя.

Рассмотрим пример использования ряда опций команды SHOW:

 
17:21:24 SQL> connect system/manager 
Соединено. 
17:21:47 SQL> show sga 
 
Total System Global Area  152581388 bytes 
Fixed Size                    70924 bytes 
Variable Size              78741504 bytes 
Database Buffers           73691136 bytes 
Redo Buffers                  77824 bytes 
17:21:49 SQL> show sqlcode 
sqlcode 0 
17:33:36 SQL> select * from emp; 
select * from emp 
              * 
ошибка в строке 1: 
ORA-00942: таблица или представление пользователя не существует 
 
 
Затрач.время: 00:00:00.40 
17:33:43 SQL> show sqlcode 
sqlcode 942 
17:33:50 SQL> show spool 
spool OFF 
17:34:52 SQL> show linesize 
linesize 128 
17:36:07 SQL> show user 
USER имеет значение "SYSTEM" 
17:36:10 SQL> show parameters buff 
 
NAME                                 TYPE    VALUE 
buffer_pool_keep                     string 
buffer_pool_recycle                  string 
db_block_buffers                     integer 17991 
log_buffer                           integer 32768 
use_indirect_data_buffers            boolean FALSE 

Другие полезные команды

Есть еще несколько полезных команд, не относящихся ни к одной из рассмотренных выше категорий. Вот некоторые из них.

Команда EXECUTE

Эта команда выполняет один оператор PL/SQL. Чаще всего, это вызов хранимой процедуры или функции. Команда, по сути, неявно создает анонимный блок, в котором выполняется оператор. Рассмотрим пример:

 
18:02:02 SQL> set timing off 
18:02:36 SQL> set serverout on 
18:02:41 SQL> exec ListBlackFridays(sysdate, 3); 
13.09.02 
13.12.02 
13.06.03 
 
Процедура PL/SQL успешно завершена. 

Команда PASSWORD

Команда PASSWORD позволяет изменить пароль пользователя, не отображая его на экране. Эта команда имеет следующий простой синтаксис:

<команда PASSWORD> ::=
PASSW[ORD] [<имя пользователя>]

По умолчанию, изменяется пароль текущего пользователя. Чтобы изменять пароль другого пользователя, необходима соответствующая привилегия:

 
18:02:49 SQL> set time off 
SQL> connect system/manager 
Соединено. 
SQL> password scott 
Изменение пароля для scott 
Новый пароль: ***** 
Повторите новый пароль: ***** 
SQL> connect scott/tiger 
Соединено. 

Команды администрирования базы данных

Ряд команд утилиты SQL*Plus предназначен для АБД. По сути, SQL*Plus - полнофункциональное средство администрирования. Доступные в SQL*Plus команды администрирования рассматриваются в данном разделе.

Запуск базы данных

Начиная с Oracle8, утилиту SQL*Plus можно использовать для запуска и остановки базы данных (ранее для этих целей использовались утилиты svrmgrl и SQL*DBA). Запуск базы данных состоит из трех шагов:

  1. Запуск экземпляра.

    Экземпляр - это совокупность фоновых процессов и областей памяти, необходимых для доступа к базе данных Oracle.
  2. Монтирование базы данных.

    При монтировании база данных связывается с запущенным ранее экземпляром.
  3. Открытие базы данных.

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

Запуск базы данных в SQL*Plus выполняется командой STARTUP, имеющей следующий синтаксис:

<команда STARTUP> ::=
STARTUP [FORCE] [RESTRICT] [PFILE=<имя файла параметров>] <действие запуска>
<действие запуска> ::=
MOUNT [<имя базы данных>]
  | OPEN [<опция открытия>][<имя базы данных>]
  | NOMOUNT
<опция открытия> ::=
READ ONLY
  | READ WRITE [RECOVER]
  | RECOVER

Все варианты команды STARTUP, так или иначе, запускают экземпляр (выделяется память и запускаются фоновые процессы). Опции команды STARTUP представлены в табл. 17.

Таблица 17. Опции команды STARTUP.

Опция Назначение
FORCE Останавливает (с опцией ABORT) и потом перезапускает экземпляр. Это единственная опция команды STARTUP, которую можно применять к работающему экземпляру. Используется при отладке и в экстраординарных ситуациях.
RESTRICT Позволяет подключаться к базе данных после запуска только пользователям, обладающим системной привилегией RESTRICTED SESSION. Это ограничение в дальнейшем можно снять с помощью команды ALTER SYSTEM.
PFILE Задает нестандартный файл параметров инициализации. Если эта опция не указана, используется стандартный файл (в ОС UNIX это обычно $ORACLE_HOME/admin/dbs/init$ORACLE_SID.ora, а в Windows - %ORACLE_HOME%\database\init%ORACLE_SID%.ora).
MOUNT Монтирует указанную (стандартную локальную - значение параметра инициализации DB_NAME) базу данных, но не открывает ее.
OPEN Монтирует и открывает указанную базу данных.
NOMOUNT Экземпляр запускается, но база данных не монтируется.
RECOVER Требует выполнить восстановление носителей, если необходимо, перед запуском экземпляра. Применение этой опции аналогично выполнению команды RECOVER DATABASE с последующим обычным запуском. Так можно выполнять только полное восстановление.

Эту команду может выполнять только пользователь, подключившийся как SYSOPER или SYSDBA к выделенному серверному процессу. По умолчанию используется опция OPEN. Команда STARTUP OPEN RECOVER монтирует и открывает базу данных, даже если полное восстановление закончилось неудачно.

Остановка базы данных

Команда SHUTDOWN в SQL*Plus останавливает текущий экземпляр Oracle, к которому подключен пользователь, и может при этом закрыть и демонтировать базу данных. Эту команду можно применять только для серверов версии 8 и выше.

Команда SHUTDOWN имеет следующий синтаксис:

<команда SHUTDOWN> ::=
SHUTDOWN <режим остановки>
<режим остановки> ::=
ABORT | IMMEDIATE | NORMAL | TRANSACTIONAL [LOCAL]

Назначение опций команды SHUTDOWN описано в табл. 18:

Таблица 18. Опции команды SHUTDOWN.

Опция Назначение
ABORT Выполняет немедленную остановку базы данных, не дожидаясь завершения транзакций и отключения пользователей. Эта опция используется при аварийном завершении одного из фоновых процессов или при невозможности нормальной остановки. При перезапуске потребуется восстановление.
IMMEDIATE Не ждет завершения транзакций (автоматически их откатывает) и отключения пользователей. Новые подключения запрещаются. База данных закрывается и демонтируется, затем останавливается экземпляр. При перезапуске восстановление не потребуется.
NORMAL Ждет отключения всех пользователей от базы данных (новые подключения запрещены). База данных закрывается и демонтируется, затем останавливается экземпляр. При перезапуске восстановление не потребуется.

Эта опция используется по умолчанию.

TRANSACTIONAL [LOCAL] Ждет завершения активных транзакций. При попытке начать новую транзакцию происходит отключение сеанса. После завершения всех активных транзакций все сеансы автоматически отключаются. Затем остановка идет как при вводе опции IMMEDIATE.

Режим LOCAL задает такой режим остановки только для локальных транзакций. Сервер не ждет завершения удаленных транзакций.

Эту команду может выполнять только пользователь, подключившийся как SYSOPER или SYSDBA к выделенному серверному процессу. По умолчанию используется опция NORMAL.

Управление архивированием журналов повторного выполнения

Каждая база данных Oracle имеет набор из двух или более файлов журнала повторного выполнения, который обобщенно называют просто журналом повторного выполнения. В этот журнал записываются изменения данных, которые используются при восстановлении базы данных после сбоев. Для защиты от сбоя самого журнала сервер Oracle поддерживает его мультиплексирование (поддержку нескольких копий на разных дисках в виде группы) и архивирование.

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

Для управления режимом архивирования журналов повторного выполнения утилита SQL*Plus предлагает команду ARCHIVE LOG, которая имеет следующий синтаксис:

<команда ARCHIVE LOG > ::=
ARCHIVE LOG <команда или журнал> [TO <место назначения>]
<команда или журнал> ::=
LIST | STOP | START | NEXT | ALL | <номер журнала>

Эта команда позволяет начать или остановить автоматическое архивирование оперативных файлов журнала повторного выполнения, явно заархивировать указанные по номерам файлы или выдать информацию о них. Опции команды ARCHIVE LOG описаны в табл. 19.

Таблица 19. Опции команды ARCHIVE LOG.

Опция Назначение
LIST Выдает информацию о режиме архивирования, каталоге, в котором создаются файлы архива, номерах текущей, последней заархивированной и требующей архивирования группы журналов. Вид выдаваемой информации представлен в примере ниже.
STOP Останавливает автоматическое архивирование. Если экземпляр по- прежнему работает в режиме ARCHIVELOG и все группы журналов повторного выполнения заполнены, работа базы данных приостанавливается, пока файл журнала повторного выполнения не будет заархивирован (например, командами ARCHIVE LOG NEXT или ARCHIVE LOG ALL).
START Включает автоматическое архивирование. Запускает фоновый процесс ARCH, выполняющий автоматическое архивирование при необходимости. Если запускается процесс ARCH и в команде указано имя файла, этот файл становится новым стандартным местом назначения для архива. Процесс ARCH запускается автоматически при запуске экземпляра, если параметр инициализации LOG_ARCHIVE_START имеет значение TRUE.
NEXT Явно архивирует следующую заполненную, но еще не заархивированную оперативную группу файлов журнала повторного выполнения.
ALL Явно архивирует все заполненные, но еще не заархивированные оперативные группы файлов журнала повторного выполнения.
номер журнала Вызывает архивирование любой еще доступной оперативной группы файлов журнала повторного выполнения с указанным номером последовательности. Если такая группа не найдена, выдается сообщение об ошибке. Эта опция позволяет повторно выполнить архивирование группы.

Если место назначения для архива не указано явно в командной строке, используется параметр инициализации LOG_ARCHIVE_DEST (стандартное место назначения). Если новое место назначения указано с опцией START, оно становится стандартным. В остальных случаях туда записываются только соответствующие архивы, инициированные данной командой.

Команду ARCHIVE LOG может выполнять только пользователь, подключившийся как SYSOPER или SYSDBA. Она применяется только к текущему экземпляру. Для управления другими экземплярами и кластером в целом используется SQL-оператор ALTER SYSTEM.

Если все оперативные группы файлов журнала повторного выполнения заполнены и не доступны для повторного использования (т.е. сервер работает в режиме ARCHIVELOG, и они не скопированы) работа базы данных приостанавливается. Явное архивирование решает эту проблему.

Рассмотрим простой пример использования команды ARCHIVE LOG для просмотра информации о текущем состоянии архивирования журналов повторного выполнения:

 
SQL> archive log list 
Режим журнала базы данных Режим архива 
Автоматическое архивирование Включено 
Место размещения архива g:\oracle\oradata\training 
Самая старая последовательность оперативных журналов 745 
Следующая последовательность журналов для архивирования 747 
Текущая последовательность журналов 747 
SQL> archive log 745 
ORA-16013: журнал 1 с номером последовательности 745 не требует  
архивирования 
ORA-00312: оперативный протокол 1 процесса 1:  
'G:\ORACLE\ORADATA\TRAINING\REDO01.LOG' 

Восстановление базы данных

Если база данных работала в режиме ARCHIVELOG, после сбоя носителя ее можно полностью или частично восстановить. Для этого в SQL*Plus предлагается команда RECOVER, имеющая следующий, весьма объемный, синтаксис:

<команда RECOVER> ::=
RECOVER <режим восстановления> [<степень параллелизма>]
<режим восстановления> ::=
<общее восстановление> | <управляемое восстановление> | END BACKUP
<общее восстановление> ::=
[AUTOMATIC] [FROM <местонахождение>] <команда восстановления>
<команда восстановления> ::=
<вид восстановления> [TEST ALLOW <целое число> CORRUPTION]
  | CONTINUE [DEFAULT]
  | CANCEL
<вид восстановления> ::=
<полное восстановление>
  | <частичное восстановление>
  | LOGFILE <имя файла>
<полное восстановление> ::=
[STANDBY] DATABASE { <уровень восстановления >} <уровень восстановления> UNTIL <точка восстановления>
  | USING BACKUP CONTROLFILE
<точка восстановления> ::=
CANCEL | TIME <дата> | CHANGE <целое число>
<частичное восстановление> ::=
<табличные пространства или файлы данных>
  | STANDBY <табличные пространства или файлы данных>
    UNTIL [CONSISTENT] [WITH] CONTROLFILE
<табличные пространства или файлы данных> ::=
TABLESPACE <табличное пространство>{, <табличное пространство>}
  | DATAFILE <файл данных>{, <файл данных>}
<управляемое восстановление> ::=
MANAGED STANDBY DATABASE <опция управляемого восстановления>
<опция управляемого восстановления> ::=
NODELAY
  | [TIMEOUT] <целое число>
  | CANCEL [IMMEDIATE] [NOWAIT]
  | DISCONNECT [FROM SESSION] [FINISH [NOWAIT]]
<степень параллелизма> ::=
PARALLEL [<целое число>] | NOPARALLEL

Опции команды RECOVER кратко описаны в табл. 20.

Таблица 20. Опции команды RECOVER.

Опция Назначение
AUTOMATIC Автоматически генерирует имя архивного файла журнала повторного выполнения, необходимого для продолжения операции восстановления. Для этого используются значения параметров конфигурации LOG_ARCHIVE_DEST и LOG_ARCHIVE_FORMAT (или соответствующие стандартные значения). Если файл с таким именем не найден, SQL*Plus запрашивает имя файла, выводя автоматически сгенерированное в качестве подсказки. Имя запрашивается также, если не указана ни опция AUTOMATIC, ни опция LOGFILE. Если заранее известно, что архивирование выполнялось в файл с нестандартным именем, имеет смысл сразу указать опцию LOGFILE.
FROM <местонахождение> Задает местонахождение архивных файлов журнала повторного выполнения. По умолчанию используется значение параметра инициализации LOG_ARCHIVE_DEST. Можно также задать местонахождение архивных файлов с помощью команды SQL*Plus SET LOGSOURCE.
LOGFILE Продолжает восстановление носителей, применяя указанный файл журнала повторного выполнения. При восстановлении в интерактивном режиме (AUTORECOVERY OFF), запрашивает новое имя файла, если указанный файл журнала не найден.
TEST ALLOW <целое число> CORRUPTION В случае повреждения файла журнала указывает, при скольких поврежденных блоках еще можно продолжать восстановление. В ходе обычного восстановления это значение не должно быть более 1.
CONTINUE Продолжает восстановление нескольких экземпляров после прерывания для отключения восстановления одного из них.
CONTINUE DEFAULT Продолжает восстановление, используя автоматически сгенерированное имя архивного файла журнала повторного выполнения, если оно не указано явно. Аналогично опции AUTOMATIC, но не запрашивает альтернативное имя файла, если файл не найден.
CANCEL Прерывает восстановление, ведущееся до CANCEL (см. опцию UNTIL CANCEL).
STANDBY DATABASE Восстанавливает резервную базу данных, используя управляющий файл и архивные файлы журнала повторного выполнения основной базы данных. Резервная база данных должна быть смонтирована, но не открыта.
DATABASE Восстанавливает всю базу данных в целом.
UNTIL CANCEL Задает неполное восстановление, до прерывания администратором. Необходимо указать или подтвердить автоматически сгенерированные имена файлов журналов повторного выполнения. Восстановление завершится, если указать CANCEL вместо очередного имени файла.
UNTIL TIME Задает неполное восстановление до момента времени. Момент времени указывается в одиночных кавычках по формату 'YYYY-MM-DD:HH24:MI:SS'.
UNTIL CHANGE Задает неполное восстановление до указанного по номеру изменения (SCN), не включая его.
USING BACKUP CONTROLFILE Указывает, что вместо текущего управляющего файла должна использоваться его резервная копия.
TABLESPACE Восстанавливает указанные табличные пространства текущей базы данных (до 16).
DATAFILE Восстанавливает любое количество указанных файлов данных.
STANDBY TABLESPACE Реконструирует потерянное или поврежденное табличное пространство на резервной базе данных, используя архивные файлы журнала повторного выполнения и управляющий файл основной базы данных.
STANDBY DATAFILE Реконструирует потерянный или поврежденный файл данных на резервной базе данных, используя архивные файлы журнала повторного выполнения и управляющий файл основной базы данных.
UNTIL CONSISTENT WITH CONTROLFILE Указывает, что восстановление старого табличного пространства или файла данных использует текущий управляющий файл резервной базы данных.
MANAGED STANDBY DATABASE Задает режим устойчивого восстановления резервной базы данных. В этом режиме предполагается, что резервная база данных является активным компонентом. В таком режиме можно восстанавливать только носители.
NODELAY Немедленно применяет отложенный архивный журнал к резервной базе данных, независимо от установки параметра DELAY в параметре инициализации LOG_ARCHIVE_DEST_n в основной базе данных.
TIMEOUT Задает период ожидания (в минутах) для операции устойчивого восстановления. Если за это время не станет доступным архивный журнал повторного выполнения, процесс восстановления завершается с ошибкой. Если эта конструкция не указана, резервная база данных остается в состоянии ожидания восстановления, пока не будет повторно выполнена команда RECOVER с конструкцией CANCEL или пока не произойдет остановка или сбой экземпляра.
CANCEL При управляемом восстановлении конструкция CANCEL прерывает восстановление резервной базы данных после применения текущего архивного файла повторного выполнения. Приглашение SQL*Plus снова появится после остановки процесса восстановления.
CANCEL IMMEDIATE Прерывает управляемое восстановление резервной базы данных после применения текущего архивного файла повторного выполнения или после прочтения следующего, в зависимости от того, какое событие произойдет раньше. Приглашение SQL*Plus снова появится после остановки процесса восстановления. Команду RECOVER CANCEL IMMEDIATE нельзя выполнять из того же сеанса, из которого была выполнена команда RECOVER MANAGED STANDBY DATABASE.
CANCEL NOWAIT Прерывает управляемое восстановление резервной базы данных после прочтения следующего файла журнала повторного выполнения и выдает приглашение SQL*Plus.
DISCONNECT FROM SESSION Указывает, что в ходе управляемого восстановления архивные файлы повторного выполнения должны применяться отдельным фоновым процессом, не блокирующим текущий сеанс.
FINISH Немедленно восстанавливает резервные файлы текущего журнала повторного выполнения резервной базы данных. Используется при сбое основной базы данных.
NOWAIT Возвращает управление немедленно, не дожидаясь завершения процесса восстановления.

Для выполнения команды RECOVER необходимо обладать ролью SYSDBA и подключиться через выделенный серверный процесс.

Чтобы можно было выполнить восстановление носителей для всей базы данных в целом (для всех табличных пространств), база данных должна быть смонтирована, но закрыта, а все требующие восстановления табличные пространства должны быть включены (online). Для восстановления же отдельного табличного пространства база данных должна быть смонтирована и открыта, а само табличное пространство отключено. Для восстановления файла данных, база данных может оставаться открытой и смонтированной, а поврежденные файлы - отключены (если только они не входят в табличное пространство SYSTEM).

Рассмотрим простой пример остановки, запуска и восстановления носителя из SQL*Plus:

 
SQL> connect system/manager as sysdba 
Соединено. 
SQL> shutdown 
База данных закрыта. 
База данных размонтирована. 
Экземпляр ORACLE завершен. 
SQL> startup mount 
Экземпляр ORACLE запущен. 
Total System Global Area  152581388 bytes 
Fixed Size                    70924 bytes 
Variable Size              78741504 bytes 
Database Buffers           73691136 bytes 
Redo Buffers                  77824 bytes 
База данных смонтирована. 
SQL> recover database until time '2001-12-09:00:00:00' 
Восстановление носителя завершено. 
SQL> alter database open; 

Дополнительные источники информации

  1. SQL*Plus. User's Guide and Reference.
  2. Oracle9i. Database Concepts.
  3. SQL*Plus. Quick Reference.
  4. SQL*Plus Getting Started for Windows.
  5. Кевин Луни, Марлен Терьо. Oracle8i. Настольная книга администратора. - М.: Издательство <ЛОРИ>, 2001. ISBN 5-85582-113-7
  6. Сайт Ask Tom

Упражнения

Для освоения всех возможностей утилиты SQL*Plus необходим практический опыт ее использования. Упражнения позволят вам его получить.

Упражнение 1

Напишите командный файл SQL*Plus, выдающий все записи указанной таблицы в файл с именем <имя таблицы>.unl в виде строк, поля которых разделены символом вертикальной черты (|). Заголовки столбцов не выдавать.

Например, для таблицы dept содержимое файла должно иметь следующий вид:

 
10|ACCOUNTING|NEW YORK 
20|RESEARCH  |DALLAS 
30|SALES     |CHICAGO 
40|OPERATIONS|BOSTON 
50|TRAINING  |KIEV 

Файл такого вида подходит для загрузки в базы данных Informix :).

Упражнение 2

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

Упражнение 3

Напишите командный файл SQL*Plus, выдающий на экран данные таблицы emp, предваряя денежные суммы знаком доллара и заменяя неизвестные значения прочерками. Снабдите создаваемый отчет заголовком и колонтитулами. Для каждого отдела выдайте значение средней заработной платы. В конце отчета выдайте сумму начисленных сотрудникам комиссионных.

Упражнение 4

Напишите командный файл SQL*Plus, выдающий по указанному имени представления текст оператора для его создания (CREATE VIEW) в файл с именем <имя>.sql. См. представление USER_VIEWS в словаре данных, описывающее представления данного пользователя. Длина каждой строки в файле не должна превышать 80 символов, чтобы файл было удобно читать.

Упражнение 5

Напишите сценарий SQL*Plus (без применения PL/SQL), увеличивающий вдвое зарплату всем сотрудникам отдела, средняя зарплата в котором ниже, чем средняя зарплата по всей организации (см. таблицы emp и dept). Затем сценарий должен выдать (в указанный при вызове файл) отчет о сотрудниках с указанием средней зарплаты по отделам. Снабдите столбцы отчета заголовками на русском языке.


Copyleft (no c) 2001-2004 В. Кравчук, OpenXS Initiative, Cоставление, перевод, дополнения, упражнения и примеры


Прежние выпуски

Все вышедшие выпуски рассылки можно найти на сайте рассылки. Там же реализована возможность поиска материалов по ключевым словам (с помощью Google. Работает.)

Дальнейшие планы автора

Вот вам песня Умки на прощанье:

 
Райком закрыт - все ушли на фронт  
Адком открыт - добро пожаловать в ад  
Сияют аксельбанты, заседает бомонд  
Играют музыканты, инструменты блестят  
 
В своих стерильных перчатках  
входит главный герой  
Земля без звука и наркоза  
ложится под нож  
Сейчас ударит фонтаном ее черная кровь  
И съемочная группа  
толпится, подставляя стакан  
 
Райком закрыт - все ушли на фронт!  
 
Приходит ночь, все отходит ко сну  
Солдат не спит, солдат читает устав  
Устав гласит: "Солдат, не спи на посту"  
Ночная птица тихо свистит в кустах  
 
Райком закрыт - все ушли на фронт  
 
Забудь свое имя, забудь свое лицо  
Забудь все то, зачем тебя сделал Бог  
И как автомат отправляйся в военкомат  
Хватай автомат и топай куда пошлют  
 
Запомни только свой номер, запомни код  
Из детства помни одно - как смотрел салют  
Закрой свой рот и тупо шагай вперед  
И если тебя не убьют, то потом нальют  
 
Закрыты магазины, закрыты ларьки  
Закрыта звукозапись, закрыт видеопрокат  
Пираты не дремлют, зато солдаты не спят  
Райком закрыт - добро пожаловать в ад  
 
Райком закрыт - все ушли на фронт!  

Такие дела.

P.S. В марте рассылка, видимо, выходить не будет. По крайней мере, пока не будет сделано все то, что я уже себе наметил. Следите за сайтом.

В следующем выпуске

Пишите, что вам хотелось бы узнать о Oracle. Например, сюда.

С наилучшими пожеланиями,

  В.К.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное