该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-16
最后修改:2010-10-16
最近公司为了满足客户的要求,要把mysql 数据库换成oracle 数据库,而且要做到我们的项目要同时支持这两种数据库。之前在网上查了一下资料 大部分人采用手动去转换,而且要分两步,第一步是对表的修改,第二步是对数据修改。可要知道我们的项目用了100多张表,如果采取手动的方式去修改 岂不累死。所以我就想有没有工具能转换,结果从oracle 官方网站上找到了一个sqldeveloper的客户端工具,下载地址是http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html 。接下来我为大家从迁移前准备、迁移操作步聚、迁移后维护、修改代码 这四个步骤 详细的简绍 转换的全过程 ,希望给那些公司需要换数据库的提供一下参考; 环境(jdk 1.6,Mysql 5.0,Oracle 11g,sqldeveloper 2.1.1.64.45). 1.迁移前准备
1.1.修改日期类型
我们使用的mysql数据库其日期类型我们大部分用了timestamp,而timestamp日期类型格式为“YYYY-MM-DD HH:MM:SS”。而oracle中也有timestamp日期类型,其默认格式为:“DD-MON-RR HH.MI.SS.AM”;因为日期格式不正确,所以我们在迁移前把用到timestamp日期类型的都改为datetime日期类型;否则迁移过程中会报错误;如图
1.2.修改列名
数据库中我们有好几张表都到了”comment”、”orders”, ”online”,“uid” 这四个单词做列名, 不幸的是comment,online,uid 在oracle数据库中是关键字; 查看oracle数据库中关键字有哪些:select * from v$reserved_words;
1.3 使用putty工具 我们使用Putty工具登录到安装有oracle数据库的那台服务器上,如172.30.0.XXX。按以下命令进行操作: 输入服务器地址: 172.30.0.XXX 用户名 root 密码:123456; 键入 cd /opt/oracle/product/11gR2/db/bin/ 命令; 如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户 键入 sqlplus "/as sysdba";
1.4 创建表空间、用户、授权
下面是oracle 语句:(表空间名、用户名可以任意取名) 创建表空间: CREATE TABLESPACE dh DATAFILE '/opt/oracle/oradata/orcl/ dh.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 创建新用户 : CREATE USER xiaolv IDENTIFIED BY xiaolv DEFAULT TABLESPACE dh; 给用户授权:
grant connect to xiaolv ; grant unlimited tablespace to xiaolv ; grant create database link to xiaolv ; grant select any sequence,create materialized view to xiaolv ; grant create view to xiaolv ; grant dba to xiaolv ; grant resource to xiaolv ;
1.5 删除用户、表空间 下面是oracle 语句: 删除用户: drop user xiaolv cascade; 删除表空间: drop tablespace dh including contents and datafiles;
2.迁移操作步骤2.1需要准备的工具 连接Mysql 的jdbc 驱动 mysql-connector-java-5.0.4-bin.jar ;
2.2配置环境
2.3配置MySQL和Oracle的连接点击【连接】右键选择【新建连接】分别建立Mysql 和Oracle连接。 A 建立Oracle连接: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-22
最近看Tom的Expert Oracle Database Architecture,里面提到数据库的“移植”,呵呵……
|
|
返回顶楼 | |
发表时间:2010-10-22
其实做系统,数据库的数据一般情况下都是经过了程序的MODEL来操纵的
数据库迁移的问题归根结底就是从一个数据库中查询出数据保存进另外一个数据库 一种通用、简单、可行的方案:建立一个ORM(如Hibernate),将数据查询到Model中,然后在保存进另外一个数据库,这样就不会存在MySql转Oracle还是Oracle转MSServer的问题,在Model看来,就变成了从A库读取,再存储进B库 |
|
返回顶楼 | |
浏览 6576 次