Oracle表空间整合例子

合集下载

ORACLE临时表空间总结

ORACLE临时表空间总结

ORACLE临时表空间总结临时表空间概念临时表空间⽤来管理数据库排序操作以及⽤于存储临时表、中间排序结果等临时对象,当ORACLE⾥需要⽤到SORT的时候,并且当PGA中sort_area_size⼤⼩不够时,将会把数据放⼊临时表空间⾥进⾏排序。

像数据库中⼀些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会⽤到临时表空间。

当操作完成后,系统会⾃动清理临时表空间中的临时对象,⾃动释放临时段。

这⾥的释放只是标记为空闲、可以重⽤,其实实质占⽤的磁盘空间并没有真正释放。

这也是临时表空间有时会不断增⼤的原因。

临时表空间存储⼤规模排序操作(⼩规模排序操作会直接在RAM⾥完成,⼤规模排序才需要磁盘排序Disk Sort)和散列操作的中间结果.它跟永久表空间不同的地⽅在于它由临时数据⽂件(temporary files)组成的,⽽不是永久数据⽂件(datafiles)。

临时表空间不会存储永久类型的对象,所以它不会也不需要备份。

另外,对临时数据⽂件的操作不产⽣redo⽇志,不过会⽣成undo⽇志。

创建临时表空间或临时表空间添加临时数据⽂件时,即使临时数据⽂件很⼤,添加过程也相当快。

这是因为ORACLE的临时数据⽂件是⼀类特殊的数据⽂件:稀疏⽂件(Sparse File),当临时表空间⽂件创建时,它只会写⼊⽂件头部和最后块信息(only writes to the header and last block of the file)。

它的空间是延后分配的.这就是你创建临时表空间或给临时表空间添加数据⽂件飞快的原因。

另外,临时表空间是NOLOGGING模式以及它不保存永久类型对象,因此即使数据库损毁,做Recovery也不需要恢复Temporary Tablespace。

【总结】Oracle数据库查看表空间和增加表空间

【总结】Oracle数据库查看表空间和增加表空间

