clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?

【引言】

今天有同事问了一个问题,在Oracle 11g下,为啥exp方式导出一个用户的数据表,在imp后却发现有些表并没有迁移过来。经查阅官方文档,发现和Oracle11g及12c +版本相对于10g,有一个新特性deferred_segment_creation(延迟段创建)造成的。

该参数的作用为:

oracle 11g中,当创建的表无数据时,不进行segment分配,以节省存储空间。

为了理解啥原理,这里再复习下Oracle的几个概念:

1. tablespace: 一个数据库划分为一个或多个逻辑单位,该逻辑单位成为表空间;每一个表空间可能包含一个或多个Segment;

2. Segments: Segment指在tablespace中为特定逻辑存储结构分配的空间。每一个段是由一个或多个extent组成。包括数据段、索引段、回滚段和临时段

3. Extents: 一个 extent 由一系列连续的 Oracle blocks 组成。通过extent 来给segment分配空间。

4. Data Blocks:Oracle 最小I/O存储单位,一个 data block 对应一个或多个分配给data file的操作系统块;默认为8KB,此参数在创建实例时可以修改,如做数仓库一般修改为64KB以上,为的是一次能从存储中多读取一些数据进内存,提升处理速度。

来张图更直观:

ef8d3cf8a349025206514876227a4ae5.png

Oracle10g之前的版本,table 创建时,默认创建了一个data segment,这个data segment含有min extents 指定的extents 数,每个extent 据表空间的存储参数分配一定数量的blocks。

Oracle11g及12c以后版本,有了一个新特性参数deferred_segment_creation(延迟段创建),默认为true;该参数表示:创建表时,如为空没有数据插入则不分配segment,如果为false,则在创建表示创建一个data segment;

注意sys用户除外,它会自动分配空间,普通用户不会自动创建。

了解了如上deferred_segment_creation特性;

有同学会说:把deferred_segment_creation修改为flase不就行了。

注意:

deferred_segment_creation修改为flase后,只对新建的空表起作用,之前空表依旧无法正常导出,除非把之前的所有空表做一次segment段分配处理。

怎么做?

把所有的空表segment create 处理,通过sql手动方法实现

步骤如下:

步骤1:--查询所有的空表

select table_name from user_tables where NUM_ROWS=0;

步骤2:--拼接sql,批量生成修改语句

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

步骤3:--利用exp/imp命令重新执行导出和导入操作即可。

步骤4:--修改deferred_segment_creation修改为flase,规避后续再次出现此类问题。

这里注意,步骤2会出现一种现象:

步骤2查出来的有些空表,在视图user_tables中的num_rows不等于0(原因:表中以前有数据,删除后oracle没有统计,视图user_tables中数据没有更新),故通过步骤2的sql并不能为所有的空表分配数据段。

怎么办?

执行一遍统计信息搜集即可。

select 'analyze table '||table_name||' compute statistics;' from user_tables;

analyze table tablename compute statistics;

等同于 analyze table tablename compute statistics for table for all indexes for all columns;

for table的统计信息存在于视图:user_tables 、all_tables、dba_tables

for all indexes的统计信息存在于视图:user_indexes 、all_indexes、dba_indexes

for all columns的统计信息存在于视图:user_tab_columns、all_tab_columns、dba_tab_columns

执行完后,视图user_tables中的num_rows值会做更新,此时再执行步骤2,能够给所有空表分配数据段

然而,在执行 analyze table tablename compute statistics 时,oracle会报object statictis are locked (这些表的统计被锁了),通过如下方式解锁:

