电脑技术:Oracle10g数据文件的收缩与数据对象跨表空间的迁移

时间:2022年12月15日

/

来源:被嫌弃的松子

/

编辑:本站小编

收藏本文

下载本文

以下是小编为大家准备了电脑技术:Oracle10g数据文件的收缩与数据对象跨表空间的迁移,本文共3篇,欢迎参阅。本文原稿由网友“被嫌弃的松子”提供。

篇1:电脑技术:Oracle10g数据文件的收缩与数据对象跨表空间的迁移

1.Oracle10g数据库文件的收缩:

1.1 问题:

一个数据库里面有上百万条数据,使用Delete语句删除大部分数据后,数据库文件所占空间并不会缩小释放多余的空间,

如使用RESIZE语句对数据文件大小做调整,如下:

>ALTER DATABASE DATAFILE 'D:/Oracle10g/oradata/ORDB/NEWDB.ORA' RESIZE 100M;

则会报一个错误:ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据。

这主要涉及到Oracle的逻辑存储和段空间管理以及数据库块中的数据分布。

Oralce有一个High Water Mark(高水位线),它表示Oracle对象使用空间最高水位线。

当插入了数据以后,HWM就会上涨;Delete语句删除数据后,HWH并没有降低。

HWH数据库块分布在调整范围之外,此时使用RESIZE命令会报错。

1.2 方法:

网上查到资料说通过Move Tablespace移动表和索引后,可以重置表的HWH,然后再使用Resize就可以缩减数据库文件。

但我在Oracle10g中尝试多次,都没有成功。另外,数据库如果有Long型的字段,是不能使用Move命令的。

好在是Oracle10g,有shrink! :)

Shrink的语法如下:

--------------------

alter table shrink space [ | compact | cascade ];

alter table shrink space compcat;

说明:收缩表,移动块中数据位置到一起,但 High Water Mark 保持不变

alter table shrink space;

说明:收缩表,降低 High Water Mark

alter table shrink space cascade;

说明:收缩表,降低 High Water Mark,并且把相关索引也收缩一下。

alter index idxname shrink space;

说明:回缩索引

--------------------

1.3 操作:

对所有表空间中的所有表执行一次shrink命令,需要根据shrink语法,构造shrink命令。

此时,为了构建shrink命令,可以使用如下SQL语句来查询表空间数据库文件的File_ID:

---------------------

select * from dba_data_files;

---------------------

另外,在执行shrink前,必须开启数据表的行迁移功能,SQL语句如下:

---------------------

alter table Tbl_Name enable row movement;

---------------------

注意:该SQL语句会造成引用表Tbl_Name的对象(如存储过程、包、视图等)变为无效,后续需要重新编译一次确认是否有效。

构造shrink命令,建立create_shrink.sql文件,其内容如下:

-------------------

set heading off;

set echo off;

set feedback off;

set termout on;

spool c:/shrink.sql;

select 'alter table THAMS.'|| table_name || ' enable row movement; ' from user_tables where tablespace_name='THAMS';

select 'alter table THAMS.'|| table_name || ' shrink space CASCADE;' from user_tables where tablespace_name='THAMS';

select 'alter index THAMS.'|| segment_name || ' shrink space;' from dba_extents where segment_type='INDEX' and file_id=14;

spool off;

-------------------

以表空间的默认用户THAMS登录数据库,成功执行create_shrink.sql后,得到shrink.sql文件。

以sys/system身份登录数据库,执行shrink.sql文件后,在OEMC中查看表空间,会发现数据库表空间的“已使用”比例大大下降。

此时,再经过EXP/IMP后,会得到一个占用空间很小的数据库文件。

2.Oracle10g数据跨表空间迁移

资料上说,可以通过Move Tablespace来改变HWH,从而完成Resize Datafile.但是我在Oracle10g中试验没有成功。

但是通过Move可以把数据对象做到跨表空间的迁移,尤其对BLOB、CLOB这样的二进制大字段。

需要注意:Move命令不支持Long型字段。