【总结】Oracle数据库查看表空间和增加表空间⼀、Oracle查看表空间的名称及其⼤⼩查看表空间的名称及其⼤⼩的SQL语句:select t1.tablespace_name,round(sum(bytes/(1024*1024)),0) tablespace_Size_MBfrom dba_tablespaces t1, dba_data_files t2where t1.tablespace_name = t2.tablespace_namegroup by t1.tablespace_name;查询结果:TABLESPACE_NAME TABLESPACE_SIZE_MB------------------------------ ------------------DLOTTEY 276480SYSAUX 48450UNDOTBS1 20000INDEXMT 10240USERS 1041SYSTEM 10240UNDOTBS2 20000MMLOTTERY 2150408 rows selected.⼆、Oracle查看表空间的具体使⽤情况⽅法1:(未排序)select a.tablespace_name "tablespace_name",totalspace "totalspaceM",freespace "freespaceM",round((1-freespace/totalspace)*100,2) "round%"from(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) a,(select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) bwhere a.tablespace_name=b.tablespace_name;查询结果:tablespace_name totalspaceM freespaceM round%------------------------ ----------- ---------- ----------DLOTTEY 276480 232415 15.94SYSAUX 48450 9683 80.01UNDOTBS1 20000 19741 1.3INDEXMT 10240 10024 2.11USERS 1041 138 86.74SYSTEM 10240 4344 57.58UNDOTBS2 20000 19601 2MMLOTTERY 215040 36279 83.138 rows selected.⽅法⼆:(查询结果排序) select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"from(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) bwhere a.tablespace_name=b.tablespace_nameorder by ((a.bytes-b.bytes)/a.bytes) desc;查询结果:TABLESPACE_NAME Sum MB used MB free MB percent_used---------------------- ---------- ---------- ---------- ------------USERS 1041.25 903.375 137.875 86.76MMLOTTERY 215040 178761 36279 83.13SYSAUX 48450 38767 9683 80.01SYSTEM 10240 5896.125 4343.875 57.58DLOTTEY 276480 44065.4375 232414.563 15.94INDEXMT 10240 215.625 10024.375 2.11UNDOTBS2 20000 399.3125 19600.6875 2UNDOTBS1 20000 257.5 19742.5 1.298 rows selected.三、Oracle查看表空间物理⽂件的名称及⼤⼩set lines 150;col tablespace_name for a20;col file_name for a60;1、查询所有的表空间SQL语句:select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space_MBfrom dba_data_filesorder by tablespace_name;2、查询指定的表空间SQL语句:select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space_MBfrom dba_data_fileswhere tablespace_name = 'MMLOTTERY'order by tablespace_name;查询结果:TABLESPACE_NAME FILE_ID FILE_NAME TOTAL_SPACE_MB------------------- ---------- ------------------------------------------- --------------MMLOTTERY 18 +DATA/ora11g/datafile/mmlottery01.dbf 30720MMLOTTERY 19 +DATA/ora11g/datafile/mmlottery02.dbf 30720MMLOTTERY 20 +DATA/ora11g/datafile/mmlottery03.dbf 30720MMLOTTERY 22 +DATA/ora11g/datafile/mmlottery04.dbf 30720MMLOTTERY 23 +DATA/ora11g/datafile/mmlottery05.dbf 30720MMLOTTERY 26 +DATA/ora11g/datafile/mmlottery06.dbf 30720MMLOTTERY 27 +DATA/ora11g/datafile/mmlottery07.dbf 307207 rows selected.四、Oracle查看表真实占⽤的空间SQL语句:select t.owner,t.segment_name,t.segment_type,sum(t.bytes/1024/1024) used_MBfrom dba_segments twhere owner = 'MMLOTTERY'group by owner,segment_name,segment_typeorder by used_MB desc;查询结果:OWNER SEGMENT_NAME SEGMENT_TYPE USED_MB------------------- -------------------------------- ------------------ ----------MMLOTTERY TB_ORIGINAL_ORDERDETAILS TABLE 1792MMLOTTERY TB_LOTTERY_SALEDETAIL TABLE 1472MMLOTTERY TB_LOTTERYSCHEMEINFO_ADD TABLE 1280MMLOTTERY TEST_007 TABLE 1152MMLOTTERY TB_ACCOUNT_OPERATE_DETAIL TABLE 808MMLOTTERY PK14 INDEX 377MMLOTTERY PK14_11 INDEX 312MMLOTTERY PK14_13 INDEX 200MMLOTTERY PK14_12 INDEX 160MMLOTTERY TB_BONUS_ORDERDETAILS TABLE 160MMLOTTERY TB_WINBONUS_DETAIL TABLE 14411 rows selected.五、Oracle 增加表空间语法:alter tablespace {表空间名字} add datafile '物理数据⽂件路径' SIZE 『初始⼤⼩M』 AUTOEXTEND ON NEXT 『⾃动扩展⼤⼩M』例⼦:alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;注意:如果添加表空间的⽂件名重复,那么会报错,如下:SQL> alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m*ERROR at line 1:ORA-01537: cannot add file'+DATA/ora11g/datafile/mmlottery08.dbf' - file already part of database若 datafile 加错到表空间,则执⾏删除操作。

Oracle表连接操作——Merge Sort Join(合并排序连接)

Oracle表连接操作——Merge Sort Join(合并排序连接)

Oracle表连接操作——Merge Sort Join(合并排序连接)关系型数据库并不是最早出现的数据库表现形式,之前还存在层次、网状数据库结构。

随着关系型数据库的出现,以数据表的方式进行信息留存的方案迅速发展起来。

关系型数据库的重要元素包括数据表和表连接,借助各种类型的表连接,可以将平铺直叙的信息加以组装拼接。

1、Merge Sort Join原理机制Nest Loop Join嵌套循环是一种比较古老的连接匹配方式,特点是通过两层的循环结构,将符合条件的数据行整理出来。

嵌套循环的最大缺陷之一,就是伴随着驱动表被驱动表之间的选择,以及大量随机读现象。

Merge Sort Join连接的优势就是可以一定程度上减少随机读的情况。

合并排序连接的最大特征是在一次扫描的同时,就判断连接。

不会像Nest Loop Join那样频繁的进行数据读取。

使用这种方式的前提,就是连接的两个数据集合必须按照连接列的顺序进行排序。

