近日,新接手了一个数据库。检查某系统的时候发现,部分数据表存储在USERS表空间下了。

我们需要整理数据库对象至相对应的业务表空间中去

以下几个数据库对象在users表空间中:

SQL> select segment_name , segment_type , owner from dba_segments where TABLESPACE_NAME='USERS' AND OWNER='IVYDD';SEGMENT_NAME                                 SEGMENT_TYPE       OWNER
-------------------------------------------- ------------------ -----------------------------
IVY_TEST                                      TABLE              IVYDD
EVAL_CONTACT                                  TABLE              IVYDD
SYS_IL0000089558C00006$$                      LOBINDEX           IVYDD
SYS_LOB0000089558C00006$$                     LOBSEGMENT         IVYDD
  • 发现USERS表空间下有两个LOB类型文件。
  • 并且无法看出lob类型的segment所对应的表名。

说明:

对Oracle lob类型数据表而言,一个带lob列的数据表创建是要对应多个数据段创建的。除了传统的数据表创建的数据段Table Data Segment之外, 一个LOB列都会生成两个专门的段lob段   和   lob索引段

  • Lob段(LobSegment)对应的是存放在数据表lob列上的数据。在Oracle的lob类型数据列,有两种保存位置结构。一个是in-row storage,也就是每一行的lob数据同其他列的数据以行的形式一起保存在数据块中。这种情况的lob列取值较小。而另一种为out-of-row storage,当lob对象较大,不能保存在一个数据块中时,可以将其放置在一个独立lobsegment中进行保存。而out-of-row storage时数据行中lob列上保存的只是一个指向lobsegment对应位置的指针引用。
  • Lob索引段(LobIndex)是Oracle为每一个lob类型列强制生成的索引,主要作用是用于进行lob类型数据检索加速的操作。Lobindex与lob列共生,如果强制进行删除操作,是会报错的。

查看lob所对应的表名,以及该表上那个字段为lob类型:

col COLUMN_NAME for a20
SELECT owner , table_name , COLUMN_NAME ,  SEGMENT_NAME , TABLESPACE_NAME , INDEX_NAME FROM DBA_LOBS WHERE OWNER='IVYDD' AND SEGMENT_NAME like 'SYS_LOB0000089%';OWNER                          TABLE_NAME                     COLUMN_NAME          SEGMENT_NAME                   TABLESPACE_NAME                INDEX_NAME
------------------------------ ------------------------------ -------------------- ------------------------------ ------------------------------ ------------------------------
IVYDD                          EVAL_CONTACT                   CONTEXT              SYS_LOB0000089558C00006$$    USERS                          SYS_IL0000089558C00006$$

以上我们可以确定那两个LOB是属于:

  • 数据表: IVYDD.EVAL_CONTACT
  • LOB字段:CONTEXT

通常我们需要移动表至另一个表空间时,最常用的命令方法是使用move进行对象移动。

SQL> select segment_name, segment_type, tablespace_name from user_segments;SEGMENT_NAME                   SEGMENT_TY TABLESPACE_NAME
------------------------------ ---------- ------------------------------
EVAL_CONTACT                 TABLE      USERS
SYS_LOB0000089558C00006      LOBSEGMENT USERS
SYS_IL0000089558C00006       LOBINDEX   USERS3 rows selectedSQL> alter table t move tablespace tbs_ivy;
Table alteredSQL> select segment_name, segment_type, tablespace_name from user_segments;SEGMENT_NAME                   SEGMENT_TY TABLESPACE_NAME
------------------------------ ---------- ------------------------------
EVAL_CONTACT                    TABLE        TBS_IVY
SYS_LOB0000089558C00006         LOBSEGMENT   USERS
SYS_IL0000089558C00006          LOBINDEX     USERSSQL> alter index SYS_IL0000089558C00006 rebuild tablespace TBS_IVY;ORA-02327: 无法以数据类型 LOB 的表达式创建索引
  • 可以看到用我们常用的move方法进行无法移动LOB对象的。
  • 并且也不能使用rebuild方法对LOB INDEX进行重建。

那么我们应该怎么办呢!? 敲黑板啦~~

SQL> alter table IVYDD.EVAL_CONTACT move tablespace USERS lob(CONTEXT) store as (tablespace TBS_IVY);Table alteredSQL> select segment_name, segment_type, tablespace_name from user_segments;SEGMENT_NAME                   SEGMENT_TY TABLESPACE_NAME
------------------------------ ---------- ------------------------------
EVAL_CONTACT                    TABLE        TBS_IVY
SYS_LOB0000089558C00006         LOBSEGMENT   TBS_IVY
SYS_IL0000089558C00006          LOBINDEX     TBS_IVY

使用 alter table xxx move lob(xx) store as xxx (tablespace xxx);命令,我们可以进行lob列的存储位置调节。