select 'exec dbms_stats.unlock_table_stats('||'''OWNNAME'''||','''||table_name||''');' from user_tables where table_block=’DISABLED’;

以下是UNLOCK_TABLE_STATS Procedure介绍

This procedure unlocks the statistics on the table.

Syntax

DBMS_STATS.UNLOCK_TABLE_STATS (

   ownname    VARCHAR2,

   tabname    VARCHAR2);

Parameters

Table 141-98 UNLOCK_TABLE_STATS Procedure Parameters

Parameter

Description

ownname

The name of the schema

tabname

The name of the table

Usage Notes

When statistics on a table is locked, all the statistics depending on the table, including table statistics, column statistics, histograms and statistics on all dependent indexes, are considered to be locked.

The SET_*, DELETE_*, IMPORT_*, GATHER_* procedures that modify statistics in the dictionary of an individual table, index or column will raise an error if statistics of the object is locked.

Procedures that operates on multiple objects (such as GATHER_SCHEMA_STATS) will skip modifying the statistics of an object if it is locked. Many procedures have force argument to override the lock.

 欢迎关注个人微信公众号“一森咖记”c8e27466cb55e7887b67ebe7b8d5e116.png

2e2628018872037ebdd823170e87d290.png

   

近期热文

你可能也会对以下话题感兴趣。点击链接便可查看。

  • Oracle ADG同步技术,DBA必备的一种“后悔药”

  • OpenJDK和Oracle JDK有什么区别和联系?

  • 神技_如何快捷下载Oracle补丁的方法?!

  • 趋势篇:oracle 11g,12c,18c,19c之support lifetime

  • Configuring Kernel Parameters about SHMMAX on HP

  • 对recursive calls的深刻理解

  • Centos能不能替换RHEL?

  • RAC1 服务器要重启,喂:RAC2你先顶一下,咋搞?!

  • 对recursive calls的深刻理解

  • OpenJDK和Oracle JDK有什么区别和联系?

  • Centos能不能替换RHEL?

  • PLSQL Developer中控制结果集表格自动提交

  • alter table T1 add column新增字段执行时间超长,咋回事?

  • Oracle 11g 异机rman恢复报错ORA-27302:failure occurred at: sskgpcreates

  • 年末总结_聊一聊数据库行业的“继往开来”

  • Materialized view物化视图的一个简单应用场景

  • 干货:RHEL7.2生产环境下双节点12c RAC搭建实操

  • 【干货篇】在国内外数据库百家争鸣的时代,DBA们该何去何从?

  • LINUX环境:MySQL和Oracle开机自启动,咋搞?Logminer:oracle人为误操作之恢复神器

  • What:ASM自动脱落了

  • 实操:12C RAC环境下的ADG同步库搭建

  • “神器”:Oracle日志采集分析工具——TFA

  • Oracle Rac:关闭透明大页的原因及方法

  • 实操篇:Oracle 19c的安装部署

  • 浅谈MySQL三种锁:全局锁、表锁和行锁

  • Oracle如何访问MySql:透明网关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单。但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水…

C# 读写二进制文件

读写二进制文件的一种选择是直接使用流类型;在这种情况下,最好使用字节数组执行读写操作。另一个选择是使用为这个场景定义的读取器和写入器:BinaryReader和BinaryWriter。使用它们的方式类似于使用 StreamReader 和 StreamWriter&#xff0c…

推荐系统(1)--splitting approaches for context-aware recommendation

开篇语: 大一的时候。在实验室老师和师兄的带领下。我開始接触推荐系统。时光匆匆,转眼已是大三,因为大三课甚是少。于是便有了时间将自己所学的东西做下总结。第一篇博客。献给过去三年里带我飞的老师和师兄们,感谢你们的无私帮助…

C++之智能指针std::shared_ptr简单使用和理解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程 1 智能指针std::shared_ptr相关知识和如何使用 我们这里先说下智能指针std::shared_ptr,因为我看到我我们项目c++代码里面用得很多,我不是不会,所以记录学习下 先让ubu…

Excel只能输入不能修改

一、选择需要加密的单元格,右键→设置单元格格式→保护→锁定; 二、按AltF11键进入VBE环境,在左侧的相应sheet名称上(如sheet1)右键→查看代码; 三、选择Worksheet的SelectionChange事件,写入…

python 百度云文字识别 proxy_python使用百度文字识别功能方法详解

介绍python使用百度智能去的文字识别功能,可以识别截图中的文,登陆路验证码等等。, 登陆百度智能云,选择产品服务。选择“人工智能”---文字识别。点击创建应用。 如图下面有关于“文字识别”的各类信息,如通用文字识别…

Android性能优化典范(转)

本文转自:http://hukai.me/android-performance-patterns/ 2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Andr…

Xamarin效果第二十一篇之GIS中可扩展浮动操作按钮

在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR、测距和加载三维白模,今天再次对操作栏又一次修改了,直接放到了右下角可伸缩效果;啥也不说了都在效果里:添加支持圆角 ContentView:Xamarin.Forms.PancakeView再来Xamarin 社区工具包:Xamarin.CommunityToolkit再来看看最终…

LeetCode 3_Longest Substring Without Repeating Characters

LeetCode 3_Longest Substring Without Repeating Characters 题目描写叙述: Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" …

ASP.NET 连接MySql数据库

ASP.NET Mysql操作类 以下连接MySql数据库以VS2010为例,对于其他的编辑器也差不多 1. 我们需要在Mysql官网下载一个组件http://dev.mysql.com/downloads/connector/net/ 下载最新版的即可,并且安装connector,其实仅仅只是为了得到Mysql.Data…

linux之安装boost环境

1 下载最新的boost代码包 网址www.boost.org,如果觉得网速很慢,你可以直接在别人的csdn那里去下载 地址:https://download.csdn.net/download/weixin_42404995/10508611,我这里就是用的这个boost_1_67_0.tar.gz 2 安装boost环境 1) 解压boost_1_67_0.tar.gz之后进入boost目…

IDL 自定义函数

function add,x,yreturn, xy endpro sumx1y2print,add(x,y) end

java反射有什么用_java反射的作用知识点总结

Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。什么是Java的反射?反射是Java的特征之一,是一种间接操作目标对象的机制。JAVA反射机制是在运行状态…

【新版发布】ComponentOne 新增 .NET 6 和 Blazor 平台控件支持

ComponentOne Enterprise是葡萄城推出的一款内置 300 多种开发控件的 .NET控件集,可满足 WinForm、WPF、Blazor、ASP.NET MVC 等平台下的系统开发需求,提供表格数据管理、数据可视化、报表和文档等功能,被开发人员誉为“.NET开发的‘瑞士军刀…

python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)

threading模块 简述: threading模块 threading.currentThread(): 返回当前的线程变量。 threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。 threading.activeCount(): 返回正在运行…

Ruby如何成长成高性能系统构架

为什么80%的码农都做不了架构师?>>> 结束了一份Ruby为主的工作,想把个方面总结一下,这篇是关于系统性能方面的.以下数据都是简单回忆的数据,加之企业保密数据的需要,和精确数有些出入,仅供参考. 说起Ruby的性能,无论从官方到社区,都公认是劣于其它的框架…

Android之build.gradle配置签名

1 问题 android签名除了我们用android studio build->generate Signed Apks ... 我们还可以自己用build.gradle构建,容易忘记还是记录下来 2 配置如下 1) build.gradle文件如下 android {...signingConfigs {release {def prpe = new Properties()def input = project.…

ArcGIS 10.2数字化线状要素时自动拼接成一条线

(1)在已有线的基础上自动连接成一条线 数字化时,经常会碰到这种情况,不小心双击了,或者画到一半饿了,双击完成去吃饭了,回来继续画,该怎样去做呢? 一开始一直和捕捉和经典…

Python 字符串操作基础

1.Python 字符串 字符串可以看做是由单个文本字符构成的列表,每个字母构成一个列表元素,可以用下标取值,切片,用于for循环,用len()函数 name Zophoie name[2] name[-3] name[0:3]Zoin nameZOin name len(name)ZOOnot …

设置tableView的分割线从最左端开始

苹果原生的tableView的cell分割线默认是没有从最左端开始,有时候这样不免影响美观,有时也会有这样的需求,设置tableView的分割线从最左端开始: 不多说了,直接上代码吧: //分割线从顶端开始 --------适配iO…