具体操作流程如下:✓∙∙∙∙∙∙∙对Merge Sort Join连接而言,不存在驱动表和被驱动表的问题。

两边的数据集合没有顺序区别,都要进行排序操作;✓∙∙∙∙∙∙∙根据Oracle排序规则和方法,按照连接列的顺序对两个数据集合进行排序;✓∙∙∙∙∙∙∙依次对两边的数据集合进行扫描,由于已经是排序过得结果,可以直接确定连接条件是否匹配;✓∙∙∙∙∙∙∙确定进行连接的两端数据行,再依据筛选列的要求获取数据;下面是一个进行Merge Sort Join的执行计划://使用Merge Sort Join方法SQL>select /*+use_merge(segs,tabs)*/* from segs, tabs where segs.segment_name=tabs.table_name;已选择865行。

执行计划----------------------------------------------------------Plan hash value: 3475644097------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 990 | 354K| | 144 (2)| 00:00:02 || 1 | MERGE JOIN | | 990 | 354K| | 144 (2)| 00:00:02 || 2 | SORT JOIN | | 968 | 229K| 712K| 65 (2)| 00:00:01 || 3 | TABLE ACCESS FULL| TABS | 968 | 229K| | 11 (0)| 00:00:01 ||* 4 | SORT JOIN | | 2267 | 274K| 824K| 79 (2)| 00:00:01 || 5 | TABLE ACCESS FULL| SEGS | 2267 | 274K| | 13 (0)| 00:00:01 |------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------4 - access("SEGS"."SEGMENT_NAME"="TABS"."TABLE_NAME")filter("SEGS"."SEGMENT_NAME"="TABS"."TABLE_NAME")统计信息----------------------------------------------------------2010 recursive calls0 db block gets378 consistent gets0 physical reads0 redo size72346 bytes sent via SQL*Net to client1003 bytes received via SQL*Net from client59 SQL*Net roundtrips to/from client10 sorts (memory)0 sorts (disk)865 rows processed//使用嵌套循环;SQL>select /*+use_nl(segs,tabs)*/* from segs, tabs where segs.segment_name=tabs.table_name;已选择865行。

oracle 级联全路径

oracle 级联全路径

oracle 级联全路径(原创实用版)目录1.Oracle 级联全路径的概述2.Oracle 级联全路径的实现方法3.Oracle 级联全路径的优缺点4.Oracle 级联全路径的应用案例5.总结正文1.Oracle 级联全路径的概述Oracle 级联全路径是指在 Oracle 数据库中,通过多个表之间的关联关系,查询出所有相关数据的路径。

它可以帮助用户更方便地查询和分析数据,提高数据处理的效率。

2.Oracle 级联全路径的实现方法在 Oracle 数据库中,可以通过使用 SQL 语句实现级联全路径的查询。

通常使用多个 SELECT 语句,通过 UNION ALL 操作将多个查询结果集合并,从而获取完整的级联全路径数据。

例如,假设有一个订单表 (order)、客户表 (customer) 和产品表(product),它们之间的关系分别为:order.customer_id = customer.customer_id 和 order.product_id = product.product_id。

要查询所有订单、客户和产品的级联全路径,可以使用以下 SQL 语句:```sqlSELECT * FROM orderUNION ALLSELECT * FROM customerUNION ALLSELECT * FROM product;```3.Oracle 级联全路径的优缺点优点:- 可以方便地查询出所有相关数据,提高数据处理效率。

- 有利于数据的统一管理和维护。

缺点:- 在查询过程中,可能会涉及到大量数据的传输和处理,导致性能下降。

- 如果数据库结构复杂,编写 SQL 语句的难度会加大。

4.Oracle 级联全路径的应用案例假设一个企业有多个分支机构,每个分支机构有多个员工,每个员工有多个订单。

通过 Oracle 级联全路径,可以方便地查询出所有员工、分支机构和订单的信息,便于进行数据分析和决策。

带表空间加表名查询语句

带表空间加表名查询语句

带表空间加表名查询语句
查询语句是用来从数据库中检索数据的。

在Oracle数据库中,带表空间加表名的查询语句通常是以以下形式呈现的:
SELECT FROM 表空间名.表名;
这条查询语句中,SELECT 表示选择所有的列,FROM 表空间名.表名指明了要从哪个表空间中的哪张表中检索数据。

