当前位置:首页 » 服务存储 » 迁移存储过程是什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

迁移存储过程是什么

发布时间: 2023-05-18 11:19:16

‘壹’ sql2008的存储过程怎么迁移到另外一台sql2008数据库来着

两台电脑的ip肯定是不一样的了,网站连接数据库第一就要知道连接哪里的,表示一个数据库在哪里,一般需要ip地址和通讯端口,你得修改网站的有关程序或配置,使原来连接旧数据库的,改为连接新数据库。
估计创建数据库时,你用的就是sqlserver的缺省端口,需要确认sql2000和sql2008的缺省端口是否一致,如果不一致,在修改网站配置的时候,别落下它,好在两个配置通常紧挨着,也不会轻易被忽略。

‘贰’ 如何把sql server数据库迁移到oracle

前阵做了下数据库迁移,从Sql Server2005迁移到Oracle
10g,这里说一下迁移的方法。
Sql
Server和Oracle区别比较大,包括语法,字段类型,数据库机制,配置管理方法等等,区别是全方位的,做迁移需要注意很多问题,在迁移过程中也会遇到问题,需要细细处理之。这里说一下数据库结构的迁移,和迁移过程中注意的一些问题。(当然具体的数据库迁移过程中可能问题是不一样的,具体问题具体分析了)
迁移的方法是从Sql Server已有数据库中生成出Oracle的建库脚本,然后在Oracle数据库上执行。用到的生成工具是Power
Designer。
1、打开PD(Power
Designer简称,以下均使用PD),新建一个PDM(物理数据模型),DBMS选择Microsoft SQL
Server2005,Model name起名叫做mssdb。
2、通过逆向工程将现有Sql
Server数据库生成PDM
(1)选择Database->Reverse
Engineer Database,配置数据源,选择要迁移的数据库,输入用户名、密码。
(2)选择数据库,选择用户dbo下的所有表、视图、存储过程、方法、触发器、序列等(由于Sql Server与oracle,数据库概念上的区别,这里不需选择用户、角色)。
点击OK,生成PDM。已经建立过PDM的情况,这一步可以省略。
3、生成Oracle物理数据模型
选择Tools->Generate Physical Data Model
(1)DBMS选择Oracle
10g,输入名称:oradb。
(2)在Configure Model
Options配置中, Model Settings的Table&View界面中,勾选Ignore
identifying owner。Oracle中用户的概念与Sql Server不同,这里忽略owner。
(3)Selection标签,选择需要生成的所有表、视图、外键、存储过程、方法、触发器、序列等。
点击确定,即生成了oracle 的PDM。
注意,在生成PDM的过程中可能不会一帆风顺,有可能会报错(比如提示对象长度超限),这会导致生成失败。这时需要根据具体错误提示做相应修改(可能需要多次调整,没有办法,谁让两者差别这么大的呢)。
4、生成Oracle脚本
与Sql
Server不同的是,在Oracle里表名、字段名全部为大写,若要单独处理为小写,需加上双引号。而PD生成的脚本默认是有双引号的,这里需要修改默认配置,去掉双引号。
然后选择oradb,然后选择Database->Generate
Database,进入数据库生成界面
在Format标签下,去掉勾选Owner prefix,它将省掉建表语句前“dbo.”所带来的麻烦;
在Selection标签下,选择要生成脚本的各对象;
在Preview标签下,可以预览预生成的脚本(表较多时,切换会比较慢)。
点击确定,即得到生成的脚本。
5、检查与调整
脚本是PD自动生成的,因为表比较多,在oracle上直接去执行难免会有错误。所以在执行之前需要检查下脚本的正确性。这里提几点需要注意的地方。
(1)Oracle要求表名、字段名等长度最多是30位,而Sql Server没有这个限制,所以可能会有在Sql
Server创建正常的表而在Oracle下会创建失败。
(2)检查一下主键、外键的名称,它们有可能是随机生成的名称。可根据相应规范进行修改。
(3)检查字段名是否用到了Oracle的关键字。比如Sql
Server命名“备注”字段可能会用“comment”、标题用“title”,但comment、title在Oracle中是关键字,不可以做为字段名称。
(4)存储过程、方法是否符合Oracle语法。
(5)Sql
Server有自增字段,而Oracle没有。要实现此功能,需要相应创建序列、触发器。
(6)Sql
Server中字段类型为text的情况,如果是存二进制数据需要在Oracle中选用Blob字段类型。
(7)Sql
Server有外键的情况,主表记录删除,从表记录也会跟着删除;而Oracle默认情况是当从表有记录时,所对应的主表记录不允许删除。所以这种情况下外键需要添加外键级联删除。
(8)生成的表、视图等个数是否正确,缺失的情况可单独生成脚本。
系统不一样,出现问题的点可能也不一样,具体问题具体分析。
6、建库
在Oracle数据库服务(当然要先安装好Oracle服务端、并建立数据库)orcl实例下,使用用户sys登陆并创建用户orauser,并将resource、connect角色赋给orauser(这里,orauser使用默认表空间、默认临时表空间)。
用刚创建的用户orauser登陆orcl数据库服务,执行前面已经生成的脚本,若干分钟后脚本执行完毕,观察一下执行过程中有无错误产生,也可以记录执行的日志以便日后查看;检查看表、视图等个数与Sql
Server数据库中是否一致。如果都正确,那么,数据库结构从Sql
Server到Oracle的迁移到此结束。当然,迁移的是否正确还需要在之后的使用中检查,发现错误及时修改即可。

