oracle10g数据库的表空间查看和修改
用Oracle 10g Data Pump重组表空间
Oracle 10g版本对数据输入与输出的操作功能进行重新设计,在输入或输出工作中增加断开和连接的功能。
对这些功能做微小改动,就可利于DBA表空间的操作。
作为整体单元输出表空间过去的输出和输入功能有3种模式:依赖于对象输出,如索引的单个表格;输出某个用户所有的对象;输出整个数据库。
但是表空间是一个难于处理的问题。
不同用户的对象存储在给定的表空间中,但是某些对象可能存储在其它表空间。
因此,唯一的解决方法则是使用查询数据字典查找列表及其从属主,然后使用“table-mode export”输出单个整体单元。
Oracle 10g版本中,由于包含输出“Data Pump”(expdp),可以直接从表空间输出所有对象。
TABLESPACES参数允许指定需要输出的表空间。
TABLESPACES=name [,...]如果数据库继承很多基于字典的表空间,以上方法显得更加非常有用。
并且,可在本地重新创建表空间而减少碎片,然后再重新导入内容。
在输入时重命名数据文件名如果将数据库从一平台转移到另一平台,在数据文件导入之前,DBA需要预先创建表空间。
为什么呢?因为在转储文件中包含原始数据库操作系统格式的数据文件路径,将转储文件输入到其他操作系统时,则有可能产生错误。
在Oracle 10g版本的输入(impdp)功能,其REMAP_DATAFILE参数可重命名数据文件,以消除以上问题。
其格式如下:REMAP_DATAFILE=source_datafile:target_datafile这一选项只作用于FULL输入,并且指定的userID必须为IMP_FULL_DATABASE。
输入时更改表空间名称Impdp功能允许向不同的表空间加载对象。
在10g版本出现以前,这一操作非常复杂。
首先,因为没有写操作权限,必须移除原始表空间的限额,然后再设置表空间。
再输入过程中,原始表空间中的对象可以存储在设置后的表空间中。
当任务完成后,必须进行将表空间恢复到原来状态。
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`:要修改的表的名称。
ORACLE 10g 课后参考答案
ORACLE 10g 课后参考答案(答案仅供参考)第一章ORACLE 10g简介一、选择题1.下面不属于ORACLE 10g产品系列的是(D)A.Oracle数据库10g标准版1B.Oracle数据库10g标准版C.Oracle数据库10g企业版D.Oracle数据库10g网络版2.ORACLE 10g中的g表示(D)A.版本B.网络C.数据库D.网格计算3.下面关于ORACLE 10g数据库逻辑结构的描述错误的是(C)A.数据库由若干个表空间组成B.表空间由表组成C.表由数据块组成D.段由区间组成4.ORACLE管理数据库存储空间的最小存储单位是(A)A.数据块B.表空间C.表D.区间5.ORACLE分配磁盘空间的最小单位是(D)A.数据块B.表空间C.表D.区间6.下列不属于ORACLE表空间的是(D)A.大文件表空间B.系统表空间C.撤销表空间D.网格表空间7.当数据库服务器上的一个数据库启动时,ORACLE将分配一块内存区间,叫做系统全局区,英文缩写为(B)A.VGAB.SGAC.PGAD.GLOBAL二、填空题1.__视图__ 是虚拟的表,它在物理上并不存在。
可以把它看成是一个存储的查询。
2.创建___索引__可以提高读取数据的效率。
它的功能类似于书的目录,读者可以通过目录很快的在书中找到需要的内容。
3.有些表共享公共的列,并经常被同时访问,为了提高数据存取效率,把这些表在物理上存储在一起,得到的表的组合就是____簇____。
4.一个数据块对应磁盘上的一定数量的数据库空间,标准的数据块大小由初始参数(DB_BLOCK_SIZE )指定。
5.每个数据库都至少有一个系统表空间,被称为__SYSTEM_表空间。
6.每个ORACLE数据库都由3种类型的文件组成:数据文件、日志文件、控制文件。
7.ORACLE有两种内存结构,即_系统全局区_和_程序全局区_。
三、简答题1.简述ORACLE数据库逻辑结构中各要素之间的关系。
Oracle 改变表空间读写状态
Oracle 改变表空间读写状态表空间可以是读写方式,也可以是只读方式。
默认情况下,所有的表空间都是读写方式,任何具有配额并且具有适当权限的用户都可以写入表空间。
但是如果将表空间设置为只读方式,则任何用户都无法向表空间写入数据,也无法修改表空间中已有的数据,这种限制与权限无关。
将表空间设置为只读方式的主要目的,是为了避免对数据库中的静态数据进行更改。
用户只能查询只读表空间中的数据,而不能进行修改。
1.设置表空间为只读状态所有的表空间在创建后都是处于读写状态。
通过在ALTER TABLESPACE语句中使用READ ONL Y子句,可以将表空间设置为只读状态。
在成功地将表空间设置为只读状态时,表空间必须处于联机状态,另外,SYSEM表空间也不能设置为只读表空间。
例如,下面的语句将把表空间USER01设置为只读状态:SQL> alter tablespace user01 read only;表空间已更改。
SQL> insert into employees2 values(100,'SWITH',1200);insert into employees*第 1 行出现错误:ORA-00372: 此时无法修改文件10ORA-01110: 数据文件10: 'D:\ORACLEDATA\USER01'上述语句执行后,不必等待表空间中活动事务结束即可立即生效,USER01表空间将进入“事务只读状态”。
以后任何用户都不能再创建针对该表空间的读写事务,而当前正在活动的事务则可以继续向表空间中写入数据,直到它们结束为止。
当针对该表空间的所有事务都结束之后,表空间才进入只读状态。
2.设置表空间为读写状态将表空间恢复为读写状态时,只需要在ALTER TABLESPACE语句中使用READ WRITE 子句。
将表空间恢复为读写状态时,必须保证表空间的所有数据文件都处于联机状态,同时表空间本身也必须处于联机状态。
Oracle Storage
一、基本的Oracle存储结构:表空间与数据文件Oracle数据库中具有两种类型的存储:物理存储和逻辑存储。
上面的Oracle存储结构模型中,可以看出下列要素:∙每个数据库(Database)都必须由一个或多个表空间(Tablespace)组成。
每个表空间都必须属于并且只属于一个数据库。
∙每个表空间都必须由一个或多个数据文件(Datafile)组成。
每个数据文件都必须属于并且只属于一个表空间。
∙每个数据文件都必须由一个或多个操作系统块(Operation System Block)组成。
每个操作系统块都必须属于并且只属于一个数据文件。
∙每个表空间都可以包含一个或多个段(Segment)。
每个段都必须存在并且只能存在于一个表空间内。
∙每个段都必须由一个或多个区间(Extent)组成。
每个区间都必须属于并且只属于一个段。
∙每个区间都必须由一个或多个Oracle数据块(Oracle Block)组成。
每个Oracle 数据块都必须属于并且只属于一个区间。
∙每个区间都必须被定位并且只能定位在一个数据文件内。
数据文件中的空间可以被分配为一个或多个区间。
∙每个Oracle数据块都必须由一个或多个操作系统块组成。
每个操作系统块都可以是并且只能是一个Oracle数据块的部分。
1、物理存储结构物理结构是操作系统操作Oracle数据库时能够看见的结构。
1.1、Oracle数据文件数据文件由下列3部分组成:头部、区间(已分配的空间)以及空闲空间(未分配的空间)。
oracle16数据文件的头部(Header)将其标识为数据库的一部分,并且存储了该数据文件的细节,细节包括数据文件所属的表空间以及最后执行的检查点。
这样,Oracle就能够在启动时检查所有相关文件是否同步。
数据文件的剩余部分由区间和空闲空间组成,通过创建、删除和更改Oracle的段(Segment)逻辑存储组件就可以对这些剩余部分进行管理。
每个Oracle数据文件都只属于一个表空间。
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):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
Oracle10g数据库实验指导书
Oracle10g数据库实验指导书前言ORACLE数据库是属于数据库开发软件及应用领域的专业课,是面向计算机专业本科生开设的一门数据库应用普及型计算机专业课程。
ORACLE数据库是当前应用最为广泛的数据库系统,ORACLE数据库是针对高年级学生的实践性较强的课程。
通过实训,并结合典型系统进行分析,使学生较为系统地掌握ORACLE数据库的基本开发方法,运用数据库设计理论设计出满足一定规范的ORACLE 数据库应用系统。
随着计算机数据库技术的迅速发展和在当今信息社会中的广泛应用,给《ORACLE数据库》课程的教学提出了新的更高的要求。
由于ORACLE数据库是一门实践性较强的技术,课堂教学应该与实践环节紧密结合。
实验要求通过理论学习,能够在ORACLE这个大型的数据库设计实践中,对ORACLE的基本功能有一个初步的了解:通过对SQL*PLUS的简单使用,掌握其基本操作命令和技术;通过PL/SQL编程语言的使用与程序设计的分析,加深学生对SQL*PLUS和PL/SQL技术的理解和掌握,进而为今后再涉及到难度较大的实际应用打下扎实的基础。
总之,通过上述实验环节,使学生加深了解和更好地掌握《ORACLE10g数据库》课程教学大纲要求的内容。
在课程实训过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实训内容的准备,就实验可能出现的情况提前做出思考和分析。
(2)仔细观察上机操作时出现的各种现象,记录主要情况,作出必要说明和分析。
(3)认真书写实验报告。
实验报告包括实验目的和要求,实验情况及其分析。
对需编程的实验,写出程序设计说明,给出源程序框图和清单。
(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。
(5)实验课程不迟到。
目录实践1 Oracle10g的安装与配置及常用工具的使用 (1)实践2 创建数据库、表空间和数据文件 (25)实践3 数据库的安全管理 (27)实践4 管理表结构与表数据 (32)实践5 管理索引、视图、同义词和序列 (36)实践6 PL/SQL编程基础 (38)实践7 PL/SQL高级编程 (42)综合实践一Oracle基本知识与SQL*PLUS简单使用 (46)综合实践二PL/SQL编程语言的使用与程序设计 (57)综合实践三(设计性) JSP+Oracle网上购物系统 (68)附录:员工医疗保险系统表 (69)实践1 Oracle10g的安装与配置及常用工具的使用开发语言及实现平台或实验环境Oracle 10g实践目的(1) 掌握Oracle 10g数据库的安装与配置过程。
深度理解Oracle10g中UNDO_RETENTION参数的使用
每一中数据库都需要有一种管理回滚或者撤销数据的方法。
当一个DML发生以后,在用户还没有提交(COMMIT)改变,用户不希望这种改变继续保持,需要撤销所做的修改,将数据回退到没有发生改变以前,这时就需要使用一种被称为撤销记录的数据。
使用撤销记录,我们可以:1、当使用ROLLBACK语句时回滚事务,撤销DML操作改变的数据2、恢复数据库3、提供读取的一致性4、使用Oracle Flashback Query分析基于先前时间点的数据5、使用Oracle Flashback特性从逻辑故障中恢复数据库Oracle10g中的自动撤销管理(AUM)在Oracle10g中对于回滚段的管理可以通过配置参数而实现自动管理。
为启用撤销空间的自动管理,首先必须在init.ora中或者SPFILE文件中指定自动撤销模式。
其次需要创建一个专用的表空间来存放撤销信息,这保证用户不会在SYSTEM 表空间中保存撤销信息。
此外还需要为撤销选择一个保留时间。
如果需要实现AUM,需要配置以下3个参数:UNDO_MAMAGEMENTUNDO_TABLESPACEUNDO_RETENTION查看初始化参数的设置:SQL> show parameter undo_tablespace;NAME TYPE VALUE------------------------------------ ----------------------------------undo_tablespace string UNDOTBS1SQL> show parameter undo_management;NAME TYPE VALUE------------------------------------ ----------------------------------undo_management string AUTOSQL> show parameter undo_retention;NAME TYPE VALUE------------------------------------ ----------------------------------undo_retention integer 900SQL>初始化参数的描述:Initialization Parameter DescriptionUNDO_MANAGEMENT If AUTO, use automatic undo management. The default is MANUALUNDO_TABLESPACE An optional dynamic parameter specifying the name of an undo tablespace. This parameter should be used only when the database has multiple undo tablespaces and you want to direct the database instance to use a particular undo tablespace.UNDO_RETENTION The UNDO_RETENTION parameter is ignored for a fixed size undo tablespace. The database may overwrite unexpired undo information when tablespace space becomes low.For an undo tablespace with the AUTOEXTEND option enabled, the databaseattempts to honor the minimum retention period specified byUNDO_RETENTION. When space is low, instead of overwriting unexpired undo information, the tablespace auto-extends. If the MAXSIZE clause is specified for an auto-extending undo tablespace, when the maximum size is reached, the database may begin to overwrite unexpired undo information.如果将初始化参数UNDO_MANAGEMENT设置为AUTO,则Oracle10g将启用AUM。
Oracle 10g Shrink Table和Shrink Space使用详解
Oracle 10g Shrink Table的使用是本文我们主要要介绍的内容,我们知道,如果经常在表上执行DML操作,会造成数据库块中数据分布稀疏,浪费大量空间。
同时也会影响全表扫描的性能,因为全表扫描需要访问更多的数据块。
从Oracle 10g开始,表可以通过shrink来重组数据使数据分布更紧密,同时降低HWM释放空闲数据块。
segment shrink分为两个阶段:1、数据重组(compact):通过一系列insert、delete操作,将数据尽量排列在段的前面。
在这个过程中需要在表上加RX锁,即只在需要移动的行上加锁。
由于涉及到rowid的改变,需要enable row movement.同时要disable基于rowid的trigger.这一过程对业务影响比较小。
2、HWM调整:第二阶段是调整HWM位置,释放空闲数据块。
此过程需要在表上加X锁,会造成表上的所有DML语句阻塞。
在业务特别繁忙的系统上可能造成比较大的影响。
ShrinkSpace语句两个阶段都执行。
Shrink Space compact只执行第一个阶段。
如果系统业务比较繁忙,可以先执行Shrink Space compact重组数据,然后在业务不忙的时候再执行Shrink Space降低HWM释放空闲数据块。
shrink必须开启行迁移功能。
alter table table_name enable row movement ;注意:alter table XXX enable row movement语句会造成引用表XXX的对象(如存储过程、包、视图等)变为无效。
执行完成后,最好执行一下utlrp.sql来编译无效的对象。
语法:1.alter table <table_name> shrink space [ <null> | compact | cascade ];2.alter table <table_name> shrink space compcat;收缩表,相当于把块中数据打结实了,但会保持high water mark;alter table <tablespace_name> Shrink Space;收缩表,降低 high water mark;alter table <tablespace_name> Shrink Space cascade;收缩表,降低 high water mark,并且相关索引也要收缩一下下。
Oracle-10g数据库基础教程-参考答案资料
Oracle数据库基础教程参考答案第1章Oracle数据库概述1.简答题(1)数据是描述事物的符号,是数据库中存储的基本对象。
在计算机中,用记录的形式来描述数据。
数据与数据的解释即数据的语义是紧密结合的。
数据库是指按一定的数据模型组织、描述和存储的数据的集合。
数据库管理系统是位于操作系统与用户之间的一层数据管理软件。
数据库系统是指数据库、数据库管理系统与计算机系统的结合。
通常,在不引起混淆的情况下将数据库系统简称为数据库。
(2)数据库管理系统的主要功能包括:数据定义、数据操纵、数据库运行与控制、数据库建立与维护、数据字典定义以及数据通信等。
数据库管理系统的内部分多个层次,由应用层、语言定义及其翻译处理层、数据存取层、数据存储层、操作系统以及数据库组成。
(3)数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。
(4)概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物及事物之间的关系。
它是现实世界到信息世界的抽象,是数据库设计人员进行数据库设计的工具,与具体的数据库管理系统无关。
组织数据模型是从数据组织方式的角度来描述信息,它决定了数据在数据库中的组织结构。
(5)E-R图由3个要素组成:实体、联系与属性。
实体之间的联系有1:1、1:n、n:n三种类型。
(6)Oracle之所以得到广大用户的青睐,其主要原因在于:支持多用户、大事务量的事务处理、提供标准操作接口、实施安全性控制和完整性控制、支持分布式数据处理、具有可移值性、可兼容性和可连接性。
(7)目前市场上常见的关系数据库管理系统包括Oracle、DB2、Sybase和SQL Server等。
Oracle是当今最大的数据库厂商Oracle公司的数据库产品。
它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出与数据库结合的第四代语言开发工具的数据库产品。
DB2是IBM公司于1983年推出的一个商业化关系数据库管理系统,它是基于System R 基础上实现的。
oracle临时表空间的增删改查操作
操作oracle 临时表空间的增删改查1、查看临时表空间dba_temp_files视图v_$tempfile视图select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小alter database tempfile 'D:\ORACLE\PRODUCT\' resize 100M;3、扩展临时表空间:方法一、增大临时文件大小:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ resize 100m;方法二、将临时数据文件设为自动扩展:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/’ size100m;4、创建临时表空间:SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/’ size 10M;5、更改系统的默认临时表空间:--查询默认临时表空间select from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:alter user scott temporary tablespace temp;6、删除临时表空间删除临时表空间的一个数据文件:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ drop;删除临时表空间彻底删除:SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT ,total - used as "Free",total as "Total",roundnvltotal - used, 0 100 / total, 3 "Free percent"FROM SELECT tablespace_name, SUMbytes_used / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADERGROUP BY tablespace_name temp_used,SELECT tablespace_name, SUMbytes / 1024 / 1024 totalFROM dba_temp_filesGROUP BY tablespace_name temp_totalWHERE =8、查找消耗资源比较的sql语句Select ,,,to_numberrtrim as Space,tablespace,segtype,sql_textfrom v$sort_usage su, v$parameter p, v$session se, v$sql swhere = 'db_block_size'and =and =and =order by ,9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句select , segtype, blocks 8 / 1000 "MB", sql_textfrom v$sort_usage sort, v$session sess, v$sql sqlwhere =and =order by blocks desc;10、临时表空间组介绍1创建临时表空间组:create temporary tablespace tempts1 tempfile '/home/oracle/' size 2M tablespace group group1;create temporary tablespace tempts2 tempfile '/home/oracle/' size 2M tablespace group group2;2查询临时表空间组:dba_tablespace_groups视图select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP1 TEMPTS1GROUP2 TEMPTS23将表空间从一个临时表空间组移动到另外一个临时表空间组:alter tablespace tempts1 tablespace group GROUP2 ;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS1GROUP2 TEMPTS24把临时表空间组指定给用户alter user scott temporary tablespace GROUP2;5在数据库级设置临时表空间alter database <db_name> default temporary tablespace GROUP2;6删除临时表空间组删除组成临时表空间组的所有临时表空间drop tablespace tempts1 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS2drop tablespace tempts2 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME11、对临时表空间进行shrink11g新增的功能--将temp表空间收缩为20Malter tablespace temp shrink space keep 20M;--自动将表空间的临时文件缩小到最小可能的大小ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/’;临时表空间作用Oracle临时表空间主要用来做查询和存放一些缓冲区数据;临时表空间消耗的主要原因是需要对查询的中间结果进行排序;重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长;直到耗尽硬盘空间;网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB;也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小;临时表空间的主要作用:索引create或rebuild;Order by 或group by;Distinct 操作;Union 或intersect 或minus;Sort-merge joins;analyze.。
Oracle 10g数据库连接及增删改查
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JdbcConnection {public static void main(String[] args) {//getCon();// insertTbUser();updateUser();//query();//delTbUser();}public static void insertTbUser() {String url = "jdbc:oracle:thin:@localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver";try {Class.forName(driverClass);Connection con = java.sql.DriverManager.getConnection(url, "mm","mm");// statement开辟一个通道java.sql.Statement st = con.createStatement();String insertSql = "insert intotb_user(userid,username,password)" +// 执行sql语句,返回操作所影响的条数。
"values(101,'zhuyu','zhuyu')";st.execute(insertSql);st.close();con.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static void delTbUser(){String url="jdbc:oracle:thin:@localhost:1521:orcl";String driverClass="oracle.jdbc.driver.OracleDriver";Class.forName(driverClass);Connection con=DriverManager.getConnection(url,"mm","mm");java.sql.Statement st=con.createStatement();String delSql="delete from tb_user where userid='23'";st.execute(delSql);st.close();con.close();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void updateUser() {String url = "jdbc:oracle:thin:@localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver";try {Class.forName(driverClass);Connection con = DriverManager.getConnection(url,"mm","mm");String updateSql = "update tb_user set password='1223423' where userid=5";Statement st = con.createStatement();st.execute(updateSql);st.close();con.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static void query() {String url = "jdbc:oracle:thin:@localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver";Connection con = null;Statement st = null;ResultSet rs = null;Class.forName(driverClass);con = DriverManager.getConnection(url, "mm", "mm");st = con.createStatement();String querySql = "select * from tb_user";rs = st.executeQuery(querySql);System.out.println("id\tusername\tpassword");while (rs.next()) {int id = rs.getInt("userid");String userName = rs.getString("username");String password = rs.getString("password");System.out.println(id + "\t"+ userName + "\t"+ password);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static void getCon() {String url = "jdbc:oracle:thin:@localhost:1521:orcl";String driverClass = "oracle.jdbc.driver.OracleDriver";// 加载驱动try {ng.Class.forName(driverClass).newInstance();// 获得连接java.sql.Connection con =java.sql.DriverManager.getConnection(url,"mm", "mm");System.out.println(con);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}。
oracle数据库查询命令
oracle数据库查询命令⼀、⽤户表数据查询1、⽤户查看当前⽤户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前⽤户的⾓⾊SQL>select * from user_role_privs;查看当前⽤户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs;2、表 tabs查看⽤户下所有的表SQL>select * from user_tables;查看名称包含log字符的表SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0;查看某表的创建时间SQL>select object_name,created from user_objects where object_name=upper('&table_name');查看某表的⼤⼩SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');查看放在ORACLE的内存区⾥的表SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;3、索引 ind查看索引个数和类别SQL>select index_name,index_type,table_name from user_indexes order by table_name;查看索引被索引的字段SQL>select * from user_ind_columns where index_name=upper('&index_name');查看索引的⼤⼩SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');4、序列号 seq查看序列号,last_number是当前值SQL>select * from user_sequences; 或 select * from seq;5、视图查看视图的名称SQL>select view_name from user_views;查看创建视图的select语句SQL>set view_name,text_length from user_views;SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩SQL>select text from user_views where view_name=upper('&view_name');6、同义词查看同义词的名称SQL>select * from user_synonyms;7、约束条件查看某表的约束条件SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');SQL>select c.constraint_name,c.constraint_type,cc.column_namefrom user_constraints c,user_cons_columns ccwhere c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_nameorder by cc.position;8、存储函数和过程查看函数和过程的状态SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';查看函数和过程的源代码SQL>select text from all_source where owner=user and name=upper('&plsql_name');9、获取创建表语句 设置输出长度 SQL> SET LONG 9999; SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','tablename') FROM DUAL;⼆、查看数据库的SQL1、查看表空间的名称及⼤⼩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_name;2、查看表空间物理⽂件的名称及⼤⼩select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及⼤⼩select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name ;4、查看控制⽂件select name from v$controlfile;5、查看⽇志⽂件select member from v$logfile;6、查看表空间的使⽤情况select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_spacegroup by tablespace_name;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 AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建⽇期和归档⽅式Select Created, Log_Mode, Log_Mode From V$Database;。
查看Oracle表空间使用情况
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
用操作系统UNIX、Linux中的df -g命令(查看下可以使用的磁盘空间大小)
获取创建表空间的语句:
select dbms_metadata.get_ddl('TABLESPACE','MLOG_NORM_SPACE') from dual;
4.确认磁盘空间足够,增加一个数据文件
alter tablespace MLOG_NORM_SPACE
add datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf'
size 10M autoextend on maxsize 20G
SU.BLOCKS * TO_NUMBER(RTRIM(P.VALUE)) AS SPACE,
TABLESPACE,
SEGTYPE,
SQL_TEXT
FROM V$SORT_USAGE SU, V$PARAMETER P, V$SESSION SE, V$SQL S
“userd MB”表示表空间已经使用了多少
“free MB”表示表空间剩余多少
“percent_user”表示已经使用的百分比
2.比如从1中查看到MLOG_NORM_SPACE表空间已使用百分比达到90%以上,可以查看该表空间总共有几个数
Oracle---SQL语句大全—查看表空间
Oracle---SQL语句⼤全—查看表空间SQL语句⼤全—查看表空间(⼀)查看表空间的名称及⼤⼩:SQL> 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_NAME;查看表空间物理⽂件的名称及⼤⼩:SQL> SELECT TABLESPACE_NAME,FILE_ID,FILE_NAME,ROUND(BYTES / (1024 * 1024), 0) TOTAL_SPACEFROM DBA_DATA_FILESORDER BY TABLESPACE_NAME;查看回滚段名称及⼤⼩:SQL> SELECT SEGMENT_NAME,TABLESPACE_NAME,R.STATUS,(INITIAL_EXTENT / 1024) INITIALEXTENT,(NEXT_EXTENT / 1024) NEXTEXTENT,MAX_EXTENTS,V.CUREXT CUREXTENTFROM DBA_ROLLBACK_SEGS R, V$ROLLSTAT VWHERE R.SEGMENT_ID = N(+)ORDER BY SEGMENT_NAME;如何查看某个回滚段⾥⾯,跑的什么事物或者正在执⾏什么sql语句:SQL> SELECT D.SQL_TEXT, FROM V$ROLLNAME A, V$TRANSACTION B, V$SESSION C, V$SQLTEXT DWHERE N = B.XIDUSNAND B.ADDR = C.TADDRAND C.SQL_ADDRESS = D.ADDRESSAND C.SQL_HASH_VALUE = D.HASH_VALUEAND N = 1;(备注:你要看哪个,就把usn=?写成⼏就⾏了)查看控制⽂件:SQL> SELECT * FROM V$CONTROLFILE;查看⽇志⽂件:SQL> COL MEMBER FORMAT A50SQL>SELECT * FROM V$LOGFILE;如何查看当前SQL*PLUS⽤户的sid和serial#:SQL>SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE AUDSID=USERENV('SESSIONID');如何查看当前数据库的字符集:SQL>SELECT USERENV('LANGUAGE') FROM DUAL;SQL>SELECT USERENV('LANG') FROM DUAL;怎么判断当前正在使⽤何种SQL优化⽅式:⽤EXPLAIN PLAN產⽣EXPLAIN PLAN¡檢查PLAN_TABLE中ID=0的POSITION列的值SQL>SELECT DECODE(NVL(POSITION,-1),-1,'RBO',1,'CBO') FROM PLAN_TABLE WHERE ID=0;如何查看系统当前最新的SCN号:SQL>SELECT MAX(KTUXESCNW * POWER(2,32) + KTUXESCNB) FROM X$KTUXE;在ORACLE中查找TRACE⽂件的脚本:SQL>SELECT U_DUMP.VALUE || '/' || INSTANCE.VALUE || '_ORA_' ||V$PROCESS.SPID || NVL2(V$PROCESS.TRACEID, '_' || V$PROCESS.TRACEID, NULL ) || '.TRC'"TRACE FILE" FROM V$PARAMETERU_DUMP CROSS JOIN V$PARAMETER INSTANCE CROSS JOIN V$PROCESS JOIN V$SESSION ON V$PROCESS.ADDR =V$SESSION.PADDR WHERE U_ = 'USER_DUMP_DEST' AND = 'INSTANCE_NAME' AND V$SESSION.AUDSID=SYS_CONTEXT('USERENV','SESSIONID');SQL>SELECT D.VALUE || '/ORA_' || P.SPID || '.TRC' TRACE_FILE_NAMEFROM (SELECT P.SPID FROM SYS.V_$MYSTAT M,SYS.V_$SESSION S,SYS.V_$PROCESS P WHERE M.STATISTIC# = 1 ANDS.SID = M.SID AND P.ADDR = S.PADDR) P,(SELECT VALUE FROM SYS.V_$PARAMETER WHERE NAME ='USER_DUMP_DEST') D;如何查看客户端登陆的IP地址:SQL>SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL;如何在⽣产数据库中创建⼀个追踪客户端IP地址的触发器:SQL>CREATE OR REPLACE TRIGGER ON_LOGON_TRIGGER AFTER LOGON ON DATABASEBEGINDBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));END;REM 记录登陆信息的触发器CREATE OR REPLACE TRIGGER LOGON_HISTORYAFTER LOGON ON DATABASE --WHEN (USER='WACOS') --ONLY FOR USER 'WACOS'BEGININSERT INTO SESSION_HISTORY SELECT USERNAME,SID,SERIAL#,AUDSID,OSUSER,ACTION,SYSDATE,NULL,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,MACHINE,PROGR = USERENV('SESSIONID');END;查询当前⽇期:SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD,HH24:MI:SS') FROM DUAL;查看所有表空间对应的数据⽂件名:SQL>SELECT DISTINCT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES;查看表空间的使⽤情况:SQL>SELECT SUM(BYTES)/(1024*1024) AS FREE_SPACE,TABLESPACE_NAMEFROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;SQL>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 AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;COLUMN TABLESPACE_NAME FORMAT A18;COLUMN SUM_M FORMAT A12;COLUMN USED_M FORMAT A12;COLUMN FREE_M FORMAT A12;COLUMN PTO_M FORMAT 9.99;SELECT S.TABLESPACE_NAME,CEIL(SUM(S.BYTES/1024/1024))||'M' SUM_M,CEIL(SUM(EDSPACE/1024/1024))||'M'USED_M,CEIL(SUM(S.FREESPACE/1024/1024))||'M' FREE_M, SUM(EDSPACE)/SUM(S.BYTES)PTUSED FROM (SELECT B.FILE_ID,B.TABLESPACE_NAME,B.BYTES, (B.BYTES-SUM(NVL(A.BYTES,0))) USEDSPACE, SUM(NVL(A.BYTES,0)) FREESPACE, (SUM(NVL(A.BYTES,0))/(B.BYTES)) * 100 FREEPERCENTRATIO FROM SYS.DBA_FREE_SPACE A,SYS.DBA_DATA_FILESB WHERE A.FILE_ID(+)=B.FILE_ID GROUP BY B.FILE_ID,B.TABLESPACE_NAME,B.BYTES ORDER BY B.TABLESPACE_NAME)S GROUP BY S.TABLESPACE_NAME ORDER BY SUM(S.FREESPACE)/SUM(S.BYTES) DESC;查看数据⽂件的hwm(可以resize的最⼩空间)和⽂件头⼤⼩:SELECT V1.FILE_NAME,V1.FILE_ID,NUM1 TOTLE_SPACE,NUM3 FREE_SPACE,NUM1-NUM3 "USED_SPACE(HWM)",NVL(NUM2,0) DATA_SPACE,NUM1-NUM3-NVL(NUM2,0) FILE_HEADFROM(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1,(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2,(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3WHERE V1.FILE_ID=V2.FILE_ID(+) AND V1.FILE_ID=V3.FILE_ID(+);数据⽂件⼤⼩及头⼤⼩:SELECT V1.FILE_NAME,V1.FILE_ID,NUM1 TOTLE_SPACE,NUM3 FREE_SPACE,NUM1-NUM3 USED_SPACE,NVL(NUM2,0) DATA_SPACE,NUM1-NUM3-NVL(NUM2,0) FILE_HEADFROM(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1,(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2,(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3WHERE V1.FILE_ID=V2.FILE_ID(+)AND V1.FILE_ID=V3.FILE_ID(+);(运⾏以上查询,我们可以如下信息:Totle_pace:该数据⽂件的总⼤⼩,字节为单位Free_space:该数据⽂件的剩于⼤⼩,字节为单位Used_space:该数据⽂件的已⽤空间,字节为单位Data_space:该数据⽂件中段数据占⽤空间,也就是数据空间,字节为单位File_Head:该数据⽂件头部占⽤空间,字节为单位)。
通过dba_free_space视图查看表空间的空间分配过程
SQL>select tablespace_name from dba_free_space;根据查询结果可发现,出现了多个相同的表空间名;为什么呢?这个问题可根据dba_free_space的说明得到解答:dba_free_space显示的是有free 空间的tablespace ,如果一个tablespace 的free 空间不连续,那每段free空间都会在dba_free_space中存在一条记录。
如果一个tablespace 有好几条记录,说明表空间存在碎片,当采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理。
根据如下查询语句可发现:SQL>select * from dba_free_space;一个表空间有两个不连续的block_id,正是因为这样才会导致一个表空间在dba_free_space视图中存在两条记录;三、关于dba_free_space视图的问题看下面的例子,请高手解释一下好吗?------------------------一开始:环境:Windows xp+Oracle 10g 10.2.0;数据库:PAXDB,表空间:TEST_TABLESPACEtest_tablespace(create tablespace test_tablespace datafile 'D:/oracle/ORADATA /test_datafile.dbf' size 300M extent managerment local uniform size 40K);用户:test/manager说明:新建立的表空间test_tablespace对应的数据文件大小是300m,所在的数据库的数据块大小是8192 byte(),所以对于刚建立的表空间来说,由于数据文件头部占据了0-8共9个数据块。
从下面的查询block_id=9 我们可以看出,oracle保留了数据文件前面9个block(block 0~8),所以刚开始查询表空间的空闲空间时,数据块bloci_id 是从9开始的,总共的字节数是314490880,总共有314490880/8192=38390个数据块,共314490880/1024/1024=299.921875m.总共使用的空间数目是8192*9/1024/1024=0.0703125m.下面我们来看看这9个block的具体情况:block 0:OS headerblock 1:datafile headerblock 2:bitmapped file space headerblock 3~8:Head portion of bitmap blocks至于如何看某个block的结构,用bbed再方便不过了,那下面我们就用bbed 来看看这9个block是什么样的SQL>select * from dba_free_space where tablespace_name='TEST_TABLESPACE';得到:然后在TEST_TABLESPACE tablespace中建一表:create table cba( cba number(20) ); ---(初始为40k)SQL>select * from dba_free_space where tablespace_name='TEST_TABLESPACE';说明:在表空间初始化建立时指定了uniform参数,说明该表空间里所有的segment的extent 大小都相同为40k,所以当在该表空间里建立一个表时,该表所对应的段的扩展extent一次为40k,即40*1024/8192=5个数据块。
查询ORACLE表空间和数据文件信息
查询ORACLE表空间和数据⽂件信息表空间是oracle数据库中最⼤的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。
表空间在物理上体现为磁盘数据⽂件,每⼀个表空间由⼀个或多个数据⽂件组成,⼀个数据⽂件只可与⼀个表空间相联系,这是逻辑与物理的统⼀。
了解表空间和数据⽂件的的属性及使⽤率,是数据库管理员的⼀项重要职责。
下⾯以oracle9i为例,详细介绍查询Oracle数据库表空间信息和数据⽂件信息的⽅法。
⼀、查看Oracle数据库中表空间信息的⽅法1、查看Oracle数据库中表空间信息的⼯具⽅法:使⽤oracle enterprise manager console⼯具,这是oracle的客户端⼯具,当安装oracle服务器或客户端时会⾃动安装此⼯具,在windows操作系统上完成oracle安装后,通过下⾯的⽅法登录该⼯具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择‘独⽴启动’单选框——‘确定’ —— ‘oracle enterprise manager console,独⽴’ ——选择要登录的‘实例名’ ——弹出‘数据库连接信息’ ——输⼊’⽤户名/⼝令’ (⼀般使⽤sys⽤户),’连接⾝份’选择选择SYSDBA——‘确定’,这时已经成功登录该⼯具,选择‘存储’ ——表空间,会看到如下的界⾯,该界⾯显⽰了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间⼤⼩,已使⽤的表空间⼤⼩及表空间利⽤率。
图1 表空间⼤⼩及使⽤率2、查看Oracle数据库中表空间信息的命令⽅法:通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,⾸先使⽤客户端⼯具连接到数据库,这些⼯具可以是SQLPLUS字符⼯具、TOAD、PL/SQL等,连接到数据库后执⾏如下的查询语句:selecta.a1 表空间名称,c.c2 类型,c.c3 区管理,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 bytablespace_name) a,(select tablespace_name b1,sum(bytes) b2 from dba_data_files group bytablespace_name) b,(select tablespace_name c1,contents c2,extent_management c3 fromdba_tablespaces) cwhere a.a1=b.b1 and c.c1=b.b1;该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间⼤⼩,已使⽤的表空间⼤⼩及表空间利⽤率。
ORACLE数据库基础教程课后参考答案(人民邮电出版社)
ORACLE 10g 课后参考答案(答案仅供参考)第一章ORACLE 10g简介一、选择题1.下面不属于ORACLE 10g产品系列的是(D)A.Oracle数据库 10g标准版1B.Oracle数据库 10g标准版C.Oracle数据库 10g企业版D.Oracle数据库 10g网络版2.ORACLE 10g中的g表示(D)A.版本B.网络C.数据库D.网格计算3.下面关于ORACLE 10g数据库逻辑结构的描述错误的是(C)A.数据库由若干个表空间组成B.表空间由表组成C.表由数据块组成D.段由区间组成4.ORACLE管理数据库存储空间的最小存储单位是(A)A.数据块B.表空间C.表D.区间5.ORACLE分配磁盘空间的最小单位是(D)A.数据块B.表空间C.表D.区间6.下列不属于ORACLE表空间的是(D)A.大文件表空间B.系统表空间C.撤销表空间D.网格表空间7.当数据库服务器上的一个数据库启动时,ORACLE将分配一块内存区间,叫做系统全局区,英文缩写为(B)A.VGAB.SGAC.PGAD.GLOBAL二、填空题1.__视图__ 是虚拟的表,它在物理上并不存在。
可以把它看成是一个存储的查询。
2.创建___索引__可以提高读取数据的效率。
它的功能类似于书的目录,读者可以通过目录很快的在书中找到需要的内容。
3.有些表共享公共的列,并经常被同时访问,为了提高数据存取效率,把这些表在物理上存储在一起,得到的表的组合就是____簇____。
4.一个数据块对应磁盘上的一定数量的数据库空间,标准的数据块大小由初始参数(DB_BLOCK_SIZE )指定。
5.每个数据库都至少有一个系统表空间,被称为__SYSTEM _表空间。
6.每个ORACLE数据库都由3种类型的文件组成:数据文件、日志文件、控制文件。
7.ORACLE有两种内存结构,即_系统全局区_和_程序全局区_。
三、简答题1.简述ORACLE数据库逻辑结构中各要素之间的关系。
- 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地址,例
如:192.168.1.236.,点击下一步。
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)依次选择存储,表空间,则页面左侧会显示当前的表空间的使用情况。
出该表空间的编辑窗口。
h)对于表空间的修改,有两种办法:
i.一种是直接修改单个数据文件的大小值,也就是直接修改上图中的
大小里面的数值,单位是MB,修改完成后点击确定即可。
建议单个
数据文件大小不要超过2G,最多不超过10G,主要是为了防止数据
文件太大,万一数据文件出现错误会造成很大的损失。
ii.另一种是直接添加一个新的数据文件,例如下图中,我直接按照原有文件的序列添加了一个TS_FZ4_DATA_003.DBF数据文件,然后将
此数据文件放到了E盘的ganhui文件夹下,大小为2348M。
然后点
击确定即可。
说明:此处的文件名可以随便命名,后缀名系统设置为DBF即可。
文件目录就是该数据文件存放的位置,可以设置到空间比较大的盘符中去,提前创建好该文件夹,然后将文件目录指向该文件夹即可。
i)至此,oracle数据库表空间修改完成。