精华内容
下载资源
问答
  • oracle修改表和索引的表空间
    千次阅读
    2020-12-30 18:07:40

    表做空间迁移时,使用如下语句:

    例1:alter table tb_name move tablespace tbs_name;

    索引表空间做迁移,使用如下语句:

    例2:alter index index_name rebuild tablespace tbs_name;

    对于含有lob字段的表,在建立时,oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中,而例1:只能移动非lob字段以外的数据,所以在对含有lob字段的表进行空间迁移,需要使用如下语句:

    例3:alter table tb_name move tablespace tbs_name lob (col_lob1,col_lob2) store as(tablesapce tbs_name);

    项目实例:

    表空间迁移

    select 'alter table' ||table_name|| 'move tablespace tbs_name;' table_name from dba_tables where wner='%***%' and table_name like '%***%'

    带lob字段

    select 'alter table' ||table_name|| 'move lob('||index_name||') store as (tablespace tbs_name);' from dba_indexes where wner='%***%' and index_name like '%***%'

    索引表空间

    select 'alter index' ||index_name|| 'rebuild tablespace tbs_name;' index_name from dba_indexes where wner='%***%' and table_name like '%***%'

    以上在oracle 的SQL*Plus Worksheet中运行,将得出的运行结果再运行一次即可。

    更多相关内容
  • ORACLE修改表空间方法

    千次阅读 2021-05-02 01:38:01
    据目前所了解,正长状况下须要修改表空间的索引的空间,若是涉及到BOLB字段的修改的方式又不同了!正常状况下的修改脚本:1.修改表空间alter table TABLE_NAME move tablespace TABL...

    1、使用imp/exp。先导出源库,再建立新库把表空间建立好,而后再导入。(听说这样能够,前提是新的库里面不能有与源库相同名字的表空间。有待验证!)

    2、使用脚本进行修改。据目前所了解,正长状况下须要修改表的空间和表的索引的空间,若是涉及到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;

    可使用脚本执行查询的结果,这样就能够批量处理!

    不正常状况即含有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 as ( CHUNK bytes )表示对于disable storage in row的这部分,最小的LOB块的大小,必须是数据库块(DB_BLOCK_SIZE)的整数倍。一个chunk最多只保留一行LOB数据,也就是说,若是你设置了32K的CHUNK,可是若是LOB字段大小只有4K,也将占用32K的空间

    storage as(cache|nocahce)表示是否容许lob段通过buffer cache并缓存。默认是nocache,表示直接读与直接写,不通过数据库的data buffer。因此,默认状况下,对于单独保存在LOB段的这部分数据,在发生物理读的时候,是直接读,如direct path read (lob)

    storage as(nocache logging |nocache nologging),logging/nologging属性只对nocache方式生效,默认是logging,若是是nologging方式,对于 保存在行外的log部分,在update等DML操做时将不记录redo日志。

    PCTVERSION integer、RETENTION:都是ORACLE用来管理LOB字段镜像数据的。在LOB 数据的更新过程当中,

    ORACLE没有用UNDO TABLESPACE空间,而是从LOB字段所在的表空间里划分一段空间来作镜像空间的,

    这个空间的大小由PCTVERSION参数控制,默认值为10,表明划分表空间的10%做为镜像空间,

    每一个镜像空间的单元大小由CHUNK参数指定,pctversion可使用在manual undo mode和automatic undo mode 环境中.

    retention应用了automatic undo mode中的undo_retention经过时间来管理lob镜像空间.

    pctversion和retention不能同时被指定.建议数据库在automatic undo mode下使用retention参数。

    FREEPOOLS integer:给LOG segment指定free list.RAC环境下integer为实例的个数.单实例环境下为1.在automatic undo mode下oracle默认采用

    FREEPOOLS来管理空闲块列表。除非咱们在表的storage配置中指定了freelist groups参数.

    CACHE|NOCACHE|CACHE READS:指定lob块是否在database buffer中缓存.

    INDEX lobindexname (TABLESPACE tablesapce_name ((STORAGE.....):给lob列指定索引存储参数

    举例:

    SQL> show parameter db_create_file_dest

    SQL> create tablespace test datafile size 100M autoextend off;

    SQL> create table test(a varchar2(100), b clob, d blob) pctfree 10 tablespace test;

    SQL> desc test

    SQL> SELECT segment_name,tablespace_name,segment_type FROM dba_segments WHERE tablespace_name='TEST';

    咱们发现每一个LOB字段单独有一个LOGSEGMENT和LOBINDEX;

    SQL> set linesize 200

    col table_name format a5

    col column_name format a5

    SELECT b.table_name,

    a.segment_name,

    b.index_name,

    a.segment_type,

    b.column_name,

    a.tablespace_name,

    b.chunk,

    b.cache,

    b.freepools,

    b.pctversion,

    b.retention

    FROM dba_segments a,dba_lobs b

    WHERE a.segment_name = b.segment_name

    AND a.tablespace_name = 'TEST'

    /

    SQL>

    从上面的结果咱们能够观察到LOB字段的各个属性.

    下面咱们对LOB字段move到另外一个表空间

    SQL> create tablespace lob_test datafile size 100M autoextend off;

    SQL> ALTER TABLE TEST MOVE LOB(B) STORE AS TEST_B (

    TABLESPACE lob_test

    DISABLE STORAGE IN ROW

    CHUNK 16384

    RETENTION

    FREEPOOLS 1

    NOCACHE);

    SQL> ALTER TABLE TEST MOVE LOB(D) STORE AS TEST_D (

    TABLESPACE lob_test

    DISABLE STORAGE IN ROW

    CHUNK 16384

    RETENTION

    FREEPOOLS 1

    NOCACHE);

    SQL> SELECT segment_name,tablespace_name,segment_type FROM dba_segments WHERE tablespace_name='TEST';

    SQL> set linesize 200

    col table_name format a5

    col column_name format a5

    SELECT b.table_name,

    a.segment_name,

    b.index_name,

    a.segment_type,

    b.column_name,

    a.tablespace_name,

    b.chunk,

    b.cache,

    b.freepools,

    b.pctversion,

    b.retention

    FROM dba_segments a,dba_lobs b

    WHERE a.segment_name = b.segment_name

    AND a.tablespace_name = 'LOB_TEST'

    /SQL>

    在一些复杂状况下可能须要连表一块儿移植

    alter table table_name move [tablespace_name] lob (lob_item) store as [lobsegmentname] (tablespace tablespace_name.....);

    移植分区中lob

    alter table table_name move partition [partition_name] lob (lob_item) store as [logsegmentname] (tablespace_name.....);

    移植分区表

    alter table table_name move partition [partition_name] tablespace_name lob (lob_item) store as [logsegmentname] (tablespace_name.....);

    若是不须要修改lobsegmentname,能够同时移植多个列

    alter table table_name move lob (lob_item1,lob_item2,lob_item3...) store as [lobsegmentname] (tablespace tablespace_name.....);

    LOB段也能够利用move来重整数据,如下的语句会将表与lob字段move到指定的表空间:

    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);

    在数据库中合理的存储LOB列,不只能够提高性能,并且还能够有效的管理存储空间.程序员

    程序员的基础教程:菜鸟程序员数据库

    展开全文
  • Oracle 11g 修改表的所属表空间

    千次阅读 2019-07-17 15:43:58
    Oracle 11g 修改表的所属表空间 应领导要求,需要将部分的所属表空间进行更改,目的为了整理用户。 查询owner下 对于级别的表空间分类 select tablespace_name,count(*) from dba_tables where owner = 'XXX' ...

    Oracle 11g 修改表的所属表空间

    应领导要求,需要将部分表的所属表空间进行更改,目的为了整理用户。

    • 查询owner下 对于表级别的表空间分类
    select tablespace_name,count(*) from dba_tables where owner = 'XXX' group by tablespace_name order by 2;
    
    • 核对上面的数量情况
    select * from dba_tables where owner = 'XXX' and tablespace_name = 'USERS';
    
    • 查看每张表的基本信息
    select table_name,num_rows from dba_tables where owner = 'XXX' and tablespace_name = 'USERS' order by 2 desc;
    
    • 查询需要move表的详细信息
    select t.table_name as "表名",
           t.num_rows as "表行数",
           nvl(s.partition_name, 0) as "分区名",
           s.segment_type "段类型",
           s.bytes / 1024 / 1024 as "段大小(MB)"
      FROM dba_tables t, dba_segments s
     where t.table_name = s.segment_name(+)
       and t.owner = 'XXX'
       and t.tablespace_name = 'USERS'
       order by s.bytes
       desc;
    
    select count(*) from(
    select table_name
      from dba_tables
     where owner = 'XXX'
       and table_name not like 'T\_%' escape '\'
       and table_name not like 'JF\_%' escape '\'
       and table_name not like 'PAYMENT\_%' escape '\'
       and table_name not like 'PROM%'
       and table_name <> 'CUSTOMER_BUY_HIS');
    
    • 查询需要move表的索引情况,11g中要考虑move后的索引重建,12c版本中可以支持online move
    select index_name,index_type,table_name,table_owner,table_type,uniqueness,status from dba_indexes where owner = 'XXX' and tablespace_name = 'USERS';
    
    • 拼接move的sql语句
    SELECT 'alter table '||TABLE_NAME||' move tablespace YLPW;' FROM DBA_TABLES WHERE TABLESPACE_NAME = 'USERS' and OWNER = 'XXX';
    
    • 拼接重建索引的sql语句(rebuild 跟 rebuid online的区分要注意,online不会阻塞dml语句)
    select 'alter index ' ||index_name||' rebuild online;' from dba_indexes where table_owner = 'YL2012' and status <> 'VALID';
    

    1、要考虑move后的索引重建问题
    2、尽量放在业务低峰期或者夜间进行
    3、对于大表考虑重建索引时占用的cpu跟临时表空间的问题

    展开全文
  • 修改表所在的表空间 alter table [名称] move tablespace [表空间名称] -- 在当前用户下执行 SELECT 'ALTER TABLE ' || TABLE_NAME ||' MOVE TABLESPACE [表空间名称];' FROM USER_TABLES ; 如果表里含有clob...

    修改表所在的表空间

    alter table [表名称] move tablespace [表空间名称]

    -- 在当前用户下执行
    SELECT 'ALTER TABLE ' || TABLE_NAME ||' MOVE TABLESPACE [表空间名称];' FROM USER_TABLES ;

     如果表里含有clob字段,则需要特殊处理。

    ​-- 在当前用户下执行
    ALTER TABLE [表名称] MOVE TABLESPACE USERS LOB([clob字段1],[clob字段2]) STORE AS(TABLESPACE [表空间名称]);

    如果表是分区表,也需要做特殊处理。 

    -- 在当前用户下执行
    select 'alter table '||table_name||' modify default attributes tablespace [表空间名称] ;' from user_tables where table_name in ([表名]);

    修改索引所在的表空间

    -- 在当前用户下执行
    SELECT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD TABLESPACE [索引表空间名称];' FROM USER_INDEXES;

    如果遇到修改完索引失效,需要修改索引状态。

    ​
    -- 查看用户下索引的状态,valid表示有效,unusable表示无效。
    select status from user_indexes where index_name='索引名' ;
    --重建索引
    select 'alter index '|| 索引名称 ||' rebuild ;' from user_indexes u where u.status='UNUSABLE';
    -- 重建单个索引
    alter index 索引名称 rebuild;

     如果是分区索引只需要重建那个失效的分区 。

    alter index 索引名称 rebuild partition 分区名; 

     

    修改用户默认所在表空间

    -- 在当前用户下执行
    ALTER USER [用户名] DEFAULT TABLESPACE [表空间名称];

     

    展开全文
  • 那么假如我们导入的数据库表空间和导入时的数据库表空间不一致时就会比较麻烦,这里我们主要处理,已经导入的所属表空间不是指向我们所要的表空间时如何修改。  1、查看当前所属表空间 SELECT TABLE_NAME,...
  • ORACLE修改用户所属表空间的步骤

    千次阅读 2020-12-20 17:15:38
    据目前所了解,正长情况下需要修改表空间的索引的空间,如果涉及到BOLB字段的修改的方式又不一样了! 正常情况下的修改脚本: 1.修改表空间 alter table TABLE_NAME move tablespace TABLESPACENAME ...
  • 修改表表空间

    千次阅读 2018-12-14 09:32:27
    修改表空间后,需要重新生成索引 1、查询表空间 select table_name,tablespace_name from user_tables where tablespace_name...
  • Oracle修改表及分区表空间

    千次阅读 2019-05-23 10:11:00
    一、oracle 移动分区到指定表空间,及修改表的默认表空间 1、修改分区的默认表空间:select 'alter table '||table_name||' modify default attributes tablespace TSDAT01' from dba_tables where table_name ...
  • Oracle修改用户所属表空间的步骤

    万次阅读 2018-01-24 09:32:19
    据目前所了解,正长情况下需要修改表空间的索引的空间,如果涉及到BOLB字段的修改的方式又不一样了! 正常情况下的修改脚本: 1 。修改表空间 alter table TABLE_NAME move tablespace TABLESPACENAME ...
  • 一、使用imp/exp。...据目前所了解,正长情况下需要修改表空间的索引的空间,如果涉及到BOLB字段的修改的方式又不一样了! 正常情况下的修改脚本: 1.修改表空间 alter table TABLE_NAME move ta
  • Oracle 数据库修改索引表空间

    千次阅读 2016-03-13 12:40:49
    Oracle 数据库修改索引表空间
  • oracle删除表空间修改索引表空间

    千次阅读 2016-03-14 15:33:48
    由于lob对象引起的表空间无法删除。本来是要删除DMS表空间,但是上面有LOB对象,而且却是在别的表空间DMS4上。解决的办法就是将这些lob移动到DMS4表空间。 下面是解决过程 删除用户时报错: drop ...
  • 批量更改ORACLE中、索引的表空间

    千次阅读 2019-08-29 10:48:03
    ORACLE中、索引的表空间的批量更改方法 1、查询当前用户下的所有 select'ALTERTABLE'||table_name||'MOVETABLESPACEtablespacename;'fromuser_all_tables; select'ALTERTABLE'||table_name||'...
  • 查询已存在表空间信息 col "表空间名" for a20 col "数据文件全路径" for a50 set linesize 150 set pagesize 1000 select f.tablespace_name "表空间名", f.file_name ...
  • 1 查看表空间路径 ...2 修改表空间大小 ALTER TABLESPACE MAXDATA ADD DATAFILE '/oradata/XX/MAXDATA02.DBF' SIZE 1000M; 3 查看当前用户每个占用空间的大小:  Select Segment_Name,Sum(bytes)/1024/
  • imp导入Oracle数据库时(导入的数据库表空间名称和exp方式导出数据库表空间名称不一样),在导入包含CLOB字段的时, 报错:IMP-00017: 由于 ORACLE 错误 959,导出时,使用的表空间,在新的数据库中不存在或者没有...
  • 1、使用imp命令的 indexfile 选项导出创建语句,去掉 REM 语句,修改用户名和表空间名,并将创建语句拆分为建表语句和建索引语句;3、新建数据库用户,指定 default tablespace tbs_xxx temporary tablespace tbl_...
  • Oracle批量修改用户table的表空间

    千次阅读 2012-10-11 14:16:39
    一、修改用户table的表空间 1、修改用户table的表空间:alter table 表名 move tablespace 新表空间名; 2、查询所有用户:select * from user_tables; 【脚本】 查询当前用户的所有的数据,并把表空间...
  • 新建一个表空间

    千次阅读 2018-10-09 10:48:27
    -- 1、查看表空间文件路径-- 切换到system用户,执行语句获取表空间文件路径。 -- 某一个表空间文件: F:\APP\ROHON1010\PRODUCT\11.2.0\DBHOME_1\DATABASE \BACK_TABLESPACE201806061034.DBF select tablespace_...
  • ORACLE 表空间操作和的删除(一)

    千次阅读 2018-03-28 23:17:48
    最近在用IMP 命令导入dmp数据的时候,发现表空间无法扩展,一查,才发现表空间SYSTEM已经使用了31.2G。 经过查找资料,总结如下: 1.一般不在SYSTEM表空间存放业务数据; 2.SYSTEM表空间最大值是32G;-----所有...
  • db2 系统临时表空间

    万次阅读 2014-05-26 14:28:15
    确保系统临时表空间的页大小符合要求 更大记录标识符(RID)的使用增加了来自查询或定位更新的结果集的行大小。如果结果集中的行大小接近于现有系统临时表空间的最大行长度限制,那么可能需要创建具有更大页大小...
  • oracle 查看表空间有哪些 ...select * from dba_tables wheretablespace_name='表空间名',注意表空间名大小写敏感。 select table_name,tablespace_name from user_tables; from http://w
  • oracle修改表空间

    千次阅读 2014-07-25 00:21:19
    oracle修改表表空间
  • DB2表空间操作详解

    万次阅读 2015-10-26 00:26:50
    指定要创建的表空间的类型,如果不指定,默认类型是由”MANAGED BY”字句决定的。 LARGE: 只存储永久性数据。这个类型只允许用在DMS表空间上。它也是创建DMS表空间的默认类型。当一个放置在一个large类型的表空间...
  • 创建表空间

    千次阅读 2018-04-15 11:15:23
    (四)、创建表空间1. 创建表空间要考虑的因素创建数据库完毕~ 创建所需的 ...数据文件数目 ~只能创建有限数的表空间表空间数据文件总和 ~ 不能超过 创建数据库时 ~指定的maxdatafiles参数的限制创建的表空间 ~...
  • oracle删除数据释放表空间流程

    千次阅读 2020-05-22 11:12:18
    生产环境:数据库里空间不足,niptest表空间251G,只使用了17G 再alter database datafile '...../niptest1' resize 10G;的时候说超出了范围要求 由于变动比较频繁,高水位值比较大 (高水位HWM “High Water ...
  • SQL Server 空间管理——表空间

    千次阅读 2018-03-09 17:36:59
    SQL Server 中使用空间查询 一、查询指定表空间使用情况 脚本1 use WideWorldImportersDW go sp_spaceused Workload 二、查询库下默认架构所有表空间使用情况 循环对每个表名使用sp_spaceused 即可获取,...
  • oracle删除(释放)数据文件/表空间流程 生产环境:数据库里空间不足,niptest 表空间251G,只使用了17G 再alter database datafile '...../niptest1' resize 10G; 的时候说超出了范围要求  由于变动比较频繁,高...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 357,229
精华内容 142,891
关键字:

修改index的表空间