当前位置:首页 » 编程软件 » oracle数据迁移脚本

oracle数据迁移脚本

发布时间: 2022-05-14 20:09:13

‘壹’ sqlserver整个数据库怎么转移到oracle数据库

迁移主要有两个工作:
1.
根据Sql
Server数据库生成创建Oracle数据库的脚本
2.
修改代码中的SQL语句
根据Sql
Server数据库生成创建Oracle数据库的脚本
1.
用PowerDesiner将Sql
Server数据库反向工程生成物理数据模型
2.
根据反向工程生成的物理数据模型创建逻辑模型
3.
再根据逻辑模型生成Oracle数据库版本的物理模型
4.
根据Oracle数据库版本的物理模型生成Oracle数据库创建脚本
5.
按照Oracle命名规则和数据类型定义修改Oracle数据库创建脚本
6.
在PL/SQL
Developer中执行以检验其正确性
修改代码中的SQL语句
1.
Sql
Server中经常用方括号把表名和字段名括起来,
到Oracle中要把这些方括号都去掉
2.
将参数变更前的"@"符号改为":"符号
3.
将Sql
Server专有的方法和函数替换成Oracle相应的方法和函数
4.
在PL/SQL
Developer中执行SQL语句以检验其正确性
转换过程中的常见问题
1.
表名和字段名使用了Oracle中的关键字
2.
Sql
Server中的NVARCHAR数据类型可存4000个汉字,
Oracle中的NVARCHAR/NVARCHAR2数据类型只能存2000个汉字
3.
索引名称和外键名称超过了30个字符

‘贰’ 怎样用最简单的方法复制或迁移Oracle数据库

在DBA的日常工作中,经常需要重装或在新机器上安装Oracle,但每次安装所浪费的时间、精力以及失败的挫折都在考验着DBA的承受能力,本文着重介绍了一个简单的复制和迁移Oracle数据库的方法,详细内容请参考下文。

复制迁移的步骤如下:

◆1、首先,复制原Oracle数据库的安装目录到新机器或系统中的安装目录,注意目录要一致,盘符也要一致。

◆2、假如Oracle的安装目录不在Program Files系统文件夹下,我们需要把原系统中的Program Files文件夹下的Oracle目录也复制到新系统的Program Files文件夹中去。

◆3、导出原系统中的Oracle注册表信息,主要注册信息如下:
A. HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
B. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 下有关Oracle的所有键,通常包括以下9个:
/OracleMTSRecoveryService
/OracleOraHome92Agent
/OracleOraHome92ClientCache
/OracleOraHome92HTTPServer
/OracleOraHome92PagingServer
/
/
/OracleOraHome92TNSListener
/OracleServiceORA8

◆4、注意:有多少个数据库,注册表服务键下的OracleServiceXXX就会有多个。其中最主要的有监听服务和数据库服务,即OracleOraHome92TNSListenerXXX和OracleServiceXXX。

◆5、将导出的所有注册表的信息在新的系统中导入(注册)。

◆6、设置系统环境变量,打开"我的电脑"的"属性"界面,在"高级"而点击"环境变量"进入设置,找到[Path]系统变量项目,点"编辑",在变量值的输入框的最后,加入";ORACLE的安装目录"。

◆7、最后我们需要进入 C:/Documents and Settings/All Users/Start Menu/Programs下把 Oracle - OraHome92 和 Oracle Installation Procts 两个菜单文件夹也复制到新系统中,此时,就和新安装的一样了。重启系统后,成功完成。

‘叁’ oracle数据迁移有几种方法

数据量小的话一般直接用数据泵或者exp/imp就ok了,也可以用rman备份,这些都是比较常规的,偏门点的可以用传输表空间,dblink直接复制等,反正看情况。

‘肆’ 怎么将oracle数据库的数据迁移

迁移的话,直接导出一个库的dmp文件,之后导入到另外一个库里面就可以了(导出和导入数据库版本必须一直,否则导入可能会报错)。
迁移数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\chu.dmp中
exp system/manager@TEST file=d:\chu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\chu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\chu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

‘伍’ 一段Oracle数据库脚本转成sql server脚本怎么转换

这个一般应该用数据库的迁移工具,直接对数据库进行转换;而不是对 数据库脚本进行转换。
对于你的情况,给一个建议:
先在Oracle中执行脚本,还原 Oracle数据库。
用powerdesigner生成数据库的物理模型(此处也可以直接用迁移工具)
在将数据库类型换成sqlserver,生成适合sqlserver的脚本。
上面的过程,只适合于表结构(主要是字段类型)。
对于视图、存储过程、触发器 等,应该还是需要自己修改。

