Oracle как работать с файлами

Обновлено: 05.07.2024

Oracle Reports Developer (Построитель отчетов) – это мощное средство для проектирования отчетов в составе среды Oracle Developer . Оно позволяет структурировать и форматировать информацию на основе разных стилей, как из базы данных , так и из файловой системы, а также комбинировать ее с текстом и графикой для представления в отчетах на бумаге и в веб-среде, используя Oracle AS Services. Oracle Reports предполагает создание отчетов , работающих как в архитектуре " клиент-сервер ", так и в Web , для построения которых можно использовать Java- апплеты или Java-скрипты. Также вы получаете возможность получения различных типов выходных отчетов в форматах Adobe Acrobat Reader (*.pdf), Microsoft Excel (*.xls), HTML и многих других.

В этой главе мы рассмотрим, как Forms можно связать с построителем отчетов и какие для этого предусмотрены возможности. Между двумя этими продуктами, как, впрочем, и между остальными продуктами Oracle Developer , существует тесная взаимосвязь и гибкий обмен данными . Обмениваясь данными с Reports, вы делаете это аналогично тому, как вы бы это делали, передавая параметры в другую форму. Далее будут рассмотрены темы:

  • Запуск Oracle Reports из Oracle Forms .
  • Передача параметров из Oracle Forms в Oracle Reports.

Запуск Oracle Reports из Oracle Forms

В Oracle Forms в зависимости от версии Reports можно запустить через две различные процедуры:

Сначала мы с вами рассмотрим процедуру RUN_PRODUCT , которая предназначена в первую очередь для запуска отчетов из версий Forms 6i и ниже. Эта процедура поддерживается для совместимости и в более поздних версиях Forms. С помощью этой процедуры вы можете запускать отчет, передавать в него параметры и группы записей. Ниже приведен синтаксис этой процедуры, который может быть оформлен в двух вариантах, отличающихся двумя выделенными параметрами.

Синтаксис процедуры RUN_PRODUCT

Описание принимаемых параметров:

PRODUCT – имя запускаемого продукта, им может быть Graphics, Forms или Reports;

DOCUMENT – имя исполняемого модуля, который должен быть исполнен вызываемым продуктом;

COMMODE – определяет тип (режим) запуска, который будет использован для вызываемого продукта. Вы можете устанавливать один из нижеперечисленных режимов:

  • SYNCHRONOUS (синхронный) – указывает на то, что управление будет передано форме только после закрытия вызываемого продукта;
  • ASYNCHRONOUS (асинхронный) – указывает на то, что управление форме будет возвращено немедленно после отображения модуля, то есть вы можете работать одновременно и с запущенным модулем, и с формой;

EXECMODE – определяет режим выполнения вызываемого продукта. Если вызывается Reports или Graphics , то режим можно устанавливать BATCH или RUNTIME ; если вы запускаете Forms, то режим выполнения всегда RUNTIME ;

LOCATION – определяет место размещения вызываемого модуля, им может быть файловая система ( FILESYSTEM ) или База Данных ( DB );

PARAMLIST_NAME OR PARAMLIST_ID – определяет список параметров, передаваемых вызываемому продукту. В качестве принимаемого параметра вы можете указать имя списка параметров или его идентификатор . Если вы не предаете никаких параметров, то можно написать NULL ;

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

  1. Если вы просто хотите запустить отчет без передачи параметров , вам достаточно будет написать в вашей программе одну строчку, как показано в листинге 7.1 "Запуск отчета без передачи параметров ".

Как показано в листинге 7.2 "Запуск и передача параметров в отчет", вы можете передавать различные типы параметров:

  • значения элементов;
  • значения параметров;
  • значения глобальных переменных;
  • значения групп записей ;
  • значения переменных;
  • системные параметры Reports.
Совет: используйте параметры для передачи значений в лексические параметры Reports, это позволит вам не только передавать значения критерия выборки, но и добавлять другие конструкции к фразе SELECT , такие как WHERE , GROUP BY , ORDER BY , HAVING , CONNECT BY и START WITH .

Остановимся подробнее на последнем пункте, так как все остальные варианты понятны и были уже рассмотрены ранее. Системные параметры Reports – это те параметры, которые управляют выполнением, отображением и формированием отчета. Используя их определения при добавлении параметра в список, вы тем самым получаете возможность влиять на ход выполнения вызываемого продукта. Далее перечислены основные системные параметры.

