返回顶部
首页 > 资讯 > 数据库 >数据迁移中碰见的一些问题
  • 923
分享到

数据迁移中碰见的一些问题

2024-04-02 19:04:59 923人浏览 八月长安
摘要

单位有一套oracle 9i的古老测试数据库,因为机房搬迁,所以需要迁移数据,新库是Oracle 11g了,一个比较简单的需求,但过程中碰见了一些问题,看似比较琐碎,值得总结一下。 由于源

单位有一套oracle 9i的古老测试数据库,因为机房搬迁,所以需要迁移数据,新库是Oracle 11g了,一个比较简单的需求,但过程中碰见了一些问题,看似比较琐碎,值得总结一下。


由于源库是9i,因此只能用imp/exp,不能用数据泵。


问题1:导入目标库用户的默认表空间


源库由于不规范的使用,对象默认存储的是数据库默认表空间USERS,既然是迁移,新库就要尽量规范一些。但问题来了,impdp/expdp可以使用remap_tablespace映射新旧表空间,exp/imp应该如何做?


网 上有一种说法是,首先收回用户user的unlimited tablespace权限,然后设置user默认表空间为bank_tbs,再将user对system和users表空间配额设置为0,意图是让imp 导入的时候,发现users表空间无权限,则自动找用户的默认表空间bank_tbs。

revoke unlimited tablespace from user;

alter user user quota unlimited on bank_tbs;

alter user user quota 0 on system;

alter user user quota 0 on users;


但从我实测看,并不是这样,可 以使用imp命令的show选项,看dmp文件内容,create table子句是会跟着tablespace users,即指定了表使用的表空间名称,由于user用户在users表空间配额为0,因此会报quota相关的错误,并不会找用户默认的 bank_tbs表空间。


我们再捋一下,

1. dump文件中有指定了tablespace users表空间。

2. 目标库存在users表空间,但用户在users表空间配额为0,其默认表空间为bank_tbs。

3. imp执行导入,报错users表空间quota错误。


用户默认表空间的作用,是若create table语句未指定tablespace子句,则会默认存储此表空间,既然如此,既然如此,又由于这是一套测试库,因此首先改一下users表空间名称,

alter tablespace users rename to users_k;

然 后执行imp导入,就可以正常存入user用户默认的bank_tbs中。顺着思路想,可以改一下数据库的默认表空间users,只要保证不存在 users表空间,dmp中create table语句就不能根据tablesapce子句,插入对应的表空间,而是找用户默认的表空间。


除此之外,可以初始化就导入users表空间,然后拼接sql语句,将对象可以move至其他表空间,当然这就需要两倍的空间。另外还可以收工改一下dmp文件中tablespace子句对应的表空间,但只适应于小容量文件。


这里有一些知识点值得关注,

1. unlimited tablespace权限,是为用户授予resource角色是自动添加的,但从安全性的角度来考虑,在创建用户并且授予resource角色之后应该回 收unlimited tablespace这个系统权限,原因就是有了这个权限,用户可以在任意表空间中创建对象,就有可能恶意占领系统表空间,影响数据库的正常运行。

2. Oracle 9i以前,数据库默认用户的表空间是SYSTEM,这是极为不合理的,因为SYSTEM存储的是数据库重要的底层数据字典信息,如果无限制地存储用户数据,极有可能影响数据库的运行。从9i开始,默认表空间则变为了USERS,建库的时候会默认创建。

使用如下语句,可以查询当前系统默认表空间,

select property_value from database_properties where property_name = 'DEFAULT_PERMANENT_TABLESPACE';

使用如下语句,可以改下当前数据库默认的用户表空间以及临时表空间,

alter database default [temporary] tablespace tablespace_name;



问题2:数据库字符集


为了保证数据导出导入,不会出现乱码,字符集要尽量保持一致,可以使用如下语句检索当前数据库使用的字符集,

select userenv('language') from dual;

例如返回结果是AMERICAN_AMERICA.ZHS16GBK。

若要检索当前操作系统字符集,可以使用,

echo $NLS_LANG

例如返回结果是AMERICAN_AMERICA.AL32UTF8。

若要更新操作系统字符集,可以使用,

export  NLS_LANG=AMERICAN_AMERICA.ZHS16GBK



问题3:导入过程中的一些报错