‘陆’ 如何将正在运行的 Oracle 数据库迁移到另一个系统

1、安装 Oracle Solaris 操作系统

新的 SPARC 服务器上预先安装了 Oracle Solaris。对于这些系统,应确保安装了相应的 Oracle Solaris 版本,并验证打了所需的补丁。

2、安装 Oracle VM Server for SPARC 软件

新的 SPARC 服务器上也预先安装了 Oracle VM Server for SPARC 软件。对于这些系统,应确保安装了相应的 Oracle VM Server for SPARC 版本,并验证打了所有需要的补丁。

3、配置存储阵列

Sun Storage 2540-M2 存储阵列连接到控制域,控制域将两个 LUN(LUN 0 和 LUN 1)作为虚拟磁盘导出到来宾域。

4、配置控制域

安装 Oracle VM Server for SPARC 软件之后,重新配置当前系统使其成为控制域。

5、配置来宾域

配置控制域之后,创建来宾域以用作 Oracle 数据库节点。在作为源计算机的物理服务器上,仅创建一个来宾域。另一台物理服务器最终将成为目标计算机。

6、准备目标服务器

按如下方式准备目标服务器。

  • 执行以下各节中所述的步骤来准备目标计算机:

  • 安装 Oracle VM Server for SPARC 软件

  • 配置控制域

  • 确保在目标服务器上提供了供待迁移域使用的所有虚拟 I/O 服务。

  • 确保目标服务器有权访问同一存储中的 LUN 0 和 LUN 1。

  • 确保待迁移域中的每个虚拟网络设备在目标计算机上都有一个对应的虚拟网络交换机。

‘柒’ oracle数据迁移怎么做

简单到不能再简单。
1先弄个DBLINK
2.通关select into from 直接创建并写入表到要迁移的数据库中

‘捌’ 如何把 DB2 数据迁移到 oracle 中

数据迁移:
1、在DB2数据库中通过以下表查询出表的结构
SELECT
TABNAME TAB, --表英文名称
COLNAME COL, --列名称
CASE
WHEN TYPENAME='VARCHAR' THEN 'VARCHAR2'
WHEN TYPENAME LIKE 'SMALLINT' OR TYPENAME LIKE 'BIGINT' THEN 'INTEGER'
WHEN TYPENAME ='CHARACTER' THEN 'CHAR'
WHEN TYPENAME='DECFLOAT' OR TYPENAME ='DECIMAL' THEN 'NUMBER'
ELSE TYPENAME
END TY
, --数据类型
LENGTH LEN , --列长度
scale S, --精度
CASE
WHEN NULLS='N' THEN '否'
WHEN NULLS='Y' THEN '是'
END N --是否为空
--TY||'('||LEN||')'
FROM
SYSCAT.COLUMNS S
WHERE
LEFT( TABSCHEMA, 3 ) <> 'SYS'
/* and s.SCALE <>0*/
ORDER BY
S.TABNAME,
S.COLNO

2、根据表的结构在oracle数据库中建表(脚本见《create_tab_onOracle.sql》)

3、通过编写java程序把数据从DB2导入到oracle数据库中(以下代码思想仅供参考)
3.1、 导入db2jcc_license_cu.jar 、db2jcc.jar 、ojdbc14.jar 三个jar包即可
3.2、 编写三个工具类