在创建数据表的时候,同样可以使用lob(xxx)对应的数据表空间字句,执行存储lob对象的空间信息。

心得

在实际物理设计部署过程中,经常有将大对象分区和存储单独部署表空间的情况。可以根据实际的情况,将一些很大的lob列连同索引保存在单独的表空间上。

但是注意,一般数据表而言,lob段和lobindex段是在一个表空间上。即使在SQL语法上存在支持,但是将lob段和lobindex分开存储的语句通常被忽略掉。

alter table IVYDD.TABLE_NAME move tablespace TBS_TARGET;alter table IVYDD.TABLE_NAME move tablespace USERS lob(LOG_COL) store as (tablespace TBS_TARGET);

LOB类型数据的MOVE相关推荐

  1. LOB类型的学习、总结

    2019独角兽企业重金招聘Python工程师标准>>> LOB类型的学习.总结 LOB相关的概念 LOB类型: 将信息文件(十进制.二进制).图像甚至音频信息采用数据库作为保存载体时 ...

  2. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  3. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成

    大对象简介 1用来存储大型数据,如图片,视频,音乐等 2可用于存储二进制数据,字符数据,引用外部文件的指针的数据类型 大对象的4种类型 1BLOB数据类型 1)它是用来存储二进制数据. 2)可以存储的 ...

  4. 三层中如何在服务器与客户端之间传输自定义的'Record'类型数据的例子

    博主自写的三层中如何在服务器与客户端之间传输自定义的'Record'类型数据的例子. 效果图如下: 例子源码下载:http://Delphi盒子上还未审核.现在已审核!下载地址为:http://sd. ...

  5. mysql数据库clob类型数据_JDBC读写MySQL的BLOB和CLOB类型数据(带代码)

    JDBC对LOB的读写 在JDBC中提供了java.sql.Blob和java.sql.Clob两个类分别代表BLOB和CLOB数据 •BLOB(Binary Large Object):用于存储大量 ...

  6. mysql 存blob_mysql 存入 blob类型数据

    mysql 存入 blob类型数据 最佳 解决方案 如果是字符串 的 blob  , 在 bean 中 把 该字段 设置成 byte[]  即可,遇到汉字 不会乱码 如果是文件 可以采用下面方法. 方 ...

  7. C#中将结构类型数据存储到二进制文件中方法

    以往在vb6,vc6中都有现成的方法将结构类型数据写入和读取到二进制文件中,但是在c#中却没有现成的方法来实现,因此我查阅了一些资料,借鉴了网上一些同学的做法,自己写了个类似的例子来读写结构类型数据到 ...

  8. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

  9. mysql json类型数组索引_MySQL JSON 类型数据操作

    1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...

最新文章

  1. Centos6上安装cobbler及cobbler常见参数详解
  2. POJ2318 TOYS / POJ2398Toy Storage判断点与直线位置关系 【计算几何】
  3. mybatis应用(二)注解的实现
  4. 微服务Dubbo和SpringCloud架构设计、优劣势比较
  5. inode及硬链接和软链接
  6. 配置CACTI监控MySQL数据库状态(2)安装cacti相关软件包
  7. gc overhead limit exceeded解决方案
  8. 【Linux 系统启动优化测试工具的使用——grabserial 】
  9. itween的抛物线线性移动
  10. Modelica生态工具开发利器——同元软控MWorks.SDK 2.0
  11. hdu——4379 ——The More The Better
  12. matlab-采用For循环,将每次计算得到的矩阵,依次放进一个新的矩阵
  13. epoll使用详解:epoll_create、epoll_ctl、epoll_wait、close
  14. 简易的java发邮件客户端
  15. SpringBoot参数校验
  16. numpy下 随机抽样
  17. 实验室管理系统应用前景分析
  18. 乐学堂天风:什么是上证180指数
  19. Win11没有休眠模式怎么办 Win11没有休眠模式解决方法
  20. 全球与中国汽车密封型微动开关市场现状及未来发展趋势

热门文章

  1. javaweb JSP JAVA 电影院在线订票系统(电影购票系统 电影售票 电影票预订系统)
  2. 使用matlab编程给qq或163邮箱等发邮件
  3. 配置ArchLinux系统
  4. 初识openstack之0——虚拟化及Xen和KVM介绍
  5. win7一直显示正在关机_win7系统一直卡在正在关机无法关机怎么解决
  6. 全部实行“申请―考核”制!北京师范大学博士招生明确规定!
  7. IOT开发的学习-linux#5 gcc编译生成一个c语言实行文件,用sh调用实行
  8. far word 远指针
  9. 血饮龙纹、百战沙城,静默安装,卸载了以后 没几个小时就又安装到电脑了
  10. 什么是性能测试?性能测试目的?性能测试的主要分类以及性能测试的常用指标?