2.1 可能用到的Oracle SQL语句:

--查找数据库文件对应的File_ID

select * from dba_data_files;

--查询当前表空间中的所有表

select distinct segment_name from dba_extents where segment_type='TABLE' and file_id=14;

--查询当前表空间中的所有索引

select distinct segment_name from dba_extents where segment_type='INDEX' and file_id=14;

--如果有分区表,则查询当前表空间中的所有的分区表

select distinct segment_name from dba_extents where segment_type='TABLE PARTITION' and file_id=14;

--查询当前表空间中的所有分区表的索引

select distinct segment_name from dba_extents where segment_type='INDEX PARTITION' and file_id=14;

--移动表到指定表空间

alter table Tbl_Name move tablespace New_TableSpaceName;

--重建表的索引

alter index Index_Name rebuild tablespace New_TableSpaceName;

--移动BLOB、CLOB的字段到指定表空间

alter table Tbl_Name move lob(BLOB1,BLOB2,BLOB3,……) store as (tablespace New_TableSpaceName);

--移动BLOB、CLOB的字段语法

--alter table table_name move [tablespace tbs_name] lob(lob_field1,lob_field2) store as (tablespace new_tbs_name);

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

--alter table table_name move [partition partname] [tablespace tbs_name] lob(field) store as (tablespace new_tbs_name);

2.2 执行Oracle数据对象迁移操作:

根据上面所列的SQL语句,构造数据对象跨表空间的move命令语句,把数据对象从THAMS表空间迁移至NEWSPACE.注意,NEWSPACE需要在操作前建好,

2.2.1 构造移动表的move命令,建立create_move_table.sql文件,其内容如下:

-------------------

alter tablespace THAMS coalesce;

set heading off;

set echo off;

set feedback off;

set termout on;

spool c:/move_table.sql;

--移动表

select distinct 'alter table THAMS.'|| segment_name || ' move tablespace NEWSPACE;' from dba_extents where segment_type='TABLE' and file_id=14;

--移动索引

select distinct 'alter index THAMS.'|| segment_name || ' rebuild tablespace NEWSPACE;' from dba_extents where segment_type='INDEX' and file_id=14;

--如果有分区表则需要移动分区表和分区表索引

--移动分区表

--select distinct 'alter table '|| segment_name || ' move partition '|| partition_name || ' tablespace NEWSPACE;' from dba_extents where segment_type='TABLE PARTITION' and file_id=14;

--移动分区索引

--select distinct 'alter index '|| segment_name || ' rebuild partition '|| partition_name || ' tablespace NEWSPACE;' from dba_extents where segment_type='INDEX PARTITION' and file_id=14;

spool off;

-------------------

以sys/system身份登录数据库,成功执行create_move_table.sql后,得到move_table.sql文件。

2.2.2 构造移动BLOB、CLOB字段的move命令,建立create_move_blob.sql文件,其内容如下:

-------------------

set heading off;

set echo off;

set feedback off;

set termout on;

spool c:/move_blob.sql;

--移动BLOB字段

select 'alter table THAMS.'|| TABLE_NAME || ' move lob('|| COLUMN_NAME||') store as (tablespace NEWSPACE);' from user_tab_columns where DATA_TYPE='BLOB';

spool off;

-------------------

以表空间的默认用户THAMS登录数据库,成功执行create_move_blob.sql后,得到move_blob.sql;文件。

2.2.3 执行跨表空间数据迁移

以sys/system身份登录数据库,分布执行create_move_table.sql文件和create_move_blob.sql文件文件。

完成Oracle数据跨表空间的迁移。此时可以把名字是THAMS的表空间删除。

2.2.3 在执行*.sql时,均可在最前面加上如下命令:

-------------------

set echo off;

篇2:oracle对象的表空间迁移

。。

5,-编译无效对象

set heading off

set pagesize 1000

set linesize 200

set verify off

set echo off

select

