一迁移方法介绍
exp/imp
这也算是最常用最简单的方法了一般是基于应用的owner级做导出导入
操作方法为在新库建立好owner和表空间停老库的应用在老库做exp user/pwd owner=XXX file=exp_xxxdmp log=exp_xxxlog buffer=传dmp文件到新库在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxxdmp log=imp_xxxlog ignore=y
优缺点优点是可以跨平台使用;缺点是停机时间长停机时间为从exp到网络传输到新库再加上imp的时间
存储迁移
这种情况下数据文件控制文件日志文件spfile都在存储上(一般情况下是裸设备)我们可以直接把存储挂到新机器上然后在新机器上启动数据库
操作方法将老库的pfile(因为里面有指向裸设备的spfile链接)tnsnamesoralistenerora密码文件传到新库的对应位置将存储切至新机或者用文件拷贝或dd的方式复制数据文件启动数据库
优缺点优点是该迁移方式非常简单主要的工作是主机工程师的工作dba只需配合即可停机时间为当库切存储起库的时间缺点是要求新老库都是同一平台是相同的数据库版本
利用data guard迁移
用dg我们不仅可以用来做容灾物理的dg我们还可以作为迁移的方式
操作方法可见http://wwworacleblogcn/studynote/dgcreatedbyrman/或者http://wwworacleblogcn/studynote/createdgbyrmanonedatafilebyonedatafile/或者其他相关网文注意switch over之后可以将dg拆掉去掉log_archive_dest_FAL_SERVERFAL_CLIENTstandby_file_management参数另外还要注意如果用rman做dg注意手工添加tempfile
优缺点优点是停机时间短停机时间为switch over的时间缺点主机必须双份存储必须双份
用rman做迁移
rman比较适合于跨文件系统的迁移如同平台下的不同文件系统
传归档日志并且对归档进行做recoverrecover database until sequence = 归档的序号 thread = ;
对数据库open resetlogsRMAN>sql alter database open resetlogs;
alter tablespace temp add tempfile XXXXXX size XXM reuse;
优缺点优点是可以跨文件系统停机时间少缺点是要时刻关注这归档日志做recover的时候一个都不能少!
二迁移样式介绍
直接映射原来是什么就是什么原封不动照搬过来对这样的规则如果数据源字段和目标字段长度或精度不符需要特别注意看是否真的可以直接映射还是需要做一些简单运算
字段运算数据源的一个或多个字段进行数学运算得到的目标字段这种规则一般对数值型字段而言
参照转换在转换中通常要用数据源的一个或多个字段作为Key去一个关联数组中去搜索特定值而且应该只能得到唯一值这个关联数组使用Hash算法实现是比较合适也是最常见的在整个ETL开始之前它就装入内存对性能提高的帮助非常大
字符串处理从数据源某个字符串字段中经常可以获取特定信息例如身份证号而且经常会有数值型值以字符串形式体现对字符串的操作通常有类型转换字符串截取等但是由于字符类型字段的随意性也造成了髒数据的隐患所以在处理这种规则的时候一定要加上异常处理
空值判断对于空值的处理是数据仓库中一个常见问题是将它作为髒数据还是作为特定一种维成员?这恐怕还要看应用的情况也是需要进一步探求的但是无论怎样对于可能有NULL值的字段不要采用直接映射的规则类型必须对空值进行判断目前我们的建议是将它转换成特定的值
日期转换在数据仓库中日期值一般都会有特定的不同于日期类型值的表示方法例如使用位整型表示日期而在数据源中这种字段基本都是日期类型的所以对于这样的规则需要一些共通函数来处理将日期转换为位日期值位月份值等
日期运算基于日期我们通常会计算日差月差时长等一般数据库提供的日期运算函数都是基于日期型的而在数据仓库中采用特定类型来表示日期的话必须有一套自己的日期运算函数集
聚集运算对于事实表中的度量字段他们通常是通过数据源一个或多个字段运用聚集函数得来的这些聚集函数为SQL标准中包括sumcountavgminmax
既定取值这种规则和以上各种类型规则的差别就在于它不依赖于数据源字段对目标字段取一个固定的或是依赖系统的值