[20130513]给lob字段命名的问题.txt

简介: [20130513]给lob字段命名的问题.txt前几天同事建议把一些表移动到其他表空间,主要是增长太快.在测试时忘记移动lob字段,这样效果不大.我突然想能否lob字段命名一个好名字,这样看到这个字段就知道它属于这个表.
[20130513]给lob字段命名的问题.txt

前几天同事建议把一些表移动到其他表空间,主要是增长太快.在测试时忘记移动lob字段,这样效果不大.
我突然想能否lob字段命名一个好名字,这样看到这个字段就知道它属于这个表.

自己在测试环境做一些测试:

1.测试环境:
SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

create table t( id number,image blob);

SQL> select table_name,column_name,segment_name,tablespace_name,index_name  from dba_lobs where wner=user and table_name='T';
TABLE_NAME COLUMN_NAME          SEGMENT_NAME         TABLESPACE_NAME                INDEX_NAME
---------- -------------------- -------------------- ------------------------------ ------------------------------
T          IMAGE                SYS_LOB0000274635C00 USERS                          SYS_IL0000274635C00002$$
                                002$$

--274635标识表T的object_id,2表示第2个字段.

SQL> select object_id,data_object_id from dba_objects where wner=user and object_name='T';
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
    274635         274635

--很明显如果知道SYS_LOB0000274635C00002$$,要知道是那个表的lob字段,要查询dba_lobs视图.

SQL> select table_name,column_name,segment_name,tablespace_name,index_name  from dba_lobs where SEGMENT_NAME='SYS_LOB0000274635C00002$$';
TABLE_NAME COLUMN_NAME          SEGMENT_NAME         TABLESPACE_NAME                INDEX_NAME
---------- -------------------- -------------------- ------------------------------ ------------------------------
T          IMAGE                SYS_LOB0000274635C00 USERS                          SYS_IL0000274635C00002$$
                                002$$
2.如何改名呢?
先试验按照常规方法修改索引:
SQL> alter index "SYS_IL0000274635C00002$$" rename to T_IMAGE_IDX;
alter index "SYS_IL0000274635C00002$$" rename to T_IMAGE_IDX
*
ERROR at line 1:
ORA-22864: cannot ALTER or DROP LOB indexes
--行不通.

