①.0g,这里说一下迁移的方法.
Sql
Server和Oracle区别比较大,包括语法,字段类型,数据库机制,配置管理方法等等,区别是全方位的,做迁移需要注意很多问题,在迁移过程中也会遇到问题,需要细细处理之.这里说一下数据库结构的迁移,和迁移过程中注意的一些问题.(当然具体的数据库迁移过程中可能问题是不一样的,具体问题具体分析了)
迁移的方法是从Sql Server已有数据库中生成出Oracle的建库脚本,然后在Oracle数据库上执行.用到的生成工具是Power
Designer.
①.、打开PD(Power
Designer简称,以下均使用PD),新建一个PDM(物理数据模型),DBMS选择Microsoft SQL
Server数据库生成PDM
(1)选择Database-Reverse
Engineer Database,配置数据源,选择要迁移的数据库,输入用户名、密码.
选择Tools-Generate Physical Data Model
(1)DBMS选择Oracle
①.0g,输入名称:oradb.
Options配置中, Model Settings的TableView界面中,勾选Ignore
identifying owner.Oracle中用户的概念与Sql Server不同,这里忽略owner.
注意,在生成PDM的过程中可能不会一帆风顺,有可能会报错(比如提示对象长度超限),这会导致生成失败.这时需要根据具体错误提示做相应修改(可能需要多次调整,没有办法,谁让两者差别这么大的呢).
与Sql
Server不同的是,在Oracle里表名、字段名全部为大写,若要单独处理为小写,需加上双引号.而PD生成的脚本默认是有双引号的,这里需要修改默认配置,去掉双引号.
然后选择oradb,然后选择Database-Generate
Database,进入数据库生成界面
在Format标签下,去掉勾选Owner prefix,它将省掉建表语句前"dbo."所带来的麻烦;
在Selection标签下,选择要生成脚本的各对象;
在Preview标签下,可以预览预生成的脚本(表较多时,切换会比较慢).
脚本是PD自动生成的,因为表比较多,在oracle上直接去执行难免会有错误.所以在执行之前需要检查下脚本的正确性.这里提几点需要注意的地方.
Server创建正常的表而在Oracle下会创建失败.
Server命名"备注"字段可能会用"comment"、标题用"title",但comment、title在Oracle中是关键字,不可以做为字段名称.
Server有自增字段,而Oracle没有.要实现此功能,需要相应创建序列、触发器.
Server中字段类型为text的情况,如果是存二进制数据需要在Oracle中选用Blob字段类型.
Server有外键的情况,主表记录删除,从表记录也会跟着删除;而Oracle默认情况是当从表有记录时,所对应的主表记录不允许删除.所以这种情况下外键需要添加外键级联删除.
系统不一样,出现问题的点可能也不一样,具体问题具体分析.
在Oracle数据库服务(当然要先安装好Oracle服务端、并建立数据库)orcl实例下,使用用户sys登陆并创建用户orauser,并将resource、connect角色赋给orauser(这里,orauser使用默认表空间、默认临时表空间).
用刚创建的用户orauser登陆orcl数据库服务,执行前面已经生成的脚本,若干分钟后脚本执行完毕,观察一下执行过程中有无错误产生,也可以记录执行的日志以便日后查看;检查看表、视图等个数与Sql
Server数据库中是否一致.如果都正确,那么,数据库结构从Sql
Server到Oracle的迁移到此结束.当然,迁移的是否正确还需要在之后的使用中检查,发现错误及时修改即可.
CREATE?FUNCTION?to_number?(input?VARCHAR(100))?RETURNS?int(10)BEGINRETURN?CAST(input?AS?DECIMAL);END
create function TOPCCMS.ET_BTDATE()
RETURNS date
begin
declare v_BTDATE DATE;
SELECT BATCH_DATE INTO v_BTDATE FROM CCMS_BASI_GLOBAL fetch first 1 rows only;
return v_BTDATE;
end;
一. 如果B数据库是新建的,为了移植数据库,那就直接附加,分下列步骤:
① 打开配置管理器
二. 如果B数据库已经曾在,可以使用导出任务
打开数据库,右键点在数据库上,找到导出任务
按照向导选择该到处的数据表和视图.填写两个数据库的验证信息
数据库版本及目录结构相同可用rman备份还原;或者关掉数据库后直接复制文件到新机器
数据库版本或目录结构不同的话就用数据泵导来做
迁移PostgreSQL到Oracle涉及到两方面工作:表结构的迁移和表数据的迁移.
表结构的迁移
表结构的迁移相对简单可以借助ESF DatabaseMigration Toolkit进行..ESF Database MigrationTookit工具是试用版,所以不能通过其迁移数据(它会将所有varchar字段的开头替换为T).通过ESF DatabaseMigration Toolkit迁移完成后,通过PL/SQL developer的export userobjects得到创建表结构的语句.
表数据的迁移
①Copy命令导出数据文件
copy table1 to'd:/table1.data' delimiter as '|' nullas '';
Copy (select cast(column asint) from table1 )to 'd:/table1.data' delimiter as '|' null as '';
批量执行使用sql函数进行
create functionexportLiferay(path text) returns void
as
$$
execute 'copy table1 to ''' || path || 'table1_.data''delimiter as ''|'' null as '''' ';
return;
languageplpgsql;
注意:字符集、clob以及时间,日期类型
load data
into table table1
fields terminated by "|"
optionally enclosed by '"'
trailing nullcols
(
folderid,
groupid,
companyid,
userid,
parentfolderid,
name,
descriptionchar(10000)
)
sqlldr import/import data=table1.data control=table1.ctllog=table1.log readsize=100000000
以上就是土嘎嘎小编为大家整理的oracle怎么迁移函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!