首页 > 其他分享 >小景的Dba之路--impdp导入数据问题报错排查总结

小景的Dba之路--impdp导入数据问题报错排查总结

时间:2024-01-22 14:57:54浏览次数:42  
标签:1024 datafile impdp name Dba 报错 空间 tablespace 权限

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

首先看到了ORA-01950:no privileges on tablespace ‘PUBDATA’ 这个报错,小景想到了以下原因:

  1. 权限问题:ORA-01950错误表示用户没有在PUBDATA表空间上的特定对象的权限。这可能是由于数据库权限配置不当,导致导出进程无法访问相关的表空间和对象。解决方案是检查用户权限设置,确保用户拥有足够的权限来执行数据导出操作。
  2. 作业不存在:ORA-31626错误表示尝试操作的作业不存在。这可能是由于指定的作业名称不正确或者作业已经被删除或更改。需要检查作业名称的拼写和准确性,并确保作业存在且具有正确的配置。
  3. 无法创建主表:ORA-31633错误表示无法创建主表。这可能是由于表空间不足、磁盘空间不足或其他存储问题导致的。需要检查数据库的存储配置和可用空间,确保有足够的空间来创建所需的表结构。
  4. 内部错误: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语句添加新的数据文件。你需要指定数据文件的路径、文件名以及大小。例如:

 1 ALTER TABLESPACE your_tablespace_name ADD DATAFILE '/path_to_datafile/datafile_name.dbf' SIZE 500M; 

这将向名为your_tablespace_name的表空间添加一个大小为500MB的数据文件。确保替换/path_to_datafile/datafile_name.dbf为实际的文件路径和名称。

4. 调整现有数据文件的大小

如果需要调整现有数据文件的大小,可以使用以下语句:

 1 ALTER DATABASE DATAFILE '/path_to_datafile/datafile_name.dbf' RESIZE 1024M; 

这将调整名为/path_to_datafile/datafile_name.dbf的数据文件的大小为1024MB。确保替换为实际的文件路径和名称。

5. 重新构建索引(可选)

在某些情况下,添加或调整数据文件后,可能需要重新构建表空间的索引以优化性能。你可以使用以下命令来重新构建索引:

 1 ALTER INDEX your_tablespace_name REBUILD; 

 

这将重新构建存储在名为your_tablespace_name的表空间中的所有索引。确保替换为实际的表空间名称。

6. 验证扩展操作(可选)

执行适当的查询和检查,以确保表空间已成功扩展并且应用程序能够正常使用。你可以再次运行步骤2中的查询来验证扩展是否成功。确保检查数据库的性能和响应时间,以确保一切正常。

7. 定期监控和维护(可选)

为了保持表空间的健康和性能,建议定期监控表空间的使用情况,并执行常规的维护任务,如重新组织表和索引。确保在需要时根据业务需求调整表空间大小。可以使用Oracle提供的工具和监视工具来监控表空间的使用情况。

至此,问题完美解决,下面是一些总结延申及拓展:

1. 检查该用户是否具有表空间中特定对象的访问权限:

    1. 特定对象的访问权限:用户需要具有对PUBDATA表空间中特定对象的访问权限。您可以查询数据库中的权限表,例如USER_TAB_PRIVS,以检查用户是否具有对目标对象的访问权限。
      1. 1 sql`SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = 'YOUR_TABLE';`
    2. 表空间的存储权限:用户还需要具有在PUBDATA表空间中创建、修改和删除对象的存储权限。您可以查询数据库中的权限表,例如USER_TS_QUOTAS,以检查用户在表空间上的配额和限制。
      1. 1 sql`SELECT * FROM USER_TS_QUOTAS WHERE TABLESPACE_NAME = 'PUBDATA';`

  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重定向。

 

最后,希望小景的这篇文章可以帮助您解决实际工作中的问题,有什么问题可以评论区或者关注我的微信公众号来交流。

