`

改变表空间的大小

阅读更多

方法 :  如果你想把 aa.dbf 这个数据文件给缩小。
1)查看这个数据文件上的数据库对象。
2)exp  出这些数据对象
3) drop 这些数据对象。
4)   alter database datafile '/export/home/oraclle/aa.dbf' resize 1000m;
5)   imp 这些数据对象
注意这些数据库对象所在的表空间。这一点是非常重要的 。

 

select 'alter database datafile ''' ||
file_name || ''' resize ' ||
ceil( (nvl(hwm,1)*8192)/1024/1024 )
|| 'm;' cmd
from dba_data_files a,
( select file_id,
max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+)
and
ceil(blocks*8192/1024/1024)-
ceil((nvl(hwm,1)*
8192)/1024/1024 ) > 0;

 

 

declare
        cursor c_dbfile is        select tablespace_name        ,file_name        ,file_id        ,bytes        from sys.dba_data_files
        where status !='INVALID'
        order by tablespace_name,file_id;

        cursor c_space(v_file_id in number) is
        select block_id,blocks
        from sys.dba_free_space
        where file_id=v_file_id
        order by block_id desc;

        blocksize number(38);
       
        filesize number(38);
       
        extsize number(38);

begin

        select value into blocksize from v$parameter where name = 'db_block_size';
       
        for c_rec1 in c_dbfile        loop
       
                filesize := c_rec1.bytes;
       
                <<outer>>
       
                        for c_rec2 in c_space(c_rec1.file_id) loop
       
                                extsize := ((c_rec2.block_id - 1)*blocksize + c_rec2.blocks*blocksize);
       
                                if extsize = filesize        then
                                        filesize := (c_rec2.block_id - 1)*blocksize;       
                                else       
                                        exit outer;
                                end if;
       
                        end loop ;
       
                        if filesize = c_rec1.bytes        then       
                                dbms_output.put_line('Tablespace: '||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
       
                                dbms_output.put_line('Can not be resized, no free space at end of file.');
                                dbms_output.put_line('.');
                        else       
                                if filesize < 2*blocksize        then
                                        dbms_output.put_line('Tablespace: '||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
                                        dbms_output.put_line('Can be resized uptil: '||2*blocksize||' Bytes, Actual size: '||c_rec1.bytes||' Bytes');
                                        dbms_output.put_line('.');
                                else
                                        dbms_output.put_line('Tablespace: '        ||' '||c_rec1.tablespace_name||' Datafile: '||c_rec1.file_name);
                                        dbms_output.put_line('Can be resized uptil: '||filesize        ||' Bytes, Actual size: '||c_rec1.bytes);
                                        dbms_output.put_line('.');
                                end if;
                        end if;
        end loop;

end;
/
 

 

 

1  select
  2  max((e.block_id + e.blocks) * &&db_block_size/1024/1024) as "Can Resize(M)",
  3  f.bytes/1024/1024 "Current Size(M)",
  4  sum(e.bytes/1024/1024) as "totalUsed(M)",
  5  file_name
  6  from
  7  dba_extents e,dba_data_files f
  8  where
  9  e.file_id= f.file_id
10  group by
11  file_name,f.bytes/1024/1024
12* order by 2-1

Can Resize(M) Current Size(M) totalUsed(M) FILE_NAME
------------- --------------- ------------ ----------------------------------------
            4              20            4 /data/oradata/rmanrep/drsys01.dbf
           45              50           28 /data/oradata/rmanrep/rbs01.dbf
            4              50            4 /data/oradata/rmanrep/rman8i01.dbf
            4              50            4 /data/oradata/rmanrep/rman9i01.dbf
          273             280          273 /data/oradata/rmanrep/system01.dbf
            4              20            4 /data/oradata/rmanrep/temp01.dbf
          116             512          116 /data/oradata/rmanrep/tools01.dbf
            0              45            0 /data/oradata/rmanrep/users01.dbf
 

 

分享到:
评论

相关推荐

    专题资料(2021-2022年)7 表空间和数据文件管理.ppt

    7.3.3 改变表空间大小,可以通过增加或减少数据文件的大小来调整。如果需要移动数据文件,可以使用ALTER DATABASE DATAFILE命令更改其位置。 7.4 删除表空间 删除表空间是一项谨慎的操作,因为这将永久丢失表空间内...

    oracle表空间误操作

    - **修改表空间**:如改变表空间大小、位置或属性,可能导致数据不可用或性能下降。 - **移动数据文件**:若未更新数据库控制文件中的位置信息,将使数据库无法找到数据文件,进而引发故障。 3. **恢复策略**: ...

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    - **重命名表空间**:使用`ALTER TABLESPACE RENAME TO`语句可以改变表空间的名称。 - **删除表空间**:使用`DROP TABLESPACE`删除表空间,但需注意清理相关对象和依赖关系。 在实际应用中,Oracle数据库管理员还...

    Oracle数据库维护培训

    8. **改变表空间大小**: 当表空间空间不足时,需要扩展表空间。Oracle提供了ALTER TABLESPACE命令来增加数据文件的大小。如果遇到ORA-01653错误,意味着无法在当前表空间中扩展数据文件,这时可能需要增加表空间的...

    oracle表空间操作详解

    通过表空间,可以控制用户对磁盘空间的使用,限制用户可以使用的磁盘空间大小,避免硬盘空间耗竭。 一、表空间的重要性 在大型数据库应用中,控制用户对磁盘空间的使用是非常重要的。表空间可以实现这个目的,限制...

    oracle表空间命令语句大全

    Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...

    ORACLE修改表空间方法

    1. **增加表空间大小**:如果你发现某个表空间已满,可以通过增加新的数据文件或扩大现有数据文件的大小来扩展表空间。例如,使用`ALTER TABLESPACE`语句添加新数据文件: ```sql ALTER TABLESPACE 表空间名 ADD ...

    创建表空间参数详解

    此时,系统将记录表空间上对象的所有改变,除了临时段的改变。这个参数高于对象的 nologging 选项。注意:设置这个参数数据库不行 open 并且出于读写模式。而且,在临时表空间和回滚表空间中不能使用这个选项。 8、...

    oracle表空间容量查询以及表空间扩容

    Oracle 表空间扩容可以使用三种方法:手工改变已存在数据文件的大小、允许已存在的数据文件自动增长和增加数据文件。 方式 1:手工改变已存在数据文件的大小 可以使用 ALTER TABLESPACE 语句来手工改变已存在数据...

    oracle-临时表空间

    此查询显示了每个表空间的空闲空间大小。 另外,也可以通过更详细的计算来获取表空间的总容量、已使用量以及剩余空间百分比等信息: ```sql SELECT A.TABLESPACE_NAME, A.BYTES TOTAL, B.BYTES USED, C.BYTES FREE...

    如何查询Oracle表空间和数据文件信息

    b.b2/1024/1024 表空间大小 M, (b.b2-a.a2)/1024/1024 已使用 M, substr((b.b2-a.a2)/b.b2*100,1,5) 利用率 from (select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by ...

    oracle表空间管理汇总.docx

    Oracle 表空间管理包括创建表空间、添加数据文件、删除表空间数据文件、扩展表空间大小、修改表空间属性、删除表空间等操作。 1. 创建表空间 创建表空间是 Oracle 表空间管理的基本操作。创建表空间需要指定表空间...

    DB2基础----表空间

    在必要时扩展表空间大小或增加新的数据分区。此外,通过`ALTER TABLESPACE`语句,可以修改表空间的属性,如改变扩展大小或更换存储设备。 五、表空间备份与恢复 为了保证数据安全,定期对表空间进行备份是必要的。...

    windows下改变分区大小

    在Windows操作系统中,改变分区大小是一项常见的系统管理任务,它涉及到磁盘的重组和空间的重新分配。无损分区调整是指在不丢失任何数据的情况下,扩大或缩小某个分区的容量。这种操作通常用于优化存储空间,例如,...

    WPF控件大小随着窗体的改变而改变

    标题"**WPF控件大小随着窗体的改变而改变**"所提及的现象,是WPF布局系统的一个重要功能,它允许控件如Button等能够自动调整其大小以适应窗口尺寸的变化。这一特性使得开发的程序具有更好的用户体验,因为用户可以...

    表空间和数据文件的管理

    **表空间状态的改变**是数据库维护的重要环节。表空间可以设置为在线(Online)、脱机(Offline)、只读(Read Only)或读写(Read Write)。例如,使表空间脱机: ```sql ALTER TABLESPACE 表空间名 OFFLINE; ``` ...

    oracle数据库扩展表空间代码

    重命名表空间可以在不改变其内容的情况下更改其名称,例如: ```sql ALTER TABLESPACE ts01 RENAME TO ts02; ``` 此命令将`ts01`表空间重命名为`ts02`。 #### 六、离线与在线表空间 表空间可以被设置为离线状态...

    c# 控件大小(及字体)随窗口大小改变自动缩放

    本篇文章将深入探讨如何实现C#控件大小及字体随窗口大小改变的自动缩放。 首先,我们要理解Windows Forms和WPF这两个C#中的主要UI框架如何处理控件的大小调整。在Windows Forms中,可以通过设置控件的Anchor和Dock...

    ORACLE 表空间的部分操作

    #### 四、改变表空间状态 - **使表空间脱机**:使用`OFFLINE`关键字可以将表空间暂时从数据库服务中移除,用于维护或恢复。 ```sql ALTER TABLESPACE game OFFLINE; ``` - **带恢复选项的脱机**:如果数据文件...

    oracle修改表空间的全部步骤,包含bob,clob字段

    因此,适时调整表空间,如增加大小、改变存储参数或迁移至不同的物理磁盘,对于保持数据库高效运行至关重要。 ### 修改表空间的全部步骤 #### 1. 数据准备与备份 在进行任何表空间修改前,首要任务是对相关数据...

Global site tag (gtag.js) - Google Analytics