oracle10g数据库的表空间查看和修改
表空间(TableSpace)

表空间(TableSpace)我们知道Oracle数据库真正存放数据的是数据⽂件(Data File),oracle表空间(tablespace)实际上是⼀个逻辑的概念,在物理上是并不存在的,那么把⼀组data files捻在⼀起就成为⼀个表空间。
表空间属性:⼀个数据库可以包含多个表空间,⼀个表空间只能属于⼀个数据库⼀个表空间包含多个数据⽂件,⼀个数据⽂件只能属于⼀个表空间表空间可以划分成更细的逻辑存储单元:Oracle数据库的存储空间结构:从逻辑的⾓度来看,⼀个数据库(database)下⾯可以分多个表空间(tablespace);⼀个表空间下⾯有可以分多个段(segment);⼀个数据表要占⼀个段(segment),⼀个索引也要占⼀个段(segment)。
⼀个段(segment)由多个区间(extent)组成,那么⼀个区间⼜由⼀组连续的数据块(data block)组成,这连续的数据块是在逻辑上是连续的,有可能是物理逻辑上是分散那么从物理的⾓度上看,⼀个表空间由多个数据⽂件组成,数据⽂件是实实在在存在的磁盘⽂件,这些⽂件是由oracle数据库操作系统的block组成的Segment(段):段是指占⽤数据⽂件空间的通称,或数据库对象使⽤的空间的稽核;段可以由表段、索引段、回滚段、临时段、和⾼速缓存段等。
Extent(区间):分配给对象的任何连续块就叫区间;区间也叫扩展,因为当它⽤完已经分配的区间后,再有新的记录插⼊就必须在分配新的区间(即扩展⼀些块);⼀旦区间分配某个对象(表,索引或簇),则该区间就不能再分配给其它的对象1,查看表空间的名称及⼤⼩select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name2、查看表空间物理⽂件的名称及⼤⼩select tablespace_name,file_id,file_name,round(bytes / (1024*1024), 0) total_spacefrom dba_data_filesorder by tablespace_name;select tablespace_name,file_id,file_name,round(bytes / (1024*1024), 0) total_spacefrom dba_temp_filesorder by tablespace_name;3、查看表空间的使⽤情况select sum(bytes) / (1024 * 1024) as free_space, tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT * from DBA_TEMP_FREE_SPACE;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_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 4 DESC;4、查看/修改Database的Default Temporary TablespaceSELECT PROPERTY_NAME, PROPERTY_VALUEFROM DATABASE_PROPERTIESWHEREPROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;5,--查看表空间是否具有⾃动扩展的能⼒SELECT T.TABLESPACE_NAME,D.FILE_NAMED.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROM DBA_TABLESPACES T, DBA_DATA_FILES DWHERE T.TABLESPACE_NAME = D.TABLESPACE_NAMEORDER BY TABLESPACE_NAME, FILE_NAME;当数据库刚建⽴起来,系统会建⽴⼀个叫做SYSTEM的系统的TableSpace,存放SYS,SYSTEM等User重要的系统数据(ex:数据字典与预存储程序等)建⽴oracle User时,不指定预设的TableSpace,则此User则会以System TableSpace 作为预设的TableSpace,这造成管理上的混乱与严重的效能问题,这是必须注意的TableSpace的类型:Permanent、Undo、TemporaryPermanent TableSpace:创建给AP使⽤的都是。
oracle修改表空间大小的方法

oracle修改表空间大小的方法一、引言Oracle数据库是广泛应用于企业级应用系统的数据库管理系统,表空间是Oracle数据库中最基本的数据存储单位。
为了满足业务需求或应对数据增长,常常需要对表空间的大小进行调整。
本篇文章将详细介绍如何修改Oracle数据库中的表空间大小。
二、准备工作1. 确认具有足够的权限:修改表空间大小需要具有足够的权限,通常需要具有DBA(数据库管理员)角色或与之相关的权限。
2. 了解表空间状态:在修改表空间大小之前,需要确保表空间处于正确的状态,例如是否打开了,是否是只读状态等。
3. 备份数据:修改表空间大小可能会对数据库中的数据产生影响,因此在执行此操作之前,强烈建议进行数据备份。
1. 使用ALTER TABLESPACE命令:使用ALTER TABLESPACE命令可以动态地增加或减少表空间中的存储空间。
以下是基本语法:```sqlALTER TABLESPACE tablespace_name ADD SPACE[ ( space_number ) ] [ DATAFILE 'file_path' [ SIZE{ file_size | next_autoextend } ] ] ;```* `tablespace_name`:要修改的表空间名称。
* `space_number`:要添加的空间编号(可选)。
* `file_path`:新数据文件的路径和文件名。
* `file_size`:新数据文件的大小(可选)。
* `next_autoextend`:自动扩展的最小大小(可选)。
2. 使用ALTER TABLE命令:通过修改表的数据块大小来间接调整表空间的大小。
这种方法适用于调整单个表的大小。
以下是基本语法:```sqlALTER TABLE table_name MODIFY (data_block_size =new_size);```* `table_name`:要修改的表的名称。
OracleDatabase10g数据库安装及配置教程