标签:1024,datafile,impdp,name,Dba,报错,空间,tablespace,权限
From: https://www.cnblogs.com/ailanlan/p/17980026

相关文章

  • 常用的Linux命令:查看日志中报错信息的前后多少行
    方法一:使用cat xx.log|grep'错误信息'这个只能查询出日志文件中是否有保持信息,看不到报错信息的前后上下文信息;catinfo.log|grep'handlermqarticlefilerecorddatafail'ERRORc.u.c.s.d.s.u.i.HelpDataSyncServiceImpl[HelpDataSyncServiceImpl.java:623]handler......
  • FastAPI学习-28 alembic数据迁移报错:Target database is not up to date 报错解决办法
    前言当表结构有变更,数据迁移时,出现报错:Targetdatabaseisnotuptodate遇到的问题执行迁移命令alembicrevision--autogenerate-m"testv4"出现如下报错>alembicrevision--autogenerate-m"testv4"INFO[alembic.runtime.migration]ContextimplMySQLImpl.INFO[alem......
  • PG DBA培训23:PostgreSQL执行计划与统计信息
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLExecutionplanandstatistical,学完本课程可以掌握PostgreSQL性能优化之查询处理,PostgreSQL处理SQL的整个逻辑顺序,PostgreSQL查询处理的流程讲解,PostgreSQL性能优化之执行计划,执行计划的介绍,执行计划......
  • PG DBA培训24:PostgreSQL性能优化之分区表
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPartitionTable,学完本课程可以掌握PostgreSQL分区表基础知识,什么是分区表,声明式表分区与继承式的区别,PostgreSQL分区表技术的发展,PostgreSQL分区表创建与使用,PostgreSQL范围分区表创建,PostgreSQLHASH分区......
  • PG DBA培训25:PostgreSQL性能分析与优化调整
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPerformanceanalysisandadjustment,学完本课程可以掌握PostgreSQL优化概述与优化方案,PostgreSQL操作系统层优化调整与建议,PostgreSQL存储系统层优化调整与建议,PostgreSQL数据库层面常用优化指标分析,Postgr......
  • PG DBA培训25:PostgreSQL性能分析与优化调整
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPerformanceanalysisandadjustment,学完本课程可以掌握PostgreSQL优化概述与优化方案,PostgreSQL操作系统层优化调整与建议,PostgreSQL存储系统层优化调整与建议,PostgreSQL数据库层面常用优化指标分析,Postgr......
  • ROS串口通信报错:IO Exception (13): Permission denied, file /tmp/binarydeb/ros-noe
    ROS在串口通信时,当我们插入USB后,catkin_make之后,报错:IOException(13):Permissiondenied,file/tmp/binarydeb/ros-noetic-serial-1.2.1/src/impl/unix.cc,line151.[ERROR][1705845384.528602780]:Unabletoopenport这是usb权限不够的原因我们首先查看接口设备:l......
  • k8s之基于metallb实现LoadBalancer型Service
    一、实验说明1、实验目的基于metallb实现kubernetes的LoadBalancer型Service。2、环境说明VMwareWorkstation安装三台虚拟机,安装K8S集群,网络模式NAT模式。master11.0.1.131node0111.0.1.132node0211.0.1.133oot@master:/home/user#kubectlgetnodesNAMESTATU......
  • PG DBA培训21:PostgreSQL性能优化之基准测试
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLPerformanceBenchmarking,学完本课程可以掌握PostgreSQL性能基准测试基础知识,基准测试介绍,基准测试相关指标,TPCC基准测试基础,PostgreSQL测试工具介绍,PostgreSQL性能基准测试案例1之BenchmarkSQL,Benchm......
  • PG DBA培训22:PostgreSQL运维诊断之操作系统分析
    本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQLOperatingSystemAnalysisandDiagnosis,学完本课程可以掌握PostgreSQL操作系统性能优化分析及工具说明,操作系统工具之top/topas,操作系统工具之vmstat,操作系统工具之iostat,操作系统工具之free/lsps/swapinf......