表空间是用来
管理数据库中的数据文件的逻辑结构单元,而表则是用来存储实际
数据的物理结构单元。

举个例子,如果我们有一个表空间名为"my_tablespace",其中包含一张名为"employees"的表,我们可以使用以下查询语句来检索这张表中的数据:
SELECT FROM my_tablespace.employees;
这条查询语句会返回employees表中所有列的数据。

需要注意的是,查询语句中的表空间名和表名都应该是存在于
数据库中的有效对象,否则会导致语法错误或者查询失败。

同时,查询语句也可以根据具体的需求添加条件、排序、连接等操作来进一步筛选和处理数据,以满足实际的业务需求。

Oracle中查询表的大小、表的占用情况和表空间的大小

Oracle中查询表的大小、表的占用情况和表空间的大小

Oracle中查询表的⼤⼩、表的占⽤情况和表空间的⼤⼩有两种含义的表⼤⼩。

⼀种是分配给⼀个表的物理空间数量,⽽不管空间是否被使⽤。

可以这样查询获得字节数:select segment_name, bytesfrom user_segmentswhere segment_type = 'TABLE';或者Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name另⼀种表实际使⽤的空间。

这样查询:analyze table emp compute statistics;select num_rows * avg_row_lenfrom user_tableswhere table_name = 'EMP';查看每个表空间的⼤⼩Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name1.查看剩余表空间⼤⼩SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;2.检查系统中所有表空间总体空间select ,sum(a.bytes/1000000)总空间 from v$datafile a,v$tablespace b where a.ts#=b.ts# group by ; 1、查看Oracle数据库中表空间信息的⼯具⽅法: 使⽤oracle enterprise manager console⼯具,这是oracle的客户端⼯具,当安装oracle服务器或客户端时会⾃动安装此⼯具,在windows操作系统上完成oracle安装后,通过下⾯的⽅法登录该⼯具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择‘独⽴启动’单选框——‘确定’ —— ‘oracle enterprise manager console,独⽴’ ——选择要登录的‘实例名’ ——弹出‘数据库连接信息’ ——输⼊’⽤户名/⼝令’ (⼀般使⽤sys⽤户),’连接⾝份’选择选择SYSDBA——‘确定’,这时已经成功登录该⼯具,选择‘存储’ ——表空间,会看到如下的界⾯,该界⾯显⽰了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间⼤⼩,已使⽤的表空间⼤⼩及表空间利⽤率。

oracle扩展表空间的三种方法

oracle扩展表空间的三种方法

oracle扩展表空间的三种方法在Oracle数据库中,扩展表空间是一种常见的管理数据库空间的操作。

当表空间的容量不足时,需要扩展表空间以满足数据库的需求。

以下将介绍三种常见的Oracle扩展表空间的方法。

1.增加数据文件增加数据文件是扩展表空间最直接和常见的方法。

数据文件是Oracle数据库中存储数据的基本单位,通过增加数据文件可以扩展表空间的容量。

以下是增加数据文件的步骤:步骤1:选择要扩展的表空间使用如下语句选择要扩展的表空间:```sqlSELECT tablespace_name FROM dba_tablespaces;```步骤2:创建数据文件使用如下语句创建数据文件:```sqlALTER TABLESPACE tablespace_name ADD DATAFILE 'file_name' SIZE size [AUTOEXTEND ON NEXT size NEXT size ...];```其中,tablespace_name是要扩展的表空间名称,file_name是新数据文件的名称,size是数据文件初始大小。

AUTOEXTEND关键字用于设置数据文件的自动增长。

可以通过NEXT关键字设置数据文件的自动增长的大小。

2.增加临时表空间临时表空间用于存储排序、连接和其他需要临时存储空间的操作。

当临时表空间的空间不足时,需要扩展临时表空间。

以下是增加临时表空间的步骤:步骤1:选择要扩展的临时表空间使用如下语句选择要扩展的临时表空间:```sqlSELECT tablespace_name FROM dba_temp_files;```步骤2:创建临时文件使用如下语句创建临时文件:```sqlALTER TABLESPACE tablespace_name ADD TEMPFILE 'file_name' SIZE size [AUTOEXTEND ON NEXT size NEXT size ...];```其中,tablespace_name是要扩展的临时表空间名称,file_name是新临时文件的名称,size是临时文件初始大小。