OracleDatabase10g数据库安装及配置教程Oracle安装配置教程分享给⼤家供⼤家参考,具体内容如下1、安装Oracle 版本:Oracle Database 10g Release 2 (10.2.0.1)下载地址:安装设置:1)这⾥的全局数据库名即为你创建的数据库名,以后在访问数据,创建“本地Net服务名”时⽤到;2)数据库⼝令在登录和创建“本地Net服务名”等地⽅会⽤到。
2、创建“本地Net服务名”1)通过【程序】-》【Oracle - OraDb10g_home1】-》【配置和移植⼯具】-》【Net Configuration Assistant】,运⾏“⽹络配置助⼿”⼯具:2)选择“本地 Net 服务名配置”:3)这⾥的“Net 服务名”我们输⼊安装数据库时的“全局数据库名”:4)主机名我们输⼊本机的IP地址:5)测试数据库连接,⽤户名/密码为:System/数据库⼝令(安装时输⼊的“数据库⼝令”):默认的⽤户名/密码错误:更改登录,输⼊正确的⽤户名/密码:测试成功:3、PLSQL Developer 连接测试输⼊正确的⽤户名/⼝令:成功登陆:数据库4、创建表空间打开sqlplus⼯具:sqlplus /nolog连接数据库:conn /as sysdba创建表空间:create tablespace camds datafile 'D:\oracle\product\10.2.\oradata\camds\camds.dbf' size 200m autoextend on next 10m maxsize unlimited;5、创建新⽤户运⾏“P/L SQL Developer”⼯具,以DBA(⽤户名:System)的⾝份登录:1)新建“User(⽤户):2)设置⽤户名、⼝令、默认表空间(使⽤上⾯新建的表空间)和临时表空间:3)设置⾓⾊权限:4)设置”系统权限“:5)点击应⽤后,【应⽤】按钮变灰,新⽤户创建成功:6)新⽤户登录测试:输⼊新⽤户的“⽤户名/⼝令”:新⽤户“testcamds”成功登陆:6、导⼊导出数据库先运⾏cmd命令,进⼊命令⾏模式,转到下⾯的⽬录:D:\oracle\product\10.2.0\db_1\BIN【该⽬录下有exp.exe⽂件】1)导⼊命令语法:imp userid/pwd@sid file=path/file fromuser=testcamds touser=userid命令实例:imp testcamds/123@camds file=c:\testcamds fromuser=testcamds touser=testcamds导⼊结果:2)导出:命令语法:exp userid/pwd@sid file=path/file owner=userid命令实例:exp testcamds/123@camdsora file=c:\testcamds owner=testcamds 导⼊结果://创建临时表空间create temporary tablespace zfmi_temptempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//tempfile参数必须有//创建数据表空间create tablespace zfmiloggingdatafile 'D:\oracle\oradata\zfmi\zfmi.dbf'size 100mautoextend onnext 32m maxsize 2048mextent management local;//datafile参数必须有//删除⽤户以及⽤户所有的对象drop user zfmi cascade;//cascade参数是级联删除该⽤户所有对象,经常遇到如⽤户有对象⽽未加此参数则⽤户删不了的问题,所以习惯性的加此参数//删除表空间前提:删除表空间之前要确认该表空间没有被其他⽤户使⽤之后再做删除drop tablespace zfmi including contents and datafiles cascade onstraints;//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,⽽未加此参数,表空间删不掉,所以习惯性的加此参数//including datafiles 删除表空间中的数据⽂件//cascade constraints 同时删除tablespace中表的外键参照如果删除表空间之前删除了表空间⽂件,解决办法: 如果在清除表空间之前,先删除了表空间对应的数据⽂件,会造成数据库⽆法正常启动和关闭。
PLSQL Developer 10g 创建、删除表空间、更名

EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON;
7) DROP TABLESPACE db_name_ INCLUDING CONTENTS AND DATAFILES; //删除表空间
--测试创建表空间
create tablespace IMSTEST
datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\HNORCL\IMTEST.def' size 200M
TEMPORARY TABLESPACE "TEMP" ;
grant connect to PROJECTNAME ;
grant dba to PROJECTNAME ;
grant sysdba to PROJECTNAME ;
--创建无限表空间 SQL代码
CREATE TABLESPACE test DATAFILE 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORACLE\TEST1.DBF' SIZE 20000M
extent management local autoallocate
segment space management auto;
CREATE USER PROJECTNAME
IDENTIFIED BY "PROJECTNAME"
DEFAULT TABLESPACE "TBS_PROJECTNAMETEST"
Oracle 11g表空间——创建和扩展(永久)表空间