报错1:

Export file created by EXPORT:V09.02.00 via conventional path
IMP-00013: only a DBA can import a file exported by another DBA
IMP-00000: Import terminated unsuccessfully

错误信息提示,只用DBA用户可以导入另一个DBA导出的文件。意思就是这个dmp文件,导出用户是有DBA角色的,因此导入使用的用户,必须要有DBA角色。

解决方法1:使用非DBA角色的用户,重新exp导出,再用非DBA用户imp导入。

解决方法2:使用DBA用户执行imp导入操作。

相比而言,生产系统一般会选择方案1,毕竟一般业务数据的属主,不会是一个DBA角色的用户,如果用方案2,则要求目标端用户需要DBA角色,未来要是再有导出导入需求,还是需要DBA角色,无休无止了。


报错2:

Export file created by EXPORT:V09.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
IMP-00031: Must specify FULL=Y or provide FROMUSER/TOUSER or TABLES arguments
IMP-00000: Import terminated unsuccessfully

此时执行imp可以指定full=y,或者使用fromuser和touser参数,例如,

imp user/user file=... log=... fromuser=user touser=user

明确导出和导入的用户名称。



问题4:创建视图报错


导入日志中显示,创建视图的时候报错了,

ORA-01031: insufficient privileges

原因就是为用户授予resource和connect常规角色,并不会自动授予创建视图的权限,具体可以参考(Http://blog.csdn.net/bisal/article/details/31735185),此时可以授予,

SQL> grant createany view to user;

Grant succeeded.

再次导入,即可以正常完成了。


对 于测试数据迁移,其实还有一点,就是是不是所有数据,都需要迁移?因为往往测试库中有一些,仅临时使用的表对象等信息,如果执行前,筛选一下真正需要的数 据,再开始执行导出导入,可能只需要迁移小部分数据,对于垃圾数据就可以直接忽略,这就是人们常说优化的极致,即不做任何事。



如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!共同学习,共同进步:)

您可能感兴趣的文档:

--结束END--

本文标题: 数据迁移中碰见的一些问题