建错oracle 表空间路径 处理方法-概述说明以及解释

建错oracle 表空间路径 处理方法-概述说明以及解释

建错oracle 表空间路径处理方法-概述说明以及解释1.引言1.1 概述概述部分的内容应该对文章的主题进行简要介绍,并提供一些背景信息。

在这种情况下,我们正在讨论错误的Oracle表空间路径以及处理方法。

下面是文章1.1概述部分的一个例子:引言:Oracle是一种广泛使用的关系型数据库管理系统,被广泛用于企业级应用程序的开发和管理。

然而,在使用Oracle时,有时候会遇到错误的表空间路径的问题,这可能会对我们的数据库工作和业务流程产生负面影响。

本文旨在探讨这些错误的原因,并提供几种处理方法来解决这些问题。

在这篇文章中,我们将首先分析导致错误表空间路径的可能原因。

之后,我们将介绍三种常见的处理方法,以帮助我们解决这些问题。

最后,我们将总结本文的主要观点,并提供一些建议和展望未来可能的研究方向。

通过阅读本文,读者将能够更好地理解和解决与错误表空间路径相关的问题,并提高他们在Oracle数据库管理方面的技能和知识。

无论是初学者还是有经验的数据库管理员,本文都将向他们提供有用的信息和实用的解决方案。

接下来,我们将详细阐述错误表空间路径的原因以及相应的处理方法。

1.2 文章结构文章结构部分主要介绍了本篇文章的组织结构和内容安排。

本文分为引言、正文和结论三个部分。

引言部分首先概述了文章的主要内容,即处理Oracle表空间路径建错的方法。

然后说明了本文的结构,包括引言、正文和结论三个部分。

最后,明确了本文的目的,即帮助读者了解并掌握处理建错Oracle表空间路径的方法。

正文部分是本文的核心内容,主要包括错误原因分析和处理方法。

在错误原因分析部分,将详细探讨导致建错Oracle表空间路径的原因,包括操作失误、配置错误等。

在处理方法部分,将提供三种不同的处理方法,分别是处理方法1、处理方法2和处理方法3。

每种方法都会详细介绍具体的操作步骤和注意事项,以便读者能够根据自己的实际情况选择合适的处理方法。

结论部分对整篇文章进行总结,并提出具体的建议和展望。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库表空间整合方案1.问题描述目前,某服务系统数据库存在多个表空间,对数据库表的维护造成了一定的影响。

2.问题解决方案解决方案:采用脚本来转移数据库表、索引及特殊字段(lob字段类型)第一、表做表空间迁移时,首先使用查询语句把表迁移语句拼接起来,然后再执行结果中的语句,查询语句如下:select table_name,'alter table ' || table_name || ' move tablespace tablespaceNameA;' exewordsfrom all_tableswhere owner = '表拥有者' --表拥有者如:USERA(记住一定要大写)and tablespace_name <> ' tablespaceNameA' --不属于表空间 tablespaceNameA注释:请保留结果table_name列的结果,第三步要用到这些表,并执行exewords 列中产生的结果语句。

以下以UserA为例:Select table_name, 'alter table '||table_name||' move tablespace tablespaceNameA;' exewords from all_tables where owner='USERA' and tablespace_name<>' tablespaceNameA';结果语句略,执行exewords列中产生的语句。

第二、索引做表空间做迁移时,首先使用查询语句把索引迁移语句拼接起来,然后再执行结果中的语句,查询语句如下:select index_name,'alter index ' || index_name || ' rebuild tablespace tablespaceNameA;' exewordsfrom all_indexeswhere owner = '索引拥有者'--索引拥有者如:USERA(记住一定要大写)and tablespace_name <> 'tablespaceNameA'--表空间结果略,执行exewords列产生的结果。

以下以UserA为例:select index_name,'alter index ' || index_name || ' rebuild tablespace tablespaceNameA;' exewordsfrom all_indexeswhere owner = USERA'--数据库用户名and tablespace_name <> 'tablespaceNameA'--表空间(将要转移过去的表空间)结果略,执行exewords列产生的结果。