COPIES – определяет число копий, которое будет задано, когда отчет будет отправлен на печать.

CURRENCY – определяет индикатор денежного символа.

DESFORMAT – определяет выходной формат отчета. Oracle Reports поддерживает следующие форматы:

  • PDF (Forms9i и выше);
  • HTML;
  • RTF ;
  • HTMLCSS;
  • XML (Forms9i и выше);
  • DELIMITED ;
  • DELIMITEDDATA;
  • SPREADSHEETS (Forms10g).

DESNAME – определяет имя выходного драйвера (имя файла, имя принтера, mail пользователя). Например, если вы хотите вывести отчет на матричный принтер, вам необходимо указать имя файла *.prt – dec180 .

DESTYPE – определяет тип вывода отчета. Вы можете определить следующие типы: просмотр, файл , mail, принтер или вывод на просмотр с использованием PostScript .

MODE – определяет режим запуска отчета: растровый ( BITMAP ) или символьный ( CHARACTERS ).

ORIENTATION – определяет ориентацию печати, допустимы следующие значения:

  • DEFAULT ;
  • PORTRAIT ;
  • LANDSCAPE .

PRINTJOB – управляет отображением диалога печати перед запуском отчета.

THOUSENDS – указывает символ разделитель.

Используя вышеописанные параметры, вы сможете управлять печатью, например, вывести печать в файл: пример показан в листинге 7.3 "Формирование отчета в файл".

Вы можете вывести отчет немедленно на печать без предварительного просмотра или формирования файла, как показано в листинге 7.4 "Формирование отчета на принтер без предварительного просмотра".

Листинг 7.4. Формирование отчета на принтер без предварительного просмотра

Теперь, когда мы рассмотрели процедуру RUN_PRODUCT и запуск отчета в GUI, перейдем к рассмотрению встроенной подпрограммы WEB. SHOW_DOCUMENT для запуска отчетов в браузере.

Запуск отчета с помощью WEB.Show_Document

