Oracle10g 表空间管理
- 格式:ppt
- 大小:187.50 KB
- 文档页数:25
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`:要修改的表的名称。
《oracle 10g 数据库基础教程》实验报告实验名称:金融数据库技术实验二实验目的:远程登录数据库,使用OEM、SQL等方法创建表,熟悉创建语句实验内容:1、远程连接数据库。
2、用OEM管理表。
3、用SQL*Plus管理表。
4、Oracle数据操纵和查询实验步骤:远程登录显示用户创建用户要连接远程的网络数据库,先要在客户端上设定被连接的数据库服务器的Net服务名。
在客户端启动Net Configuration Assistant选择“本地Net服务名配置”。
添加服务器的IP可以创建具有个人特色的名字回到OEM登录界面配置完毕后回到OEM,进行表的创建等。
⏹以管理员身份登录OEM,为用户scott创建一个名称为employee的表,指定表空间example。
⏹该表包含以下属性:eno,ename,eage,sex,salary。
为其设置合适的数据类型和大小。
⏹为各属性设置如下约束:eno为主键,约束名称为T_PK。
在“管理”中寻找“表”进行创建,选择创建在方案上选择用户名,对象名为要创建的表名添加列名,添加束缚语句等。
在OEM界面完成表的创建和添加约束条件后,在SQL中查看表格情况⏹在sql plus命令行界面创建和管理表,并写出相应的SQL语句。
⏹创建一个表student,指定表空间为STU,占用空间大小为10M。
⏹表中的各列及约束仿照OEM表设置。
用SQL语句为表添加phone和birthdates属性,并为phone列添加unique约束。
输入信息:向student表中插入一行记录,姓名为serena,学号为5,其余信息与名为王霞的学生一样。
利用select子查询语句实现。
将学生李晨的phone改为139,birthdates改为22-6月-92。
将赵勇性别改为M。
实验总结:今天学习1、远程连接数据库。
2、用OEM管理表。
3、用SQL*Plus管理表。
4、Oracle 数据操纵和查询。
远程连接的难度在于,要分清楚服务器与客户端之间的差别。
Oracle 8i、9i、10g、11g不同版本的比较Oracle 9i比8i多了哪些新特性?简要说:9i更易于管理。
详细说:并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上。
9i可以在线修改内核参数和内存分配,8i不行。
数据文件和表空间管理,8i手工管理,9i自动管理。
9i比8i增强了对ANSI SQL99的支持。
9i比8i增强了故障后的快速恢复(Fast-start)。
8i只支持物理备份(physical backup)数据库,9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务.Oracle 10g比9i多了哪些新特性?简要说:10g支持网格(Grid),支持自动管理(Automatic Management)。
详细说:10g的g是”Grid”缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中均衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure)。
安装容易,安装工作量比9i减少了一半。
新增基于浏览器的企业管理器(Enterprise Manager)。
自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。
内存自动化,根据需要自动分配和释放系统内存。
SQL性能调整自动化。
免费提供基于浏览器的小应用开发工具Oracle Application Express(原名HTML DB),支持10g和9iR2。
快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。
数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15–45倍。
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 建立大文件表空间从Oracle 10g开始,Oracle引入了一个新增的表空间类型——大文件(BIGFILE)表空间,从而显著的增强了存储能力。
一个大文件表空间中对应一个单一的数据文件或临时文件,但是文件可以达到4G个数据块大小。
理论上,当数据块大小为8K时,大文件表空间的数据文件最大可以达到32T字节;当数据块尺寸为32K时,那么大文件表空间的数据文件最大尺寸可以达到128T。
在实际环境中,这还受到操作系统的文件系统的限制。
在创建表空间时,默认的创建的表空间为SMALLFILE类型的表空间,通过查询数据字典视图DATABASE_PROPERTIES,可以显示当前数据库默认创建的表空间是否为BIGFILE 类型的表空间。
具体如下:SQL> select *2 from database_properties3 where property_name ='DEFAULT_TBS_TYPE';PROPERTY_NAME PROPERTY_V ALUE DESCRIPTION------------------------------ ------------------------------ ------------------------------DEFAULT_TBS_TYPE SMALLFILE Default tablespace type从这里可以看出,如果在创建表空间时不指定数据文件的类型,那么默认创建的表空间都是SMALLFILE类型的表空间。
用户可以通过ALTER DATABASE命令来修改数据库默认的表空间类型:SQL> alter database set default bigfile tablespace;数据库已更改。
SQL> select *2 from database_properties3 where property_name = 'DEFAULT_TBS_TYPE';PROPERTY_NAME PROPERTY_V ALUE DESCRIPTION------------------------------ ------------------------------ ------------------------------DEFAULT_TBS_TYPE BIGFILE Default tablespace typeSQL> alter database set default smallfile tablespace;数据库已更改。
表空间(TABLESPACE)表空间(TABLESPACE)是ORACLE数据库中最大的逻辑结构。
ORACLE数据库是由一个或多个表空间组成的。
它在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。
从物理上说数据库的数据被存放在数据文件中,而从逻辑上说是被存放在表空间中的。
数据库的逻辑配置实际上就是指表空间的配置。
一、表空间概述表空间是ORACLE数据库中最大的逻辑结构。
数据库的所有对象和方案都被逻辑的保存在表空间中。
(一)表空间的特性与作用数据库管理系统(DBMS)是建立在操作系统(OS)基础上的,它的数据也必须存储在各个文件中,如数据文件、重做日志文件、归档日志文件等。
表不是文件,表不是空间。
表空间是组织结构和分配空间的逻辑结构。
除了数据文件之外,控制文件、重做日志文件、归档日志文件等其他文件都不属于任何表空间。
表空间的特性如下:1.一个数据库可以有多个表空间。
可以在数据库中创建、删除表空间;2.一个表空间只属于一个数据库;3.一个表空间必须要有一个数据文件;4.一个表空间的大小等于其中所有数据文件的大小之和。
数据库的大小等于其中所有表空间的大小之和;5.表空间可以被联机和脱机。
SYSTEM表空间不能被脱机;6.表空间可以在读写、只读状态之间切换;7.每个表空间由一个或多个物理存在的操作系统的数据文件组成。
这种数据文件可以具有固定的大小,或允许其自动变大。
可以在表空间中添加、删除数据文件;8.方案对象、表、索引的数据都被存储在表空间的数据文件中。
一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就可以;9.一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中;10.一个用户使用的表空间的数量是有一定配额的,不能超出这个配额;11.可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。
第一章oracle数据库10g概述1.1 数据库和信息管理服务器必须在多用户环境中管理大量的数据,使得多个用户能够并行访问数据。
所有这些必须能够在高性能的情况下完成,数据库服务器必须防止未经授权的非法访问,保护敏感数据,同时,为故障恢复提供解决方案。
▪客户用员务器环境▪大型数据库和空间管理▪多个并行数据库用户▪连接性▪高事务处理能力▪控制可用性▪开放的、基于工业标准▪管理安全性▪数据库完整性增强▪兼容性▪分布式系统▪复制环境1.2 Oracle 10g服务器Oracle 10g服务器是对象关系数据库管理系统,提供对信息管理的集成方法,一个Oracle服务器包括一个Oracle数据库和一个Oracle服务器实例。
每当数据库启动的时候,系统全局区(SGA)被分配,并启动了Oracle后台进程。
系统全局区是用于数据库用户共享数据库信息的内存区域。
后台进程和内存缓冲区称为Oracle实例。
Oracle实例包含两种类型的进程:用户进程和Oracle进程。
用户进程执行应用操作的代码。
Oracle 进程是执行用户进程和后台进程,对Oracle进行维护的服务器进程。
为了最大化性能和处理多个用户的请求,多进程Oracle系统使用附加进程,这些附加进程称为后台进程。
后台进程能够自动执行I/0和监视Oracle进程,为获得更好的性能和稳定性提供更好的支持。
数据库的物理结构和存储结构之间的关系由后台进程来维持。
数据库拥有多个后台进程,其数量取决于数据库的配置。
这些进程由数据库管理,它们只需要进行很少的管埋。
每个后台进程创建一个跟踪文件。
Oracle在实例操作期间保存跟踪文件。
后台进程跟踪文件的命名约定和位置随操作系统和数据库版本不同而不同。
一般来说,跟踪文件含有后台进程名或后台进程的操作系统进程ID.可以设置init.ora文件的BACKGROUND_DUMP_DEST参数来规定后台进程跟踪文件的位置。
但是有些版本的Oracle忽略这种设置。
Oracle10g的临时表空间占满之后的解决方法。
公司客户数据库用了一段时间之后,总是出现磁盘被占满的情况。
基本上这个情况要么就是undo表空间很大,要么就是临时表空间很大,这个时候就需要进行转储undo表空间或者临时表空间。
以下是解决方法。
---解决临时表空间Temp的方法TEMP文件尚未调整,还是16G,首先创建了一个新的TEMP文件并设定为缺省临时表空间SQL> create temporary tablespace TEMP3 TEMPFILE '/opt/oracle/oradata/cuss/TEMP2.dbf' size 20m reuse autoextend off;SQL>alter database default temporary tablespace "TEMP2"结果这个情况下做exp产生ORA-01403的错误,后来得知是因为TEMP临时表空间容量过小的原因重新创建一个TEMP3文件,初始大小1G,每次增长200M,最大限制为4G。
SQL> create temporary tablespace TEMP3 TEMPFILE'/opt/oracle/oradata/cuss/TEMP3.dbf' size 1000m reuse autoextend on next 200m maxsize 4000m;把缺省临时表空间指向这个新建的TEMP3。
SQL>alter database default temporary tablespace "TEMP3"删除原有的临时表空间文件和操作系统中的对应物理文件,释放磁盘空间SQL>drop tablespace temp2 including contents and datafiles;重新做exp导出,导出成功。
至此调整结束。
oracle10G收缩表空间oracle 10G 收缩表空间如果经常在表上执行DML操作,会造成数据库块中数据分布稀疏,浪费大量空间。
同时也会影响全表扫描的性能,因为全表扫描需要访问更多的数据块。
从oracle10g开始,表可以通过shrink来重组数据使数据分布更紧密,同时降低HWM释放空闲数据块。
从10g开始,oracle开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理(ASSM),就可以使用这个特性缩小段,即降低HWM。
这里需要强调一点,10g的这个新特性,仅对ASSM表空间有效,否则会报 ORA-10635: Invalid segment or tablespace type。
比如我工作中使用的系统有个LOG表,记录的日志经常会删除。
时间长了查询速度变慢,而且浪费表空间。
下面就以这个表为例,记录下收缩表空间的方法。
1. 查看收缩前表的使用情况select sum(bytes)/1024/1024 Mb from user_segments where segment_name='LOG';2. 开启行迁移alter table LOG enable row movement;3. 整理表空间内的碎片alter table LOG shrink space compact;4. 收缩表空间alter table LOG shrink space;5.再查看收缩后的表空间使用情况select sum(bytes)/1024/1024 Mb from user_segments where segment_name='LOG';注意:收缩表空间要在数据库比较空闲的时候做。
Oracle,查询表空间所有表、表所在的表空间、⽤户默认表空
间,以及如何缩⼩表空间
⼀、查询表空间所有表
select table_name from all_tables where TABLESPACE_NAME='USERS';
⼆、查询表所在的表空间
select*from user_tables where table_name='PANTAB';
⼀个数据库由多个表空间构成,表空间由段构成,段由区构成,区由块构成,这样可以提⾼效率。
三、查询⽤户默认表空间
select DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username='MYTEST'
四、如何缩⼩表空间
1. 如果是Oracle 10G以后的版本,表空间中⽀持⾃动段空间管理(ASSM),可以参考下⽂:
2 .如果表空间不⽀持ASSM,只能⽤最笨的⽅法,将数据拷贝出来,然后弃⽤原表空间,参考下⽂:
3. 我还有个简单粗暴的办法:先expdp当前数据库,然后⽤Database Configuration Assistant删除数据库,重建数据库,最后impdp数据库……这么做,同样可以达到缩⼩表空间的效果,我的就由10G缩⼩到1G。
具体可以参考:。
Oracle 10g 数据库管理应用与开发课后习题答案(填空与选择题)填空题第二章1.用户对数据库的操作如果产生日志信息、则该日志信息首先被存储在日志缓冲区中,随后由LGWR进程保存到日志文件。
2.在Oracle的逻辑存储结构中,根据存储数据的类型,可以将段分为数据段、索引段、回退段、LOB段和临时段。
3.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务器进程。
当一个用户运行应用程序,如PRO*C程序或一个Oracle工具(如SQL*Plus),系统将为用户运行的应用程序建立一个用户进程。
第三章1.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。
2.在需要滤除查询结果中重复的行时,必须使用关键字Distinct;在需要返回查询结果中的所有行时,可以使用关键字ALL。
第四章1.创建一个UPDATE语句来修改ARTISTS表中的数据,并且把每一行的T_ID值都改成15,应该使用的SQL语句是update artists set t_id=15;。
2.使用describe命令可以显示表的结构信息。
3.使用SQL*Plus的get命令可以将文件检索到缓冲区,并且不执行。
4.当设置了多个列的显示属性后,如果清除设置的显示属性,可以使用命令clear column,而当要清除某列具体的显示属性时,需要使用命令OFF/column 列名clear。
5.使用SA VE命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Start命令运行该文件。
6.要设置SQL*Plus显示数字时的格式可以使用NumFormat命令,而要设置某个数字列的显示格式要使用Column命令。
第五章1.ROWID实际上保存的是记录的物理地址,2.在STORAGE子句中可以设置6个存储参数。
其中,Initial指定为表中的数据分配的第一个盘区的大小;Next指定为存储表中的数据分配的第二个盘区大小;Pctincrease指定从第二个盘区之后,每个盘区相对于上一个盘区的增长百分比;Minextents指定允许为表中的数据所分配的最小盘区数目;Maxextents指定允许为表中的数据所分配的最大盘区数目。
网页访问http://localhost:1158/emOracle 创建表空间SYS用户在CMD下以DBA身份登陆:在CMD中打sqlplus /nolog然后再conn / as sysdba// 分为四步//第1步:创建临时表空间create temporary tablespace user_temptempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50mautoextend onnext 50m maxsize 20480mextent management local;//第2步:创建数据表空间create tablespace test_dataloggingdatafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' size 50mautoextend onnext 50m maxsize 20480mextent management local;//第3步:创建用户并指定表空间create user username identified by passworddefault tablespace user_datatemporary tablespace user_temp;//第4步:给用户授予权限grant connect,resource to username;---------------------------------------------------------------------------------//以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间,这就不用在每创建一个对象给其指定表空间了撤权:revoke 权限... from 用户名;删除用户命令drop user user_name cascade;建立表空间CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500MUNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k删除表空间DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;一、建立表空间CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500MUNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k二、建立UNDO表空间CREATE UNDO TABLESPACE UNDOTBS02DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:ALTER SYSTEM SET undo_tablespace=UNDOTBS02;三、建立临时表空间CREATE TEMPORARY TABLESPACE temp_dataTEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M四、改变表空间状态1.使表空间脱机ALTER TABLESPACE game OFFLINE;如果是意外删除了数据文件,则必须带有RECOVER选项ALTER TABLESPACE game OFFLINE FOR RECOVER;2.使表空间联机ALTER TABLESPACE game ONLINE;3.使数据文件脱机ALTER DATABASE DATAFILE 3 OFFLINE;4.使数据文件联机ALTER DATABASE DATAFILE 3 ONLINE;5.使表空间只读ALTER TABLESPACE game READ ONLY;6.使表空间可读写ALTER TABLESPACE game READ WRITE;五、删除表空间DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;六、扩展表空间首先查看表空间的名字和所属文件select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;1.增加数据文件ALTER TABLESPACE gameADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;2.手动增加数据文件尺寸ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'RESIZE 4000M;3.设定数据文件自动扩展ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbfAUTOEXTEND ON NEXT 100MMAXSIZE 10000M;设定后查看表空间信息SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME ANDA.TABLESPACE_NAME=C.TABLESPACE。