--抽取定义:
select dbms_metadata.get_ddl('TABLE','T') from dual;
  CREATE TABLE "SCOTT"."T" 
   (    "ID" NUMBER, 
    "IMAGE" BLOB
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  TABLESPACE "USERS" 
 LOB ("IMAGE") STORE AS BASICFILE (
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
  NOCACHE LOGGING ) 

--不知道如何修改.仔细看一些手册,写成

CREATE TABLE "SCOTT"."T"
   (    "ID" NUMBER, 
    "IMAGE" BLOB
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  TABLESPACE "USERS" 
 LOB ("IMAGE") STORE AS  BASICFILE t_image_lob (
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
  NOCACHE LOGGING ) ;

测试看看.通过.

SQL> select table_name,column_name,segment_name,tablespace_name,index_name  from dba_lobs where wner=user and table_name='T';
TABLE_NAME COLUMN_NAME          SEGMENT_NAME         TABLESPACE_NAME                INDEX_NAME
---------- -------------------- -------------------- ------------------------------ ------------------------------
T          IMAGE                T_IMAGE_LOB          USERS                          SYS_IL0000274638C00002$$

--建立的段名已经T_IMAGE_LOB.对应的索引依旧不行.再仔细看手册加上一个google,找到如下链接:
http://www.dbaglobe.com/2010/06/lobsegment-defragmentation.html
写成如下:

drop table t purge;
create table t( id number,image blob)
    LOB ( image) STORE AS BASICFILE t_image_lob (
      TABLESPACE users
      ENABLE STORAGE IN ROW
      INDEX t_image_idx ( TABLESPACE users ));

SQL> select table_name,column_name,segment_name,tablespace_name,index_name  from dba_lobs where wner=user and table_name='T';
TABLE_NAME COLUMN_NAME          SEGMENT_NAME         TABLESPACE_NAME                INDEX_NAME
---------- -------------------- -------------------- ------------------------------ ------------------------------
T          IMAGE                T_IMAGE_LOB          USERS                          T_IMAGE_IDX

3.顺便测试一下move的情况:

SQL> insert into t values (1,lpad('a',4000,'a'));
1 row created.

SQL> commit;
Commit complete.

SQL> alter table t move tablespace test lob (image) store as( tablespace test );

SQL> select * from dba_extents where wner=user and segment_name in ('T_IMAGE_LOB','T_IMAGE_IDX','T');
OWNER  SEGMENT_NAME   SEGMENT_TYPE       TABLESPACE_NAME   EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
------ -------------- ------------------ ---------------- ---------- ---------- ---------- ---------- ---------- ------------
SCOTT  T_IMAGE_LOB    LOBSEGMENT         TEST                      0          8        144      65536          8            8
SCOTT  T_IMAGE_IDX    LOBINDEX           TEST                      0          8        152      65536          8            8
SCOTT  T              TABLE              TEST                      0          8        160      65536          8            8

--很明显索引也一起移动了.


--执行如下,效果也一样.

SQL> alter table t move tablespace test lob (image) store as( tablespace test index t_image_idx (tablespace test) );
Table altered.

SQL> select * from dba_extents where wner=user and segment_name in ('T_IMAGE_LOB','T_IMAGE_IDX','T');
OWNER  SEGMENT_NAME  SEGMENT_TYPE       TABLESPACE_NAME   EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
------ ------------- ------------------ ---------------- ---------- ---------- ---------- ---------- ---------- ------------
SCOTT  T_IMAGE_LOB   LOBSEGMENT         TEST                      0          8        168      65536          8            8
SCOTT  T_IMAGE_IDX   LOBINDEX           TEST                      0          8        176      65536          8            8
SCOTT  T             TABLE              TEST                      0          8        184      65536          8            8


目录
相关文章
|
数据采集 网络协议 定位技术
Socks5代理IP可以运用到哪些应用场景?
Socks5代理与HTTP代理对比,Socks5支持多种协议,提供更强认证,适合P2P和UDP,适用于匿名上网、突破网络限制、低延迟游戏、P2P文件共享、SEO和网络爬虫。其多功能性、安全性和广泛支持使其在多个场景中优于HTTP代理。随着技术发展,Socks5代理的应用前景广阔。
|
移动开发 安全 Java
钉钉企业应用网关了解一下
通过企业应用网关,即便该服务器完全在互联网上运行,我们也能够实现“零信任”访问。
2741 1
钉钉企业应用网关了解一下
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
域名解析 负载均衡 网络协议
|
存储 BI Apache
下一代实时数据库:Apache Doris 【七】数据模型
下一代实时数据库:Apache Doris 【七】数据模型
408 1
|
机器学习/深度学习 人工智能 机器人
「AIGC」DALL-E2详解
**DALL-E 2是OpenAI的文本到图像生成器,融合艺术与技术,通过文本编码、先验模块和图像解码创新性地将描述转化为视觉作品。它能理解抽象概念,生成多样化、高质量图像,应用于艺术、设计及媒体行业。然而,细节处理有限且涉及伦理挑战。**
824 0
|
自然语言处理 芯片 异构计算
ASIC到底是什么?
ASIC到底是什么?
3619 1
|
存储 运维 安全
SDN 网络编排与服务
【2月更文挑战第30天】网络编排是基于业务需求,对逻辑网络服务进行有序组织和安排,通过控制器构建满足需求的网络服务。
|
机器学习/深度学习 人工智能 文字识别
超全干货分享:什么是RPA?
7月28日,阿里云RPA4.0版本重磅发布,为企业数字化转型提供高效、安全、可靠的服务。RPA是一款软件机器人,能够模拟人的行为完成软件的交互,能够解决跨系统、跨平台,重复有规律的工作流程。时至今日,阿里云RPA已被超过50万各行各业的用户采用,可以跟踪到的执行总次数已突破120亿次,用户使用RPA获得了3-10倍的效率提升
12477 0
超全干货分享:什么是RPA?
|
C++
[插件使用] 介绍与使用番茄助手
[插件使用] 介绍与使用番茄助手
704 0
下一篇
oss云网关配置