本文链接: https://lsjlt.com/news/47044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据迁移中碰见的一些问题
    单位有一套Oracle 9i的古老测试数据库,因为机房搬迁,所以需要迁移数据,新库是Oracle 11g了,一个比较简单的需求,但过程中碰见了一些问题,看似比较琐碎,值得总结一下。 由于源...
    99+
    2024-04-02
  • MYSQL数据迁移到ORACLE中碰到的乱码问题的解决方法
    本篇内容主要讲解“MYSQL数据迁移到ORACLE中碰到的乱码问题的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL数据迁移到ORACLE中碰到...
    99+
    2024-04-02
  • 数据迁移中的几个问题总结
       总结一下昨晚在数据迁移前线奋战碰到的一些问题,虽然总体来说是按照预定的计划完成,并且提前完成,但是哪怕一丁点儿的操作都会导致一些严重的影响。    总...
    99+
    2024-04-02
  • mysql5升级mysql8的数据迁移问题
      通过NavicatPremium 可以对数据库进行备份操作。     备份可选择需要备份出来的表结构,视图,函数,以及数据 备份完成,会生成一个备份文件 比如: 20200304162843.nb3 通过备份文件,从Navi...
    99+
    2018-02-03
    mysql5升级mysql8的数据迁移问题
  • 记一次Mysql 数据库迁移后报错问题
    现象说明:老数据库版本是5.6,新库版本5.7,数据量不大,备份恢复数据均正常,配置主从使用gtid复制后也是正常的,第二天查看新库的时候,发现新库复制出现问题,报错如下: 2019-10-10T10:15...
    99+
    2024-04-02
  • sybase15 迁移数据库时遇到的问题
    在创建逻辑卷的时候首先要创建pv pvcreate /dev/sdb创建pv之后开始创建vg vgcreate vg_db /dev/sdb创建vg后开始划lv也就是逻辑卷 lvcreate -L 1G e...
    99+
    2024-04-02
  • 搬迁GitLab环境中碰见的问题和解决方法是什么
    搬迁GitLab环境中碰见的问题和解决方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。....而在新服务器上/opt路径下空间很小,让用户使用的是/DATA路径。 查看...
    99+
    2023-06-04
  • 如何解决Unix到Linux迁移的常见问题
    这篇文章主要介绍如何解决Unix到Linux迁移的常见问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!确定可能的硬件挑战在考虑迁移的过程中,最应该注意的问题就是平台依赖性,特别是从RISC迁移到X86平台。这时候,...
    99+
    2023-06-16
  • 由数据迁移至MongoDB导致的数据不一致问题及解决方案
    ##故事背景 ###企业现状 2019年年初,我接到了一个神秘电话,电话那头竟然准确的说出了我的昵称:上海小胖。 我想这事情不简单,就回了句:您好,我是小胖,请问您是? “我就是刚刚加了你微信的 xxx 啊” 哦……他只是把我的微信昵称报出...
    99+
    2021-02-24
    由数据迁移至MongoDB导致的数据不一致问题及解决方案
  • 数据迁移到美国服务器要注意哪些问题
    数据迁移到美国服务器要注意的问题有:1、根据自身网站业务需求选择合适的美国服务器配置,以保证业务的正常运行;2、对当前的兼容性需求进行全面分析,如应用程序的可移植性、兼容性等,以保证数据的正常迁移;3、上线前测试租用的美国服务器,以确保服务...
    99+
    2024-04-02
  • 解决mysql数据库数据迁移达梦数据乱码问题
    受到领导的嘱托,接手了一个java项目,要进行重构,同时了项目的整体建设要满足信创的要求。 那么首先就要满足两点: 1,使用国产数据库达梦8替换mysql数据库 2,使用金蝶中间件替...
    99+
    2024-04-02
  • ES业务数据迁移遇到的精度问题BUG
    目录前言01 问题发现过程02 问题的根因是什么03 类似的问题有哪些千年虫问题:2038 年问题:04 小结前言 最近在协助团队完成 ES 数据的切换(业务数据迁移),过程中遇到一...
    99+
    2024-04-02
  • 如何解决Oracle expdp/impdp数据迁移过程中字符集不一致的问题
    这篇文章给大家介绍如何解决Oracle expdp/impdp数据迁移过程中字符集不一致的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前提:   &...
    99+
    2024-04-02
  • 非中断业务数据库迁移一例
    下面是某业务库的迁移过程, 从Source Master/Slave集群迁移至Target MHA集群.前期准备, 配置数据从Source Master复制到Target Master, 即Target M...
    99+
    2024-04-02
  • PHP8.0中的数据迁移库:Phinx
    随着互联网技术的发展和应用范围的不断扩大,数据迁移变得越来越常见和重要。数据迁移是指将现有的数据库结构和数据移到不同环境或新的系统上的过程。数据迁移的过程中,可以包括从一个数据库引擎到另一个数据库引擎、从一个数据库版本到另一个数据库版本、不...
    99+
    2023-05-14
    PHP 数据迁移 Phinx
  • iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!
    iPhone 15 系列机型已于今日正式发售,为解决iPhone15这些机型出现的数据迁移问题,苹果紧急发布了 iOS 17.0.2 更新,内部版本号为 21A350。 需要注意的是, iOS 17.0.2 更新仅适用于 iPhone 15...
    99+
    2023-09-27
    iphone cocoa ios
  • sqlite3迁移mysql可能遇到的问题有哪些
    小编给大家分享一下sqlite3迁移mysql可能遇到的问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题列表1、sq...
    99+
    2024-04-02
  • 数据库中常见的安全问题有哪些
    本篇内容主要讲解“数据库中常见的安全问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库中常见的安全问题有哪些”吧!1. SQL的错误诱导语句不正确的...
    99+
    2024-04-02
  • 使用@pathvariable与@requestparam碰到的一些问题及解决
    目录@pathvariable与@requestparam碰到的一些问题一、@pathvariable二、@requestparam@PathVariable和@RequestPar...
    99+
    2024-04-02
  • MongoDB技术开发中遇到的数据迁移问题解决方案分析
    MongoDB技术开发中遇到的数据迁移问题解决方案分析摘要:随着数据量的不断增长和业务需求的变化,数据迁移成为了开发中一个必须面对的问题。本文将针对使用MongoDB进行数据迁移时可能遇到的问题进行分析,并给出解决方案,包含具体的代码示例。...
    99+
    2023-10-22
    解决方案 MongoDB 数据迁移
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作