此类链接DB2数据库工具类
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDB2 {
private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2数据库url
private static final String USER="db2admin"; //DB2数据库账号
private static final String PASSWORD="dnhc9988"; //DB2数据库密码
static{
try {
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注册驱动
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

此类链接oracle数据库工具类
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDB2 {
private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2数据库url
private static final String USER="db2admin"; //DB2数据库账号
private static final String PASSWORD="dnhc9988"; //DB2数据库密码
static{
try {
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注册驱动
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

此类用来关闭数据库连接工具类
package com.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CloseFunction {
//关闭连接方法,释放资源
public static void closeConnection(Connection conn){
if (conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

//关闭执行sql,释放资源
public static void closeExecuteSQL(Statement preparedStatement){
if (preparedStatement !=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

//关闭查询SQL结果,释放资源
public static void closeResultSet(ResultSet resultSet){
if(resultSet !=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

关键在此类:需要从DB2数据库查询语句放在db2SQL变量中,往oracle插入数据的语句放在oracleSQL变量中。注意,查询和插入的语句中字段顺序要一致,在while循环里要对日期时间处理(用setDate),然后执行junit测试类就可以了。
package com.;
import java.security.interfaces.RSAKey;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.util.CloseFunction;
import com.util.ConnectionDB2;
import com.util.ConnectionOracle;

public class FromDB2ToOracle {
@Test
public void test1() throws SQLException{
long startTime=System.currentTimeMillis(); //记录开始时间
Connection connDB2=null; //链接DB2数据库
Connection connOracle=null; //链接oracle数据库
Statement statement=null;
ResultSet resultSet=null;
PreparedStatement preparedStatement=null;
try {
ConnectionOracle connectionOracle=new ConnectionOracle();
// System.out.println(connectionOracle+"链接oracle成功!");
ConnectionDB2 connectionDB2=new ConnectionDB2();
// System.out.println(connectionDB2+"-->>>链接DB2数据库成功!");
connDB2=connectionDB2.getConnection();
//执行DB2数据库sql语句,此处并非固定代码
String
db2SQL="SELECT ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from
DB2ADMIN.ET_SENDMESSAGEINFO";
//执行oracle数据库sql语句,此处并非固定代码
//String oracleSQL="INSERT INTO EPC.SYS_LOG(ID,REMARK) values(?,?)";
String
oracleSQL="INSERT INTO
EPC.ET_SENDMESSAGEINFO(ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID )"
+ "VALUES(?,?,?,?,?,?,?,?,?)";
statement=connDB2.createStatement();
statement.execute(db2SQL); //执行sql语句
resultSet=statement.getResultSet(); //获取DB2数据库的结果集
connOracle=connectionOracle.getConnection(); //获取oracle数据库连接
connOracle.setAutoCommit(false); //把oracle数据库设置为非自动提交,以免在再循环里每次都提交,减低效率
preparedStatement=connOracle.prepareStatement(oracleSQL); //执行oracle语句,预编译
int num=0;
while (resultSet.next()) {
num ++;
preparedStatement.setString(1,resultSet.getString("ID"));
preparedStatement.setString(2, resultSet.getString("SENDNO"));
preparedStatement.setString(3, resultSet.getString("SENDTYPE"));
preparedStatement.setString(4, resultSet.getString("BRNUMBER"));
preparedStatement.setDate(5, resultSet.getDate("SENDTIME"));
preparedStatement.setDate(6, resultSet.getDate("ALARMTIME"));
preparedStatement.setString(7, resultSet.getString("SENDCONTENT"));
preparedStatement.setString(8, resultSet.getString("ISSEND"));
preparedStatement.setString(9, resultSet.getString("ELEALARMID"));/*
preparedStatement.setString(10, resultSet.getString("CONSUMETIME"));
preparedStatement.setString(11, resultSet.getString("TASKID"));
preparedStatement.setString(12, resultSet.getString("ISSYNCHRO"));
preparedStatement.setString(13,resultSet.getString("LOGTYPE"));
preparedStatement.setString(14, resultSet.getString("ISCACHE"));
preparedStatement.setString(15, resultSet.getString("LAST_RPORT_TIME"));
preparedStatement.setString(16, resultSet.getString("AUTO_REMEMBER"));
preparedStatement.setString(17, resultSet.getString("REMARK"));*/
preparedStatement.addBatch();
//每一万次在oracle数据库里提交事务
if(num>10000){
preparedStatement.executeBatch();
connOracle.commit();
num=0;
}
}
preparedStatement.executeBatch();
connOracle.commit();
} catch (Exception e) {
connOracle.rollback(); //oracle数据库事务回滚
e.printStackTrace();
}finally{
new CloseFunction().closeConnection(connOracle); //关闭oracle数据库,释放资源
new CloseFunction().closeConnection(connDB2); //关闭DB2数据库,释放资源
long endTime=System.currentTimeMillis(); //记录程序结束时间
System.out.println("总的时间:"+(endTime-startTime)/1000+"秒");
}
}
}

热点内容
pr默认存储 发布:2024-05-05 04:29:31 浏览:551
roblox跑酷脚本怎么做 发布:2024-05-05 03:57:35 浏览:701
捷径清理缓存 发布:2024-05-05 03:57:35 浏览:478
ftputility哪里下载 发布:2024-05-05 03:47:13 浏览:1000
雷凌运动版如何连接安卓手机导航 发布:2024-05-05 03:42:48 浏览:267
自动鬼使黑脚本 发布:2024-05-05 03:10:49 浏览:880
游戏脚本编程书籍推荐 发布:2024-05-05 02:59:13 浏览:72
编译器书籍推荐 发布:2024-05-05 02:57:02 浏览:56
电池存储温度 发布:2024-05-05 02:53:07 浏览:207
安卓在美国怎么下载 发布:2024-05-05 02:31:06 浏览:925