小景的Dba之路--impdp导入数据问题报错排查总结
小景最近在工作中遇到了一个问题,用impdp做数据导入的时候,有以下报错,下面是问题排查过程:


首先看到了ORA-01950:no privileges on tablespace ‘PUBDATA’ 这个报错,小景想到了以下原因:
- 权限问题:ORA-01950错误表示用户没有在PUBDATA表空间上的特定对象的权限。这可能是由于数据库权限配置不当,导致导出进程无法访问相关的表空间和对象。解决方案是检查用户权限设置,确保用户拥有足够的权限来执行数据导出操作。
- 作业不存在:ORA-31626错误表示尝试操作的作业不存在。这可能是由于指定的作业名称不正确或者作业已经被删除或更改。需要检查作业名称的拼写和准确性,并确保作业存在且具有正确的配置。
- 无法创建主表:ORA-31633错误表示无法创建主表。这可能是由于表空间不足、磁盘空间不足或其他存储问题导致的。需要检查数据库的存储配置和可用空间,确保有足够的空间来创建所需的表结构。
- 内部错误:ORA-06512错误表示遇到了内部错误。这可能是由于Oracle数据库内部的问题或配置不当导致的。需要进一步检查Oracle数据库的状态和配置,以及版本兼容性问题。
然后我把关注点主要聚焦在ORA-01950权限问题和ORA-31633无法创建主表这两个报错上,针对ORA-01950权限问题,我这边直接用system用户来操作,然后查了下对应的用户下的表空间:
1 SELECT
2 u.username,
3 t.tablespace_name,
4 ROUND((t.total_mb - t.free_mb) / t.total_mb * 100, 2) AS used_percent
5 FROM
6 dba_users u
7 JOIN
8 (SELECT
9 user#,
10 SUM(bytes) / 1024 / 1024 AS total_mb,
11 SUM(bytes) / 1024 / 1024 - SUM(NVL(free_bytes, 0)) / 1024 / 1024 AS free_mb
12 FROM
13 dba_data_files
14 WHERE
15 owner = 'SYSTEM'
16 GROUP BY user#) t
17 ON
18 u.user# = t.user#;
这个查询将返回SYSTEM用户所拥有的每个表空间的名称、使用率和总大小。通过这个查询,小景发现system和sysaux用户下的表空间使用率都达到了99%,那么下面就是要进行表空间的拓展:
1. 登录到数据库
使用SQL*Plus或其他数据库客户端工具,通过具有足够权限的用户(如SYSDBA)连接到目标数据库。
2. 检查表空间状态
在执行任何操作之前,了解表空间的使用情况是非常重要的。你可以使用以下查询来获取更详细的表空间使用情况:
1 SELECT
2 tablespace_name,
3 SUM(bytes) / 1024 / 1024 AS total_mb,
4 SUM(used_bytes) / 1024 / 1024 AS used_mb,
5 SUM(free_bytes) / 1024 / 1024 AS free_mb,
6 ROUND((SUM(used_bytes) / SUM(bytes)) * 100, 2) AS used_percent
7 FROM
8 dba_data_files
9 GROUP BY tablespace_name;
这将显示每个表空间的名称、总大小、已用大小、可用大小以及使用百分比。
3. 添加数据文件到表空间
使用ALTER TABLESPACE语句添加新的数据文件。你需要指定数据文件的路径、文件名以及大小。例如:
这将向名为your_tablespace_name的表空间添加一个大小为500MB的数据文件。确保替换/path_to_datafile/datafile_name.dbf为实际的文件路径和名称。
4. 调整现有数据文件的大小
如果需要调整现有数据文件的大小,可以使用以下语句:
这将调整名为/path_to_datafile/datafile_name.dbf的数据文件的大小为1024MB。确保替换为实际的文件路径和名称。
5. 重新构建索引(可选)
在某些情况下,添加或调整数据文件后,可能需要重新构建表空间的索引以优化性能。你可以使用以下命令来重新构建索引:
1 ALTER INDEX your_tablespace_name REBUILD;
这将重新构建存储在名为your_tablespace_name的表空间中的所有索引。确保替换为实际的表空间名称。
6. 验证扩展操作(可选)
执行适当的查询和检查,以确保表空间已成功扩展并且应用程序能够正常使用。你可以再次运行步骤2中的查询来验证扩展是否成功。确保检查数据库的性能和响应时间,以确保一切正常。
7. 定期监控和维护(可选)
为了保持表空间的健康和性能,建议定期监控表空间的使用情况,并执行常规的维护任务,如重新组织表和索引。确保在需要时根据业务需求调整表空间大小。可以使用Oracle提供的工具和监视工具来监控表空间的使用情况。
至此,问题完美解决,下面是一些总结延申及拓展:
1. 检查该用户是否具有表空间中特定对象的访问权限:
- 特定对象的访问权限:用户需要具有对PUBDATA表空间中特定对象的访问权限。您可以查询数据库中的权限表,例如USER_TAB_PRIVS,以检查用户是否具有对目标对象的访问权限。
- 1 sql`SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = 'YOUR_TABLE';`
- 表空间的存储权限:用户还需要具有在PUBDATA表空间中创建、修改和删除对象的存储权限。您可以查询数据库中的权限表,例如USER_TS_QUOTAS,以检查用户在表空间上的配额和限制。
- 1 sql`SELECT * FROM USER_TS_QUOTAS WHERE TABLESPACE_NAME = 'PUBDATA';`
- 特定对象的访问权限:用户需要具有对PUBDATA表空间中特定对象的访问权限。您可以查询数据库中的权限表,例如USER_TAB_PRIVS,以检查用户是否具有对目标对象的访问权限。
2. impdp中的重定向:
1 impdp system/123456@orcl directory=kdbak schemas=K3CLOUDDCUSERORACLE dumpfile=K3Cloud20200717000101.dmp table_exists_action=replace exclude=statistics transform=OID:N Remap_schema=hr:hr2
其中要指定一下schema,schema就是导入的目标用户,需要重定向就用remap即可,例如:你的表都在hr这个用户下,还导入到hr下,就指定schema=hr,如果要导入到hr2用户下,就用remap重定向。
最后,希望小景的这篇文章可以帮助您解决实际工作中的问题,有什么问题可以评论区或者关注我的微信公众号来交流。
小景的Dba之路--impdp导入数据问题报错排查总结的更多相关文章
- windows环境下使用MySQL导入数据乱码报错的解决办法
Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...
- mysql 导入数据是报错:2006 - MySQL server has gone away
导SQL数据库结构+数据时,如果数据是批量插入的话会报错:2006 - MySQL server has gone away. 解决办法:找到你的mysql目录下的my.ini配置文件,加入以下代码 ...
- Oracle impdp导入数据临时表空间与undo表空间爆满解决实例
Oracle impdp导入数据临时表空间与undo表空间爆满解决实例 [日期:2018-01-24] 来源:Linux社区 作者:rangle [字体:大 中 小] 针对Oracle数据迁移, ...
- 【MySQL篇】Navicat导入SQL文件报错终极解决方案
面对大数据库文件(一般50M以上),使用Navicat导入的时候容易出现[ERR]2006等报错问题,此文提供了几种办法,包括修改MySQL的配置参数在网上也有很多详细教程介绍过,但此文精彩处在于前面 ...
- 往sde中导入要素类报错000732
sde可以成功连接,可以在Server中注册. 但是向sde中导入要素类报错000732,如图所示. 点击红色圆圈提示 ERROR 000732. 将路径修改为绝对路径即可,如下图所示.
- Android导入依赖appcompat-v7报错
Android导入依赖appcompat-v7报错 导入appcompat-v7时报错了 导入的是implementation 'com.android.support:appcompat-v7: ...
- PyCharm导入tensorflow包报错的问题
[注]PyCharm导入tensorflow包报错的问题 若是你也遇到这个问题,说明你也没有理解tensorflow到底在哪里. 当安装了anaconda3.6后,在PyCharm中设置interpr ...
- 导入json文件报错,TypeError expected string or buffer
导入json文件报错,TypeError expected string or buffer 原因:用字符串赋值后,python会把双引号转换为单引号 import json data = [{&qu ...
- 【SQLServer2008】之如何导入mdf,ldf文件、导入.mdf文件报错解决问题以及如何获得Authenticated Users 权限
一.如何导入mdf,ldf文件: 链接:http://jingyan.baidu.com/article/09ea3ede21258cc0afde3943.html 二.导入.mdf文件报错解决问题 ...
- Sqoop- sqoop将mysql数据表导入到hive报错
sqoop将mysql数据表导入到hive报错 [root@ip---- lib]# sqoop import --connect jdbc:mysql://54.223.175.12:3308/gx ...
随机推荐
- 解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量
话接上文的召回多样性优化,多路索引的召回方案可以提供更多的潜在候选内容.但候选越多,如何对这些内容进行筛选和排序就变得更加重要.这一章我们唠唠召回的信息密度和质量.同样参考经典搜索和推荐框架,这一章对 ...
- ES索引误删的名场面
ES索引误删的名场面 慌了3秒,果断发个邮件: 01 最近,在版本发布时: ES线上未备份的索引,被当场「误删」了: 对于新手来说,妥妥的社死名场面: 对于老手来说,慌它3秒表示一下态度: 当时的情况 ...
- Javascript Ajax总结——其他跨域技术之Web Sockets
Web Sockets的目标是在一个单独的持久连接上提供全双工.双向通信.在Javascript中创建了Web Sockets之后,会有一个HTTP请求发送到浏览器以发起连接.在取得服务器响应后,建立 ...
- Windows上安装jenkins
官网下载jenkins https://www.jenkins.io/zh/download/ 选择Windows版本下载,安装 注意,需要java11,17或21才能安装 java下载地址 htt ...
- Layui treeTable 使用【数据不显示、子级不显示】
//返回JSON数据类 public class LeaveMessageTreeTable { public LeaveMessageTreeTable() { this.children = ne ...
- Python——第五章:随机模块random
1.浮点数random.random() 的返回值是在 [0, 1)(左闭右开区间)内的随机浮点数.这意味着它可以取到 0,但不包括 1.所以,random.random() 可以返回 0,但不能返回 ...
- 踩坑ffmpeg录制的mp4无法在浏览器上播放
前言 使用ffmpeg编译好的程序在电脑上进行音视频转换,可以参考这篇:<windows电脑FFmpeg安装教程手把手详解_windows安装ffmpeg>,而我们要做的是在游戏引擎中集成 ...
- Skywalking(8.7)安装以及docker镜像打包
Skywalking安装以及docker镜像打包 Skywalking版本:apache-skywalking-apm-es7-8.7.0 ES版本:7.17.2 一.下载Skywalking的安装包 ...
- ChatGPT新玩法来了,微信聊天机器人
前言 上一篇文章中说了ChatGPT是什么,然后怎么注册使用. 传送门:花了1块钱体验一把最近很火的ChatGPT 但是实际操作下来还是有不少小伙伴跟我一样遇到各种坑. 没有魔法工具 OpenAI的服 ...
- 为什么程序猿DD热衷于内容输出与分享?
一.热衷于内容输出与分享 我是程序猿DD,大家知道我热衷于内容输出与分享.比如我一直有在产出博客或维护开源项目,是因为平时不沉迷游戏或追剧,空下来就喜欢整理整理最近碰到的问题,那么写写博客正好是一种比 ...