第三,转移lob字段,对于这种字段,在建立含有lob字段的表时,oracle会自动为lob字段建立两个单独的segment,一个用来存放lob数据,另一个用来存放lob索引,并且它们都会存储在对应表指定的表空间中。

但是当我们用alter table tb_name move tablespace tbs_name; 对表做表空间之间迁移时只能迁移非lob字段以外的segment,而如果要在移动表数据同时移动lob相关字段,就必需用如下的含有特殊参数的语句来完成:alter table tb_name move tablespace tbs_name lob (column_lob1,column_lob2) storeas(tablesapce tbs_name);具体步骤如下(以USERA为例):第(1)、select rs.exewords from(Select 'select ' || '''alter table ' || table_name ||' move tablespace tablespaceNameA lob(''||' || 'column_name' ||'||'') store as(tablespace tablespaceNameA);''exewords' ||' from user_tab_columns where table_name=''' || table_name ||''' and (data_type = ''BLOB'' or data_type = ''CLOB'' or data_type = ''NCLOB'') union ' exewordsfrom all_tableswhere owner = USERA'--数据库用户and tablespace_name <> 'tablespaceNameA'--转移后的表空间名称and table_name ='MYTEST') rs--第一个步骤保存的表名unionselect 'select ''temp'' exewords from dual where 1=2' exewords from dual;第(2)、从第(1)步中得到结果,并继续执行结果语句。

第(3)、从第(2)步中得到结果,并继续执行结果语句。

利用如下语句可以验证转移前和转移后的差别:select*from all_tables where owner= USERA'and tablespace_name<>'tablespaceNameA' select*from all_indexes where owner=' USERA'and tablespace_name<>'tablespaceNameA'例子:--=============================转移Blob字段例子================================================create table MyTest(id number,id2 number,myname varchar2(10),img1 blob,img2 clob)tablespace tablespaceNameBpctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);alter table MyTestadd constraint PK_mytest primary key (ID)using indextablespace DEFCpctfree 10initrans 2maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);create index ind_on_mytest_id2 on myTest (id2) tablespace tablespaceNameBpctfree 10initrans 2maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);create index ind_on_mytest_myname on myTest (myname)tablespace tablespaceNameBpctfree 10initrans 2maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);----select*from Mytest;-------第一步骤(执行如下语句,查询出需要转移的数据库表,并保留table_name列的结果,最后一步要用)select table_name,'alter table ' || table_name || ' move tablespace tablespaceNameA;' exewordsfrom all_tableswhere owner = 'USERA' --表拥有者and tablespace_name <> 'tablespaceNameA' --不属于表空间tablespaceNameA--第二步骤(执行上面生成的exewords列的结果)alter table MYTEST move tablespace tablespaceNameA;--第三步骤(执行如下语句,查出需要转移索引)select index_name,'alter index ' || index_name || ' rebuild tablespace tablespaceNameA;' exewordsfrom all_indexeswhere owner = 'USERA'--数据库用户名and tablespace_name <> 'tablespaceNameA'--表空间(将要转移过去的表空间)--第四步骤(执行上面生成的exewords列的结果)alter index PK_MYTEST rebuild tablespace tablespaceNameA;alter index IND_ON_MYTEST_ID2 rebuild tablespace tablespaceNameA;alter index IND_ON_MYTEST_MYNAME rebuild tablespace tablespaceNameA;--第五步骤(执行如下语句,查出大字段,并将其转移)--1)执行一下语句,拼出查询大字段的语句。

select rs.exewords from(Select 'select ' || '''alter table ' || table_name ||' move tablespace tablespaceNameA lob(''||' || 'column_name' ||'||'') store as(tablespace tablespaceNameA);''exewords' ||' from user_tab_columns where table_name=''' || table_name ||''' and (data_type = ''BLOB'' or data_type = ''CLOB'' ordata_type = ''NCLOB'') union ' exewordsfrom all_tableswhere owner = 'USERA'--数据库用户and tablespace_name <> 'tablespaceNameA'--转移后的表空间名称and table_name ='MYTEST') rs--第一个步骤保存的表名unionselect 'select ''temp'' exewords from dual where 1=2' exewords from dual; --2)执行以上语句执行后生成的exewords列的结果。

相关文档
最新文档