使用脚本进行修改。据目前所了解,正长情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了!

正常情况下的修改脚本:

1 。修改表的空间

alter table TABLE_NAME move tablespace TABLESPACENAME

查询当前用户下的所有表

选择'alter table'|| table_name ||' 移动表空间tablespacename;' 来自  user_tables;

2.修改表的索引的空间

alter index INDEX_NAME rebuild tablespace TABLESPACENAME

查询当前用户下的所有索引select'alter

index'|| index_name ||' 重建表空间tablespacename;' from  user_indexes;

可以使用脚本执行查询的结果,这样就可以批量处理!

在移植看注意研究了下ORACLE ALTER TABLE MOVE的语法:

ALTER TABLE table_name MOVE [ONLINE] tablespace_name;

通过上面的语句可以移植表到新表空间,

如果要移植LOB字典需要参考以下语法:

ALTER TABLE table_name LOB(lob_item)STORE AS [lob_segment]

(

TABLESPACE tablespace_name

(STORAGE .....)

ENABLE | DISABLE STORAGE IN ROW

CHUNK integer

PCTVERSION integer

RETENTION

FREEPOOLS integer

CACHE | NOCACHE | CACHE READS

INDEX lobindexname

(TABLESPACE tablesapce_name

((STORAGE .....))

)

....

注:

LOB(lob_item):表中的lob字段

STORE AS [lob_segment]:每个lob字段在表创建后系统都会自动单独创建一个段,可以通过这个参数手动指定一个段名

TABLESPACE_NAME:LOB字段新的存储表空间

(STORAGE .....):指定TABLESPACE_NAME的存储属性

ENABLE STORAGE IN ROW:如果设置了enable storage in row那么oracle会自动将小于4000bytes的数据存储在行内,这是ORACLE的默认值,对于大于4000字节的lob字段保存在lob段),在表段将保留36-84字节的控制信息。对于在行中禁用存储,Oracle将lob字段分开保存在lob段中,而仅仅在行位置保留20字节的指针。对于相当于禁用存储行的这部分(也就是单独保存在LOB段的这部分数据),UNDO仅仅是记录指针与相关高球索引改变,如果发生更新操作等DML操作,原始数据将保留在LOB段。

DISABLE STORAGE IN ROW :如果DISABLE这个属性,那么LOB数据会在行外存储,行内只存储该吊球值得指针,这个而且在属性表

创建³³后只能在MOVE表时才可以被改变

CHUNK:是一个很特别的属性,对一次LOB数据的操作(插入或更新),因该分配多少存储空间,指定的值最好是数据库块的倍数,而且指定的值不能 于表空间区间中NEXT的值,要不然ORACLE会返回一个错误,如果以前已经设置这个值了,那么在后期指定的值是不能被改变的。

存储为(CHUNK字节)表示在行对于禁用存储的这部分,最小的LOB块的大小,必须是数据库块(DB_BLOCK_SIZE)的整数倍。一个块最多只保留一行LOB数据,也就是说,如果你设置了32K的CHUNK,但是如果LOB字段大小只有4K,也将占用32K的空间

存储为(cache | nocahce)表示是否允许lob段经过buffer cache并缓存。默认是nocache,表示直接读与直接写,不经过数据库的data buffer。所以,默认情况下,对于单独保存在LOB段的这个部分数据,在发生物理读的时候,是直接读,如直接路径读取(lob)

存储为(nocache记录| nocache nologging),记录/ nologging属性只对nocache方式生效,默认是logging,如果是nologging方式,对于保存在行外的日志部分,在更新等DML操作时将不记录重做日志

。PCTVERSION integer,RETENTION:都是ORACLE用来管理LOB字段镜像数据的。在LOB数据的更新过程中,

ORACLE没有用UNDO TABLESPACE空间,而是从LOB字段所在的表空间里划分一段空间来做镜像空间的,

这个空间的大小由PCTVERSION参数控制,默认值为10,代表划分表空间的10%作为镜像空间,