decode( OBJECT_TYPE, 'PACKAGE BODY',

'alter package ' || OWNER||'.'||OBJECT_NAME || ' compile body;',

'alter ' || OBJECT_TYPE || ' ' || OWNER||'.'||OBJECT_NAME || ' compile;' )

from

dba_objects

where

STATUS = 'INVALID' and

OBJECT_TYPE in ( 'PACKAGE BODY', 'PACKAGE', 'FUNCTION', 'PROCEDURE',

'TRIGGER', 'VIEW' )

order by

OBJECT_TYPE,

OBJECT_NAME;

alter PROCEDURE USER.SP_TEMP_RESCORE_BATCH_RESUME compile;

作者 hijk139

篇3:浅谈跨存储数据迁移技术与实现论文

浅谈跨存储数据迁移技术与实现论文

1 数据迁移技术

数据迁移方法,要根据具体的存储设备类型、系统软硬件架构、系统数据类型等特点,选择合理、高效、便捷的技术,实现一种或多种技术并用、混用,才能有效地确保业务的连续,减少停机时间,可靠安全地进行数据迁移。目前,业界通用的数据迁移技术实现大致分为如下几类。

1. 1 基于存储的迁移方法

基于存储的迁移特点是基于存储系统的虚拟化技术或存储管理技术,有3 种方法实现:存储阵列内部数据复制,是利用存储阵列内置数据复制软件,将源数据卷复制到目标数据卷,如clone。存储阵列间的数据复制,可基于存储管理系统的远程复制技术不消耗服务器资源,并且可根据阵列io 对主应用的影响,来调整数据复制的速度,但条件有所限制,必须在同种品牌厂商存储设备间进行,如EMC 的VMAX 系列设备同DMX 系列设备间可使用cold push 方式和hot push 方式,利用存储设备具备的数据复制迁移功能进行数据迁移; 或是基于主机操作系统,利用专业的存储复制迁移工具软件,将不同存储连接至同一台主机,实现阵列到阵列的数据复制,但是会耗费一定的系资源,因此要根据应用场景,调整数据复制的速度。利用虚拟化存储技术,将虚拟化设备融合进SAN 架构的存储系统,实现存储设备统一封装,可以很方便地将数据从源端迁移至目的地,并可兼容主流存储设备、支持不同厂商或品牌存储系统间的数据迁移和容灾、适合于频繁的数据迁移,某些业务场景,可实现跨物理存储数据迁移而业务无需中断,但是需要配置专有的虚拟化设备如EMC 的Vplex,或具备虚拟化功能的存储阵列。

1. 2 基于主机操作系统命令的迁移方法

基于主机操作系统命令迁移的特点是数据迁移操作的发起和控制均发生在主服务器端,支持联机迁移,可在不同存储系统间进行,但对主机性能有一定影响,影响承载业务的响应效率,适合于主机存储的非经常性迁移,并且必须根据实际情况评估系统负荷的可行性。

有两种实现方法: 一种是对采用逻辑卷管理器管理的系统通过逻辑卷数据镜像实现数据迁移,但目标卷可添加至原卷缩在的卷组中,有些卷组属性参数支持物理卷数量有限,有一定局限性; 另一种是利用操作系统拷贝( 复制) 命令,如在Unix 系统上使用命令cp、dd、tar 等命令来实现数据复制、lv 复制、文件打包迁移等操作,或在Windows 系统使用图形界面拷贝或copy命令灵活地进行,但需要进行脱机处理。

1. 3 基于备份管理软件的迁移方法

基于备份管理软件迁移的特点是利用备份管理软件将数据备份到物理或虚拟带库,再恢复到新的存储设备中。如采用在线备份,数据迁移过程对服务器业务影响相对较小,但在备份时间点与切换时间点之间源数据因联机操作所造成的数据变化,需要通过手动方式进行同步如数据库备份工具DSG; 如采用离线备份,必须停止服务器业务,在数据恢复成功后再恢复业务运行。备份管理软件可使用存储系统自带软件,第三方备份工具如EMC network。由于选择备份方式不同,数据迁移所耗费的.实践会有较大的差异。

