Добро пожаловать на мой блог

The world is yours

Oracle

автор: admin | Октябрь 14, 2010 | Раздел: Жизнь

Экземпляр – это набор процессов операционной системы и используемая ими память.

Oracleservice<sid>Служба которая отвечает за один экземпляр.

Типы файлов – существуют два вида и шесть типов файлов.

1 вид – связан с экземпляром и называется файлы параметров.

1 тип –файлы параметров.

2 вид – связан с базой данных.

2 тип – файлы данных.

3 тип – файлы журнала повторного выполнения.

4 тип – управляющие файлы (определяют местоположение и характеристики базы данных)

5 тип – временные файлы

6 тип- файлы паролей.

Файл tnsnames.ora – можно посмотреть экземпляры.

Файл listener – используется для формирования слушателя клиента.

Файл Init<sid>.ora

  1. Сегмент -  Это область памяти которая выделяется для одного объекта Oracle.
  2. Экстент -  непрерывный фрагмент пространства файлов используется для хранения объектов Oracle.
  3. Блок наименьшая единица выделяемая Oracle.
  4. Строка – данные которые забивают блок.

Аттач – set Oracle_sid=test

Sqlplus / as sysdba- запуск

Отключение БД – shutdown…

Запуск сценария – @ или START /puth/home.sql

select first_name, current_credits*100/12||’%’ as Percent_

from students

select Date ‘2010-03-05′ from dual

select concat(‘Сегодня:’,to_char(sysdate)) from dual

select concat(‘Год:’ ,to_char(sysdate,’yyyy’)) from dual

select to_date(‘050310′,’ddmmyy’) from dual

select extract (day  from sysdate) from dual

select sysdate,extract (hour from cast(sysdate as TIMESTAMP)) from dual

select sysdate+1/24 from dual

select last_name,

decode( current_credits,0 ,’Плохо’, 12, ‘отличник’, ‘:’ )as pos

from students

Select RowNum as Num, Last_Name

from students

where rownum<5

order  by Current_credits desc

Select RowNum as Num, Last_Name

from (select last_name from students order by current_credits desc)

where rownum<5

Select last_name,current_credits,

row_number()over(order by last_name)

as sortByName,row_number()over( order by Current_credits desc)

as sortByCredits

from students

select last_name,major,

rank() over (partition by major order by last_name)

as PosBymajor

from students

Select major, SUM(current_credits) as SumByMajor

from students

GROUP BY Major

UNION

SELECT ‘Total’, SUM(current_credits)

from students

Select major, SUM(current_credits)

from students

GROUP BY rollup (major)

Select major, SUM(current_credits),id

from students

GROUP BY cube (major,id)

select last_name

major , sum(current_credits),grouping(last_name),grouping(major)

from students group by Cube(last_name,major)

Табличное пространство

Табличное пространство – это правило группирования данных (Логическая структура) с однотипными методами доступа.

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

dba_data_files – Информация о файлах

dba_tablespaces – информация о табличных пространствах

dba_extents – информация об использовании экстентов

dba_users – информация обо всех пользователях

user_objects – объекты пользователя

user_tables – таблицы пользователя

user_indexes – индексы пользователя

user_col_comments – принадлежность колонок таблицам

Все то же самое есть с префиксом all

all_objects – все объекты

CREATE TABLESPACE

CREATE TABLESPACE Имя Табличного Пространства

DATAFILE Имя файла

SIZE начальный размер

REUSE –пересоздать файл, если он есть

AUTOEXTEND ON NEXT размер авто расширения

MAXSIZE  максимальный размер табличного пространства

EXTENT MANAGEMENT способ управления экстентами

При создании табличного пространства можно указать:

- datafile – имя файла

- reuse – перезаписать файл, если файл с указанным именем существует

- size – начальный размер

- использование фиксированного размера файла / разрешение авто расширения:  до максимального размера или неограниченно

- режим online/offline сразу после создания

- управление экстентами:

- dictionary – информация о распределении экстентов в табличном пространстве хранится в словаре данных.

