如何正确Move Table,利用PLSQL可以批量处理
来源:互联网 发布:新浪微博刷评论软件 编辑:程序博客网 时间:2024/06/01 22:40
如何将一个表从一个表空间迁移到另外一个表空间。
操作步骤:
1、评估迁移表占用空间大小以及新的表空间可用空间情况。
2、直接将表或者分区Move到新的表空间
3、设置表的tablespace属性为默认的新的表空间,确保新增分区能在新的表空间。
4、设置表的索引的存储属性表空间为对应的新的表空间(可选,根据具体情况处理)。
5、重建分区索引,全局索引
实际语法比较简单,对于批量方式,以下给出几个过程,用于批量处理:
--Move 分区表create or replace procedure p_mv_tabpart(pv_tname in varchar2, pv_destTS in varchar2) is sqlStmnt varchar2(1024); cursor pCur(vTname varchar2, vTspName varchar2) is select table_name, partition_name from user_tab_partitions where table_name = vTname and tablespace_name not like vTspName order by partition_position desc;begin for pRow in pCur(pv_tname, pv_destTS) loop sqlStmnt := 'alter table ' || pRow.table_name || ' move partition ' || pRow.partition_name || ' tablespace ' || pv_destTS; execute immediate sqlStmnt; end loop;end p_mv_tabpart;--设置表的tablespace 属性create or replace procedure p_set_attr_tab_ts(pv_tname in varchar2, pv_destTS in varchar2) is sqlStmnt varchar2(1024); cursor tCur(vTname varchar2) is select table_name from user_part_tables where table_name = vTname;begin for tRow in tCur(pv_tname) loop sqlStmnt := 'alter table ' || tRow.table_name || ' modify default attributes ' || ' tablespace ' || pv_destTS; execute immediate sqlStmnt; end loop;end p_set_attr_tab_ts;--设置索引的tablespace 属性create or replace procedure p_set_attr_idx_ts(pv_tname in varchar2, pv_destTS in varchar2) is sqlStmnt varchar2(1024); cursor iCur(vTname varchar2) is select index_name from user_part_indexes where index_name in (select index_name from user_indexes where table_name = vTname);begin for iRow in iCur(pv_tname) loop sqlStmnt := 'pv_tname index ' || iRow.index_name || ' modify default attributes ' || ' tablespace ' || pv_destTS; execute immediate sqlStmnt; end loop;end p_set_attr_idx_ts;--重建分区索引create or replace procedure p_mv_rb_part_idx(pv_tname in varchar2, pv_destTS in varchar2) is sqlStmnt varchar2(1024); cursor ndxCur(vTname varchar2, vTspName varchar2) is select i.index_name index_name, ip.partition_name partition_name from user_ind_partitions ip, user_indexes i where i.index_name = ip.index_name and i.table_name = vTname and i.partitioned = 'YES' and (ip.tablespace_name not like vTspName or ip.status not like 'USABLE') order by index_name, partition_name;begin for ndxRow in ndxCur(pv_tname, pv_destTS) loop sqlStmnt := 'alter index ' || ndxRow.index_name || ' rebuild partition ' || ndxRow.partition_name || ' tablespace ' || pv_destTS; execute immediate sqlStmnt; end loop;end p_mv_rb_part_idx;--重建全局索引create or replace procedure p_mv_rb_global_idx(pv_tname in varchar2, pv_destTS in varchar2) is sqlStmnt varchar2(1024); cursor ndxCur(vTname varchar2, vTspName varchar2) is select index_name from user_indexes where table_name = vTname and partitioned = 'NO' and (tablespace_name not like vTspName or status like 'UNUSABLE') order by index_name;begin for ndxRow in ndxCur(pv_tname, pv_destTS) loop sqlStmnt := 'alter index ' || ndxRow.index_name || ' rebuild tablespace ' || pv_destTS; execute immediate sqlStmnt; end loop;end p_mv_rb_global_idx;
0 0
- 如何正确Move Table,利用PLSQL可以批量处理
- selenium 如何处理table
- selenium 如何处理table .
- selenium 如何处理table
- Alter table move compress是如何工作的?
- 利用JDBC批量处理语句
- plsql返回记录集的方法利用table
- Html-如何正确给table加边框
- HTML-如何正确给table加边框
- (精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,正确备份数据库)
- (精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,正确还原数据库)
- move table and purge table
- alter table ** move;
- move table,index
- 关于alter table move
- PLsql如何正确连接非本地Oracle数据库
- 如何正确进行异常处理
- WedDriver中 如何处理table
- 京东商城刘强东:B2C业2012年一定会出事
- jquery插件jtip的适用修改
- jQuery.extend 函数详解
- 设置默认编码方式 &不同编码方式的区别
- switch接受的参数类型
- 如何正确Move Table,利用PLSQL可以批量处理
- LZW压缩算法js版
- JS写的AJAX调用
- 使用vs2008制作dll文件,生成动态链接库
- Android开机画面的修改
- easyui ajax方式与后台servlet交互原理
- poj3261Milk Patterns 二分+后缀数组
- SQL开发--树形层次累计求和案例
- HDU 3790 最短路径问题