Oracle基础知识之表空间与数据文件
- 格式:pptx
- 大小:760.76 KB
- 文档页数:44
第六章表空间和数据文件的管理6.5 创建数据字典管理的表空间曾有位著名的学者在一份非常出名的报纸上发表了一篇震撼了整个神州大地的文章,文章的题目是:“中国妇女解放运动的先驱-潘金莲”。
这篇文章一发表就在社会上引发了激烈的争论,真是“一石击起千层浪”。
一位考古学的博士想利用统计学的方法科学地证明潘金莲到底是不是中国妇女解放的先驱。
首先他必须将大量的数据分门别类地存入数据库中。
他找到了您让您在Oracle数据库方面帮他的忙。
您决定首先要为这个项目创建一个名为jinlian(金莲)表空间。
为了平衡I/O,您决定该表空间将基于两个数据文件,它们分别是J:\DISK2\MOON\JINLIAN01.DBF和J:\DISK4\MOON\JINLIAN02.DBF,其大小都为50 M(在实际中可能几百M)。
为了更有效地控制磁盘的存储分配,您决定使用数据字典管理的表空间。
为了防止用户在创建对象时使用的EXTENT过小而产生碎片,您决定最小的EXTENT为50K(MINIMUM EXTENT 50K)。
当需要磁盘空间的自动分配是第一次分配为50K(INITIAL 50K),第二次也为50K(NEXT 50K),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。
从第三次分配开始按如下的公式进行分配:NEXT * (1+PCTINCREASE/100)(n-2)。
其中n为分配的次数。
于是你发出了如例6-1的SQL语句来创建名为jinlian(金莲)的表空间。
例6-1SQL> CREATE TABLESPACE jinlian2 DATAFILE 'J:\DISK2\MOON\JINLIAN01.DBF' SIZE 50 M,3 'J:\DISK4\MOON\JINLIAN02.DBF' SIZE 50 M4 MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY5 DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);表空间已创建。
基础概念:Oracle数据库、实例、用户、表空间、表之间的关系数据库:Oracle数据库是数据的物理存储。
这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。
其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。
可以看作是Oracle就只有一个大数据库。
实例:一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。
一个数据库可以有n个实例。
用户:用户是在实例下建立的。
不同实例可以建相同名字的用户。
表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件(dbf、ora):数据文件是数据库的物理存储单位。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。
但是表不是有表空间去查询的,而是由用户去查的。
因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!关系示意图:理解1:Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:理解2:理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。
ORACLE数据库基础知识总结1、RMAN全备备份⽂件的顺序备份归档⽇志、所有的数据⽂件、控制⽂件、spfile、再次备份归档⽇志2、redo⽇志丢失恢复redo⽇志的三种状态是current、active、inactiveinactive,可以重建 clear logactive、current不能变成inactive,只能通过不完全恢复进⾏恢复,然后重建⽇志⽂件3、⼝令⽂件丢失恢复丢失可重建 orapwd file= password= enfries=重建完成之后ORACLE正常使⽤4、控制⽂件丢失恢复a> rman 可以备份控制⽂件b> 控制⽂件可以cp⼀份备⽤c> 控制⽂件可以重建⼿写5、体系结构物理:ORACLE数据库包括instance、database两部分。
instance包括SGA(系统全局区)跟⼀些后台进程组成的。
SGA包括:share pool、db buffer cache、redo log buffer、流池、⼤型池、JAVA POOL、share pool(共享池) :库缓存:缓存最近执⾏的代码,同样的sql多次执⾏不需要频繁读取数据字典中得数据数据字典缓存:存储oracle中得对象定义PL/SQL区:缓存存储过程、函数触发器等数据库对象。
db buffer cache(数据库缓存区)redo log buffercache(⽇志缓存区)常见的后台进程:DBWn:⽤于数据库缓存写⼊磁盘LGWn:⽤于log⽇志写⼊磁盘CKPT:检查点进程SMON:实例维护进程,系统监视器MMON:AWR主要进程PMON:维护⽤户进程,进程监视器ARCN:归档进程database包括数据⽂件、控制⽂件、⽇志⽂件等。
逻辑:oracle数据块-区-段-表空间-数据库-⽅案多个oracle数据块组成⼀个区,多个区组成⼀个段,多个段组成⼀个表空间,多个表空间组成⼀个数据库表空间和数据⽂件的关系:表空间是由⼀个或多个数据⽂件组成的,⼀个数据⽂件只属于⼀个表空间,表空间的⼤⼩是所有数据⽂件⼤⼩的总和。
oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。
Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。
Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。
也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。
我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。
就像Java中new出来的实例对象⼀样。
我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。
Oracle数据库Oracle数据库是管理数据的一种软件系统,它可以帮助用户快速地存储、管理和检索大量的数据。
Oracle数据库由Oracle公司开发,它是世界上最强大、最可靠的数据库之一,被广泛用于企业级应用程序和数据库管理系统。
一、Oracle数据库的基础知识1. 数据库结构Oracle数据库由一个或者多个表空间组成,每个表空间包含一组数据文件。
一个表空间可以包含多个数据文件,但一个数据文件只能属于一个表空间。
2. 数据库对象Oracle数据库中的每个数据对象都具有一个唯一的名称,例如表(table)、视图(view)、序列(sequence)、索引(index)和存储过程(procedure)等。
它们都被保存在表空间中的数据文件中。
3. SQL语言Oracle数据库主要使用SQL语言来处理数据,包括数据增删改查等常用操作。
二、Oracle数据库的特点1. 效率高Oracle数据库采用高效的管理和存储技术,可以快速访问和操作大量数据。
它具有高速的缓存机制,可以快速地执行查询和更新操作。
2. 可靠性强Oracle数据库拥有高度稳定的系统架构和自动维护机制,可以保证数据的安全性和可靠性。
它可以实现多重备份,在数据发生意外错误时可以快速恢复。
3. Heterogeneous ConnectOracle数据库可以通过网络协议和连接程序实现异构连接,支持其它数据库软件,如MS SQL Server、IBM DB2等。
4. 扩展性强Oracle数据库可扩展性强,可以设计和构建分布式系统,支持跨平台分布式数据库。
5. 多功能性Oracle数据库提供多种功能,包括多种语言的支持,丰富的安全控制和数据库监视等。
6. 可伸缩性Oracle数据库可以支持大量的并发用户,可以处理多种不同的应用程序。
三、Oracle数据库的应用领域Oracle数据库被广泛应用于企业级应用程序和数据库管理系统,主要应用于以下几个领域:1. 金融领域Oracle数据库被广泛用于金融事务处理系统,包括银行、证券、保险和期货等金融机构的资金结算和清算等数据处理。
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的区别(转)有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。
我们先来看一下他们的定义:A schema is a collection of database objects (used by a user.).Schema objects are the logical structures that directly refer to the database’s data.A user is a name defined in the database that can connect to and access objects.Schemas and users help database administrators manage database security.从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。
这也就是我们在企业管理器的方案下看到schema 名都为数据库用户名的原因。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。
表空间(TABLESPACE)表空间(TABLESPACE)是ORACLE数据库中最大的逻辑结构。
ORACLE数据库是由一个或多个表空间组成的。
它在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。
从物理上说数据库的数据被存放在数据文件中,而从逻辑上说是被存放在表空间中的。
数据库的逻辑配置实际上就是指表空间的配置。
一、表空间概述表空间是ORACLE数据库中最大的逻辑结构。
数据库的所有对象和方案都被逻辑的保存在表空间中。
(一)表空间的特性与作用数据库管理系统(DBMS)是建立在操作系统(OS)基础上的,它的数据也必须存储在各个文件中,如数据文件、重做日志文件、归档日志文件等。
表不是文件,表不是空间。
表空间是组织结构和分配空间的逻辑结构。
除了数据文件之外,控制文件、重做日志文件、归档日志文件等其他文件都不属于任何表空间。
表空间的特性如下:1.一个数据库可以有多个表空间。
可以在数据库中创建、删除表空间;2.一个表空间只属于一个数据库;3.一个表空间必须要有一个数据文件;4.一个表空间的大小等于其中所有数据文件的大小之和。
数据库的大小等于其中所有表空间的大小之和;5.表空间可以被联机和脱机。
SYSTEM表空间不能被脱机;6.表空间可以在读写、只读状态之间切换;7.每个表空间由一个或多个物理存在的操作系统的数据文件组成。
这种数据文件可以具有固定的大小,或允许其自动变大。
可以在表空间中添加、删除数据文件;8.方案对象、表、索引的数据都被存储在表空间的数据文件中。
一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就可以;9.一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中;10.一个用户使用的表空间的数量是有一定配额的,不能超出这个配额;11.可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。
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):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
--表空间(数据文件)的迁移--【在线的操作方法-移动表空间的数据文件的路径(更改表空间数据文件的路径)】1.首先确定数据文件的状态要为OFFLINESQL> select tablespace_name,status,contents from dba_tablespaces;2.将该表空间修改为OFFLINE 【以users表空间为例】SQL> alter tablespace USERS offline;SQL> select tablespace_name,status,contents from dba_tablespaces; --查看表空间状态确定修改成功3.移动数据文件到新的路径[oracle@xxx ~]$ host copy /oracle/oradata/itpuxdb/itpux01.dbf/oracle/oradata/itpuxdb/itpux02.dbf;4.重新命名该表空间的新路径和名称(告诉数据库)SQL> alter tablespace users rename datafile'/oracle/oradata/itpuxdb/itpux01.dbf'to '/oracle/oradata/itpuxdb/itpux001.dbf';5.修改表空间的状态为ONLINE状态SQL> alter tablespace users online;---------------------------------------------------------------------------------------【离线的操作方法-移动数据文件-到其它目录】1.关闭数据库启动到模式下SQL> shutdown immediate;SQL> startup mount;2. 移动数据文件[oracle@xxx ~]$ host copy /oracle/oradata/itpuxdb/itpux01.dbf/oracle/oradata/itpuxdb/itpux02.dbf3. 重新命名(这里写更改数据库因为数据库没有起来就没有表空间)SQL> alter database rename file'/oracle/oradata/itpuxdb/itpux01.dbf'to'/oracle/oradata/itpuxdb/itpux001.dbf'4. 打开数据库SQL> alter database open5. 检查状态SQL> select * from dba_data_files where tablespace_name='ITPUX01';----------------------------------------------------------------------------------1.copy数据文件到其它目录【因为根目录撑爆,在数据库挂掉的情况下】2.启动startup mount;3.在mount模式下执行这两条命令alter database rename file'/oracle/app/oracle/oradata/ywxt1/undotbs01.dbf'to'/oradata/undotbs01.dbf';alter database rename file'/oracle/app/oracle/oradata/ywxt1/temp01.dbf'to'/oradata/temp01.dbf';4.启动数据库startup---------------------------------------------------------------------------------------把表和索引迁移其它的表空间1.查询该对象存放在哪个表空间select segment_name,tablespace_name,extents,blocks from dba_segments whereowner='SCUSER'2.查询该对象是索引,还是表select object_id,object_name,object_type,status,created from dba_objects whereowner='SCUSER'3.查询索引或者表存放在哪个表空间select index_name,table_name,tablespace_name,status from dba_indexes whereowner='SCUSER'4.移动表到另一个表空间alter table scuser.table01 move tablespace scdata025.查询该表是否移动到该表空间select segment_name,tablespace_name,extents,blocks from dba_segments whereowner='SCUSER'6.检查表是否有效(状态为 VALID 是有效)select object_id,object_name,object_type,status,created from dba_objects whereowner='SCUSER'7.重建索引并且将索引移动到另一个表空间alter index scuser.idx_table01_id rebuild tablespace scdata028.查询索引对应的表空间select index_name,table_name,tablespace_name,status from dba_indexes whereowner='SCUSER'9.如果表空间里面表有大字段?alter table USER.RESUME move lob(INTRO) store as(tablespace USER);。
Oracle中查询当前数据库中的所有表空间和对应的数据⽂件语句命令Oracle中查询当前数据库中的所有表空间和对应的数据⽂件语句命令-----------------------------------------------------------------------------------------1、在cmd中输⼊sqlplus,弹出命令⾏窗体2、输⼊⼝令和密码3、SQL>col file_name for a60;4、SQL>set linesize 160;5、SQL>select file_name,tablespace_name,bytes from dba_data_files;---------------------------------------------------------------------------------------------同样的可以从dba_temp_files数据字典中查询临时表空间的信息SQL>select tablespace_name,file_name from dba_temp_files;----------------------------------------------------------------------------------------------删除Oracle表空间与表空间⽂件语句如下:SQL>drop tablespace 表空间名称 including contents and datafiles ;⽰例:--删除Oracle表空间和⽂件的语句命令drop tablespace 表空间名称 including contents and datafiles cascade constraints;--including contents 删除表空间中的内容--datafiles 删除表空间中的数据⽂件--cascade constraints 删除所有与表空间数据有关的级联,如主外键等----------------------------------------------------------------------------------------------。
oracle19c之⽤户、权限、表空间 ⼀、⽤户相关操作 1、查询⽤户select * from dba_users; --查询全库所有的⽤户select * from all_users; --查询当前⽤户可看到的⽤户select * from user_users; --查询当前登录的⽤户 2、创建⽤户(创建者需要有dba权限,⽤户名必须以c##开头,默认的表空间是users,新⽤户没有任何权限。
)create user c##sl IDENTIFIED BY 123456; 3、删除⽤户drop user c##sl2 cascade; --删除⽤户不会删除其表空间 注意:⽆法删除⽤户C##SL3,报错“[Err] ORA-01940: ⽆法删除当前连接“的⽤户解决⽅法:select username,sid,serial#,paddr from v$session where username='C##SL3';alter system kill session '17,55857'; 4、修改密码alter user c##sl3 identified by 1234; ⼆、权限相关操作 a、系统权限:⽤户在系统层⾯的权限,如CREATE SESSION、SELECT ANY TABLE等不依赖于对象的权限 b、对象权限:⽤户关于某个具体对象的权限,如SELECT、UPDATE、INSERT等依赖于表、视图、存储过程的权限 c、⾓⾊:⼀组权限的集合 注意:PUBLIC⽤户具有的权限,其他⽤户都会有,即修改PUBLIC⽤户的权限,其他⽤户也会对应得改变权限 1、查看权限、⾓⾊select * from user_tab_privs; --当前⽤户具有的对象权限select * from dba_tab_privs WHERE grantee='C##SL' OR grantor='C##SL'; --全部⽤户具有的对象权限,查询C##SL⽤户的select * from user_sys_privs; --当前⽤户具有的系统权限select * from dba_sys_privs WHERE grantee='C##SL'; --全部⽤户具有的系统权限,查询C##SL⽤户的SELECT * FROM user_role_privs; --当前⽤户具有的⾓⾊SELECT * FROM dba_role_privs where grantee='C##SL'; --全部⽤户具有的⾓⾊,查询C##SL⽤户的 注意:上⾯每⼀对查询出的结果应该⼀样,因为全部⽤户中肯定也包含当前⽤户,普通⽤户没有查询全部⽤户⾓⾊、权限表的权限 2、常⽤权限、⾓⾊dba 管理员⾓⾊connect 连接数据库⾓⾊,能修改、删除表及数据,不能创建表resource 能创建表create session 连接数据库权限create table 建表权限unlimited tablespace 操作表空间权限select any table 查询任何表的权限select on c##test.book 查询c##test⽤户的book表的权限 说明: a、⼀般来说,新建的普通⽤户后授予connect和resource⾓⾊就好了、如果是管理员需要再授予dba⾓⾊。
Oracle 在原有的表空间(Tablespace)上增加新的数据文件一、查询原数据文件所在的位置(以及数据文件大小),以便新数据文件创建到该位置selecttablespace_name, file_id, file_name,round(bytes/(1024*1024*1024),0) total_space_size_GB from dba_data_fileswhere tablespace_name=表空间名称order by tablespace_name二:增加数据文件alter tablespace表空间名称add datafile '新的数据文件地址' size 初始数据文件大小altertablespace BIadddatafile 'D:\DATA\BI02.DBF' size 1024m三:设置表空间自动扩展。
注意:Oracle 的最大数据文件大小为32G,因此,建议设置最大大小为30Galter database datafile '数据文件位置'autoextend on next 自动扩展大小maxsize 最大扩展大小alter database datafile 'D:\DATA\BI02.DBF'autoextend on next 1024m maxsize 30720m四:查询表空间使用情况:selecta.tablespace_name,a.bytes/1024/1024/1024 "sum_size_GB",(a.bytes-b.bytes)/1024/1024/1024 "used_size_GB",b.bytes/1024/1024/1024 "free_size_GB",round (((a.bytes-b.bytes)/a.bytes)*100,2) "used_%"from(selecttablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,(selecttablespace_name,sum(bytes) bytes,max (bytes) largest from dba_free_space group by tablespace_name) bwherea.tablespace_name=b.tablespace_nameorder by ((a.bytes-b.bytes)/a.bytes) desc;--附:查看当前用户每个表的大小,可能会花较长时间Select Segment_Name,Sum(bytes)/1024/1024 as table_size_MB From User_Extents Group By Segment_Name。
Oracle 添加表空间数据文件
在创建表空间时,通常会预先估计表空间所需的存储空间大小,然后为它建立若干适当大小的数据文件。
如果在使用过程中发现表空间存储空间不足,可以再为它添加新的数据文件,以增加表空间的总存储空间。
要为普通表空间添加新的数据文件,可以使用ALTER TABLESPACE …ADD DA TAFILE语句,执行该语句的用户必须具有ALTER TABLESPACE系统权限。
例如,下面的语句为表空间USER03添加一个大小为10MB的数据文件:
SQL> alter tablespace user03
2 add datafile 'd:\oracledata\user03_02.dbf' size 10m;
表空间已更改。
例如,下面的语句为临时表空间TEMP03添加一个新的临时文件:
SQL> alter tablespace temp01
2 add tempfile 'd:\oracledata\temp01_02.dbf' size 10m reuse;
表空间已更改。
在添加新的数据文件时,如是同名的操作系统文件已经存在,ALTER TABLESPACE语句将失败。
如果要覆盖同名的操作系统文件,则必须在ALTER TABLESPACE语句中显式地指定REUSE子句。
Oracle基本术语大全Oracle基本术语大全Oracle数据库系统是一个复杂的软件系统。
如果不了解其内部的结构原理及关系,就不可能设计和编写出高质量的应用软件系统,也不可能管理好一个复杂的应用系统。
为了帮助大家了解更多Oracle数据库知识,下文简要给出 ORACLE 8 /i数据库系统结构的描述。
§2.1 术语数据库块(BLOCK)ORACLE 数据库中的最小存储和处理单位,包含块本身的头信息数据或PL/SQL代码。
ORACLE 块的大小是可以在安装时选择“自定义安装”来指定,也可以在CREATE E创建数据库实例时指定。
其最小为2K,最大可达为64K.瓶颈(Bottleneck)指限制系统性能的部件。
面向对象的关系数据库具有关系数据库的全部功能,同时又支持面向对象的数据库,称作面向对象关系数据库系统。
Oracle7是一种功能完备的关系数据库系统;oracle8是一种面向对象的关系数据库系统。
客户/服务器结构(Client/Server)有客户机、服务器、网络三要素的结构,客户机(PC机)通过网络与服务器相连和工作。
胖客户机(Fat Client)一般的Client/Server结构中的客户机均为胖客户机。
因为这些客户机需要配置较高的设备,如内存、硬盘、主频、CD_ROM等。
瘦客户机(Thin Client)也称作NC(网络计算机),是一种内存配置小(过去指一般只有4M,现无法定义),无硬盘,只有处理心片的处理机。
数据在线分析处理(OLAP)是一种能以快速、交互、方便的方式洞察数据情况的技术。
如Oracle E某press,Cognos(加拿大)的Power Play, Business Objects公司的Business Object 等。
多线程(MTS)一个用户可以同时运行多个程序对数据库进行访问,比如Visual C/C++可以提供同时启动多个进程,而Visual Basic则不能。
查询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的逻辑结构Oracle的逻辑结构是⼀种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是⾯向⽤户的,⽤户使⽤Oracle开发应⽤程序使⽤的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。
1.数据块(Data Blocks)1.1 数据块是Oracle最⼩的存储单位,Oracle数据存放在“块”中。
⼀个块占⽤⼀定的磁盘空间。
特别注意的是,这⾥的“块”是Oracle的“数据块”,不是操作系统的“块”。
1.2 Oracle每次请求数据的时候,都是以块为单位。
也就是说,Oracle每次请求的数据是块的整数倍。
如果Oracle请求的数据量不到⼀块,Oracle也会读取整个块。
所以说,“块”是Oracle读写数据的最⼩单位或者最基本的单位。
1.3 块的标准⼤⼩由初始化参数DB_BLOCK_SIZE指定。
具有标准⼤⼩的块称为标准块(Standard Block)。
块的⼤⼩和标准块的⼤⼩不同的块叫⾮标准块(Nonstandard Block)。
1.4 操作系统每次执⾏I/O的时候,是以操作系统的块为单位;Oracle每次执⾏I/O的时候,都是以Oracle的块为单位。
1.5 Oracle数据块⼤⼩⼀般是操作系统块的整数倍。
1.6 数据块的格式(Data Block Format)块中存放表的数据和索引的数据,⽆论存放哪种类型的数据,块的格式都是相同的,块由块头(header/Common and Variable),表⽬录(Table Directory),⾏⽬录(Row Directory),空余空间(Free Space)和⾏数据(Row Data)五部分组成块头(header/Common and Variable):存放块的基本信息,如:块的物理地址,块所属的段的类型(是数据段还是索引段)。