Expdp 导数错误 ORA-00832

news/2024/7/20 15:08:11 标签: 数据库, 操作系统, 内存管理

问题实验环境

      操作系统:Red Hat Enterprise Linux Server release 5.7 (Tikanga)

      数据库  :Oracle Database 10g Release 10.2.0.4.0 - Production

错误再现分析

在使用数据泵导数据时,遇到下面错误:

[oracle@gsp db_expd_bak]$ expdp system/xxxx   directory=dump_dir dumpfile=dm.dmp tablespaces=dm content=all;

Export: Release 10.2.0.4.0 - Production on Thursday, 29 August, 2013 21:38:44

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Release 10.2.0.4.0 - Production

ORA-31626: job does not exist

ORA-31637: cannot create job SYS_EXPORT_TABLESPACE_01 for user SYSTEM

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPV$FT_INT", line 600

ORA-39080: failed to create queues "KUPC$C_1_20130829213845" and "KUPC$S_1_20130829213845" for Data Pump job

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95

ORA-06512: at "SYS.KUPC$QUE_INT", line 1606

ORA-00832: no streams pool created and cannot automatically create one

clip_image002

造成ORA-00832:no streams pool created and cannot automatically create one错误的原因一般是streams_pool_size太小或没有定义streams_pool_size

A database feature which needs STREAMS SGA was being used, however, the streams_pool_size parameter was not defined and the value of db_cache_size was too small to permit an automatic transfer of SGA to the streams pool from the buffer cache.

Action: Please set the parameter streams_pool_size or set sga_target

SQL> show parameter streams_pool_size

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

streams_pool_size                    big integer 0

SQL>

由于STREAMS_POOL_SIZE一般在ASSM中是动态分配的,所以参数streams_pool_size一直为0,要查看streams_pool_size的真实大小就必须通过下面脚本来查询:

Code Snippet
  1. epps> col name for a36;
  2.  
  3. epps> col value for a10;
  4.  
  5. epps> col idfefault for a10;
  6.  
  7. epps> col ismod for a10;
  8.  
  9. epps> col isadj for a10;
  10.  
  11. epps>SELECT X.ksppinm      name       ,
  12.   2         Y.ksppstvl     value      ,
  13.   3         Y.ksppstdf     idfefault  ,
  14.   4         DECODE(bitand(Y.ksppstvf,7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE')  ismod,
  15.   5         DECODE(bitand(Y.ksppstvf,2), 2, 'TRUE', 'FALSE')  isadj
  16.   6  FROM sys.x$ksppi  X,
  17.   7       sys.x$ksppcv Y
  18.   8  WHERE X.inst_id = userenv('Instance') AND
  19.   9        Y.inst_id = userenv('Instance') AND
  20.  10        X.indx    = Y.indx              AND
  21.  11        X.ksppinm LIKE '%_streams%'
  22.  12  ORDER BY translate(X.ksppinm, '_', '');
  23.  
  24.       NAME                                 VALUE      IDFEFAULT  ISMODISADJ
  25.  
  26. ------------------------------------ ---------- ---------- ---------- ----------
  27.  
  28.       __streams_pool_size                  0          TRUE       FALSEFALSE
  29.  
  30.       _memory_broker_shrink_streams_pool   900        TRUE       FALSEFALSE
  31.  
  32.       _disable_streams_pool_auto_tuning    FALSE      TRUE       FALSEFALSE
  33.  
  34.       _streams_pool_max_size               0          TRUE       FALSEFALSE

clip_image004

epps> show parameter sga

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

lock_sga                             boolean     TRUE

pre_page_sga                         boolean     FALSE

sga_max_size                         big integer 3424M

sga_target                           big integer 0

epps>

查看streams_pool_size的实际大小,发现其大小为0,更让我吃惊 的却在后面:sga_target 为0,也就是说数据库没有启动自动共享内存管理(Automatic Shared Memory Management ASMM)。真是绕了一大圈。所以必须手动调整streams_pool_size的大小:

epps> alter system set streams_pool_size=100M scope=memory;

alter system set streams_pool_size=100M scope=memory

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-04033: Insufficient memory to grow pool

epps> alter system set streams_pool_size=1M scope=memory;

alter system set streams_pool_size=1M scope=memory

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-04033: Insufficient memory to grow pool

因为SGA采用老的分配方式,没有采用ASSM管理SGA,需要从其它内存中释放一些内存出来分配给streams_pool_size,结合分析,最后从

shared_pool_size中分配32M出来给streams_pool_size。问题解决,另外一个解决方法就是讲sga_target设为非零。让SGA动态给streams_pool_size分配内存。

clip_image006

 


http://www.niftyadmin.cn/n/1275707.html

相关文章

开发智能灯控APP软件的过程包括哪些步骤?

在照明控制方面,随着移动互联网技术的迅速发展和普及,智能照明控制APP软件的开发可以发挥平台的作用,使用户能够进行方便的照明控制。 1.在平台上进行市场研究和分析 市场研究的目的还在于更好地了解受众并了解受众的真正需求,也…

kubernetes架构图

etcd是高可用的key/value存储系统,用于持久化存储集群所有的资源对象。 API Server:提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,通过对相关相关的资源数据“全量查询”“变化监听”&#xff…

vmd变分模态分解_浅谈VMD(变分模态分解)

浅谈VMD(变分模态分解)统一解释一下,我也是才学习这个,很多地方不懂。至于译文,也是自己根据原论文进行的一些翻译,很多地方不是很准确,研一的可以自己试着去读英文原文,而且大家学校应该都能下载这篇论文。…

如何开发一款ios应用程序

如何开发一款ios应用程序 android现在也很火相对人群更多一些,iOS要高端一些,薪资和前景更好 ios开发人才为何如此受企业青睐 苹果iphone如今的风靡有它独特的设计感更多的在于它革命性的推出了App Store营销模式。这一平台允许企业或程序员将自己开…

统一资源管理与调度平台入门

背景 基于数据密集型应用的计算框架不断出现,从不支持离线处理的MapReduce,到支持在线处理的Storm,从迭代式计算框架Spark到流式处理框架S4,...而在大部分公司中,这几种框架可能都会采用,考虑到资源利用率、…

linux删除文件夹下所有文件_Linux复制文件到另一个文件夹用什么命令?

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解Linux系统如何使用命令行工具把文件复制到另一个文件夹或者目录。linux复制文件到另一个文件夹2. cp命令的选项和功…

如果想开发IOS的应用程序,需要准备什么?关于iOS App开发你知道多少?

如果想开发IOS的应用程序,需要准备什么?关于iOS App开发你知道多少? 如果想开发IOS的应用程序,需要准备什么? 首先,要有一个MAC系统(买一台苹果电脑,苹果本或者MACmini),没有这个条件可以装一个黑苹果的mac系统或…

swarm kubernetes mesos对比

一个集群高度工具有多个目的:使用得集群的资源被高效利用,支持用户提供的配置约束,能够迅速调度应用以此保证它们不会处于待定状态(pending state),有一定程序的“公平”,具有一定的鲁棒性和可用…