1. 4 基于专有应用软件的迁移方法

采用应用软件本身的迁移工具、或第三方支持的迁移工具来实现数据迁移,这种方法依赖于应用软件自身的机制,与主机、存储种类关系不大,可实现实时复制、定时复制、静态复制或数据转储。如Oracle 自带的工具DataGuard 或动态复制工具goldenGate。一般情况下存储系统上都有多种应用系统,因此,数据迁移大多采用多种工具及技术并用来实现存储系统的数据迁移。

2 陕西联通综合联机系统数据迁移

根据陕西联通综合联机系统存储现状,运用不同的存储迁移技术,制定数据迁移方案,实现非正常环境下,跨存储数据迁移。

2. 1 陕西联通综合联机系统现状

陕西联通于2009 年建立综合联机系统,利用两台IBMP570 小型机,利用DMX2000 存储,利用HA 软件构建双机互备份群集环境,采用SAN 架构搭建,如图1 所示。由于设备老旧故障频发,于2015 年购买IBM P740 小型机及EMC VMAX10K存储来替换上述设备。本次迁移面临的困难: DMX2000 与Vmax10K 存储位于不同的San 交换机上,需要跨不同的SAN网络进行数据迁移。ED140 交换机有故障,无法进行配置更改,无法与ED4800 交换机进行连接,配置链路。DMX2000有前端和后端板卡故障,无法进行change bin 操作,不能与VMAX10K 存储建立链路连接,不能使用EMC 存储使用的coldpush 方式和hot push 方式进行数据迁移。迁移系统时间不超过6 h。

2. 2 数据迁移方案

在上述硬件环境下,确定迁移方案,分为两个步骤进行: 首先进行操作系统层面数据迁移,然后利用存储Clone 技术,存储内部再进行数据迁移,实现主机和存储的同时替换。

现有主机各有一块空闲HBA 卡,连接至SAN 48K 交换机,VMAX10K 1F0 和3F0 端口连接到SAN 48K 交换机上,使主机可以访问VMAX10K 上的磁盘,利用OM 软件进行源主机VG数据复制; 然后将复制好数据的磁盘,作为clone 数据源盘,创建对应的Clone 关系,将clone 目标盘分配给新主机,运用全量与增量clone 技术,完成在线实时迁移。利用上述技术,可进行多次数据复制,可在新主机环境中进行多次应用测试,最终的业务割接测试时间很短,30 min 用于启停应用,30 min 可完成数据同步,业务割接1 h 完成。迁移工作全部完成后,拆除虚线链路。

2. 3 系统回退方案

由于前期数据已经进行全量数据迁移,并进行了业务测试,正式割接过程,仅仅适用于追平数据的实践差,数据跨存储迁移无需回退。

2. 4 数据完整性验证方案

数据完整性、一致性验证重点放在小型机系统数据迁移应用侧数据,由于前期测试阶段,首先进行了全量数据同步后的应用验证及数据一致性检测,和多次增量clone 后,应用验证及数据一致性检测。此方案将大量的检查验证工作在正式割接前进行,有充足的实践做全面的检测和一致性检查,因而正式割接仅仅是数据增量,无任何风险。

3 结语

跨存储数据迁移涉及存储系统、操作系统、应用系统、数据迁移软件及相关数据复制,要求迁移方案数据调度逻辑合理、各个环节迁移技术选择得当、完整性与一致性验证工作充分,必须要根据存储及各自系统的特点制订切合实际的迁移方案、实施策略,而某种单一的数据迁移技术往往无法胜任某种特殊环境。本文通过存储系统数据迁移技术的探讨,通过对陕西联通跨存储数据迁移这一非正常环境实践案例进行详细说明,为企业数据迁移提供借鉴经验。

下载电脑技术:Oracle10g数据文件的收缩与数据对象跨表空间的迁移(精选3篇)
电脑技术:Oracle10g数据文件的收缩与数据对象跨表空间的迁移.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
最新范文更多
    热门文章
      猜你喜欢
      点击下载本文文档