每个镜像空间的单元大小由CHUNK参数指定,pctversion可以使用在手动撤消模式和自动撤消模式 环境中。

保留应用了自动撤销模式中的撤销通知通过时间来管理lob镜像空间。

pctversion和retention不能同时被指定。建议数据库在自动撤销模式下使用保留参数。

FREEPOOLS integer:给LOG段指定free list.RAC环境下整数为实例的个数。单实例环境下为1.在自动undo模式下oracle默认采用

FREEPOOLS来管理空闲块列表。除非我们在表的存储配置中指定了freelist groups参数。

CACHE | NOCACHE | CACHE READS:指定lob块是否在数据库缓冲区中缓存。

索引lobindexname(TABLESPACE tablesapce_name((STORAGE .....):给lob列指定索引存储参数

举例:

SQL> show parameter db_create_file_dest

SQL> create tablespace test datafile size 100M autoextend off;

SQL> create table test(a varchar2(100 ),b clob,d blob)pctfree 10 tablespace test;

SQL> desc test

SQL> SELECT segment_name,tablespace_name,segment_type FROM dba_segments WHERE tablespace_name ='TEST';

我们发现每个LOB字段单独有一个LOGSEGMENT和LOBINDEX;

SQL> set linesize 200

col table_name格式a5

col column_name格式a5

SELECT b.table_name,

a.segment_name,

b.index_name,

a.segment_type,

b.column_name,

a.tablespace_name,

b.chunk,

b.cache,

b.freepools,

b.pctversion,

b.retention

FROM dba_segments a,dba_lobs b

WHERE a.segment_name = b.segment_name

AND a.tablespace_name ='TEST'

/

SQL>

从上面的结果我们可以观察到LOB字段的各个属性。

下面我们对LOB字段移动到另一个表空间

SQL>创建表空间lob_test数据文件大小100M autoextend off;

SQL> ALTER TABLE TEST MOVE LOB(B)作为TEST_B 存储(

TABLESPACE lob_test

禁用存储在行

16384

RETENTION

FREEPOOLS 1

NOCACHE);

SQL> ALTER TABLE TEST MOVE LOB(D)STEST AS TEST_D(

TABLESPACE lob_test

DISABLE STORAGE IN ROW

CHUNK 16384

RETENTION

FREEPOOLS 1

NOCACHE);

SQL> SELECT segment_name,tablespace_name,segment_type FROM dba_segments WHERE tablespace_name ='TEST';

SQL> set linesize 200

col table_name format a5

col column_name format a5

SELECT b.table_name,

a.segment_name,

b.index_name,

a.segment_type,

b.column_name,

a.tablespace_name,

b.chunk,

b.cache,

b.freepools,

b.pctversion,

b.retention

FROM dba_segments a,dba_lobs b

WHERE a.segment_name = b.segment_name

AND a.tablespace_name ='LOB_TEST'

/ SQL>

在一些复杂情况下可能需要连接一起移植

alter table table_name move [tablespace_name] lob(lob_item)store as [lobsegmentname](tablespace tablespace_name .....);

移植分区中lob

alter table table_name move partition [partition_name] lob(lob_item)store as [logsegmentname](tablespace_name .....);

移植分区表

alter table table_name move partition [partition_name] tablespace_name lob(lob_item)store as [logsegmentname]( tablespace_name .....);

如果不需要修改lobsegmentname,可以同时移植多个列

alter table table_name move lob(lob_item1,lob_item2,lob_item3 ...)store as [lobsegmentname](tablespace tablespace_name .....);

LOB段也可以利用移动来重整数据,以下的语句会将表与lob字段移动到指定的表空间:

alter table table_name move [tablespace tbs_name]

lob(lob_field1,lob_field2)存储为(tablespace new_tbs_name);

如果LOB字段在分区表中,则增加partition关键字,如

alter table table_name move [partition partname] [tablespace tbs_name]

lob(field)store as(tablespace new_tbs_name) ;

在数据库中合理的存储LOB列,不仅可以提升性能,而且还可以有效的管理存储空间。

oracle修改用户表所属空间,Oracle修改用户表所属表空间的步骤相关推荐

  1. Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)

    一.创建用户及表空间 1.连接数据库 [root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus /nolog   #进入sqlplus ...

  2. Oracl数据库管理方面的资料(查询sga,查看oracle数据库名称sid,查看oracle数据库名称,查看表空间,修改表空间名称,数据库管理,sqlPlus数据显示)

    显示Oracle sga相关信息: SQL> show sga Total System Global Area 105978600 bytes Fixed Size 453352 bytes ...

  3. oracle 修索引改空间_oracle 修改索引现有表空间

    工作日记之<修改索引现有表空间> //dba_indexes可查询所有索引,以及索引部分信息,可以灵活运用于其他用途 //假设用户USER1现有表空间TS1.TS2,需要迁移其下所有表空间 ...

  4. oracle 如何修改表空间,ORACLE修改表空间方法

    1.使用imp/exp.先导出源库,再建立新库把表空间建立好,而后再导入.(听说这样能够,前提是新的库里面不能有与源库相同名字的表空间.有待验证!) 2.使用脚本进行修改.据目前所了解,正长状况下须要 ...

  5. oracle重新创建表空间,oracle 创建表空间,修改表空间,删除表空间

    //创建数据表空间 create tablespace test(表空间名字) logging --datafile 'D:\oracle\product\10.2.0\oradata\mzjx\mz ...

  6. oracle取消表空间自增长,oracle_创建表空间_临时表空间_修改表空间_以及自增长...

    管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...

  7. oracle创建表空间 扩展表空间文件 修改表空间自动增长

    1. 创建表空间 create tablespace SIRM2  datafile 'D:\oracle\product\10.2.0\oradata\orcl\SIRM2.dbf' size 10 ...

  8. 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间

    -建立表空间(oracle中的tablespace(表空间)) CREATE TABLESPACE data01 DATAFILE 'D:\oracle\ora92\oradata\db\DATA01 ...

  9. 如何创建oracle临时表空间,oracle_创建表空间_临时表空间_修改表空间_以及自增长...

    管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...

最新文章

  1. Google最新论文:Youtube视频推荐如何做多目标排序
  2. 话里话外:“按单制造”的业务特点(二)
  3. 练习二十一:关于猴子吃桃的问题
  4. WSUS 转发邮件中继到Office365
  5. [leedcode 215] Kth Largest Element in an Array
  6. 通俗理解协方差与相关系数
  7. spring邮件发送(转)
  8. java 解压ygb文件_文件系统-目录项缓存与散列表
  9. C++递归算法经典实例详解
  10. 基于树莓派的Data Matrix decode
  11. RGB颜色查询对照表
  12. 平方符号在python中的作用_python平方符号
  13. JS 数据容量转换/换算
  14. SSH免密失败并报错:no mutual signature algorithm
  15. 360浏览器浏览网页字体模糊的解决方法
  16. 如何使用WordPress推送通知和智能通知插件
  17. Xilinx-ZYNQ7000系列-学习笔记(1):用XADC测外部温度值
  18. java rollback_Java Connection.rollback()方法:事务回滚
  19. 【AList】网盘聚合神器,打造灵活的私人云存储
  20. 通信原理(5)—— 数字带通传输系统(ASK/FSK/PSK/DPSK)

热门文章

  1. lammps案例:空位形成能的模拟与计算
  2. K 个一组翻转链表(递归,Kotlin)
  3. [源码和文档分享]基于Android Studio实现的学生蹭课APP
  4. 卫星位置计算的c语言,C语言-详细计算GPS卫星位置.doc
  5. 从苏宁电器到卡巴斯基第11篇:我在苏宁电器当营业员 II
  6. 安卓手机解压缩软件哪个好用
  7. 三星java手机播放器下载_三星S3930C如何安装从电脑上下载java的方法总结
  8. SAP ABAP OOALV常用的方法
  9. DNS BIND 搭建域名智能解析DNS服务器之IP地址归类(ACL)
  10. EMIS快速开发平台 - 微服务版技术选型