Oracle 11g表空间——创建和扩展(永久)表空间本文内容创建(永久)表空间查看表空间扩展表空间创建(永久)表空间Oracle 按照区和段空间进行管理表空间。
区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式(dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。
Oracle 10g 开始强烈建议使用 LMT 方式。
从 Oracle 9i 开始,创建表空间时默认使用 LMT。
其中,LMT 区的分配方式:统一(UNIFORM)- 统一分配。
指定表空间中所有区的大小都相同。
默认值是 1MB。
自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。
指定有 Oracle 系统来自动管理区的大小。
这是默认设置。
段管理方式– LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。
段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。
分为两种:手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。
这是传统的段空间管理方式,为了与以前的版本兼容。
自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。
通过位图中单元的取值判断段中的数据块是否可用。
字典管理方式没有段管理。
下面示例演示用本地管理方式创建表空间。
这是 Oracle 推荐的方式。
示例 1:使用 AUTOALLOCATE 区分配方式。
创建表空间 mytbs01,数据文件是D:\oracledata\mytbs01_1.dbf,大小为 2M,并指定区分配方式为 AUTOALLOCATE。
create tablespace mytbs01datafile 'D:\oracledata\mytbs01_1.dbf' size 2Mautoallocate;示例 2:使用 UNIFORM 区分配方式。
Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等

Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等oracle 数据库表空间的作用1.决定数据库实体的空间分配;2.设置数据库用户的空间份额;3.控制数据库部分数据的可用性;4.分布数据于不同的设备之间以改善性能;5.备份和恢复数据。
--oracle 可以创建的表空间有三种类型:1.temporary: 临时表空间,用于临时数据的存放;create temporary tablespace "sample"......2.undo : 还原表空间. 用于存入重做日志文件.create undo tablespace "sample"......3.用户表空间: 最重要,也是用于存放用户数据表空间create tablespace "sample"......--注:temporary 和undo 表空间是oracle 管理的特殊的表空间.只用于存放系统相关数据.--oracle 创建表空间应该授予的权限1.被授予关于一个或多个表空间中的resource特权;2.被指定缺省表空间;3.被分配指定表空间的存储空间使用份额;4.被指定缺省临时段表空间。
select tablespace_name "表空间名称",status "状态",extent_management "区管理方式",allocation_type "磁盘扩展管理方式",segment_space_management "段管理方式" from dba_tablespaces;--查询各个表空间的区、段管理方式--1、建立表空间--语法格式:create tablespace 表空间名datafile '文件标识符' 存储参数[...]|[minimum extent n] --设置表空间中创建的最小范围大小|[logging|nologging]|[default storage(存储配置参数)]|[online|offline]; --表空间联机\脱机|[permanent|temporary] --指定该表空间是用于保存永久的对象还是只保存临时对象 |[...]--其中:文件标识符=’文件名’[size整数[k\m][reuse]--实例create tablespace data01datafile '/oracle/oradata/db/data01.dbf' size 500muniform size 128k; --指定区尺寸为128k,如不指定,区尺寸默认为64kcreate tablespace "test"loggingdatafile 'd:\oracle\oradata\oracle\sample.ora' size 5m,'d:\oracle\oradata\oracle\dd.ora' size 5mextent management localuniform segment space managementauto;--详解/*第一: create tablespace "sample"创建一个名为"sample" 的表空间.对表空间的命名,遵守oracle 的命名规范就可了. 第二: logging 有nologging 和logging 两个选项,nologging: 创建表空间时,不创建重做日志.logging 和nologging正好相反, 就是在创建表空间时生成重做日志.用nologging时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复;但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的;所以通常不需要表空间的创建日志,因此,在创建表空间时,选择nologging,以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile设置如: datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m说明文件的存放位置是'd:\oracle\oradata\ora92\luntan.ora' , 文件的大小为5m.如果有多个文件,可以用逗号隔开:如:datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m, 'd:\oracle\oradata\ora92\ dd.ora' size 5m但是每个文件都需要指明大小.单位以指定的单位为准如5m 或500k.对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少io竟争. 指定文件名时,必须为绝对地址,不能使用相对地址.第四: extent management local 存储区管理方法在字典中管理(dictionary):将数据文件中的每一个存储单元做为一条记录,所以在做dm操作时,就会产生大量的对这个管理表的delete和update操作.做大量数据管理时,将会产生很多的dm操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片.本地管理(local):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
完美解决Oracle改变表空间的问题

完美解决Oracle改变表空间的问题一、使用imp/exp。
先导出源库,再创建新库把表空间创建好,然后再导入。
(据说这样可以,前提是新的库里面不能有与源库相同名字的表空间。
有待验证!)二、使用脚本进行修改。
据目前所了解,正常情况下需要修改表的空间和表的索引的空间,如果涉及到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 storage(initial '||t.initial_extent||' minextents '||t.min_extents||' maxextents '||t.max_extents||');' from user_indexes;可以使用脚本执行查询的结果,这样就可以批量处理!3.不正常情况即含有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 ROWCHUNK integerPCTVERSION integerRETENTIONFREEPOOLS integerCACHE|NOCACHE|CACHE READSINDEX 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字节的控制信息。
linux下查看数据库表空间

1.在Linux下进入SQLPlus,# su – oracle$ sqlplus / as sysdbaSQL>2.查看一个表空间所对应的数据文件SQL>select file_name from dba_data_fileswhere tablespace_name=’BING’;FILE_NAME————————————————————————————————————-/u01/app/oracle/oradata/ora10g/bing001.dbf/u01/app/oracle/oradata/ora10g/bing002.dbf3.查看一个表空间数据文件的大小SQL>select tablespace_name, sum(bytes)/1024/1024―SIZE_M‖,sum(maxbytes)/1024/1024 ―MAX_SIZE‖from dba_data_fileswhere tablespace_name=’BING’group by tablespace_name;TABLESPACE_NAME SIZE_M MAX_SIZE—————————————- ———-BING 200 33791.98444.查看一个表空间空闲的大小,SQL>select tablespace_name, sum(bytes)/1024/1024 ―Free_M‖from dba_free_spacewhere tablespace_name=’BING’group by tablespace_name;TABLESPACE_NAME Free_M—————————————-BING 199.875说明:size_M说明BING这个表空间对应的数据文件现在的大小是200MB,Free_M说明现在这个表空间还剩余199.874MB。
由于这个表空间设置了自动扩展,MAX_SIZE 说明这个表空间最大可以增大到33791.9844 MB5.其他方法查看a. 在Oracle10g新增加了视图dba_tablespace_usage_metrics,以block为单位显示使用率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle数据库表空间大小的查看、修改
1、通过oracle客户端连接到oracle数据库
a)安装好oracle客户端后,通过net manager工具配置本地net服务名,
依次点击开始,程序,Oracle - OraClient10g_home1,配置和移植工具,Net Manager。
b)进入Net Manager配置窗口。
c)依次点击本地,服务命名。
d)可以看到左侧的号变成绿色,此时可以点击该,弹出net服务名的
配置窗口
e)这里的网络服务名是指的oracle客户端所在机器的本地服务名,随便设
置个名字,例如sbzw,点击下一步。
f)默认设置,点击下一步。
g)在主机名后的输入框中输入oracle数据库所在的服务器的ip地址,例
如:,点击下一步。
h)在服务名后的输入框中输入oracle数据库的全局服务名,例如tjsb,
点击下一步。
i)此处不要点击完成,先点击测试查看连接是否正常。
j)在连接测试窗口中显示的应该是测试没有成功,此时请点击更改登录。
k)修改了用户名和密码后,点击确定,然后再次点击“测试”,提示连接成功后,关闭连接测试窗口,点击完成,至此本地net服务名配置完成。
2、通过oracle客户端的企业管理器修改数据库的表空间大小
a)依次点击开始,程序,Oracle - OraClient10g_home1,Enterprise
Manager Console(企业管理器)。
b)进入了oracle的企业管理器
c)依次点击数据库,sbzw,弹出登录窗口,
d)对于修改表空间而言,这里的用户名必须是sys用户,连接身份为
SYSDBA。
e)输入完成后,点击确定,可以看到左侧sbzw的菜单已经打开。
f)依次选择存储,表空间,则页面左侧会显示当前的表空间的使用情况。
g)对于需要增大的表空间,双击该表空间,例如这里的TS_FZ4_DATA,弹
出该表空间的编辑窗口。
h)对于表空间的修改,有两种办法:
i.一种是直接修改单个数据文件的大小值,也就是直接修改上图中的
大小里面的数值,单位是MB,修改完成后点击确定即可。
建议单个
数据文件大小不要超过2G,最多不超过10G,主要是为了防止数据
文件太大,万一数据文件出现错误会造成很大的损失。
ii.另一种是直接添加一个新的数据文件,例如下图中,我直接按照原有文件的序列添加了一个数据文件,然后将此数据文件放到了E盘
的ganhui文件夹下,大小为2348M。
然后点击确定即可。
说明:此处的文件名可以随便命名,后缀名系统设置为DBF即可。
文件目录就是该数据文件存放的位置,可以设置到空间比较大的盘符中去,提前创建好该文件夹,然后将文件目录指向该文件夹即可。
v1.0 可编辑可修改
i)至此,oracle数据库表空间修改完成。
11。