- local -  информация о распределении экстентов хранится в самом табличном пространстве в виде битовой карты

- autoallocate – размер экстента управляет системой

- uniform – задается фиксированный размер

а также многие другие свойства табличного пространства

Типы таблиц:

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

Create table t1

(col1 number)

Organization index( нужно указать какое поле)

3.Кластерные таблицы – в одном блоке могут хранится строки нескольких таблиц с одинаковым значением ключа.

Последовательность действие создания кластерной таблицы:

Create cluster cl

(col1 number)

Create table t1( id number, …)

Cluster cl(id);

Create index myindex

On cluster cl

И потом заполнение таблицы

4. тип Вложенные таблицы (используется pl/sql)

5. Объектные таблицы

- язык который инкапсулировал в себя sql.

Базовая исполняемая еденица pl/sql является блок.

Блоки бывают 2-х видов-

  1. Анонимные блоки – выполняюся только один раз, обращатся к ним нельзя, создается один раз
  2. Именнованые блоки –

- помеченные блоки-(Анонимный но с именем)

- Подтип –именованных блоков, процедуры и функции.

- Триггеры .

Анонимные блоки:

Declare

/*раздел объявлений*/

Begin/*раздел выполнния*/

Exception

/*Раздел обработки исключений*/

End;

Элем.прога: begin NULL; End;

Напрмер:

Name_var type_var[constant]

[not null][:=значение];

Var:=value;

Присваивание из запроса:

Select список полей INTO

Список_переменных from.

V_Count number;

Select Count(*)Into v_count

From table

V_LN carchar2(25);

%TYPE

V_LN students.Last_name%TYPE

Выводить сообщение:

DBMS_OUTPUT.put_line(Hello);

Это такие типы данных переменных данных состоят из нескольких элементов.

Составные типы:

- Записи

- Сборные конструкции.

Записи: это тип данных который представляет собой набор разнотипных полей то есть элементов.

Сборные конструкции –

  1. Индексные таблицы:

Type Stud is table of students.last_name%type

Index by Binary_type;

S1 Stud;

S1(1)=’Иванов’

S1(-10)=’Петров’;

S1(1);

СБОРНЫЕ КОНСТРУКЦИИ

Пример такой конструкции:

Type name_type Is Table

Of type_value

Index By type_index

Declore

Type IdString Is Table

Of varehar2(25)

Index By INT;

Value1  IdString;

Begin

Value1(10):=’string1’;

Value1(-10):=’string2’;

DBMS_OUTPUT.put_line(value(10));

Изменяемые массивы :

Type myMASS is VARRAY

(10) of INT;

M MyMASS:=MyMASS(1,2,3,4);

/*create or replace

type name_type is VARRAY

(max.size)of type_element [not null]*/

Тип сборной конструкции может быть типом сборной таблицы.

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

  1. Неявный курсоры
  2. Явные курсоры.

Последовательность создания явных курсоров:

  1. Объявление курсора – Cursor name_cursor is оператор_select.

Cursor s_st

Is

Select * from students;

  1. Open name_cursor open c_St;

Действие которое происходит при открытии курсора.

  1. Анализируется значение переменных привязки
  2. На основе значений привязки и содержимого таблиц определяется результатный набор который переносится в контекстную память

Указатель устанавливается на первую строку результатного набора.

3.Этап выбора результата в переменные посредством курсора.Специальный оператор – FETCH name_cursor

INTO list_var;

Вторая форма:  FETCH name_cursor;

INTO Record PLSQL.

Атрибуты : name_cursor%NOTFOUND –false если прошли все строки.true – если выход за пределы набора.

Name_cursor%FOUND- true если прошли все строки.false – если выход за пределы набора.

Name_cursor%ISOPEN – открыт ли курсор или нет.

Name_cursor%RowCount – позиция курсора.

  1. Закрытие курсора – close name_cursor

Например: Close c_st.

Стандартные исключения и пользовательские исключения.

  1. NO_DATA_FOUND.
  2. TOO_MANY_ROWS
  3. VALUE_ERROR

1.

Чтобы объявить исключение :

