- 浏览: 243410 次
最新评论
oracle缩小表空间:
oracle常用的此类命令Alter database datafile(tempfile)
alter database tempfile '/u01/oradata/tinadb/temp02.dbf' resize 1200M;
如果盲目去操作,oracle会报ora-03297错误。表示在所定义的空间之后有数据存在,不能收缩。
我们不得不查出最后的数据所处的位置, 然后表空间设置到稍比这位置大一点的大小。
1. 查该数据文件中数据处在最大位置
select max(block_id) from dba_extents where file_id=15;
max(block_id)
383497
select file#,name from v$datafile;
select file#,name from v$tempfile;
2. 查出最大块位置
select 383497*8/1024 from dual;
2996.0703125
这说明该文件中最大使用块位于2996M与3000M之间,
3. 缩小数据文件:
ALTER DATABASE TEMPFILE '/opt/oracle/oradata/gctwp101/temp02.dbf' RESIZE 3000M;
有时候会报错:
SQL> alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g;
alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g
*
ERROR at line 1:
ORA-01237: cannot extend datafile 11
ORA-01110: data file 11: '/dba/oradata/asura/tb_check_result_idx01.dbf'
ORA-19502: write error on file "/dba/oradata/asura/tb_check_result_idx01.dbf", blockno 554368 (blocksize=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor
Additional information: 4
Additional information: 554368
Additional information: 389120
发现是因为磁盘不足,没办法resize
4.如果还报03297的错误 可能是回收站没有清空 可以先清空回收站的记录再重新操作
用dba登陆,执行以下语句清空回收站
purge dba_recyclebin;
5.查出block_id比较高的几个表
select owner, segment_name, segment_type, tablespace_name,
extent_id, bytes, block_id,blocks
from dba_extents
where file_id = 8
and block_id > '4000'
--and segment_type = 'TABLE'
and tablespace_name = 'MWS_FILE'
alter database datafile 'filename' resize size;
但是前提是,表空间里没有任何数据
假设表空间靠前的碎片里有点数据,靠后的片段里有点数据,那么,这种方法是压缩不了的,他只能释放前头和后头的空间,释放不了中间的
缩小表空间的实际操作:
SQL> select file_name,file_id,tablespace_name from dba_data_files where tablespace_name='TS_TINA';
FILE_NAME FILE_ID TABLESPACE_NAME
---------------------------------- ---------- ------------------------------------
/u01/oradata/tinadb/ts_tina01.dbf 5 TS_TINA
SQL> select max(block_id) from dba_extents where file_id=5;
MAX(BLOCK_ID)
-------------
128
SQL> select 128*8/1024 from dual;
128*8/1024
----------
1 这里除的单位是1m
SQL> alter database datafile '/u01/oradata/tinadb/ts_tina01.dbf' resize 5m;
Database altered.
SQL> commit;
Commit complete.
oracle常用的此类命令Alter database datafile(tempfile)
alter database tempfile '/u01/oradata/tinadb/temp02.dbf' resize 1200M;
如果盲目去操作,oracle会报ora-03297错误。表示在所定义的空间之后有数据存在,不能收缩。
我们不得不查出最后的数据所处的位置, 然后表空间设置到稍比这位置大一点的大小。
1. 查该数据文件中数据处在最大位置
select max(block_id) from dba_extents where file_id=15;
max(block_id)
383497
select file#,name from v$datafile;
select file#,name from v$tempfile;
2. 查出最大块位置
select 383497*8/1024 from dual;
2996.0703125
这说明该文件中最大使用块位于2996M与3000M之间,
3. 缩小数据文件:
ALTER DATABASE TEMPFILE '/opt/oracle/oradata/gctwp101/temp02.dbf' RESIZE 3000M;
有时候会报错:
SQL> alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g;
alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g
*
ERROR at line 1:
ORA-01237: cannot extend datafile 11
ORA-01110: data file 11: '/dba/oradata/asura/tb_check_result_idx01.dbf'
ORA-19502: write error on file "/dba/oradata/asura/tb_check_result_idx01.dbf", blockno 554368 (blocksize=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor
Additional information: 4
Additional information: 554368
Additional information: 389120
发现是因为磁盘不足,没办法resize
4.如果还报03297的错误 可能是回收站没有清空 可以先清空回收站的记录再重新操作
用dba登陆,执行以下语句清空回收站
purge dba_recyclebin;
5.查出block_id比较高的几个表
select owner, segment_name, segment_type, tablespace_name,
extent_id, bytes, block_id,blocks
from dba_extents
where file_id = 8
and block_id > '4000'
--and segment_type = 'TABLE'
and tablespace_name = 'MWS_FILE'
alter database datafile 'filename' resize size;
但是前提是,表空间里没有任何数据
假设表空间靠前的碎片里有点数据,靠后的片段里有点数据,那么,这种方法是压缩不了的,他只能释放前头和后头的空间,释放不了中间的
缩小表空间的实际操作:
SQL> select file_name,file_id,tablespace_name from dba_data_files where tablespace_name='TS_TINA';
FILE_NAME FILE_ID TABLESPACE_NAME
---------------------------------- ---------- ------------------------------------
/u01/oradata/tinadb/ts_tina01.dbf 5 TS_TINA
SQL> select max(block_id) from dba_extents where file_id=5;
MAX(BLOCK_ID)
-------------
128
SQL> select 128*8/1024 from dual;
128*8/1024
----------
1 这里除的单位是1m
SQL> alter database datafile '/u01/oradata/tinadb/ts_tina01.dbf' resize 5m;
Database altered.
SQL> commit;
Commit complete.
发表评论
-
ETL工具--kettle简介
2016-02-24 11:21 0oracle ETL工具---数据迁移 常用的有:OWB(o ... -
oracle 游标实例
2015-12-31 17:23 1226oracle游标 游标-----内存 ... -
10053事件分析
2015-12-25 17:37 8161)10053介绍: 10053 事件是oracle 提供的用 ... -
oracle绑定变量学习
2015-12-25 17:01 1621绑定变量(binding variable) ... -
oracle 绑定变量
2015-12-24 17:26 0关键词: 绑定变量(binding variable),共享池 ... -
oracle插入大量数据
2015-12-23 17:35 1441oracle插入大量数据 1.生 ... -
ORA-03113:end-of-file on communication channel
2015-12-23 14:32 1179测试上面的一个库 plsql报错:shared memory ... -
oracle分区表【转】
2015-12-23 14:20 464oracle分区表 1.表空间及 ... -
迁移数据文件到ASM【转】
2015-12-23 11:53 7991.迁移数据文件到ASM 1) ... -
adrci命令
2015-12-23 11:46 3105一、adrci说明 在oracle11g中,dump ... -
用户+角色+权限
2015-12-21 17:58 925角色与用户权限的学习 ... -
oracle database link
2015-12-21 17:08 907目前我的数据库里只有tinadb一个实例,要创建db link ... -
oracle回收站
2015-12-21 14:22 459oracle回收站 1.drop table books; ... -
使用nid修改sid和dbname
2015-12-21 15:29 810如非必要,不建议在生产库上对dbid进行修改 1、修改dbi ... -
rman模拟故障恢复实验
2015-12-18 16:08 1186补充1:restore database和recover da ... -
rman命令学习-tina(下)
2015-12-18 16:07 1189五、rman删除 delete命令 删除相关的 ... -
rman命令学习-tina(上)
2015-12-18 16:06 919RMAN学习-tina rman的功能非常强大,下面我们来一 ... -
oracle profile介绍
2015-12-16 17:34 654profile文件的介绍: Oracle系统中的profi ... -
oracle数据库的启动和关闭【转】
2015-12-16 15:02 1175数据库的启动和关闭 Or ... -
oracle的主要进程
2015-12-16 14:21 1292[size=small]oracle的主要进程 Oracle实 ...
相关推荐
### Oracle 表空间收缩详解 #### 一、背景与需求 ...通过以上步骤,我们可以有效地缩小表空间的实际占用大小,并释放出更多的可用存储空间。这种方式不仅可以节省存储成本,还可以提高数据库的整体性能和可维护性。
### Oracle表空间管理知识点 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织和管理数据文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间。Oracle中的表...
缩小临时表空间大小 ```sql ALTER DATABASE TEMPFILE '/path/to/file' RESIZE 100M; ``` 通过上述命令可以减小指定临时文件的大小。 ##### 2. 扩展临时表空间 ###### 方法一:增加文件大小 ```sql ALTER DATABASE ...
随着数据库重启和一段时间的监控,发现UNDO表空间的增长停止,并在SMON完成死事务恢复后,空间缩小到正常水平。 此故障的解决过程表明,对于Oracle数据库的故障排查,应从日志分析开始,深入到系统视图和进程分析,...
解决方法是缩小表空间,使用 alter table XXXX move 语句可以释放表空间。 2. 索引的无效:当释放表空间后,表的行号 rowid 会发生变化,而基于 rowid 的索引则会变成无效。解决方法是重建索引,使用 alter index ...
在Oracle数据库中,表空间是存储数据的主要逻辑结构,它由一个或多个数据文件组成,决定了数据库的存储容量。表空间分为几种类型,包括永久表空间、临时表空间和回滚表空间,每种都有其特定的用途。 1. **SYSTEM表...
在Oracle数据库中,当用户创建一个表时,Oracle会自动在相应的表空间内为此表分配数据段以容纳其数据。用户可以通过多种方式控制数据段的空间分配与使用: - 通过设定数据段的存储参数来控制其空间分配方式; - 通过...
- **易于维护**:可以通过简单地添加或删除分区来扩展或缩小表。 - **提高可用性**:如果某个分区出现问题,可以将其脱机而不影响其他分区中的数据。 - **优化空间管理**:可以通过为不同分区分配不同的表空间来更...
在企业级应用中,为了提升数据管理效率和优化查询性能,Oracle提供了分区表这一特性。同时,为了保证数据的一致性和完整性,Oracle的锁机制也是其核心功能之一。下面我们将深入探讨Oracle分区表和锁的应用。 一、...
例如,当我们创建一个表 PM_USER 时,首先 Oracle 会分配一区的空间给这个表,随着不断的 INSERT 数据到 PM_USER,原来的这个区容不下插入的数据时,Oracle 是以区为单位进行扩展的,也就是说再分配多少个区给 PM_...
可以使用`ALTER TABLE SHRINK SPACE`命令来缩小表的大小,这将重新组织表中的数据并回收未使用的空间。 3. **重定义表**:如果表中有大量空闲空间,可以考虑使用`CREATE TABLE AS SELECT`语句创建新表,然后交换...
在Oracle、MySQL、SQL Server等主流数据库系统中,管理员都需要对表空间进行管理,包括创建、扩展和缩小表空间的大小。下面将详细解释这个主题。 一、表空间的作用与类型 1. 数据存储:表空间是数据库中数据和索引...
在Oracle数据库管理中,表空间(Tablespaces)是存储数据文件的逻辑结构,用于组织数据库对象,如表、索引等。随着数据库的使用,表空间可能会耗尽,需要进行扩展以满足存储需求。本篇文章将详细介绍如何通过Oracle...
- 此命令会启动VDI文件的压缩过程,释放未使用的空间,从而缩小VDI文件的实际大小。 #### 三、示例效果 以一个实际案例为例,假设初始的VDI文件大小为2.5GB,在经过上述步骤处理后,其实际大小被压缩到了1.2GB,...
这部分可能会介绍如何执行表和表空间的缩小操作。 ### 50. 约束 (Constraint) 约束用于定义表中数据的有效性规则。这部分可能会讲解不同类型的约束及其用法。 通过以上对题库内容的概述,可以看出此题库覆盖了...
这个命令可以缩小表或索引段的空间,释放出不再使用的空间。它会重新组织数据块,将空闲空间压缩到较小的连续区域。与`ALTER TABLE T MOVE`相比,`SHRINK SPACE`不需要创建新的表,因此对系统的影响相对较小。但是,...
缩小表空间大小** - 当 `UNDOTBS1` 表空间过大时,需要先确认其管理模式。如果是自动管理模式,则不能使用手动收缩命令。 #### 三、查询数据库信息 **1. 查询所有数据库对象** - 若要查看所有数据库对象,可以...
- Oracle建议为Flash Recovery Area分配足够的空间,以容纳所有数据文件、增量备份、未备份的归档日志以及Flashback Logs。 4. **Flashback Query**: - 包括Flashback Query、Flashback Version Query和...
Oracle Exadata还采用了混合列式压缩技术,这是一种数据压缩方法,能够显著缩小数据仓库和存档表的存储体积。在数据仓库表上平均可以将表的大小压缩至原来的1/10,在存档表上甚至可以达到1/50的压缩率。这样的数据...