Oracle LOB字段移动.docxVIP

  • 7
  • 0
  • 约5.54千字
  • 约 5页
  • 2018-01-02 发布于河南
  • 举报
Oracle LOB字段移动

ORACLE修改表空间方法 一、使用imp/exp。先导出源库,再创建新库把表空间创建好,然后再导入。(据说这样可以,前提是新的库里面不能有与源库相同名字的表空间。有待验证!) 二、使用脚本进行修改。据目前所了解,正常情况下需要修改表的空间和表的索引的空间,如果涉及到BOLB字段的表,修改的方式又不一样了! 正常情况下的修改脚本: 1.修改表的空间 alter table TABLE_NAME move tablespace TABLESPACENAME 查询当前用户下的所有表 select alter table || table_name || move tablespace tablespacename; from user_all_tables; 2.修改表的索引的空间 alter index INDEX_NAME rebuild tablespace TABLESPACENAME 查询当前用户下的所有索引 select alter index || index_name || rebuild tablespace tablespacename; from user_indexes; 可以使用脚本执行查询的结果,这样就可以批量处理! SQL Script:查看表空间管理类型 select tablespace_name,block_size,extent_management,segment_space_management,min_extents from dba_tablespaces; .将数据字典管理转变为本地管理 execute dbms_space_admin.tablespace_migrate_to_local(‘tbsdata’); 4.将本地管理转变为数据字典管理 execute dbms_space_admin.tablespace_migrate_from_local(‘tbsdata’); 不正常情况即含有BLOB字段的表: 在移植看注意研究了下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段(同disable storage in row),在表段将保留36-84字节的控制信息。对于disable storage in row,Oracle将lob字段分开保存在lob段中,而仅仅在行位置保留20字节的指针。对于相当于disable storage in row的这部分(也就是单独保存在LOB段的这部分数据),UNDO仅仅是记录指针与相关lob索引改变,如果发生更新操作等DML操作,原始数据将保留在LOB段。 DISABLE STORAGE IN ROW:如果DISABLE这个属性,那么lob数据会在行外存储,行内只存储该lob值得指针,而且这个属性在表 创建后只能在MOVE表时才可以被改变 CHUNK:是一个很特别的属性,对一次LOB数据的操作(插入或更新),因该分配多少存储空间,指定的值最好是数据库块的倍数,而且指定的值不能大于表空间区间中NEXT的值, 要不然ORACLE会return一个错误,如果以前已经设置这个值了,那么在后期指定的值是不能被改变的。 storage a

文档评论(0)

1亿VIP精品文档

相关文档