‘叁’ MySQL数据库新特性之存储过程入门教程

在MYSQL 中 终于引入了存储过程这一新特性 这将大大增强MYSQL 的数据库处理能力 在本文中 将指导读者快速掌握MYSQL 的存储过程的基本知识 带领用户入门

存储过程介绍

存储过程是一组为了完成特定功能的SQL语句集 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它 存储过程可由应用程序通过一个调用来执行 而且允许用户声明变量 同时 存储过程可以接收和输出参数 返回执行存储过程的状态值 也可以嵌套调用

存储过程的优点

作为存储过程 有以下这些优点

( )减少网络通信量 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别 可是如果存储过程包含上百行SQL语句 那么其性能绝对比一条一条的调用SQL语句要高得多

( )执行速度更快 存储过程创建的时候 数据库已经对其进行了一次解析和优化 其次 存储过程一旦执行 在内存中就会保留一份这个存储过程 这样下次再执行同样的存储过程时 可以从内存中直接中读取

( )更强的安全性 存储过程是通过向用户授予权限(而不是基于表) 它们可以提供对特定数据的访问 提高代码安全 比如防止 SQL注入

( ) 业务逻辑可以封装存储过程中 这样不仅容易维护 而且执行效率也高

当然存储过程也有一些缺点 比如

可移植性方面 当从一种数据库迁移到另外一种数据库时 不少的存储过程的编写要进行部分修改

存储过程需要花费一定的学习时间去学习 比如学习其语法等

在MYSQL中 推荐使用MYSQL Query Browswer()这个工具去进行存储过程的开发和管理 下面分步骤来学习MYSQL中的存储过程

定义存储过程的结束符

在存储过程中 通常要输入很多SQL语句 而SQL语句中每个语句以分号来结束 因此要告诉存储过程 什么位置是意味着整个存储过程结束 所以我们在编写存储过程前 先定义分隔符 我们这里定义 // 为分隔符 我们使用DELIMITER //这样的语法 就可以定义结束符了 当然你可以自己定义其他喜欢的符号

如何创建存储过程

下面先看下一个简单的例子 代码如下

DELIMITER//CREATEPROCEDURE`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT A procere BEGINSELECT Hello World ! ;END//

下面讲解下存储过程的组成部分

)首先在定义好终结符后 使用CREATE PROCEDURE+存储过程名的方法创建存储过程 LANGUAGE选项指定了使用的语言 这里默认是使用SQL

)DETERMINISTIC关键词的作用是 当确定每次的存储过程的输入和输出都是相同的内容时 可以使用该关键词 否则默认为NOT DETERMINISTIC

) SQL SECURITY关键词 是表示调用时检查用户的权限 当值为INVOKER时 表示是用户调用该存储过程时检查 默认为DEFINER 即创建存储过程时检查

) MENT部分是存储过程的注释说明部分

lishixin/Article/program/MySQL/201404/30557

‘肆’ oracle存储过程向DB2迁移

