⑴ oracle 数据文件能改小么
没使用的部分可以用过resize 缩小,已使用的部分不能,除非把占用的对象移走
⑵ oracle清理数据后,如何缩小表空间,减小表空间文件大小
修改表空间的扩展策略。减小增长比例。或者表空间的初始值设大点。
⑶ 压缩oracle数据文件
Oracle中压缩数据节省空间和提高速度 添加时间:2007-4-22使用表压缩来节省空间并提高查询性能 很多决策支持系统通常都涉及到存储于几个特大表中的大量数据。随着这些系统的发展,对磁盘空间的需求也在快速增长。在当今的环境下,存储着数百TB(太字节)的数据仓库已经变得越来越普遍。 为了帮助处理磁盘容量问题,在Oracle9i第2版中引入了表压缩特性,它可以极大地减少数据库表所需要的磁盘空间数量,并在某些情况下提高查询性能。 在本文中,我将向你说明表压缩是如何工作的,以及在构建和管理数据库时如何配置表空间。我还将基于一些示例测试结构讨论一些性能问题,以帮助你了解使用表压缩预计能获得多大好处。 表压缩是如何工作的 在Orcle9i第2版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的。当确定一个表要被压缩后,数据库便在每一个数据库数据块中保留空间,以便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(symboltable)。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行中出现被标识为要压缩的数据时,该行在该符号表中存储一个指向相关数据的指针,而不是数据本身。节约空间是通过删除表中数据值的冗余拷贝而实现的。 对于用户或应用程序开发人员来说,表压缩的效果是透明的。无论表是否被压缩,开发人员访问表的方式都是相同的,所以当你决定压缩一个表时,不需要修改SQL查询。表压缩的设置通常由数据库管理人员或设计人员进行配置,几乎不需要开发人员或用户参与。 如何创建一个压缩的表 要创建一个压缩的表,可在CREATE TABLE语句中使用COMPRESS关键字。COMPRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行。下面是CREATE TABLE COMPRESS语句的一个实例:CREATETABLESALES_HISTORY_COMP(PART_IDVARCHAR2(50)NOTNULL,STORE_IDVARCHAR2(50) NOT NULL,SALE_DATEDATE NOT NULL,QUANTITYNUMBER(10,2) NOT NULL)COMPRESS;或者,你可以用ALTER TABLE语句来修改已有表的压缩属性,如下所示:ALTER TABLE SALES_HISTORY_COMP COMPRESS;为了确定是否已经利用COMPRESS对一个表进行了定义,可查询USER_TABLES数据字典视图并查看COMPRESSION列,如下面的例子所示:SELECT TABLE_NAME, COMPRESSION FROM USER_TABLES;TABLE_NAMECOMPRESSION—————————–SALES_HISTORYDISABLEDSALES_HISTORY_COMPENABLEDCreate table me(shengao int32,tizhong int ,zhangxiang verchar2(60)) compress;Select table_name, compression from user_tables;Select tablespace_name,def_tab_compression from user_tablespaces;也可以在表空间级别上定义COMPRESS属性,既可以在生成时利用CREATE TABLESPACE来定义,也可以稍后时间利用ALTER TABLESPACE来定义。与其他存储参数类似,COMPRESS属性也具有一些继承特性。当在一个表空间中创建一个表时,它从该表空间继承COMPRESS属性。为了确定是否已经利用COMPRESS对一个表空间进行了定义,可查询USER_TABLESPACES数据字典视图并查看DEF_TAB_COMPRESSION列,如下面的例子所示:SELECTTABLESPACE_NAME,DEF_TAB_COMPRESSIONFROMDBA_TABLESPACES;TABLESPACE_NAMEDEF_TAB_COMPRESSION———————————-DATA_TS_01DISABLEDINDEX_TS_01DISABLED正如你所预计的那样,你可以在一个表空间直接压缩或解压缩一个表,而不用考虑表空间级别上的COMPRESS属性
⑷ oracle 段收缩数据文件能收缩吗
可以!收缩数据文件
⑸ 怎样压缩Oracle数据文件
如果属于一个单独的表空间不是system等,可以把表空间删除,或删除所有对象后resize数据文件
⑹ 怎样收缩 oracle datafile
1、当表空间里没有数据时:alter database datafile ‘/data1/oracle/data_201708.dbf’ resize 1G;alter database tempfile ‘/u02/oracle/oradata/orcl/temp01.dbf’ resize 1G;2、查询有哪些表空间及相应数据文件col name format a50set linesize 200select a.name,b.name from v$tablespace a ,v$datafile b where a.TS#=b.TS#;或者col file_name format a50select TABLESPACE_NAME,FILE_NAME from dba_data_files order by TABLESPACE_NAME;
⑺ oracle 如何缩小和重建temp表空间的数据文件(ora
1.不行,数据文件不能单独删除,要与表空间一起删除。也可以手工合并自由范围: alter tablespace temp coalesce; 否则就重建表空间: 1.startup –启动数据库 2.create temporary tablespace TEMP2 TEMPFILE '/home2/oracle/oradata/sysmon/temp02.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; –创建中转临时表空间 3.alter database default temporary tablespace temp2; –改变缺省临时表空间 为刚刚创建的新临时表空间temp2 4.drop tablespace temp including contents and datafiles;–删除原来临时表空间 5.create temporary tablespace TEMP TEMPFILE '/home2/oracle/oradata/sysmon/temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; –重新创建临时表空间 6.alter database default temporary tablespace temp; –重置缺省临时表空间为新建的temp表空间 7.drop tablespace temp2 including contents and datafiles;–删除中转用临时表空间 8.alter user roll temporary tablespace temp; –重新指定用户表空间为重建的临时表空间
⑻ oracle 删除用户及相关表数据,释放磁盘空间
数据文件是不会因为你删掉了某些数据而改变其物理大小的,可以这样做:1.先查询你的表空间存储情况,使用了多少空间,还剩多少空间:SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB – F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB – F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 12.然后看哪个数据文件占的空间较大,并且使用得却不多: 假设用得多的是叫 Tools.DBF ,一共用了20G,里面只使用了20%,还剩余80%的空间(16G)执行以下语句改变数据文件大小:alter database datafile 'D:\oracle\oradata\Tools.dbf' resize 6144M;将数据文件改成6G,就可以节省14G的空间3.如果使用率已经达到或者接近90%,可以将这个用户的相关数据全部删除,然后用imp exp导出全库,删除这个数据文件并新建,然后将数据导入新的表空间。
⑼ oracle怎么收缩数据文
–找出目前TEST表空间最大的block_id
SELECT MAX(block_id)FROM dba_extentsWHERE tablespace_name = 'TEST';
MAX(BLOCK_ID)
————-
136
–计算目前最大块的段所占用的空间(该数据库的block大小是8192)
show parameter db_block_size ;
NAME TYPE VALUE
———————————— ———– ——————————
db_block_size integer 8192
SELECT 136*8192/1024/1024 "MAX(M)" FROM al;
MAX(M)
———-
1.0625
–查看表空间物理文件的名称及大小
set line 200
col file_name for a50
select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) "total_space(M)"from dba_data_fileswhere tablespace_name ='TEST' ;
TABLESPACE_NAME FILE_ID FILE_NAME total_space(M)
—————————— ———- ————————————————– ————–
TEST 6 /u01/oradata/source/test01.dbf 100
4
–resize表空间
SQL> ALTER DATABASE DATAFILE '/u01/oradata/source/test01.dbf' RESIZE 1M;
ALTER DATABASE DATAFILE '/u01/oradata/source/test01.dbf' RESIZE 1M*ERROR at line 1:
ORA-03214: File Size specified is smaller than minimum required
SQL> ALTER DATABASE DATAFILE '/u01/oradata/source/zfl01.dbf' RESIZE 2M;
Database altered.
⑽ oracle收缩表空间会影响到数据吗
不会的,你是扩展表空间或者扩展数据文件,不是收缩或者下线。如果扩展表空间数据会丢失,那么空间不足了怎么办?不都是在扩展表空间么。不过原来的数据文件不能动。