移动LOB字段至新表空间

移动LOB字段至新表空间[@more@]

移动LOB字段至新表空间

(导出、导入时同分区表一样,必须预创建此表空间)
alter table t move lob(c2) store as (tablespace users);
alter table test move tablespace users lob(c2) store as (tablespace users);
如果原表使用了long类型字段,则必须先转成clob或blob类型。Long类型不单独使用segments,而lob类型单独使用segments.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/509190/viewspace-825743/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/509190/viewspace-825743/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 PL/SQL 中,备份带有 long raw 字段类型的表可以通过以下步骤完成: 1. 确定表中包含 long raw 字段的列名。 2. 使用 UTL_FILE 包将表数据导出到文件中,命令如下: ``` DECLARE v_fileHandle UTL_FILE.FILE_TYPE; v_fileName VARCHAR2(100) := '表数据文件名'; v_separator VARCHAR2(10) := ','; v_long_raw_len NUMBER := 32767; -- long raw 字段长度 v_buffer RAW(v_long_raw_len); v_offset NUMBER; v_amount BINARY_INTEGER; BEGIN v_fileHandle := UTL_FILE.FOPEN('导出文件目录', v_fileName, 'w', 32767); FOR rec IN (SELECT * FROM 表名) LOOP UTL_FILE.PUT_LINE(v_fileHandle, rec.列名1 || v_separator || rec.列名2 || v_separator || ...); v_offset := 1; v_amount := v_long_raw_len; LOOP SELECT DBMS_LOB.SUBSTR(列名3, v_amount, v_offset) INTO v_buffer FROM 表名 WHERE 主键 = rec.主键; UTL_FILE.PUT_RAW(v_fileHandle, v_buffer); v_offset := v_offset + v_amount; IF v_amount > DBMS_LOB.GETLENGTH(列名3) - v_offset + 1 THEN v_amount := DBMS_LOB.GETLENGTH(列名3) - v_offset + 1; END IF; EXIT WHEN v_amount = 0; END LOOP; END LOOP; UTL_FILE.FCLOSE(v_fileHandle); END; ``` 其中,`表数据文件名`是导出的表数据文件名,`导出文件目录`是文件存放的目录,`列名1`、`列名2`、`列名3`等是表中的列名,`主键`是表中的主键列名,`32767`是 long raw 字段的长度限制。 3. 在恢复之前,需要先手动创建表。可以使用如下命令: ``` create table 表名(列定义); ``` 4. 在表中插入数据。如果表中有 long raw 类型的列,需要使用如下命令: ``` insert into 表名(列名) values (empty_blob()); ``` 然后,使用如下命令将 long raw 类型数据插入到表中: ``` DECLARE v_fileHandle UTL_FILE.FILE_TYPE; v_fileName VARCHAR2(100) := '表数据文件名'; v_separator VARCHAR2(10) := ','; v_long_raw_len NUMBER := 32767; -- long raw 字段长度 v_buffer RAW(v_long_raw_len); v_offset NUMBER; v_amount BINARY_INTEGER; BEGIN v_fileHandle := UTL_FILE.FOPEN('导出文件目录', v_fileName, 'r', 32767); LOOP UTL_FILE.GET_LINE(v_fileHandle, v_buffer); EXIT WHEN v_buffer IS NULL; v_offset := 1; v_amount := v_long_raw_len; LOOP UTL_FILE.GET_RAW(v_fileHandle, v_buffer, v_amount); UPDATE 表名 SET 列名3 = 列名3 || v_buffer WHERE 主键 = 主键值; v_offset := v_offset + v_amount; EXIT WHEN v_amount = 0; END LOOP; END LOOP; UTL_FILE.FCLOSE(v_fileHandle); END; ``` 其中,`表数据文件名`是导出的表数据文件名,`导出文件目录`是文件存放的目录,`列名3`是 long raw 类型的列名,`主键`和 `主键值` 分别是表中的主键列名和主键值。 通过以上步骤,可以备份和恢复带有 long raw 字段类型的表。注意,在执行过程中需要根据实际情况修改命令中的表名、列名、主键列名等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值