数据库迁移可以看作一个特殊的软件开发项目,与其他开发项目不同的是这个项目的需求是确定的,技术障碍较低,主要工作是代码编写和测试。对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。另一方面,数据库迁移项目的成功也主要依赖于客户与开发商的积极配合和有序组织。当然,企业数据库通常数据量都比较大,结构也比较复杂,如果完全通过手工来完成,那是一个不可想象的大工程。所以正确的步骤加合适的迁移工具也能达到事半功倍的效果。
Oracle向DB2迁移的主要流程
Oracle向DB2迁移一般来说遵循3大流程:迁移评估、模拟迁移、正式迁移。
1、迁移评估
全面的评估是迁移成功的一个关键要素,评估的总体目标是发现可能影响迁移过程的问题以便分配足够的资源来保证迁移取得成功。首先,是评估应用环境和应用程序,识别潜在的障碍;第二,您的 Oracle 数据库将在多大程度上适应 DB2 的硬数据;最后,分析 Oracle 数据库对象和过程,识别使用 DB2中不支持的那些特性的对象和过程。
2、模拟迁移
1)在进行模拟迁移前,我们必须先设计数据迁移的方案,一般设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。
2)根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。
3)根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。
3、正式迁移
数据模拟迁移测试成功后,可以正式实施数据的迁移了。在这里介绍一种简单的测试方法,首先利用 DB2 兼容特性迁移 Oracle 应用,创建兼容模式 DB2 数据库。在 DB2 V9.7 上启用 Oracle 应用程序时,实例和数据库必须处于兼容模式。还建议调整舍入行为以匹配 Oracle。通过把重新验证语义(revalidation semantics)设置为 deferred_force,可以不按依赖次序部署对象。
在 UNIX 系统上:
$ db2set DB2_COMPATIBILITY_VECTOR=ORA
$ db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES$ db2stop force
$ db2start
$ db2 create db testdb automatic storage yes on /db2data1,/db2data2,/db2data3 DBPATH ON /db2system PAGESIZE 32 K$ db2 update db cfg for testdb using auto_reval deferred_enforce$ db2 update db cfg for testdb using decflt_rounding round_half_upC:\> db2 update db cfg for testdb using decflt_rounding round_half_up在Windows上:
C:\> db2set DB2_COMPATIBILITY_VECTOR=ORA
C:\> db2set DB2_DEFERRED_PREPARE_SEMANTICS=YESC:\> db2stop force
C:\> db2start
C:\> db2 create db testdb automatic storage yes on C:,D: DBPATH ON E: PAGESIZE 32 KC:\> db2 update db cfg for testdb using auto_reval deferred_enforceC:\> db2 update db cfg for testdb using decflt_rounding round_half_up然后是将 Oracle 数据库对象和数据迁移到 DB2。DB2 9.7 提供的原生 Oracle PL/SQL 和 Oracle SQL 支持极大地简化了这一过程。现在我们先来看一个简单的示例,这个例子选自 Oracle 来演示 PL/SQL 中 CASE 语句的使用,例子如下:
set serveroutput on
Drop function Get_Grade3;
create or replace function Get_Grade3(score IN NUMBER) RETURN VARCHAR2 isbegin
use a Searched CASE Statement to find the Grade for thescore passed in as a parameter
CASE
WHEN score BETWEEN 80 AND 100 THEN return A;WHEN score BETWEEN 65 AND 79 THEN return B;WHEN score BETWEEN 50 AND 64 THEN return C;WHEN score BETWEEN 40 AND 49 THEN return D;WHEN score BETWEEN 0 AND 39 THEN return F;Comment the ELSE leg to generate the exceptionELSE return Invalid score;
END CASE;
exception
when CASE_NOT_FOUND then
return Exception - Case Not Found for score - || score;end Get_Grade3;
select Get_Grade3(-1) from al
C:\> db2 update db cfg for testdb using decflt_rounding round_half_up把这段代码保存在本地计算机的 D 盘下面为 casetest.sql,在 DB2 的 CLP plus 中运行一下,居然一点都不需要修改就运行成功了,运行的结果如下:
Oracle 向 DB2迁移:主要的流程与工具
这说明 DB2 对 Oracle 的兼容性的支持已经达到了一个很好的程度了。但是并不是所有程序都可以这么幸运的无需要修改就能正确的运行的。为了能够更好的完成迁移工作,还是需要了解两者之间特性的范围,以便我们能够更好的进行修改工作。在这里就不做说明了,大家可以去网上找找。
Oracle 向 DB2迁移工具
1. IBM DB2 Migration Toolkit
利用免费的 IBM DB2 Universal Database(UDB)Migration Toolkit(MTK)简化和改进向 DB2 UDB 的迁移工作。这个新的迁移实用程序提供了向导和易于使用的五步界面,这些有助于您快速地将现有的 Sybase、 Microsoft SQL Server和Oracle数据库对象转换到 DB2 通用数据库。使用 MTK,可以将数据类型、表、列、视图、索引、存储过程和触发器自动地转换成等价的 DB2 数据库对象。MTK 向数据库管理员(DBA)和应用程序程序员提供了使迁移任务自动化所需要的工具,而以前这些任务不但效率低下而且开销巨大。通过使用 MTK 中的以下特性,您可以减少停机时间、消除人为错误,以及降低人工和与传统数据库迁移相关联的其它资源消耗。MTK 可运行于 AIX、Linux、Solaris 和 Windows 操作系统上。
2. IBM Data Movement Tool
利用 DB2 兼容特性和 IBM 提供的免费数据迁移工具 Data Movement Tool,快速地将现有的 Oracle 数据库对象转换到 DB2 通用数据库。同时对应用中使用到的数据库访问语言以及接口进行转换,最终实现整个应用系统的完整迁移。
3. IBM Optim Development Studio
IBM Optim Development Studio,它为 Oracle、DB2 和 Informix 提供一个集成的数据库开发环境。Optim Development Studio 在开发和测试 SQL 和 XQuery 查询、存储过程、Web 服务和 Java 数据访问层方面将生产力提高了 50%,而且允许在不同或者相同的数据服务器中的数据对象包、存储过程、表、用户自定义函数、用户自定义类型、视图、模式等的复制粘贴。
这三款工具都是来自于IBM官方的,大家有需要可以进去官方下载。
总 结
以上只是简单的介绍了下迁移的流程和常用的工具,总的来说,迁移过程是一个复杂的过程,中间可能出现很多意想不到的情况,遇到问题,先查资料寻求解决方法,要有细心和耐心!我们在做迁移时,一定要做好备份,测试工作。而迁移工具只是一个辅助作用,如果单靠迁移工具是远远不够的。