精华内容
下载资源
问答
  • oracle迁移到PostgreSQL社区代码,已经下载,分享给大家
  • 有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。 ...

    有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。

    很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。

    当然,Navicat的数据库迁移无法做到完美,一些依赖数据库特征,人无我有的内容是无法迁移的,例如Oracle的存储过程、序列、MySQL的自增字段等。

    木头大哥做过测试,Oracle的Date字段也是在一定条件下才能迁移成功的。

    以下是从Oracle迁移到SQL Server的步骤:

    1.首先安装Oracle和SQL Server

    此处忽略安装步骤

    2.安装Navicat

    此处忽略安装步骤

    3.建好Oracle数据库名为framework的Schema,并建好表录入好数据;在SQL Server里新建数据库framework。然后在Navicat里面配置好Oracle连接和SQL Server连接,例如:

    image

     

    image

     

    4.点击工具->数据传输

    image

    5.选择数据源和目标,注意其中数据库和模式的选择,

    image

    6.Navicat开始传输数据了,数据量不大的数据库,很快就传输完成。最后汇报:Finished – successfully

     

    image

     

    如果中途传输出错,或许修改几个字段的类型定义就传输通过了,需要耐心解决问题。幸好耐心就是IT江湖人士的常见美德。

    最后,如上所述,一些依赖数据库特征,人无我有的内容是无法迁移的。

    Oracle没有自增字段,传输到SQL Server后可以将id转换为自增字段。

    大功告成!

    以此类推,如何把数据从MySQL迁移到SQL Server、从MySQL迁移到Postgre SQL、从Oracle迁移到MariaDB、SQLServer迁移到SQLite,你懂的。

    (一些工具的下载地址 http://pan.baidu.com/s/1X9xDk)

    原文链接:https://www.cnblogs.com/hellowood23/p/5111912.html


    更多专业前端知识,请上【猿2048】www.mk2048.com
    展开全文
  • oracle迁移到pg全流程

    千次阅读 2019-10-22 11:55:41
    oracle迁移到pg全流程 oracle迁移到pg全流程 1 postgres限制 3 DBA的概念映射 3 Oracle pg的数据类型映射 4 oracle迁移postgres转换 5 oracle与postgres对象 8 Schema 8 标识符 8 表 8 列 8 Constraint: ...

    oracle迁移到pg全流程

    oracle迁移到pg全流程 1

    postgres限制 3

    DBA的概念映射 3

    Oracle pg的数据类型映射 4

    oracle迁移postgres转换 5

    oracle与postgres对象 8

    Schema 8

    标识符 8

    表 8

    列 8

    Constraint: 8

    迁移方案 9

    加载加速 9

    业务逻辑存储过程迁移 9

    12,条件触发器 10

    13,储存过程 10

    14,函数 10

    15,Oracle postrges 储存过程迁移注意事项 10

    16,package 11

    17,synonyms 11

    18,database links 11

    19,connect by 11

    20,物化视图 12

    21,分区 12

    22,sequence序列 12

    024,集合操作 12

    25,使用参数名进行函数调用 12

    26,Dual 13

    27,Rownum 13

    28,rowid 13

    迁移工具 13

    1,Ora2pg特性介绍 14

    2,oracle_fdw特性介绍 14

    迁移工具使用 15

    Ora2pg案例 15

    安装oracle 略 15

    安装pg 略 15

    环境 15

    依赖安装 16

    1、安装perl依赖 16

    2、 安装oracle-instantclient安装包 16

    3、安装 DBI 17

    4、安装 DBD-Oracle 17

    5,DBD:PG安装 17

    6、Ora2pg install 18

    7、检查 18

    8、配置ora2pg 19

    9、查看oracle的表数据 19

    10、导出表结构 20

    11、查看表结构 21

    12、更改ora2pg配置导出数据 22

    13、导出表内容 22

    14、导入表结构和数据 23

    15、数据校验 24

    16、连接Postgres 25

    17、更多用法 创建迁移模板 25

    Oracle_fdw案例(略) 26

    特性Features: 26

    oracle_fdw安装使用 27

    下载 28

    安装 28

    登陆查看可用插件 28

    查看oracle_fdw相关函数 28

    使用案例 29

    数据校验 30

    oracle转postgres函数兼容 32

    1 Connect by 32

    2 ratio 35

    3,eval 36

    4,decode 36

    5,Insert all 36

    6,instr 38

    7,rownum 40

    8,synonym 匿名 43

    9,order by INT position 44

    10,timestamp + numeric 45

    11,系统列(关键字、保留字)的处理 47

    12,rowid 48

    13,round interval 50

    14,UUID 51

    15,pipelined 52

    oracle plsql迁移plpgsql 54

    函数的教程 54

    plpgsql存储过程的好处 55

    PLpgSQL 转换 PL/SQL 55

    oracle函数转pg案例 56

    oracle 包函数 转 plpgsql的案例 60

    plpgsql 储存过程检验 60

    触发器 60

    事件触发器 61

    规则 61

    参考 61

    plpgsql官方教程 61

    Oracle转pg的成本 61

    后期运维差异 61

    开发成本 61

    运营成本以及收益 62

    学习成本 62

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    postgres限制

    Limit

    Value

    Maximum Database Size

    Unlimited

    Maximum Table Size

    32TB

    Maximum Row Size

    1.6TB

    Maximum Field Size

    1GB

    Maximum Rows/Table

    Unlimited

    Maximum Columns/Table

    250~1600

    Maximum Indexes/Table

    Unlimited

     

     

    DBA的概念映射

    Postgres的架构和oracle对比

     

     

     

     

     

    1,MVCC的原理实现有差异:

    oracle采用rollback segment的方式实现

    Postgres采用事务id xmin xmax的方式实现

     

    2,SGA-> shared_buffers

    3,PGA-> work_mem

    4,PMON-> postmaster

    5,TNS Listener -> postmaster

    6,grant/revoke -> 几乎一样的语法

     

    Oracle pg的数据类型映射

    Oracle Type

    postgresL Type

    Comment

    Varchar、varchar2、nvarchar、nvarchar2

    char, varchar, text

     

    char nchar

    char, varchar, text

     

    cblog, long

    Varchar,text,jsonb

     

    Number

    Bigint,int,small,real,double presion:性能很好,精度不好控制

    Numeric:精度很高,性能略差

     

    Binary_integer,binary_float,

    BINARY_DOUBLE

    Integer,float,numeric

     

    Blob,raw,log_raw

    Bytea  如果大对象是json可以换做jsonb

     

    Date

    Date or timestamp

    Timestamp with timezone

     

    Date 加减

    Date + inteval ‘ N day/minute’

     

    Nls_date_format

    To_char to_date

     

    TIMESTAMP

    date,timestamp, timestamptz,

    char,varchar, text

     

    TIMESTAMP WITH TIME ZONE

    date, timestamp, timestamptz, char, varchar, text

     

    TIMESTAMP WITH LOCAL TIME ZONE

    date, timestamp, timestamptz, char, varchar, text

     

    INTERVAL YEAR TO MONTH

    interval, char, varchar, text

     

    INTERVAL DAY TO SECOND

    interval, char, varchar, text

     

    MDSYS.SDO_GEOMETRY

    geometry (see "PostGIS support")

     

     

     

    oracle迁移postgres转换

    项目

    Oracle

    Postgres

    当前时间

    SYSDATE

    now(),clock_timestamp(),current_time,current_date,current_time,current_timestamp,localtime,localtimestamp

    序列

    SEQNAME.NEXTVAL

    NEXTVAL('SEQNAME')

    固定值列

    SELECT '1' AS COL1

    SELECT CAST('1' AS TEXT) as col

    NVL

    NVL函数

    用COALESCE函数替换

    INSTR函数

    instr('str1','str2')

    strpos('str1','str2')

    外连接

    Oracle可简写为(+)

    用LEFT JOIN等语句替换

    层次查询

    START WITH语句

    CONNECT BY语句

    用WITH RECURSIVE语句

    数据库对象大小写

    统一大写,””包起来的除外

    统一小写,””包起来的除外

    GOTO语句

    GOTO语句

    pgsql不支持

    同义词

    Oracle支持同义词

    用视图代替

    trunc

    trunc(时间)

    date_trunc()

    DUAL

    SELECT 1+1 FROM DUAL

    SELECT 1+1 或者

    CREATE VIEW dual AS

    SELECT current_timestamp

    ROWNUM

    ROWNUM关键字

    两种情况:

    1.限制结果集数量,用于翻页等:

    SELECT * FROM T LIMIT 5 OFFSET 0

    2.生成行号:

    ROW_NUMBER() OVER()

    DECODE等判断函数

    DECODE()

    用标准的CASE WHEN THEN ELSE END语句替换

    TO_CHAR

    TO_CHAR(COL,FMT),格式化字符串可以为空

    TO_CHAR(COL1,'FM999999'),9的个数为字段长度,详细定义见:
    https://www.postgresql.org/docs/10/static/functions-formatting.html

    TO_NUMBER

    TO_NUMBER(COL,FMT),格式化字符串可以为空

    TO_NUMBER(COL1,'999999'),9的个数为字段长度,详细定义见:

    http://www.postgresql.org/docs/10/static/functions-formatting.html

    NULL和''

    ORACLE认为''等同于NULL,'a'||null 结果是'a'

    NULL和''不同,'a'||null 结果是null,用concat()函数替代

     

    NULL和''

    LENGTH('')为NULL

    LENGTH('')为0

    NULL和''

    TO_DATE('','YYYYMMDD')为空

    TO_DATE('','YYYYMMDD')为0001-01-01 BC

    NULL和''

    TO_NUMBER('',1)为NULL

    TO_NUMBER('',1),报错

    ADD_MONTHS

    ADD_MONTHS(DATE,INT)

    CREATE FUNCTION add_months(date, int)

    RETURNS date AS

    'SELECT ($1 +($2::text||'' month'')::interval)::date'

    LANGUAGE 'sql'

    或SQL:

    SELECT ($1 +($2::text||' month')::interval)

    LAST_DAY

    LAST_DAY(DATE)

    创建函数来解决

    CREATE OR REPLACE FUNCTION last_day(date)

    RETURNS date AS

    $$

      SELECT (date_trunc('MONTH', $1) + INTERVAL '1 MONTH - 1 day')::date;

    $$ LANGUAGE 'sql';

    或SQL:

    SELECT (date_trunc('MONTH', $1) + interval '1 month - 1 day')::date;

    MONTHS_BETWEEN

    MONTHS_BETWEEN(DATE,DATE)

    创建函数来解决

    CREATE FUNCTION MONTH_BETWEEN

    (d1 timestamp,d2 timestamp)

    RETURNS NUMERIC AS

    'SELECT (extract(year from age(d1,d2))*12 + extract(month from age(d1,d2)))::integer'

    LANGUAGE 'sql';

    BITAND

    BITAND(A,B)

    A & B

    MINUS

    MINUS语句

    以EXCEPT语句来替代

    BIN_

    SELECT BIN_TO_NUM(1,0,1,0) AS VALUE1 FROM DUAL

    SELECT CAST(B'1010' AS INTEGER) AS VALUE1

    UPDATE语句列列表

    UPDATE accounts SET

    (contact_last_name, contact_first_name) =

    (SELECT last_name,first_name

    FROM salesmen

    WHERE

    salesmen.id =accounts.sales_id);

    UPDATE accounts a SET

    contact_last_name=blast_name, contact_first_name=b.first_name

    From salesmen b

    b.id =a.sales_id);

    SUBSTR函数

    如果从第一个开始取子串,可以从0开始,也可以从1开始,如果不是第一个开始,则从1开始计数,可以为负值,从字符串结尾计数,用于取最后几位。

    从1开始计数。如果要取最后几位,可以用RIGHT函数解决

    子查询别名

    子查询别名

    必须有别名

    列(别)名为关键字

    Oracle中比如name,type这样的关键字可以直接作为列的别名,比如:select xx name from t

    需要加as,比如select xx as name from t

    当前登录用户

    SELECT USER FROM DUAL

    select current_user

    ALL_COL_COMMENTS

    通过SELECT *

    FROM ALL_COL_COMMENTS可以获得列注释信息

    select s.column_name as COLUMN_NAME,

    coalesce(col_description(c.oid,ordinal_position) ,s.column_name)

    as COMMENTS

    from information_schema.columns s,pg_class c

    where s.table_name = 'ac01_si' and s.table_name = c.relname

    and s.table_schema = current_schema()

    PG需要通过col_description获得列注释信息

    修改表字段类型

    1.如果字段无数据,可直接修改
    2.如果有数据且新类型和原类型兼容,也可以直接修改
    3.如果不兼容,可通过对原字段改名,然后增加新字段,再通过UPDATE语句对数据进行处理

    1.如果新类型和原类型兼容,可直接修改
    2.如果不兼容,需要使用USING关键字然后提供一个类型转换的表达式

    储存过程函数包

    Function,procedure package

    pgsql不支持procedure和package,都需要改写成function,当package有全局变量的情况修改起来比较麻烦,我们是用临时表传递的。

    cursor的属性

    %FOUND

    %NOTFOUND

    %ISOPEN

    %ROWCOUNT

     

    %FOUND → found

    %NOTFOUND → not found

    %ISOPEN → pgsql不支持

    %ROWCOUNT → pgsql不支持

    另外关于cursor还发现了其他差异

     

     

     

     

     

    oracle与postgres对象

    Schema

    oracle是按照每个用户为独立的schema,postgres是可以独立创建schema,和用户无关

    标识符

    Schema、表、列、函数、视图...

    oracle的是大写,除非是双引号括起来

    Postgres统一转换为小写,除非是双引号括起来

    关键还是要保持一致

     

    创建表一般都兼容,除了

    Global temporay table

    使用local temp 表

    分区表

    使用inherent trigger rule 和 check constraint pg_pathman

    Initrans,maxextents 存储参数

    删除他们

    Pctfree: 使用fillfactor 填充因子

     

    虚拟列:使用视图

    数据类型:根据类型映射

     

    Constraint:

    主键、外键、唯一键、条件约束、非空约束 都支持

     

    索引:

    Btree/descending/ascending :pg都支持

    Reverse key/bitmap/join:pg没实现

     

    Partition:

    Hash、List、range:都兼容 pg_pathman 或触发器实现 pg10自带分区功能

     

    Tablespace:

     原理不一样,但工作的效果是一样的

     

     

    迁移方案

    数据

    如果类型转换顺利

    数据类型字节长度大小正常

     

    使用ETL方式

    1,可以采用自定义导出到plain-text,csv固定分隔符的文件

    2,采用copy from的方式加载

    3,或者采用pg_bulkload的方式进行加载

     

    加载加速

    不要开启wal归档

    数据导入完毕后在创建索引

    唯一键和主键也可以考虑在导入完成后在创建

     

     

    业务逻辑存储过程迁移

    1,return 改为 returns

    2,Execute immediate 改为 execute

    3,select没有into该为 perform

    4,选择一种储存过程语言

    create or replace function fn(a inout) returns int as $$ declare ... begin ... end;$$language;

    5,%type,%rowtype:能正常功能

    6,cursor_name%rowtype:不工作,使用为类型 record

    7,refcursors:没有替代方案,使用returning特性

    8,匿名块:Postrges不支持

    9,在事务中commit/rollback, pg11支持事务自治

    10,reverse loop:可以采用调换start/end的条件解决

    For i in reverse 1..10 loop

    For i in reverse 10..1 loop

     

    11,触发器

    https://www.postgresql.org/docs/11/static/plpgsql-trigger.html

    改写为出发函数和触发器的方式解决

    Create or replace function trg_fn() returns trigger as $$ ... $$ language xx;

    Create trigger tbl_trg before update on table execute procedure trg_fn();

    :NEW,:OLD

    代表触发器使用时捕获的新值和旧值

    Updating,insert -> 通过TG_OP;TG_*等变量获取

    在before trigger记得返回return NEW;

     

    12,条件触发器

    达到某个条件才执行触发器

    pg可以采用事件触发器

     

    13,储存过程

    postgres只有函数,采用returns void的返回值

    14,函数

    1,Return 改为returns

    2,对于函数的空参数,需要提供双括号()

    Create function fn() returns ...

    3,默认值 default ,postgres支持

    4,可以返回为类型record,但是调用者需要知道列的名字

    5,可以返回set of record: returns setof type

    oracle有table functions

     

     

    15,Oracle postrges 储存过程迁移注意事项

    https://www.postgresql.org/docs/9.6/static/plpgsql-porting.html

     

    1,如果一个 SQL 命令中使用的名字可能是一个表的列名或者是对一个函数中变量的引用,那么PL/SQL会将它当作一个列名

    2,在PostgreSQL中,函数体必须写成字符串文本。因此你需要使用美元符引用或者转义函数体中的单引号

    3,数据类型名称常常需要翻译

    4,应该用模式把函数组织成不同的分组,而不是用包

    5,因为没有包,所以也没有包级别的变量。可以在临时表里保存会话级别的状态

    6,带有REVERSE的整数FOR循环的工作方式不同:PL/SQL中是从第二个数向第一个数倒数,而PL/pgSQL是从第一个数向第二个数倒数,因此在移植时需要交换循环边界

    7,查询上的FOR循环(不是游标)的工作方式同样不同:目标变量必须已经被声明,而PL/SQL总是会隐式地声明它们。但是这样做的优点是在退出循环后,变量值仍然可以访问

    8,在使用游标变量方面,存在一些记法差异

     

     

    16,package

    1,一组变量,函数和储存过程

    2,采用schema对函数分组

    3,使用(临时)表替换包内的变量

    4,对于private函数和变量,没有替代方案

    5,包的初始代码,可以在每次调用函数调用一个初始函数

    6,local function 函数里面递归调用函数

    postgres不支持,采用正常的函数替换

     

    17,synonyms

    1,postgres不支持这个特性

    采用视图解决或包装成函数

     

    18,database links

    1,不支持这个特性

    2,采用dblink插件 和视图解决

     

    19,connect by 

    采用with recursive by改写

     

    20,物化视图

    Postgres支持

     

    21,分区

    可以采用inherent 触发器 规则 条件约束 和constraint_exlusion pg_pathman来解决

     

    22,sequence序列

    1,和oracle一样的机制

    2,nocache改为cache 1(或者remove这个参数)

    3,maxvalue 9999999999999999999999999

    减少限制 最大 9223372036854775807

    4,.next,.currval

    nextval(‘sequence’)

    5,order/noorder

    oracle需要这个做cluster/rac的设置

    Postgres没有

    6,no {cache|minvalue|maxvalue|cycle}

    通no{*} 代替

    nominvalue 改为 minvalue

     

    23,关联语法

    Postgres 提供{left|right|full|out} join oracle也提供

     

    024,集合操作

    UNION 并集

    INTERSECT交集

     EXCEPT 差集

     

    25,使用参数名进行函数调用

    =>改为 :=

    var = fn(c=>10,a=>’xyz’,b=>2.5)

    改为

    var = fn(c := 10,a :=’xyz’,b:=2.5)

     

    26,Dual

    Orafce 兼容oracle相关函数

    https://postgres.cz/wiki/Oracle_functionality_(en)

    https://postgres.cz/wiki/Napi%C5%A1te_si_debugger_PL/pgSQL_aneb_pokro%C4%8Dil%C3%A9_techniky_programov%C3%A1n%C3%AD_v_PostgreSQL

     

    1,Orafce

    很多兼容的功能

    Dbms_alert

    Dbms_pipe

    Utl_file

    Dbms_output

    Dbms_random

    Date operations

    Dual

    To_char() 支持多不同的数据类型

    (需要安装插件包,虽然可以兼容,但更建议直接改写,减少依赖)

     

    27,Rownum

    Row_number()窗口函数

    https://www.postgresql.org/docs/11/static/functions-window.html

     

    28,rowid

    使用ctid系统列

    不能用作分区键,空间回收ctid会变化

    使用oid列

     

     

    迁移工具

    1,Ora2pg

    2,oracle_fdw

     

    1,Ora2pg特性介绍

     Features included:

    - Export full database schema (tables, views, sequences, indexes), with

      unique, primary, foreign key and check constraints.

    - Export grants/privileges for users and groups.

    - Export range/list partitions andi sub partitions.

    - Export a table selection (by specifying the table names).

    - Export Oracle schema to a PostgreSQL 8.4+ schema.

    - Export predefined functions, triggers, procedures, packages and

      package bodies.

    - Export full data or following a WHERE clause.

    - Full support of Oracle BLOB object as PG BYTEA.

    - Export Oracle views as PG tables.

    - Export Oracle user defined types.

    - Provide some basic automatic conversion of PLSQL code to PLPGSQL.

    - Works on any plateform.

    - Export Oracle tables as foreign data wrapper tables.

    - Export materialized view.

    - Show a detailled report of an Oracle database content.

    - Migration cost assessment of an Oracle database.

    - Migration difficulty level assessment of an Oracle database.

    - Migration cost assessment of PL/SQL code from a file.

    - Migration cost assessment of Oracle SQL queries stored in a file.

    - Generate XML ktr files to be used with Penthalo Data Integrator (Kettle)

    - Export Oracle locator and spatial geometries into PostGis.

    - Export DBLINK as Oracle FDW.

    - Export SYNONYMS as views.

    - Export DIRECTORY as external table or directory for external_file extension.

    - Full MySQL export just like Oracle database.

    - Dispatch a list of SQL orders over multiple PostgreSQL connections

    - Perform a diff between Oracle and PostgreSQL database for test purpose.

     

     

    2,oracle_fdw特性介绍

    特性Features:

    1,Uses the standard compliant SQL/MED environment of PostgreSQL 9.1 and above

    2,Supports translation of Oracle data types to similar PostgreSQL data types

    3,WHERE conditions and ORDER BY expressions are propagated to Oracle where possible

    4,Only the required Oracle table columns are fetched

    5,EXPLAIN shows the remote query, EXPLAIN VERBOSE the Oracle execution plan

    6,Should compile and run on all platforms supported by Oracle Client and PostgreSQL

    7,Works with the regular Oracle client and Oracle Instant Client

    8,Installable with a single CREATE EXTENSION command

    9,Allows foreign tables based on arbitrary Oracle queries

    10,Oracle connections are cached for the duration of the PostgreSQL session

    11,Supports Oracle external authentication to avoid storing passwords in the database

    12,Uses Oracle prefetching for high performance

    13,Supports gathering statistics with ANALYZE from PostgreSQL 9.2 on

    14,Supports INSERT, UPDATE and DELETE from PostgreSQL 9.3 on

    15,Efficient mapping between MDSYS.SDO_GEOMETRY and PostGIS geometry

    16,Supports IMPORT FOREIGN SCHEMA from PostgreSQL 9.5 on

    17,Propagates 2-way inner joins between foreign tables to Oracle from PostgreSQL 9.6 on

     

    迁移工具使用

    Ora2pg案例

    https://github.com/darold/ora2pg

    http://ora2pg.darold.net/documentation.html

     

    安装oracle 略 

    安装pg 略 

     

    环境

    [postgres@DD_DB2 ~]$ cat /etc/redhat-release

    CentOS release 6.5 (Final)

     

    [postgres@DD_DB2 ~]$ uname -a

    Linux DD_DB2 2.6.32-573.22.1.el6.x86_64 #1 SMP Wed Mar 23 03:35:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

     

    依赖安装

    1、安装perl依赖

    yum install -y perf cpan perl-Time-HiRes

     

    1. 安装oracle-instantclient安装包

    oracle官网下载basic、devel、sqlplus三个rpm包。

    http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

     

    直接下载

    http://download.oracle.com/otn/linux/instantclient/122010/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

    http://download.oracle.com/otn/linux/instantclient/121020/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

    http://download.oracle.com/otn/linux/instantclient/122010/oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

     

    安装

    rpm -ivh oracle-instantclient*.rpm

    rpm -ivh *.rpm

    Preparing...                ########################################### [100%]

    package oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64 is already installed

    package oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64 is already installed

    package oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64 is already installed

     

    [root@10-0-98-60 ~]# echo  "/usr/lib/oracle/12.2/client64/lib" > /etc/ld.so.conf.d/oracle_client.conf

    [root@10-0-98-60 ~]# ldconfig  

    [root@10-0-98-60 ~]#   

    [root@10-0-98-60 ~]# ldconfig -p|grep oracle  

    libsqlplusic.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libsqlplusic.so

    libsqlplus.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libsqlplus.so

    liboramysql12.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/liboramysql12.so

    libons.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libons.so

    libocijdbc12.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libocijdbc12.so

    libociei.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libociei.so

    libocci.so.12.1 (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libocci.so.12.1

    libocci.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libocci.so

    libnnz12.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libnnz12.so

    libmql1.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libmql1.so

    libipc1.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libipc1.so

    libclntshcore.so.12.1 (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntshcore.so.12.1

    libclntshcore.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntshcore.so

    libclntsh.so.12.1 (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1

    libclntsh.so (libc6,x86-64) => /usr/lib/oracle/12.2/client64/lib/libclntsh.so

     

    测试 sqlplus username/password@ip:port/sid

    sqlplus64 scott/iger@10.0.98.60:1521/orcl

     

    3、安装 DBI

    cpan install DBI

      

    4、安装 DBD-Oracle

    export ORACLE_HOME=/usr/lib/oracle/12.2/client64  

    export PATH=$ORACLE_HOME/bin:$PATH  

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

     

    wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.74.tar.gz  

    tar -zxvf DBD-Oracle-1.74.tar.gz  

    cd DBD-Oracle-1.74  

    perl Makefile.PL -l  

    make && make test  

    make install  

     

    5,DBD:PG安装

    下载

    http://search.cpan.org/~turnstep/DBD-Pg/

    wget http://www.cpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-3.7.4.tar.gz

    tar -zxf DBD-Pg-3.7.4.tar.gz

    cd DBD-Pg-3.7.4

    perl Makefile.PL

    make

    make install

    history

      

    6、Ora2pg install

    wget https://github.com/darold/ora2pg/archive/v18.2.tar.gz  

    tar -zxvf v18.2.tar.gz   

    cd ora2pg-18.2/  

    perl Makefile.PL  

    make && make install  

     

    perl -MCPAN -e shell

    cpan> get DBD::mysql

    cpan> quit

    cd ~/.cpan/build/DBD-mysql*

    perl Makefile.PL

    make

    make install

     

    7、检查

    cat check.pl

    #!/usr/bin/perl   

    use strict;  

    use ExtUtils::Installed;  

       

    my $inst=ExtUtils::Installed->new();  

         

    my @modules = $inst->modules();  

             

    foreach(@modules){  

            my $ver = $inst->version($_) || "???";  

            printf("%-12s -- %s\n",$_,$ver);  

    }  

     

    perl check.pl

    DBD::Oracle  -- 1.74

    DBD::Pg      -- 3.7.4

    DBD::mysql   -- 4.046

    DBI          -- 1.641

    Ora2Pg       -- 18.2

    Perl         -- 5.10.1

    Test::Simple -- 1.302136

     

    8、配置ora2pg

    复制

    cp /etc/ora2pg/ora2pg.conf.dist /etc/ora2pg/ora2pg.conf

     

    编辑导出配置文件

    cd /etc/ora2pg/

     

    cat ora2pg.conf

    ORACLE_HOME /usr/local/oracle/product/11.2.0/db_1

     

    #Set Oracle database connection (data source, user, password)  

    ORACLE_DSN dbi:Oracle:host=10.0.98.60;sid=orcl

    ORACLE_USER scott

    ORACLE_PWD tiger

    SCHEMA  scott  

    DEBUG       1

    ORA_INITIAL_COMMAND

    EXPORT_SCHEMA   0

    CREATE_SCHEMA   1

    COMPILE_SCHEMA  0

    TYPE        TABLE  #导出标结果

    OUTPUT      output.sql #导出的文件名

     

    9、查看oracle的表数据

    SQL> show user;      

    USER is "SCOTT"

    SQL> select SYS_CONTEXT('USERENV','CURRENT_SCHEMA') CURRENT_SCHEMA from dual;

     

    CURRENT_SCHEMA

    --------------------------------------------------------------------------------

    SCOTT

     

    SQL> select table_name,tablespace_name from user_tables;

     

    TABLE_NAME        TABLESPACE_NAME

    ------------------------------ ------------------------------

    DEPT        USERS

    EMP            USERS

    BONUS        USERS

    SALGRADE        USERS

    TMP            USERS

    TEST        USERS

    T1            USERS

     

    10、导出表结构

    [oracle@10-0-98-60 ora2pg]$ ora2pg -c ora2pg.conf

    Ora2Pg version: 18.2

    Trying to connect to database: dbi:Oracle:host=10.0.98.60;sid=orcl

    Isolation level: SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    Looking forward functions declaration in schema SCOTT.

    Retrieving table information...

    [1] Scanning table BONUS (0 rows)...

    [2] Scanning table DEPT (4 rows)...

    [3] Scanning table EMP (14 rows)...

    [4] Scanning table SALGRADE (5 rows)...

    [5] Scanning table T1 (1 rows)...

    [6] Scanning table TEST (1 rows)...

    [7] Scanning table TMP (1 rows)...

    Dumping table T1...

    Dumping table TEST...

    Dumping table DEPT...

    Dumping table BONUS...

    Dumping table EMP...

    Dumping table SALGRADE...

    Dumping table TMP...

    Dumping RI EMP...

     

    问题

    [oracle@10-0-98-60 ora2pg]$ ora2pg -c ora2pg.conf

    Ora2Pg version: 18.2

    Trying to connect to database: dbi:Oracle:host=10.0.98.60;sid=orcl

    Isolation level: SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    Looking forward functions declaration in schema SCOTT.

    DBD::Oracle::db prepare failed: ORA-00942: table or view does not exist (DBD ERROR: error possibly near

     

    解决方案

    oracle授予用户DBA权限

    SQL> grant dba to scott;     

    Grant succeeded.

     

     

    11、查看表结构

    自动做了表结构数据类型转换

    [oracle@10-0-98-60 ora2pg]$ more output.sql

    -- Generated by Ora2Pg, the Oracle database Schema converter, version 18.2

    -- Copyright 2000-2017 Gilles DAROLD. All rights reserved.

    -- DATASOURCE: dbi:Oracle:host=10.0.98.60;sid=orcl

     

    SET client_encoding TO 'UTF8';

     

    \set ON_ERROR_STOP ON

     

    SET check_function_bodies = false;

    CREATE TABLE dept (

    deptno smallint NOT NULL,

    dname varchar(14),

    loc varchar(13)

    ) ;

    ALTER TABLE dept ADD PRIMARY KEY (deptno);

     

    CREATE TABLE bonus (

    ename varchar(10),

    job varchar(9),

    sal bigint,

    comm bigint

    ) ;

     

    CREATE TABLE emp (

    empno smallint NOT NULL,

    ename varchar(10),

    job varchar(9),

    mgr smallint,

    hiredate timestamp,

    sal decimal(7,2),

    comm decimal(7,2),

    deptno smallint

    ) ;

    ALTER TABLE emp ADD PRIMARY KEY (empno);

     

    12、更改ora2pg配置导出数据

    cat ora2pg.conf

    ORACLE_HOME /usr/local/oracle/product/11.2.0/db_1

     

    #Set Oracle database connection (data source, user, password)  

    ORACLE_DSN dbi:Oracle:host=10.0.98.60;sid=orcl

    ORACLE_USER scott

    ORACLE_PWD tiger

    SCHEMA  scott  

    DEBUG       1

    ORA_INITIAL_COMMAND

    EXPORT_SCHEMA   0

    CREATE_SCHEMA   1

    COMPILE_SCHEMA  0

    TYPE        DATA  #导出数据内容

    OUTPUT      data.sql #导出的数据文件名

     

    13、导出表内容

    [oracle@10-0-98-60 ora2pg]$ ora2pg -c ora2pg.conf

    Ora2Pg version: 18.2

    Trying to connect to database: dbi:Oracle:host=10.0.98.60;sid=orcl

    Isolation level: SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    Looking forward functions declaration in schema SCOTT.

    Retrieving table information...

    [1] Scanning table BONUS (0 rows)...

    [2] Scanning table DEPT (4 rows)...

    [3] Scanning table EMP (14 rows)...

    [4] Scanning table SALGRADE (5 rows)...

    [5] Scanning table T1 (1 rows)...

    [6] Scanning table TEST (1 rows)...

    [7] Scanning table TMP (1 rows)...

    Trying to connect to database: dbi:Oracle:host=10.0.98.60;sid=orcl

    Isolation level: SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    Retrieving partitions information...

    Looking how to retrieve data from BONUS...

    Fetching all data from BONUS tuples...

    DEBUG: Formatting bulk of 10000 data for PostgreSQL.

    DEBUG: Creating output for 10000 tuples

    Dumping data from BONUS to file: data.sql

    Extracted records from table BONUS: total_records = 0 (avg: 0 recs/sec)

    [>                        ]  0/26 total rows (0.0%) - (0 sec., avg: 0 recs/sec).

    Looking how to retrieve data from DEPT...

    Fetching all data from DEPT tuples...

    DEBUG: Formatting bulk of 10000 data for PostgreSQL.

    DEBUG: Creating output for 10000 tuples

    Dumping data from DEPT to file: data.sql

    Extracted records from table DEPT: total_records = 4 (avg: 4 recs/sec)

    ....

    [========================>] 51/26 total rows (196.2%) - (1 sec., avg: 51 recs/sec).

    Looking how to retrieve data from TMP...

    Fetching all data from TMP tuples...

    DEBUG: Formatting bulk of 10000 data for PostgreSQL.

    DEBUG: Creating output for 10000 tuples

    Dumping data from TMP to file: data.sql

    Extracted records from table TMP: total_records = 14 (avg: 14 recs/sec)

     

    [========================>] 65/26 total rows (250.0%) - (1 sec., avg: 65 recs/sec).

    Restarting sequences

     

    14、导入表结构和数据

    导入表结构

    [oracle@10-0-98-60 ora2pg]$ psql -h 127.0.0.1 -U postgres < output.sql

    SET

    SET

    CREATE TABLE

    CREATE TABLE

    CREATE TABLE

    ALTER TABLE

    CREATE TABLE

    CREATE TABLE

    ALTER TABLE

    CREATE TABLE

    CREATE TABLE

    ALTER TABLE

     

    导入数据

    [oracle@10-0-98-60 ora2pg]$ psql -h 127.0.0.1 -U postgres < data.sql

    SET

    SET

    BEGIN

    INSERT 0 1

    INSERT 0 1

    ...

    INSERT 0 1

    INSERT 0 1

    COMMIT

     

    15、数据校验

    oracle

    SQL> select * from emp;

     

         EMPNO ENAME      JOB        MGR HIREDATE     SAL       COMM     DEPTNO

    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------

          7369 SMITH      CLERK       7902 17-DEC-80     800    20

          7499 ALLEN      SALESMAN       7698 20-FEB-81    1600        300    30

          7521 WARD       SALESMAN       7698 22-FEB-81    1250        500    30

          7566 JONES      MANAGER       7839 02-APR-81    2975    20

          7654 MARTIN     SALESMAN       7698 28-SEP-81    1250       1400    30

          7698 BLAKE      MANAGER       7839 01-MAY-81    2850    30

          7782 CLARK      MANAGER       7839 09-JUN-81    2450    10

          7788 SCOTT      ANALYST       7566 19-APR-87    3000    20

          7839 KING       PRESIDENT    17-NOV-81    5000    10

          7844 TURNER     SALESMAN       7698 08-SEP-81    1500  0    30

          7876 ADAMS      CLERK       7788 23-MAY-87    1100    20

          7900 JAMES      CLERK       7698 03-DEC-81     950    30

          7902 FORD       ANALYST       7566 03-DEC-81    3000    20

          7934 MILLER     CLERK       7782 23-JAN-82    1300    10

     

    postgres

    postgres=# select * from emp;

     empno | ename  |    job    | mgr  |      hiredate       |   sal   |  comm   | deptno

    -------+--------+-----------+------+---------------------+---------+---------+--------

      7369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |         |     20

      7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30

      7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30

      7566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |         |     20

      7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30

      7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |         |     30

      7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |         |     10

      7788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |         |     20

      7839 | KING   | PRESIDENT |      | 1981-11-17 00:00:00 | 5000.00 |         |     10

      7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30

      7876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |         |     20

      7900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |         |     30

      7902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |         |     20

      7934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |         |     10

    (14 rows)

     

    16、连接Postgres 

    PG_DSN dbi:Pg:dbname=postgres;host=10.0.98.60;port=5432

    PG_USER postgres

    PG_PWD 123456

    OUTPUT output.sql

      

    17、更多用法 创建迁移模板

    创建迁移模板需要 --project_base and --init_project 这两个参数

    ora2pg --project_base /app/migration/ --init_project test_project

                Creating project test_project.

                /app/migration/test_project/

                        schema/

                                dblinks/

                                directories/

                                functions/

                                grants/

                                mviews/

                                packages/

                                partitions/

                                procedures/

                                sequences/

                                synonyms/

                                tables/

                                tablespaces/

                                triggers/

                                types/

                                views/

                        sources/

                                functions/

                                mviews/

                                packages/

                                partitions/

                                procedures/

                                triggers/

                                types/

                                views/

                        data/

                        config/

                        reports/

     

                Generating generic configuration file

                Creating script export_schema.sh to automate all exports.

                Creating script import_all.sh to automate all imports.

    全流程文档

     

    各种数据库迁移到PostgreSQL及PG维保、紧急救援及商业服务,请扫码联系。

    ----------------------------------------------------------

              个人微信                  打赏码                     钉钉群    

    个人微信打赏码钉钉

    创作不易,如果对你的工作有帮助,打赏小费,以资鼓励吧

    展开全文
  • 数据迁移 oracle转mysql oracle数据迁移 mysql数据迁移 从Oracle迁移数据到MySql-工具oracle2mysqlcn 从Oracle迁移数据到MySql方法大全文章地址: http://www.bywei.cn/post/111.html
  • omwb oracle迁移工具

    热门讨论 2008-10-07 11:07:18
    omwb oracle迁移工具 SQL 向oracle 迁移
  • oracle迁移mysql实施方案 数据库表迁移方法 虽然Oracle与mysql都是关系型数据库,但是两库原理和结构之间的差异依然巨大,在参考众多迁移方案后,决定使用工具Navicat Premium 15(版本最低要求12)经行迁移,该...

                                    oracle迁移mysql实施方案

    • 数据库表迁移方法

    虽然Oracle与mysql都是关系型数据库,但是两库原理和结构之间的差异依然巨大,在参考众多迁移方案后,决定使用工具Navicat Premium 15(版本最低要求12)经行迁移,该工具数据迁移简单,会自动转化两库的字段定义,例如:讲varchar2转换为varchar、number转换为decimal、就date转换为datatime。同时Navicat Premium会自动创建表、索引、表注释、列注释,自动同步表数据。

    • 实施操作过程

    1,使用Navicat Premium连接两个要转换的数据库

    2,点击工具、数据传输

    3,选择要传输的数据库

    注意:mysql手动创建好与oracle同名或其他名称的数据,做为目标数据库。

    4,选择要同步的表

    5,开始传输

    • 传输问题处理与数据处理
    1. 在步骤二中可能存在报错问题,导致数据库传输失败,例如最常见报错

    这种是因为在oracle中字段类型varchar(n),并且该字段有索引存在,当n>255时工具会自动将varchar2转换为TEXT,在mysql中TEXT类型只能创建fulltext缩影,在创建普通索引时就会报错

    处理方法:我们可以将oracle该字段定义小于255,如果字段中存储的数据确实无法变小,可以暂时删除该索引,完成后再在oracle中手动创建。修改后点击上一步,选中未同步的表的继续同步即可

    如遇到其他问题无法解决,可联系我共同处理

    1. 同步后存在的问题及解决办法

    Varchar2(255)以上自动转为换位TEXT,因为TEXT中无法创建普通索引,所以我们要根据实际情况选择时修改为varchar,还时继续使用TEXT。

    注意:因为mysql5.7中,varchar每行可储存65535,在utf8下可存储21845个汉字,所以我们可以使用超过4000的定义。

    Number会转换为decimal,未定义的number会转换为

    Decimal(65,30),需要我们手动修改为int类型。

    Blob会转换为longtext,我们可以根据实际长度,使用text,或者longtext.

    以上操作可以在mysql中导出sql语句,使用note++批量操作。对于批量不能处理的只能手动修改

    1. 内置函数、自定义函数、存储过程、触发器、job其他对象的处理

    Mysql与Oracle的内置函数名称不同,如:str_to_date---to_date、date_format---to_date、ifnull---nvl等等,对于应用层的代码是个问题,我们只能修改应用层SQL,或者手动创建同名函数。

    对与oracle中自定义函数、存储过程、触发器、job等

    因为Mysql中的语法不同,所以需要手动重新创建。

    对于mysql5.7中不支持的递归、开窗、正则替换等等函数,都需要手动创建功能相同的自定义函数。

    注意:以上大部分函数已经在mysql8.0版本中支持

    展开全文
  • 有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。 当然,Navicat的数据库迁移无法做到...

    有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。

    很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。

    当然,Navicat的数据库迁移无法做到完美,一些依赖数据库特征,人无我有的内容是无法迁移的,例如Oracle的存储过程、序列、MySQL的自增字段等。

    木头大哥做过测试,Oracle的Date字段也是在一定条件下才能迁移成功的。

    以下是从Oracle迁移到SQL Server的步骤:

    1.首先安装Oracle和SQL Server

    此处忽略安装步骤

    2.安装Navicat

    此处忽略安装步骤

    3.建好Oracle数据库名为framework的Schema,并建好表录入好数据;在SQL Server里新建数据库framework。然后在Navicat里面配置好Oracle连接和SQL Server连接,例如:

    image

     

    image

     

    4.点击工具->数据传输

    image

    5.选择数据源和目标,注意其中数据库和模式的选择,

    image

    6.Navicat开始传输数据了,数据量不大的数据库,很快就传输完成。最后汇报:Finished – successfully

     

    image

     

    如果中途传输出错,或许修改几个字段的类型定义就传输通过了,需要耐心解决问题。幸好耐心就是IT江湖人士的常见美德。

    最后,如上所述,一些依赖数据库特征,人无我有的内容是无法迁移的。

    Oracle没有自增字段,传输到SQL Server后可以将id转换为自增字段。

    大功告成!

    以此类推,如何把数据从MySQL迁移到SQL Server、从MySQL迁移到Postgre SQL、从Oracle迁移到MariaDB、SQLServer迁移到SQLite,你懂的。

    (一些工具的下载地址 http://pan.baidu.com/s/1X9xDk)

    露气寒光集,微阳下楚丘。
    猿啼洞庭树,人在木兰舟。
    广泽生明月,苍山夹乱流。
    云中君不见,竟夕自悲秋。

    木头大哥所发的文章均基于自身实践,各位江湖好汉可以通过:hellowood23@163.com 联系之。

    转载于:https://www.cnblogs.com/hellowood23/p/5111912.html

    展开全文
  • oracle迁移postgres全流程,类型匹配、安装、迁移过程、函数兼容、数据校验等
  • Oracle迁移到MySQL经典实战,省钱公司必备
  • oracle 迁移 sqlite

    2011-02-21 09:23:17
    oracle 迁移 sqlite 1:oracle 迁移 到mysql,mysql 迁移 到sqlite  oracle 迁移 到mysql 工具:ora2mysqcn   2:mysql 迁移 到sqlite 工具:SqliteDev383,mysql-connector-odbc-5.1.8-win32  通过 配置odbc ...
  • Oracle迁移用户和权限

    千次阅读 2017-05-12 10:15:43
    Oracle迁移用户和权限,迁移中需要用户权限,表空间权限,系统权限,对象权限。通过sql直接获取各权限的脚本,这样迁移起来是不是就方便多了
  • oracle迁移达梦常见问题汇总

    千次阅读 2020-04-21 11:23:21
    本文主要结合之前一次oracle迁移达梦的项目,将碰到的问题以及一系列踩过的坑列举出来供大家参考,数据库版本是达梦7。(本文中涉及到的部分对象名已用sch1,tab1等方式替换) 1、整体情况 迁移过程中失败任务数低于5%...
  • 数据库db2到oracle迁移解决方案

    千次阅读 2018-10-27 21:56:13
    数据库db2到oracle迁移解决方案 前言  本文对数据库db2到oracle迁移过程遇到的问题和解决方案进行总结梳理,为项目从db2数据库迁移到oracle数据库sql语句修改提供参考。 1.取前n条数据 描述:  db2语法为...
  • Oracle迁移到PostgreSQL问题

    千次阅读 2017-12-25 09:55:36
    Oracle迁移到PostgreSQL: 使用Ora2pg的方案将Oracle迁移至PG, 遇到的问题多少与源Oracle数据库有多少与PG不兼容的东西成正比。下面是我们遇到的问题简单总结: 应用程序里面sqlmap.xml 人工REVIEW时的...
  • Oracle迁移到PostgreSQL实战记录

    千次阅读 2020-10-20 11:21:55
    本篇将介绍Oracle迁移到PgSQL的实战经验,使用的方法是Navicat提供的,具体的方法可行性和操作可以看我之前的介绍。 不同数据库之间的数据迁移方案:https://blog.csdn.net/zhangjian8641/article/details/108377225...
  • 1. 从Oracle迁移到MySQL的各种坑及自救方案 当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作。有些迁移很简单,有些迁移可能就会很复杂,大家有没有考虑过为了顺利...
  • Oracle迁移数据库11.2.03迁移11.2.04当进行不完全恢复的时候会报错:数据库需要升级,这时需要升级新库DB的数据字典   故障场景1、 SQL&gt; recover database using backup controlfile until change ...
  • oracle迁移达梦7手顺及注意事项

    千次阅读 2019-09-06 16:08:53
    因为前段时间做了一次oracle迁移达梦7的工作,将迁移过程记录下来供大家参考. ORACLE迁移到达梦7,主要需要完成以下工作: 1、确定迁移对象,选择合适的参数初始化DM7数据库。 2、使用dts迁移工具完成数据块对象和...
  • 疫情期间,有一个老项目要从oracle迁移到MySQL, 其中碰到了一些坑,在此做个记录和大家分享一下 sequence 变 自增id 老项目中oracle主键id都是使用sequence,在mysql中自然得使用自增主键,这块主要朋友的问题是,...
  • oracle迁移mysql自增序列问题

    千次阅读 2020-03-31 15:59:54
    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -&...
  • 这里写目录标题1 达梦迁移工具使用测试1.1 环境1.2 测试oracle迁移到dm1.3 查看达梦数据库,验证数据是否同步1.4 补充 1 达梦迁移工具使用测试 DM数据迁移工具支持: DM数据库之间模式、表、序列、视图、存储过程/...
  • Oracle迁移到Postgresql的方法

    千次阅读 2018-10-11 17:12:12
    Oracle迁移到Postgresql的方法一:用Oracle_fdw参考资料:https://www.jianshu.com/p/e0d11f57ab75http://francs3.blog.163.com/blog/static/405767272012652731317/ 二:用 ora2gp:参考资料:...
  • 摘要: 2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲。Oracle是指“数据库管理系统”,面对Oracle迁移上云的壁垒,阿里云如何能够打破它呢?本文...
  • Oracle迁移PostgreSQL经验总结

    千次阅读 2016-09-08 17:33:45
    本文完全转载自:...Oracle迁移PostgreSQL数据库经验总结(SQL部分,未完待续),本文只包括了我工作中接触到或者用到的技术点,其实两个数据库设计上的差异是很大的,但是Oracl
  • Oracle迁移到达梦数据库报记录超长 今天遇到一个问题如图: 解决方法一:(未解决) 字段类型为varcher2 oracle 最大支持4000 达梦数据库最大支持8000 将此字段改为8000,仍未解决, 解决方法二:(完美解决) 另一...
  • 本节列出如何使用Microsoft SQL Server Migration Assistant for Oracle迁移Oracle数据库到SqlServer数据库。 准备:Oracle11g、SqlServer2012、Microsoft SQL Server Migration Assistant for Oracle 2、开始迁移...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,354
精华内容 26,941
关键字:

oracle迁移