**
oracle遷移到postgresql:
使用ora2pg的方案將oracle遷移至pg, 遇到的問題多少與源oracle資料庫有多少與pg不相容的東西成正比。下面是我們遇到的問題簡單總結:
應用程式裡面sqlmap.xml 人工review時的問題發現:
oracle
postgresql
dual表
沒有dual表,可以直接select 1、select user、select ***
時間函式(sysdate)
current_date
current_time
current_timestamp
trunc
trunc/date trunc(時間截斷函式)
sys_guid()
有類似sys_guid的函式uuid_generate_v4,但需要安裝,create extension "uuid-oosp".
nvlpg可以使用coalesce
where rownum < ...
select row_number() over() , * from ***x或者limit
pg匯入ora2pg產生的遷移指令碼時發現的問題:
tables
default sys_guid();
session# serial# 字段
default uuid_generate_v4;
去掉#partitions
父表在tables中已建立,建立子表時,由於大小寫問題提示找不到父表。
表名稱區分大小寫,繼承父表時,大小寫改為與父表相同。增加或減少分割槽要修改觸發器函式。
synonyms
轉換過來的語句類似如下:
create view public.tablename as select * from owner.tablename security definer;
pg中沒有同義詞,自動建立為檢視,轉換過來的檢視名稱與存在的表名相同,需要修改檢視名稱。
security definer不能加到建立語句的後面,可通過授權來控制許可權。
packages
1、pg中沒有v$session.(oracle原來的packages裡面大多有這個)
select sid, serial# into v_sid, v_serial# from v$session
2、有些轉換過來的語句順序不正確,需要重構。
3、packages自動轉換為function,且function會建立到以原來packages命名的schema下
ora2pg會把oracle裡面的package header轉換為同名的schema
procedures
1、dbms_output.put_line('成功插入資料!');-->raise notice '%',('成功插入資料!');
2、 dbms_output.put_line(sqlerrm) --- raise notice '%', sqlerrm;
3、表的子查詢必須包圍在圓括弧裡並且必須賦予乙個別名
4、start with connect by 遞迴查詢在pg中with recursive
views
1、字元型別問題
2、遞迴查詢沒有轉換成功
3、外連線中的「+」號沒有轉換
4、decode函式需要重構
5、coalesce 函式返回值型別不匹配
1、字元型別需要調整。
2、start with connect by 遞迴查詢在pg中with recursive
3、 (+)這樣的外連線寫法需要調整為sql標準的 table1 [left|right|full] outer join table2 on (...);
4、decode函式需要重構成(case when some_column = 'some_value' then 'some_other_value' when ... then ... else 'some_default_value' end ) as some_column;
5、coalesce 函式返回值型別不匹配、需要型別轉換。
Oracle遷移到MySQL總結
日期 2012 06 01 字型 大中小 這兩個星期裡一直都在忙於一件事兒,就是oracle資料庫的遷移問題。沒有做的時候感覺這是一件十分輕鬆的事兒,可是等到實實在在去做去實現的時候,自己傻眼了。這種糾結啊,在這裡先說下遇到的問題 1。資料庫的表結構問題 資料型別不同需要解決varchar2 var...
從Oracle遷移到SQL Server的陷阱
在把oracle查詢轉換為sql server的時候要特別當心一些不容易注意到的問題。我們知道,t sql是sql server的語言引擎,而oracle的語言引擎卻是plsql。這兩種查詢語言都對ansi sql 92標準進行了擴充套件以提供額外的支援力度。你所建立的應用程式幾乎都要用到這些補充特...
Oracle 遷移到 Mycat 簡單測試
linux安裝oracle 比較費時費力,現使用yum安裝oracle rdbms server 11gr2 preinstall包,可全部搞定其餘未安裝的rpm包,解決之間的依賴關係,配置核心引數等等。1 cd etc yum.repos.d 2 獲取配置檔案 wget 3 yum.repos.d...