Встроенная процедура WEB.SHOW_DOCUMENT , как уже было сказано выше, предназначена для запуска отчета в браузере. Эта процедура поддерживается в версиях Forms 6i и выше. Из всех перечисленных в этой главе эта процедура является наиболее удобной и компактной в кодировании, и нижеприведенный синтаксис лишний раз это доказывает.

  • URL – определяет имя ресурса, с которого будет загружен документ. URL в данном случае — это не только адресная строка, но и набор передаваемых параметров, так как в определении URL используются системные параметры ( DESNAME , DESTYPE и другие).
  • DESTINATION – назначение целевого окна. Различают следующие назначения:
    • _SELF – заставляет отчет загружаться в ту же самую структуру или окно, что и первоисточник.
    • _PARENT – заставляет отчет загружаться в родительское окно или frameset , содержащий ссылку гипертекста. Если ссылка находится в окне или верхнем уровне фрейма, то _PARENT отрабатывает аналогично _SELF .
    • _TOP – заставляет отчет загружаться в окно, содержащее гипертекстовую ссылку, заменяя все текущие фреймы, которые отражены в этом окне.
    • _BLANK – загружает отчет в новое неименованное окно.

    Строка URL в области определения Reports имеет свою особую специфику, так как является не просто адресной строкой с указанием места расположения ресурса, но и содержит перечень различных параметров. Ниже приведен синтаксис URL с перечислением возможных параметров:

    Теперь, когда мы ознакомились с синтаксисом этой процедуры, попробуем ее в действии. В листинге 7.5 " Запуск отчета с помощью процедуры WEB.SHOW_DOCUMENT " приведен пример запуска отчета в Web .

    Листинг 7.5. Запуск отчета с помощью процедуры WEB.SHOW_DOCUMENT

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

    Работа с внешними файлами из Oracle SQL*Plus, команды GET, START, символы @ и @@, команды SAVE и SPOOL

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

    Отметим, что во всех случаях SQL*Plus подразумевает, что для скрипта используется расширение sql . Если используется именно это расширение, его можно опускать. Если же расширение другое, потребуется указать имя файла вместе с расширением.

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

    GET C :\ OracleScript . sql

    Информация из файла C :\ OracleScript . sql будет загружена в буфер SQL*Plus (и выведена на экран).

    Запустить на выполнение код из внешнего файла можно при помощи команды START . Можно также просто дописать символ @ к имени файла:

    START C :\ OracleScript . sql

    @ C :\ OracleScript . sql

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

    Сохранить содержимое буфера SQL*Plus в файле можно при помощи команды SAVE :

    Для команды SAVE можно указать дополнительные параметры:

    • CREATE (по умолчанию) — создать новый файл;
    • REP ( REPLACE ) — заменить имеющийся на диске файл новым (если такого файла еще нет, он будет просто создан);
    • APP ( APPEND ) — дописать содержимое буфера SQL*Plus к файлу на диске, например:

    SAVE c:\MyScript.sql APP

    Часто возникает необходимость записать результаты выполнения запросов SQL*Plus в файл. Для этой цели используется команда SPOOL :

    SPOOL C :\ ScriptResults . rpt

    select * from emp

    Для отключения вывода информации в файл используется команда SPOOL OFF .

    Отметим некоторые моменты, связанные с перенаправлением вывода SPLPlus в файл:

    · если расширение для файла не указано, по умолчанию SQL*Plus добавит расширение lst ;

    · перенаправлять вывод можно не только в файл, но и на служебные устройства операционной системы (принтер, NULL ) и т.п.;

    · при выводе информации в файл производится буферизация вывода. Поэтому не удивляйтесь, если непосредственно после выполнения запроса обнаружится, что его результаты в файл не добавились. Они будут добавлены полностью только после выполнения команды SPOOL OFF , закрытия SQL*Plus или других действий по очистке кэша результатов;

    · команду SPOOL можно использовать для формирования результатов выполнения запросов в формате HTML ;

    · отключить/включить вывод результатов на экран SQL*Plus можно при помощи команд SET TERMOUT ON / SET TERMOUT OFF .

    Отметим, что запуск внешнего скрипта на выполнение и запись результатов во внешний файл можно осуществить и при помощи параметров командной строки SQL*Plus (см. раздел 1.2.2).

    TEXT_IO - это пакет, который содержит набор процедур и функций для работы с файлами операционной системы. Нет смысла рассказывать о необходимости и полезности этого инструмента, поскольку потребность работать с файлами операционной системы была и будет всегда. Следует заметить, что TEXT_IO в отличие от пакетов VBX , OLE2 , DDE поддерживается в последних версиях Forms, тогда как все вышеперечисленные закончили свое существование в Forms 6i. В этой главе мы рассмотрим различные примеры, которые продемонстрируют нам возможности записи и чтения данных .

    Спецификация пакета

    Пакет TEXT_IO включает в себя все необходимые методы (табл. 14.1) для работы с файлами операционной системы. Для обращения к процедурам или функциям этого пакета вы должны использовать слово " TEXT_IO ".

    Процедура FOpen может открывать файл в трех режимах:

    • R - открывает файл только для чтения;
    • W - открывает файл для чтения и записи, удаляя при этом существующие строки;
    • A - открывает файл для чтения и вставки данных, но при этом существующие данные не удаляются, то есть, по сути, происходит операция вставки.

    Запись данных в файл

    Для записи данных в файл необходимо придерживаться такой последовательности:

    1. Создать ссылку на файл, которая в дальнейшем будет указателем на файл при обращении к нему в других методах.
    2. Открыть файл для замены или для добавления текста.
    3. Записать данные в файл .
    4. Закрыть файл , вызвав Fclose .

    Для того чтобы убедиться в вышесказанном, выполним пример, который покажет, как записать в Excel данные из формы:

    Чтение данных из файла

    Для чтения данных из файла придерживайтесь такой последовательности:

    1. Создать ссылку на файл, которая в дальнейшем будет указателем на файл при обращении к нему в других методах.
    2. Создать буфер для хранения строки данных из файла.
    3. Открыть файл в режиме чтения.
    4. Прочесть данные из буфера ( Get_Line ).
    5. Закрыть файл .

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

    1. Создайте файл os_file.txt .
    2. Создайте кнопку и определите для нее триггер WHEN-BUTTON-PRESSED . В теле триггера напишите следующий код:

    Если вы хотите прочесть все данные, находящиеся в файле, то выполните команду Get_Line цикле.

    Oracle Instance

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

    Обязательные файлы:

    Необязательные файлы:

      (необязательные в том смысле, что база может быть настроена для работы без данных файлов) (Alertlog - если нет необходимости в изучении данных по ошибкам, можно удалить. Трассировочные файлы по умолчанию не создаются. Чтобы создавались, нужно включать трассировку и потом не забыть отключить) (По умолчанию не используются. Нужно специально создавать специальными командами.)

    Файлы данных (Data Files)

    Все данные в базе данных Oracle сохраняются в файлах данных. Все таблицы, индексы, триггеры, последовательности, программы на PL/SQL, представления - все это находится в файлах данных. И хотя эти и другие объекты базы данных логически содержатся в табличных пространствах, в действительности они сохраняются в файлах на жестком диске компьютера.

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

    У каждого файла данных имеется специальный формат, внутренний для программного обеспечения Oracle. Важно отдавать себе отчет в том, что файл данных состоит из заголовка и совокупности блоков. Заголовок файла данных Oracle содержит несколько структур, в том числе и идентификатор базы данных, номер и имя файла, тип файла, SCN создания и состояния файла.

    Данные в файлы вносятся исключительно средствами Oracle.

    Следующий запрос, покажет, где находятся файлы данных.

    Оперативные файлы журналов повтора (Online Redo Log Files)

    Оперативные файлы журналов повтора - предназначены для записи всех изменений, выполненных над данными базы данных Oracle. Используется для хранения на диске информации для повторного выполнения операций.

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

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

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

    Управляющие файлы (Control Files)

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

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

    Файлы параметров pfile, spfie (Parameter Files)

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

    • spfile - бинарный файл, который используется сервером Oracle при старте.
    • pfile - текстовый файл с параметрами, будет использоваться при старте, если не будет найден spfile.

    При старте, Oracle считает файл spfileora112.ora. (файл серверных параметров). Преимущество spfile заключается в том, что при работе с базой данных, любые изменения в базе касающиеся изменения параметра системы, автоматически записываются в данный файл.

    Если используется pfile, для сохранения изменений, необходимо либо “руками вносить эти изменения” в текстовый файл, либо в консоли выполнять команды для создания данных файлов Ораклом.

    Как я могу узнать, что моя база данных использует PFILE или SPFILE?

    Выполните следующий запрос, чтобы увидеть какой файл параметров был использован:

    Архивные файлы журналов повтора (Archive Log Files)

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

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

    Архивные файлы журналов повтора жизненно важны при восстановлении. Если часть базы данных потеряна или повреждена, то для устранения повреждений обычно требуется несколько архивных журналов или туева хуча этих журналов. Файлы журналов повтора должны применяться к базе данных последовательно. Если один из архивных файлов журналов повтора пропущен, то остальные архивные файлы журналов не могут использоваться. Храните все свои архивные файлы журналов повтора с момента выполнения последней резервной копии. Файлы журналов постепенно накапливаются и разрастаются. Иногда необходимо их удалять. Все операции с данными файлами по применению их к базе выполняются исключительно средствами базы данных. А копировать и переносить их при желании можно как угодно. Бездумно удалять их руками не рекомендуется.

    Alert log и трассировочные файлы (trace file)

    При работе базы данных события и ошибки регистрируются в текстовых файлах на сервере базы данных. Файл журнала предупреждений (alert log) нужен администратору базы данных для отслеживания важнейших действий с базой данных - наподобие открытия и закрытия базы данных, установления параметров загрузки базы данных и переключения оперативных журналов повтора. Также в эти файлы записываются многие ошибки базы данных для последующего расследования их причин. Любые структурные изменения базы данных также регистрируются в файле журнала предупреждений.

    Когда возникает ошибка базы данных, может генерироваться файл трассировки (trace file). Они содержит подробную информацию о возникновении ошибки.

    Файлы паролей (Password File)

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

    Tags: Oracle Database, Файлы базы данных Oracle,

    Oracle DBA

    Лучше потратить какое-то количество времени, чтобы записать успешный опыт, чем потом повторно воспроизводить его по памяти.

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

    Читайте также: