Серверная архитектура Oracle 11g

advertisement
<Insert Picture Here>
Oracle ISV Migration Center
Миграция решений партнеров с SQL Server
на Oracle
Вадим Мельников
Консультант по базам данных
План
1. Обзор архитектуры СУБД Oracle
2. Сравнение SQL Server и Oracle
3. Технология миграции с помощью Oracle SQL
Developer Migration Workbench
2
Oracle 11g
Обзор архитектуры
3
Серверная архитектура Oracle 11g
•
•
•
•
•
•
•
•
Экземпляр (Oracle Instance)
База данных (Oracle Database)
Файлы базы данных (Database Files)
Серверные процессы (Server Processes)
Структура памяти (Memory Structures)
Транзакции (Transactions)
Словарь данных (Data Dictionary)
Схема и пользователи (Schema And Users)
Серверная Архитектура Oracle
Сервер СУБД Oracle
• Oracle – система управления
базами данных которая
предоставляет открытый,
всеобъемлющий,
интегрированный подход к
управлению информацией
• Состоит из экземпляра и
базы данных
5
Oracle Server
Экземпляр (Oracle Instance)
• Средство доступа к базе данных Oracle
• Состоит из набора процессов операционный
системы и используемой ими памяти.
• Открывает только одну базу данных в один момент
времени
Instance
Shared pool
Library
cache
Data Dictionary
cache
SGA
Redo log
Database
buffer cache buffer cache
PMON SMON DBWR LGWR CKPT Others
6
Memory
structures
Background
structures
Физическая структура
Физическая структура БД Oracle определяется
файлами операционной системы которые
обеспечивают физическое хранение
информации в базе данных.
• Control files
• Data files
• Redo log files
Header
Online
redo log
files)
7
Data files
(includes
data
dictionary)
Control
files
Логическая структура данных в Oracle
Логическая структура представлена иерархией:
tablespaces, segments, extents, and blocks.
Tablespace
Data file
Segment
Extent
8
Segment
Blocks
SYSTEM and Non-SYSTEM Tablespaces
• SYSTEM tablespace:
•
•
•
Создается вместе с базой данных
Содержит словарь данных (data dictionary)
Содержит сегмент отката SYSTEM
• Non-SYSTEM tablespaces:
•
•
9
Содержит пользовательские сегменты
Управляются администратором БД
Database Block
• Минимальная единица ввода-вывода
• Состоит из одного или нескольких блоков
данных операционной системы
• Устанавливается при создании tablespace
• DB_BLOCK_SIZE – значение блока по
умолчанию
10
Одновременная поддержка блоков с
разным размером
•
•
Oracle11g поддерживает создание баз данных с
различными размерами блока данных
Преимущества:
•
•
Возможность расположить объекты в табличные
пространства с наиболее подходящим размером
блока и увеличить производительность
Возможно перемещать табличные пространства
между базами с различными размерами блока
(OLTP to Enterprise Data Warehouse)
Структура блока данных
Header
Free space
Data
12
Типы данных Oracle
Data
Datatype
type
User-defined
User-defined
Scalar
Scalar
CHAR(N), NCHAR(N)
VARCHAR2(N),
NVARCHAR2(N)
NUMBER(P,S)
DATE
RAW(N)
BLOB, CLOB,
NCLOB, BFILE
LONG, LONG RAW
ROWID
Built-in
Built-in
Collection
Collection
VARRAY
TABLE
Relationship
Relationship
REF
Системные типы данных
Built-In
Built-InDatatype
Datatype
Native
NativeDatatypes
Datatypes
CHARACTER
CHARACTER
NUMBER
NUMBER
DATE
DATE
LOB
LOB
Extended Datatypes
Text
ANSI
ANSI
Image
DB2
DB2
Video
SQL/DS
SQL/DS
RAW
RAW
Audio
PL/SQL Datatypes
ROWID
ROWID
Spatial
BOOLEAN
XML
Time Series
14
Support
SupportDatatypes
Datatypes
BINARY_INTEGER
Таблицы в Oracle
Обычные
таблицы
(heap)
Организованные
по индексу(IOT)
15
Секционированные
таблицы (partitioned
tables)
Кластерные
(Cluster)
Oracle Database
Oracle Database
Parameter
file
Password
file
16
Data
files
Control
files
Redo
log files
Archived
log files
Redo Log: Назначение
В журналы повторного выполнения
записываются все изменения в базе данных для
проведения восстановления в случае сбоя.
• Redo log объединяются в группы.
• Необходимо как минимум 2 группы.
• Данные в файлах внутри группы
идентичны
Database
Redo
log files
17
Redo Logs: Как работает?
• Группы Redo log используются циклично.
• Когда файлы группы заполнены, LGWR
переключается на следующую группу.
•
•
•
18
Это называетcя переключением логов
В этот момент происходит Checkpoint
Информация записывается в control file
Принудительное переключение
логов
• Переключение логов - ALTER SYSTEM
SWITCH LOGFILE
• Checkpoint :
• Setting FAST_START_MTTR_TARGET parameter
• ALTER SYSTEM CHECKPOINT command
ALTER SYSTEM CHECKPOINT;
19
Архивные Redo Log
Заполненные Redo log могут быть
заархивированы.
• Два преимущества использования архивных
журналов:
• Восстановление: Backup вместе с redo и archived
логами гарантирует восстановление всех committed
транзакций.
• Backup: Может выполняться без остановки базы
данных.
• Режим базы данных при создании NOARCHIVELOG.
20
Архивные Redo Log
• Архивирование журналов осуществляется процессом ARCn.
Запускается автоматически или в ручную при помощи SQL
команд.
• В управляющий файл записывается название архивного
журнала, № последовательности и мин. и макс. SCN в этом
логе.
• Заполненный redo log file не может быть использован снова пока
не произойдет checkpoint и файл не будет заархивирован
процессом ARCn.
• Archived redo log могут быть дублированы.
21
Undo: Обзор
• Перед тем как сделать изменения в блоке
данных Oracle копирует его в Undo.
• Это необходимо для Rollback и Read
Consistency.
22
Undo: Схема
Old image
Table
New
image
Undo segment
Update transaction
23
Согласованность чтения
Table
SELECT *
FROM table
New image
Image at start of statement
24
Структура памяти
Структура памяти Oracle состоит из двух
основных областей:
• System Global Area (SGA): Выделяется при
старте экземпляра, базовый компонент
экземпляра Oracle
• Program Global Area (PGA): Выделяется при
запуске серверного процесса
25
System Global Area (SGA)
• SGA состоит из следующих структур:
•
•
•
•
Shared pool
Database buffer cache
Redo log buffer
Other structures (e.g. lock and latch management,
statistical data)
• Опциональные структуры SGA:
•
•
26
Large pool
Java pool
Обзор основных компонентов
User
process
Instance
Shared pool
Library
cache
Server
process
PGA
Data Dict.
cache
SGA
Redo log
Database
buffer cache buffer cache
PMON SMON DBWR LGWR
Parameter
file
Password
file
27
Data
files
Control
files
CKPT
Redo log
files
Database
Others
Archived
log files
System Global Area (SGA)
•
•
Размер SGA может меняться динамически с помощью
параметра SGA_TARGET, без перезагрузки экземпляра
Память для SGA выделяется дифференцированно под
каждый компонент SGA в зависимости
•
•
•
Преимущества:
•
•
28
Необходимости в памяти
Размера SGA_TARGET
Сервер Oracle может самостоятельно изменять количество
используемой им памяти.
SGA может расти и сжиматься динамически под
управлением DBA
Program Global Area (PGA)
PGA – это память зарезервированная для процессов
подключающихся к базе данных.
PGA
Server
process
User
process
Dedicated server
Session
Stack
information
space sort area, cursor
information
SGA
Stack sort area, cursor
information
space
SGA
Session
information
Shared SQL areas
29
Shared server
Shared SQL areas
Структура процессов
User
process
Instance
SGA
Server
process
PGA
PMON SMON DBWR LGWR
CKPT
Database
30
Others
Фоновые процессы
Взаимодействие между физическими и логическими структурами
памяти осуществляется с помощью фоновых процессов.
• Обязательные фоновые процессы
DBWn
LGWR
PMON
SMON
CKPT
• Возможные фоновые процессы
ARCn
QMNn
CJQ0
LCKn
31
LMON
LMDn
Pnnn
Dnnn
Snnn
RECO
Транзакции
• Oracle использует неявную транзакционную
модель.
• Транзакция начинается сразу за окончанием предыдущей
• COMMIT или ROLLBACK заканчивают транзакцию
32
Словарь данных
Во время создания базы данных сервер Oracle
создает дополнительные объектные структуры в
файлах данных.
• Таблицы словаря данных
• Таблицы dynamic performance
Data
files
Control
files
Database
Data
Data Dictionary
Dictionary Tables
Tables
Dynamic
Dynamic Performance
Performance Tables
Tables
33
Redo
log
files
Словарь данных
Словарь данных – это набор read-only таблиц и представлений
который содержит информацию о базе данных.
• Описывает базу данных и ее объекты
• Включая два типа объектов:
• Базовые таблицы
• Хранят описание БД
• Создаются вместе с CREATE DATABASE
• Data Dictionary views
• Summarize base table information
• Created using catalog.sql script
34
Словарь данных содержит
Словарь данных предоставляет информацию о:
• Логической и физической структуре БД
• Свойствах и размерах объектов
• Ограничениях целостности
• Пользователях
• Ролях
• Привилегиях
• Аудите
35
Как используется Data Dictionary
• Сервером Oracle для поиска информации о:
•
•
•
Users
Schema objects
Storage structures
• Oracle вносит изменения в словарь данных
когда выполняется DDL.
• Пользователи и DBA могут получать
информацию о базе данных.
36
Категории объектов Data Dictionary
• DBA: What is in all the schemas
• ALL: What the user can access
• USER: What is in the user's schema
DBA_xxx
All of the objects in the database
ALL_xxx
Objects accessible by the current user
USER_xxx
Objects owned by the current user
37
Схема
Схема
•
Схема – это набор
объектов
•
Схема может быть
создана для каждого
созданного
пользователя
Tables
Пользователь может
быть связан только с
одной схемой.
Views
Пользователю не
обязательно
соответствует схема
Synonyms
•
•
38
Schema Objects
Triggers
Constraints
Indexes
Sequences
Stored program units
User-defined data types
Database links
<Insert Picture Here>
Сравнение SQL Server
и Oracle
39
Сравнение Oracle and SQL Server
Что похоже?
•
•
•
•
•
•
•
40
Объекты схем (tables, views)
Типы данных
Ссылочная целостность
Constraints
Поддержка транзакций
Триггеры и хранимые процедуры
Доступ к системным каталогам при помощи SQL
Типы данных
41
SQL Server
Oracle
INTEGER
NUMBER(10)
SMALLINT
NUMBER(6)
TINYINT
NUMBER(3)
DECIMAL(p,[q])
NUMBER(p,[q])
NUMERIC(p,[q])
NUMBER(p,[q])
REAL
FLOAT
FLOAT[(p)]
FLOAT[(p)]
BIT
NUMBER(1)
CHAR(n)
CHAR(n)
VARCHAR(n)
VARCHAR2(n)
NCHAR(n)
CHAR(n*2)
NVARCHAR(n)
VARCHAR2(n*2)
Типы данных
42
SQL Server
Oracle
TEXT
CLOB
IMAGE
BLOB
BINARY(n)
RAW(n), BLOB
VARBINARY(n)
RAW(n), BLOB
DATETIME
DATE (or TIMESTAMP)
SMALLDATETIME
DATE
MONEY
NUMBER(19,4)
SMALLMONEY
NUMBER(10,4)
TIMESTAMP
NUMBER
SYSNAME
VARCHAR2(30)
Сравнение Oracle и SQL Server
Основные различия:
• Организация
• Терминология
• Модель подключений
• Транзакционная модель
• Временные таблицы
• Разработка приложений
• Хранимые процедуры
• Утилиты (Пакетная загрузка)
43
Сравнение Oracle и SQL Server
Что такое база данных?
Oracle instance
(Database plus processes)
Oracle database:
•
Collection of
schemas
•
Stored in
tablespaces
•
Central schema:
SYSTEM
Memory
Processes
SYSTEM
Schema 1
Schema 2
Schema 3
44
= SQL Server server
SQL Server
database
= Oracle schema
Memory
Processes
Master,
model,msdb,
tempdb
Database 1
Database 2
Database 3
Сравнение структур хранения данных
• Oracle
•
•
•
•
•
45
Database
Tablespace
Segment
Extent
Block
• SQL Server
•
•
•
•
Database
Filegroup
Extent (64 KB fixed)
Page (8 KB fixed)
SQL Server
• Fundamental storage unit: Page (8 KB fixed)
• Basic unit to allocate space to tables and indexes: Extent
(64 KB fixed)
Database
OS file:
Primary data file
Secondary data file
Log file
46
Filegroup
Oracle
• Fundamental storage unit: Block
• A logical block consists of one or more OS blocks.
• The size of a logical block is defined by an initialization
parameter.
Logical
Physical
Tablespace
Data file
Segment
Extent
Block
47
OS block
Различия в терминологии
•
•
•
•
•
•
48
Oracle spfile(auto managed binary) = SQL Server sysconfig
Oracle v$, USER_TABLES = SQL Server sp_ stored procedures,
sysxxx tables
Oracle has schemas/tablespaces = SQL Server
databases/devices
Oracle has redo buffer cache, redo logs for archiving = SQL
Server transaction log
Oracle has UNDO space for read consistency = no equivalent in
SQL Server* (SS2K5)
Oracle SQL*PLUS (/) = SQL Server ISQL (go)
Подключение к БД
• Для переключения между несколькими БД в SQL Server
используется команда:
SQL> Use hr
• Переключения между несколькими схемами в одной БД
Oracle:
SQL> CONNECT hr/hr;
• ИЛИ
SQL> ALTER SESSION SET CURRENT_SCHEMA=HR;
49
Сравнение объектов схем
• Объекты Oracle которых нет в SQL Server:
• Database link
• Profile
• Materialized view
• Sequence (SQL Server: Serial data type)
• Synonym
50
Именование объектов СУБД Oracle
• Длинна имен должна быть то 1 до 30 байт, действуют
следующие ограничения:
• Имена БД ограничены 8 байтами.
• Имена DB link ограничены 128 байтами.
• Нельзя использовать зарезервированные Oracle слова без
кавычек.
• Имена не в кавычках должны начиниться с буквы алфавита.
Именование объектов БД
• Имена не в кавычках могут содержать только:
• Символы алфавита кодировки БД
• Подчеркивания (_)
• Знак доллара ($)
• Знак фунта (#)
• В одном пространстве имен не может быть двух объектов с
одинаковым именем.
Различия в моделях подключения
• The Oracle server is “connection-based”. It offers:
•
•
•
•
Multiple active result-sets per connection
Only one connection needed
Multiple transactions per session
Distributed database access via database links
• SQL Server is “stream-based”. It offers:
• One active result-set per connection
• Typically several connections used
53
Обработка Result Sets
•
SQL Server automatically put resultsets in stream
• Returns data in Tablular Data Stream format (TDS)
• Multiple resultsets possible
•
Oracle provides cursor variables
• Client receives cursor variable
• Cursor Variable is a handle to server side memory resident
cursor
• Client fetches as much of data as desired
• Multiple Cursor Variables easily accommodated
• Can pass Cursor Variable to other clients or servers
54
Сравнение модели транзакций
55
Oracle
SQL Server
‘Readers’ never block ‘writers’
Read locks provide consistency, but may
block ‘writers’.
‘Read’ transactions are always
consistent.
’Dirty reads’, i.e. reads of uncommitted
data allowed to bypass locks
True row-level locks
N/A
Locks never escalate
Locks escalate as numbers
increase
Locking on with the block
Locking in memory
Модель Транзакций
•
Oracle supports always full Isolation Model
• Only committed data visible to other users
• Allows repeatable reads
•
SQL Server allows several modes
• SET TRANSACTION ISOLATION LEVEL … for
each transaction
• Uses BROWSE mode (timestamp) to detect update
conflicts (optimistic locking)
56
Сравнение модели транзакций
• Ключевая разница между транзакционными
моделями:
SQL Server
Oracle
Явное
Неявное
Завершение
По-умолчанию
Требуется COMMIT
транзакции.
используется auto-
Начало
транзакции.
commit mode
57
Начинаем транзакцию
В SQL Server транзакция начинается явно:
SQL>
2
3
4
BEGIN TRANSACTION
INSERT INTO regions VALUES (5, ‘Southeast Asia’)
INSERT INTO countries VALUES (‘VN’, ‘Vietnam’, 5)
COMMIT TRANSACTION
В Oracle - неявно:
SQL> INSERT INTO regions VALUES (5, Southeast Asia’);
2
3
58
INSERT INTO countries VALUES (‘VN’,‘Vietnam’, 5);
COMMIT;
Завершение транзакции
В SQL Server – авто-коммит:
SQL> INSERT INTO regions
2
VALUES (6, ‘South America’)
3 INSERT INTO countries
4
VALUES (‘PE’, ‘Peru’, 6)
Transaction #1
Transaction #2
В Oracle всегда требуется делать COMMIT или
ROLLBACK
SQL> INSERT INTO regions
2
3
4
5
6
59
VALUES (6, ‘South America’);
COMMIT;
INSERT INTO countries
VALUES (‘PE’, ‘Peru’, 6)
COMMIT;
Transaction #1
Transaction #2
Временные таблицы
• SQL Server:
• Local temporary tables, имена начинаются с #
• Global temporary tables, имена начинаются с ##
• Не совместимы с именованием в Oracle conventions
• Oracle:
• Temporary ANSI-style (global temporary) tables
• Multitable joins (optimized internally)
• Materialized views
60
Временные таблицы
CREATE
CREATE GLOBAL
GLOBAL TEMPORARY
TEMPORARY TABLE
TABLE emp_temp(
emp_temp(
eno
eno NUMBER,
NUMBER, ename
ename VARCHAR2(20),
VARCHAR2(20), sal
sal NUMBER)
NUMBER)
ON
ON COMMIT
COMMIT DELETE
DELETE ROWS;
ROWS;
INSERT
INSERT INTO
INTO emp_temp
emp_temp VALUES(
VALUES( 101,’Inga’,1000);
101,’Inga’,1000);
SELECT
SELECT count(*)
count(*) FROM
FROM emp_temp;
emp_temp;
61
•
Данные хранятся только во время сессии или транзакции
•
Данные видит только одна сессия/транзакция
•
Redo не пишется, только undo
•
Для сегментов данных используется user’s temporary tablespace
Миграция таблицы со столбцом с
IDENTITY
• Oracle не поддерживает атрибут IDENTITY. Для
использования авто-инкремента в Oracle создайте
sequence и используйте его в триггере для этой
таблицы.
62
Миграция таблицы со столбцом с
IDENTITY
• SQL Server version
• Create the Table
SQL> CREATE TABLE Friend (
2
3
4•
FriendID INT IDENTITY PRIMARY KEY NOT NULL,
Name VARCHAR(50),
PhoneNo
Insert
RowVARCHAR(15)DEFAULT ‘Unknown Phone’)
SQL> INSERT INTO Friend (Name, PhoneNO)
2
63
VALUES (‘Mike’,’123-456-7890’);
Миграция таблицы со столбцом с
IDENTITY
• Oracle version
• Create the Table
SQL> CREATE TABLE Friend (
2
3
4•
FriendID NUMBER PRIMARY KEY NOT NULL,
Name VARCHAR(50),
PhoneNo
Insert
RowVARCHAR(15)DEFAULT ‘Unknown Phone’)
SQL> INSERT INTO Friend (Name, PhoneNO)
2
64
VALUES (‘Mike’,’123-456-7890’);
Миграция таблицы со столбцом с
IDENTITY
• Oracle version cont.
• Create the Sequence
SQL> CREATE SEQUENCE SEQ;
• Create the Trigger
SQL> CREATE OR REPLACE TRIGGER FRIEND_AUTO_NUMBER
2
3
4
5
6
65
BEFORE INSERT ON Friend
FOR EACH ROW
BEGIN
SELECT SEQ.NEXTVAL INTO :NEW.FriendID FROM DUAL;
END;
Обработка NULL
• SQL Server воспринимает пустую строку как
пробел.
SQL> SELECT customer_id, date_of_birth
2 FROM customers
3 WHERE cust_email = ‘’
• Oracle воспринимает пустую строку как NULL.
Перепишите SQL запрос для его корректной
работы.
SQL> SELECT customer_id, date_of_birth
2 FROM customers
3 WHERE cust_email = ‘ ’
66
Сравнение SQL
67
Зарезервированные слова Oracle
•
Много зарезервированных слов Oracle 11g допускается
использовать в SQL Server 2005:
Word
SQL Server
Oracle
ACCESS
COMMENT
DATE
GROUP
LEVEL
•
68
Исправьте SQL для его работы в Oracle, избавьтесь от
зарезервированных слов.
Доступ через имена объектов
• Существуют различия в обращении к таблице или
представлении через SQL:
• SQL Server
• database_name.owner_name.table_name
• Oracle
• user_schema.table_name
• Пример запроса к другой схеме:
69
SQL Server
Oracle
SELECT * FROM oe.oe_dba.orders
SELECT * FROM oe.orders
Запрос информации об объекте
• В Oracle SQL*Plus используйте команду
DESCRIBE чтобы получить структуру таблицы.
70
Microsoft SQL Server
Oracle
SP_HELP table_name
DESCRIBE table_name
SELECT Statement: FROM Clause
В SQL Server, FROM опционально.
SQL> SELECT getdate()
В Oracle, FROM обязательно!.
SQL> SELECT sysdate FROM dual;
71
SELECT Statement: SELECT INTO
Clause
В SQL Server, используется выражение
SELECT INTO.
SQL> SELECT cust_first_name, cust_last_name
2 INTO contacts
3 FROM customers
В Oracle, если таблица уже существует то
используется INSERT INTO.
SQL> INSERT INTO contacts
2 SELECT cust_first_name, cust_last_name
3 FROM customers;
72
SELECT Statement: SELECT INTO
Clause cont.
В SQL Server, используется выражение
SELECT INTO.
SQL> SELECT cust_first_name, cust_last_name
2 INTO contacts
3 FROM customers
В Oracle, если таблица не существует используется
Create table as select.
SQL> CREATE contacts AS
2 SELECT cust_first_name, cust_last_name
3
FROM customers
73
SELECT Statement: Column Alias
SQL Server, пример использования псевдонима:
SQL> SELECT email = cust_email
2 FROM customers
В Oracle, псевдоним идет за названием столбца
SQL> SELECT cust_email email
2
74
FROM customers;
SELECT Statement: TOP n Clause
В SQL Server, TOP дает первые n строк выборки.
SQL> SELECT TOP 5 empname, total_com FROM emp
ORDER BY total_com
В Oracle, необходимо делать подзапрос и
использовать ROWNUM
SQL> SELECT * FROM
(SELECT empname, total_com FROM emp
ORDER BY total_com )WHERE
ROWNUM < 6
75
INSERT Statement
• В SQL Server, INTO опционально.
SQL> INSERT regions
2
VALUES (202, ‘Southeast’)
• В Oracle, INTO обязательно.
SQL> INSERT INTO regions
2
76
VALUES (202, ‘Southeast’);
UPDATE statement
• Пример на SQL Server:
SQL>
2
3
4
5
UPDATE inventories
SET quantity_on_hand = 0
FROM inventories i, product_information p
WHERE i.product_id = p.product_id
and product_status=‘planned’
• Вариант для Oracle:
SQL>
2
3
4
5
77
UPDATE inventories
SET quantity_on_hand = 0
WHERE product_id IN (SELECT product_id
FROM product_information
WHERE product_status = ‘planned’);
DELETE statement
• SQL Server:
SQL>
2
3
4
DELETE FROM inventories
FROM inventories i, product_information p
WHERE i.product_id = p.product_id
AND supplier_id = 102066
• Вариант для Oracle:
SQL>
2
3
4
78
DELETE FROM inventories
WHERE product_id IN (SELECT product_id
FROM product_information
WHERE supplier_id = 102066);
Операторы
• Примеры разницы в операторах:
SQL Server
Oracle
WHERE qty !< 100
WHERE qty >= 100
WHERE status = NULL
WHERE status IS NULL
String
SELECT fname + ‘ ‘ +
SELECT fname || ‘ ‘
Concatenation
lname AS name
|| lname AS name
Value
Comparison
Null Value
Comparison
and Literals
79
Встроенные функции
SQL Server
Oracle
Character
char()
chr()
Null Test
isnull(qty, 0)
nvl(qty,0)
Conditional Test CASE cust_type
WHEN 1 THEN ‘Gold’
80
DECODE (cust_type,
1,’Gold’,
WHEN 2 THEN ‘Silver’
2,’Silver’,
WHEN 3 THEN ‘Bronze’
3, ‘Bronze’)
END
Oracle also has CASE
Преобразование типов данных
• SQL Server использует функцию CONVERT для
преобразования типов.
SQL> SELECT CONVERT(char, GETDATE())
• В Oracle есть несколько соответствующих
функций:
SQL> SELECT TO_CHAR(sysdate)
2
81
FROM dual;
Хранимые процедуры
• Для Oracle хранимые процедуры пишутся на Java
или PL/SQL
• Они могут быть представлены PROCEDURES или
FUNCTIONS
• Которые могут собираться в PACKAGES
82
Хранимые процедуры
• В SQL Server хранимые процедуры представлены
Transact SQL.
• Могут быть также процедурами или функциями.
83
Важно при преобразовании Transact SQL
•
•
•
•
•
•
84
Обработка и контроль над транзакциями
Хранимые процедуры которые возвращают
Resultsets (CURSOR)
Обработка ошибок
SQL Syntax
Специфические встроенные функции
Динамический SQL
Business Logic Transact-SQL
T-SQL issues - Error Handling
•
SQL Server / Sybase propagate errors back to client via global variable
• @@Error needs to be checked regulary
•
Oracle has Exception Handling in PL/SQL to deal with errors
• Throw/Catch exception model
• SQL statements are embedded in a PL/SQL block with optional
EXCEPTION section
• Use EXCEPTION to trap exactly the error conditions you wish
• Un-handled exceptions propagate to higher levels
85
Сравнение Триггеров Oracle и SQL
Server
SQL Server
Oracle
Типы
INSERT, UPDATE, and
INSERT, UPDATE,
триггеров
DELETE statements
DELETE statements
Тип
AFTER and INSTEAD OF
BEFORE, AFTER and
trigger
INSTEAD OF triggers
Тип
Statement level
Row or statement level
Ссылка на
Uses DELETED and
Accessed via :OLD and
прошлое и
INSERTED temporary tables :NEW
новое
значение
86
Различия в утилитах/названиях
•
•
•
•
•
87
Oracle has scott/tiger schema = SQL Server PUBS database
Oracle has System/manager = SQL Server SA/
Oracle Oracle Call Interface = SQL Server DB-Library/CT-Library
Oracle SQL*Loader = SQL Server BCP
Oracle Warehouse Builder = SQL Server Data Transformation
Services (DTS)
<Insert Picture Here>
Миграция с
SQL Server на
Oracle11g
88
Ключевые аспекты миграции
• Что такое миграция?
• Перевод существующей среды приложения в новую
архитектуры с сохранением всех данных и
функциональных возможностей.
• Ключевые аспекты миграции:
• Schema (table definitions)
• Data (content of tables)
• Application
• Основные шаги при выполнении миграции:
•
•
•
•
89
Анализ
Миграция
Тестирование
Развертывание
Migration Tools Support
1. Evaluation
2. Assessment
8. Project
Support
7. Production
Migration
Lifecycle
6. Customer
Acceptance
4. Testing
5. Optimization
90
3. Migration
Процесс миграции
1. Схема БД и данные
2. Бизнес логика
3. Клиентские приложения
91
Схема и данные
Объекты в БД
•
•
•
•
•
•
•
92
Tables and Data
Primary Keys
Check Constraints
Foreign Keys
Indexes
Views
Groups / Users
•
Databases
•
Stored Procedures
•
Triggers
•
Grants
•
Rules
•
Defaults
•
User Defined Types
Бизнес логика
Бизнес логика в SQL Server
•
Transact-SQL (T/SQL)
•
•
•
Дополнительные хранимые процедуры
•
•
•
DLL’s вызываемые из БД, написанные на C,C++
Переносятся вручную
.NET CLR Stored Procedures
•
•
93
Триггеры, Хранимые процедуры
Переводятся на PL/SQL с помощью SQL Developer
Migration Workbench
Хранимые процедуры написанные на .NET
Работают с Oracle 10gR2, под Windows
Миграция клиентских
приложений
•
•
•
•
•
94
Использование бизнес логики - вызов
хранимых функций/процедур
Управление полученными данными
Изменение способа подключения к БД
Обработка ошибок
Исправление проблемного SQL
SQL Developer Migration Workbench
•
•
•
Утилита написанная на Java
Упрощает процесс миграции на
СУБД Oracle с других платформ
Осуществляет миграцию БД в
целом, включая триггеры и
хранимые процедуры
http://www.oracle.com/technology/products/database/sql_developer/index.html
Возможности SQL Developer Migration
Workbench
• Произвести миграцию за несколько шагов
используя GUI и скрипты
• Получить информацию об исходной БД с
помощью online захвата или скриптов
• Редактировать объекты хранящиеся в
репозитории на промежуточном этапе
• Разбирать и преобразовывать хранимые
процедуры, триггеры, представления в Oracle
PL/SQL
• Следить за процессом миграции с помощью
отчетов и информационных сообщений
SQL Developer Migration Workbench
Использование Workbench Within Migrations
1.
2.
Создаем репозиторий (для 1-го использования)
Capture структуры исходной БД в Source Model
(online/offline)
Convert в Oracle Model
3.
•
4.
Migrate исходной БД
•
•
97
Создается представление захваченной структуры для
целевой БД (Oracle)
Создание схемы (online / offline)
Перенос данных (online / offline)
98
Migration Workbench UI
99
Translation Scratch Editor
Statement Level Translation
100
Translation Diff Editor
Matching Statements and Blocks
101
T-SQL Editor
Code Folding / Syntax Highlighting
102
Ручное преобразование скорее всего
потребуется для:
•
•
•
•
103
Сложные триггеры
Ссылки на таблицы словаря данных (systables,…)
Динамический SQL
Последние расширения к T-SQL (например XML
extensions)
Обработка ошибок
• В TSQL ошибки обрабатываются с помощью
переменной @@ERROR, остановка выполнения
хранимой процедуры не обязательна.
• В PL/SQL любая ошибка приводит к остановке
выполнения если ее перехват не обработан
BEGIN...EXCEPTION...END.
• В SQL Server RAISERROR не останавливает
выполнение хранимой процедуры. Эквивалент в
Oracle RAISE_APPLICATION_ERROR приводит к
остановке!
104
Эмулируемые функции
• Migration workbench предоставляет набор
функций для эмуляции встроенных функции SQL
Server
•
•
•
•
•
•
•
•
•
•
•
105
ATN
CDATE
CDBL
CEILING
CHAR_LENGTH
CSTR
DATEADD
DATEDIFF
DATESERIAL
DATETOSTR
YEAR_
DATE_
DAY_
DBNAME
DDL_MANAGER
DEBUG_TABLE
FIX
GETDATE
INSTR_
INT_
ISNULL
LCASE
LEFT
LEN
MID
MONTH_
NOW
OBJECT_NAME
REPLICATE
REVERSE_
RIGHT
SGN
SHELL
SPACE_
SQR
STR
STRING
SUBSTRING
TIME_
UCASE
VAL
Oracle ODBC
•
•
•
Основан на последнем Oracle OCI
Возможности
• Встроенный Scroll Cursor
• Прозрачная поддержка ResultSet
Поддерживает массивы
•
Поддерживает LOB
•
•
106
Oracle ODBC
Microsoft ODBC
www.oracle.com
www.eu.microsoft.com
Информация
• Общая информация:
www.oracle.com/database
• Технологическая информация:
Oracle Technology Network
otn.oracle.com
• Metalink:
metalink.oracle.com
Информация для контактов :
Вадим Мельников
vmelnikov@fors.ru
+7(495) 913-75-75 (доб. 220)
107
Download