Declare

MY_ERROR_EXCEPTION;

2.

EXCEPTION

When name_ex Then

–operators;

3. Генерация исключений :

1.1 RAISE name_ex;

1.2 RAISE_APPLICATION_ERROR(number_error,message_error);

Номер должен быть в пределах от -20 000; -20 999.

Чтобы номер назначить имя :

PRAGMA EXCEPTIONINIT(Name_ex,number_err);

Существую 2 блока PL-SQL

  1. Анонимные

2.Именованные

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

CREATE OR REPLACE PROCEDURE AddNewStudent (

p_FirstName students.first_name%TYPE,

p_LastName students.last_name%TYPE,

p_Major students.major%TYPE) AS

BEGIN

– Внесем новую строку в таблицу students. Воспользуемся

– последовательностью studejit_sequence для

– генерации идентификатора нового студента и 0 для

– current_credits,

INSERT INTO students (ID, first_name, last_name,

major, current_credits)

VALUES (student_sequence.nextval, p_FirstName, p_LastName,

p_Major, 0) ;

END AddNewStudent;

Созданную процедуру можно вызвать из другого блока PL/SQL:

BEGIN

AddNewStudent(‘Zelda’, ‘Zudnik’, ‘Computer Science’);

END;

==============================

CREATE [OR REPLACE] PROCEDURE имя [ (аргумент1 [{IN [ OUT |IN OUT}] тип [:= Default],

аргумент2 [{IN [ OUT |IN OUT}] тип[:= Default])]

{IS | AS}

тело_ процедуры

Тело процедуры имеет структуру блока (без раздела DECLARE)

CREATE OR REPLACE PROCEDURE имя_процедуры[список_парометров]

AS

/* Раздел объявлений */

BEGIN

/* Выполняемый раздел */

EXCEPTION

/* Раздел исключительных ситуаций */

END [имя_процедуры];

!!! В теле процедуры можно использовать только select into и нельзя просто select.

Вызов процедуры exec name_proc(парам) –это глобально.

Begin

Name_proc(парам) – В блоке

End

Фактическое параметры – это те параметры которые передаются при вызове процедуры.

Формальное параметры – Это те параметры которые описываются внутри процедуры.

Формальный параметр In является константным в процедуре.(Только для чтения)

После завершения процедуры фактические параметры не изменяются.

OUT – Формальный параметр внутри процедуры не инициализирован.Содержимое формального параметра присваивается фактическому параметру.

User_object

Type_object=”PROCEDURE”

Команда которая перекомпилирует процедуру:

ALTER PROCEDURE

Name_proc COMPILE;

Надо написать процедуру которая получает название отдела и возвращает количество студентов которые там учатся и количество специальностей в этом отделе.

P1(a number, b varchar2)

…p1(‘3,’’str1’)…

…p1(b=>’str1’,a=>3)…

Чем отличается процедуры от функции?

Вызов процедуры через exec p1(…);

И через begin p1(…); end;

Функции можно использовать в операторах.

  1. select f(…),from ….
  2. функция может вызываться в условии.
  3. select Columns from tables where f(…);
  4. Функция может вызываться в блоке

Begin

F(…);

End;

  1. Функция может вызываться в блоке from

Select Columns

From table(f(…));

Функции

Функция – именованный блок, который возвращает значение. Вызов процедуры является оператором PL/SQL, в то время как вызов функции — это часть некоторого выражения.

Создание функции

CREATE [OR REPLACE] FUNCTION имя [ (аргумент1 [{IN [ OUT |IN OUT}]

тип [:= Default],

аргумент2 [{IN [ OUT |IN OUT}] тип[:= Default])]

RETURN возвращаемый_тип {IS | AS}

объявление переменных

BEGIN

тело_функции

END;

Конвейерная функция – это такая функция которая возвращает набор строк итеративно то есть по одной строке. Pipelined, pipe row.

– это конструкция plsql которая позволяет группировать объекты.

- Хранимая процедура особого типа. Это набор инструкций который хранится на сервере в скомпилированном виде. Мы не можем вызывать такую процедуру а она вызывается при определенных событиях.

Триггеры DML (Update, delete, insert).

Синтаксис оператора определения триггера:

CREATE [OR REPLACE]  TRIGGER [схема.]имя_триггера

{BEFORE   |  AFTER}

{INSERT  |   DELETE  |  UPDATE [OF имя_столбца[,имя_столбца...]]}

[OR  {INSERT  |   DELETE  |  UPDATE [OF имя_столбца[,имя_столбца...]]}…]

ON [схема.]{имя_таблицы | имя_представления}

[FOR EACH ROW]  [WHEN условие]

спецификации_пакета_на_PL/SQL

:o ld – Таблица старых

:new – Таблица новая

Мой блог находят по следующим фразам

39 отзыва(-ов) »

  1. [...] oracle генерация исключений [...]

  2. [...] создать tablespace пример [...]

  3. [...] контекстная память [...]

  4. [...] использование индексных таблиц oracle [...]

  5. [...] синтаксис процедуры в oracle [...]

  6. [...] oracle число файлов в tablespace [...]

  7. [...] как пересоздать TABLESPACE INDX [...]

  8. [...] функция возвращающая таблицу щкфсду [...]

  9. [...] pl sql процедура анонимный блок [...]

  10. [...] представление Cl в Oracle [...]

  11. [...] oracle select сегодня [...]

  12. [...] как вывести select из функции oracle [...]

  13. [...] переменная строка в процедуре oracle [...]

  14. [...] not found oracle выход из процедуры [...]

  15. [...] create or replace function oracle [...]

  16. [...] oracle partition by order by [...]

  17. [...] Oracle генерация исключения [...]

  18. [...] oracle показать экземпляры [...]

  19. [...] вызов процедуры begin oracle [...]

  20. [...] вызов процедуры begin oracle [...]

  21. Данный пост реально помог мне принять очень важное для себя решение. За что автору отдельное спасибо. Жду от Вас новых постов!

  22. [...] вызов исключения oracle [...]

  23. [...] oracle вызов хранимой процедуры [...]

  24. [...] %D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D1%8B%D1… [...]

  25. [...] анонимный блок oracle [...]

  26. [...] чем отличается процедура от функции в oracle [...]

  27. [...] rank over partition by order by oracle [...]

  28. [...] как создать процедуру в оракле [...]

  29. [...] вызов хранимой процедуры oracle из ado.net [...]

  30. [...] oracle запуск процедуры по времени [...]

  31. [...] узнать привязки datafile tablespace oracle [...]

  32. [...] чем отличается процедура от функции в oracle [...]

  33. [...] вызов procedure oracle [...]

  34. [...] вызов процедур в oracle [...]

  35. [...] oracle order by 0 [...]

  36. [...] как создать процедуру в xml файле в оракле [...]

  37. [...] over(partition by oracle [...]

  38. [...] %TYPE хранимая процедура В закладки! var a2a_config = a2a_config || {}; a2a_localize = { Share: "Отправить другу", Save: "Сохранить", Subscribe: "Подписаться", Email: "E-mail", Bookmark: "В закладки!", ShowAll: "Показать все", ShowLess: "Показать остальное", FindServices: "Найти сервис(ы)", FindAnyServiceToAddTo: "Найти сервис и добавить", PoweredBy: "Работает на ", ShareViaEmail: "Подписаться по e-mail", SubscribeViaEmail: "Подписаться по e-mail", BookmarkInYourBrowser: "Добавить в закладки", BookmarkInstructions: "Нажмите Ctrl+В или ⌘+D чтобы добавить страницу в закладки", AddToYourFavorites: "Добавить в Избранное", SendFromWebOrProgram: "Отправить через e-mail сервис", EmailProgram: "E-mail сервисы" }; a2a_config.linkname="LOGAN – Give me a light"; a2a_config.linkurl="http://logan.progryz.ru/2010/07/logan-give-light/"; a2a_config.hide_embeds=0; [...]

  39. [...] oracle вызов процедуры в запросе [...]

Оставить отзыв