Oracle表空间操作详解

合集下载

oracle创建用户、创建表空间、授权、建表的完整过程

oracle创建用户、创建表空间、授权、建表的完整过程

oracle创建⽤户、创建表空间、授权、建表的完整过程1.⾸先以sysdba的⾝份登录oracle conn /as sysdba 查询⽤户: select username from dba_users; 查询表空间 select username, default_tablespace from dba_users where username='⽤户名‘; 查询数据⽂件 select file_name, tablespace_name from dba_data_files;2.然后就可以来创建⽤户. create user ⽤户名 identified by 密码;3.修改⽤户的密码 alter user ⽤户名 identified by 新密码;4.创建⼀个表空间 create tablespace 表空间名 datafile '空间物理存储路径(f:\ts_zzg\zzg_data.dbf后缀随意)' size ⼤⼩(200M);5.将表空间分配给⽤户 alter user ⽤户名 default tablespace 表空间名;6.为⽤户分配权限 grant create session,create table,create view,create sequence,unlimited tablespace to ⽤户名; grant all privileges to ⽤户名;(全部权限)7.查看所有⽤户所在的表空间 select username,default_tablespace from dba_users;8.查询⽤户所具有的权限 select *from session_privs;9.删除⽤户及其相关对象 drop user ⽤户名;。

oracle修改表空间大小的方法

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-undo-表空间管理

Oracle-undo-表空间管理

Oracle-undo-表空间管理Oracle的Undo表空间管理是Oracle数据库中非常重要而又基础的管理工作之一。

因为数据库中的Undo表空间与事务有着紧密的联系,影响着数据库的性能和稳定性。

本文将对Oracle的Undo表空间管理进行详细介绍,包括Undo表空间的概念、作用、管理方法、优化等方面。

一、Undo表空间的概念Undo表空间是用来存储Oracle数据库中操作的回滚信息,主要的作用是进行事务的回滚和恢复。

在Oracle数据库中,事务的ACID属性可以保证数据的完整性和一致性,而Undo表空间就是为了保证事务的ACID属性而存在的。

在Oracle数据库中,Undo表空间分为两种类型:System Undo表空间和User Undo表空间。

系统Undo表空间是由系统自动创建的一个表空间,用于存储系统级的回滚信息,用户不能自己创建或删除该表空间。

而用户Undo表空间则是由用户自己创建的,用来存储用户级别的回滚信息,一个数据库中可以有多个用户Undo表空间。

二、Undo表空间的作用Undo表空间的作用非常重要,它主要用来完成以下几个方面的功能:1. 事务的回滚当某个事务需要回滚时,Oracle会将该事务所做的修改操作写入到Undo表空间中,然后撤销这些操作来回滚事务。

因此Undo表空间的存储能力和速度直接影响着Oracle数据库回滚事务的性能和效率。

2. 数据库恢复当数据库需要恢复时,Oracle会利用Undo表空间中的回滚信息将数据库恢复到特定的时间点。

因此Undo表空间存储的时间范围和存储能力对数据库恢复能力有着直接的影响。

3. MVCC机制在Oracle数据库中,MVCC(多版本并发控制)机制是一种用来实现并发控制的技术,它需要利用Undo表空间中的回滚信息来实现数据的版本控制。

当多个事务同时对一个数据进行操作时,Undo表空间就派上用场了。

三、Undo表空间的管理方法为了更好地管理Undo表空间,我们需要掌握以下几种管理方法:1. 创建Undo表空间在Oracle数据库中,可以通过语句CREATE UNDO TABLESPACE来创建Undo表空间。

表空间(TABLESPACE)

表空间(TABLESPACE)

表空间(TABLESPACE)表空间(TABLESPACE)是ORACLE数据库中最大的逻辑结构。

ORACLE数据库是由一个或多个表空间组成的。

它在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。

从物理上说数据库的数据被存放在数据文件中,而从逻辑上说是被存放在表空间中的。

数据库的逻辑配置实际上就是指表空间的配置。

一、表空间概述表空间是ORACLE数据库中最大的逻辑结构。

数据库的所有对象和方案都被逻辑的保存在表空间中。

(一)表空间的特性与作用数据库管理系统(DBMS)是建立在操作系统(OS)基础上的,它的数据也必须存储在各个文件中,如数据文件、重做日志文件、归档日志文件等。

表不是文件,表不是空间。

表空间是组织结构和分配空间的逻辑结构。

除了数据文件之外,控制文件、重做日志文件、归档日志文件等其他文件都不属于任何表空间。

表空间的特性如下:1.一个数据库可以有多个表空间。

可以在数据库中创建、删除表空间;2.一个表空间只属于一个数据库;3.一个表空间必须要有一个数据文件;4.一个表空间的大小等于其中所有数据文件的大小之和。

数据库的大小等于其中所有表空间的大小之和;5.表空间可以被联机和脱机。

SYSTEM表空间不能被脱机;6.表空间可以在读写、只读状态之间切换;7.每个表空间由一个或多个物理存在的操作系统的数据文件组成。

这种数据文件可以具有固定的大小,或允许其自动变大。

可以在表空间中添加、删除数据文件;8.方案对象、表、索引的数据都被存储在表空间的数据文件中。

一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就可以;9.一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中;10.一个用户使用的表空间的数量是有一定配额的,不能超出这个配额;11.可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。

Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等

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数据库表空间扩容方法

一、概述数据库管理是企业信息系统中极为重要的一环,而Oracle数据库作为业界优秀的关系型数据库管理系统,通常被广泛应用于企业级应用中。

在数据库管理中,表空间是一个很重要的概念,它用于管理数据库中的数据存储。

随着数据量的增加,表空间可能会出现空间不足的情况,因此扩容表空间变得至关重要。

本文将介绍几种扩容Oracle数据库表空间的方法。

二、从数据文件角度扩容表空间1. 增加数据文件当表空间中的数据文件即将满的时候,可以通过增加数据文件的方式来扩容表空间。

具体操作步骤如下:1) 在Oracle数据库中使用“alter tablespace 表空间名 add datafile 新数据文件名 size 新数据文件大小”命令来增加数据文件;2) 通过以上操作,可以为表空间增加数据文件,并使表空间的空间得到扩容。

2. 自动扩展在表空间创建的时候,可以选择启用自动扩展功能。

当表空间中的数据文件空间不足时,可以自动扩展表空间的空间大小。

具体操作步骤如下:1) 在创建表空间的时候,使用“autoextend on”选项来启用自动扩展功能;2) 当表空间中的数据文件空间不足时,系统会自动扩展表空间的空间大小。

三、从段角度扩容表空间1. 移动段移动段是一种有效的扩容表空间的方法。

通过移动段,可以将表或索引从原有的表空间移动到具有足够空间的表空间中,从而实现表空间的扩容。

具体操作步骤如下:1) 使用“alter table 表名 move tablespace 新表空间名”命令来将表移动到新的表空间;2) 使用“alter index 索引名 rebuild tablespace 新表空间名”命令来将索引移动到新的表空间。

2. 压缩段通过压缩段的方式,可以释放表空间中的空闲空间,从而实现表空间的扩容。

具体操作步骤如下:1) 使用“alter table 表名enable row movement”命令来启用行移动功能;2) 使用“alter table 表名shrink spacepact”命令来压缩表,释放表空间中的空闲空间。

oracle释放表空间最佳实践

oracle释放表空间最佳实践

oracle释放表空间最佳实践释放表空间是在数据库中删除不再需要的表空间,以节省存储空间和提高数据库性能。

以下是Oracle数据库释放表空间的最佳实践:1. 确保没有任何对象依赖于要释放的表空间。

在进行释放之前,需要确保没有表、索引、分区、包等对象依赖于要释放的表空间。

可以使用Oracle的`DBA_DEPENDENCIES`视图来检查对象间的依赖关系。

2. 备份数据。

在释放表空间之前,应该先备份要释放的表空间中的数据。

这样可以避免意外删除数据引起的潜在问题。

3. 迁移数据。

如果要释放的表空间中有一些重要的数据,但是不再需要这些数据,可以先将这些数据迁移到其他表空间或者归档。

这样可以确保这些数据不会丢失,同时也不会占用要释放的表空间的存储空间。

4. 关闭相关的数据库连接。

在释放表空间之前,应该确保没有任何活动的数据库连接正在使用该表空间。

可以使用`DBA_ACTIVE_SESSIONS`视图和`V$SESSION`视图来查找和关闭相关的数据库连接。

5. 停止相关的数据库服务。

在释放表空间之前,最好停止相关的数据库服务,以确保没有任何数据库进程正在使用该表空间。

6. 使用`DROP TABLESPACE`语句释放表空间。

最后,使用`DROP TABLESPACE`语句来释放表空间。

这个语句将会删除该表空间及其包含的所有对象。

总之,释放表空间之前,必须确保没有任何对象依赖于它,并备份重要的数据。

同时,还要关闭相关的数据库连接和停止相关的数据库服务。

最后,使用`DROP TABLESPACE`语句来释放表空间。

oracle建立表空间的方法

oracle建立表空间的方法

oracle建立表空间的方法Oracle数据库中建立表空间的方法主要有两种:一种是通过SQL命令的方式,另一种是通过Oracle客户端Enterprise Manager Console来创建。

通过SQL命令的方式创建表空间,需要先创建临时表空间和数据表空间,然后创建用户并指定表空间。

具体步骤如下:1. 创建临时表空间。

可以通过以下命令创建:```sqlcreate temporary tablespace user_temptempfile 'D:\oracle\oradata\Oracle9i\user_'size 50m autoextend on next 50mmaxsize 20480mextent management local;```2. 创建数据表空间。

可以通过以下命令创建:```sqlcreate tablespace user_dataloggingdatafile 'D:\oracle\oradata\Oracle9i\user_'size 50m autoextend on next 50mmaxsize 20480mextent management local;```3. 创建用户并指定表空间。

可以通过以下命令创建用户并将表空间指定给该用户:```sqlcreate user username identified by password;grant create session, create tablespace to username;alter user username default tablespace user_data temporary tablespace user_temp;```通过Oracle客户端Enterprise Manager Console来创建表空间,可以通过以下步骤完成:1. 打开Oracle客户端Enterprise Manager Console。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle表空间操作详解1.创建表空间:createtablespace<tablespace_name>datafile '<filepath>' size <filesize>autoextend on next <autosize>maxsize<maxsize [unlimited]>eg:createtablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m2.为表空间增加数据文件:altertablespace<tablespace_name> add datafile 'filepath' size <filesize>autoextend on next <autosize>maxsizefilemaxsize[unlimited];eg:altertablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited3.调整表空间:alter database datafile 'filepath' resize <filesize>;--重置表空间的大小eg:alter database datafile 'c:\2.txt' resize 10m在实际使用中我们经常会遇到oracle某个表空间占用了大量的空间而其中的数据量却只占用了少量空间,此时我们可以用ALTER DATABASE DATAFILE '***.dbf' RESIZE nnM的命令来收缩表空间,但在收缩的过程中会遇到ora-03297错误,表示在所定义的空间之后有数据存在,不能收缩,此时的解决办法有:(1). 先估算该表空间内各个数据文件的空间使用情况:SQL>select file#,name from v$datafile;SQL>select max(block_id) from dba_extents where file_id=11;MAX(BLOCK_ID)-------------13657SQL>show parameter db_block_sizeNAME TYPE VALUE----------------------------- ------- ----------- db_block_size integer 8192SQL>select 13657*8/1024 from dual;13657*8/1024-----------106.695313这说明该文件中最大使用块位于106M与107M之间,SQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M;alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M*ERROR at line 1:ORA-03297: file contains used data beyond requested RESIZE valueSQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 107M; Database altered.(2).如果某些表占用了数据文件的最后一些块,则需要先将该表导出或移动到其他的表空间中,然后删除表,再进行收缩。

不过如果是移动到其他的表空间,需要重建其索引。

SQL> alter table t_obj move tablespace t_tbs1;(2)删除某个表空间中的某个数据文件export该表空间的内容:expdp用户名/密码DUMPFILE=XXX.dmp tablespaces=xxx; 1) shutdown (abort)2) startup mount3) alter database datafile 'fullpath_of_removed_DF ' offline drop在非归档模式下,可以使用... offline drop,在归档模式下,使用... offline这个命令的意思并不是从表空间将这个数据文件彻底删除,而是说将这个数据文件“冻结”住:它的scn不在变化,不会再向它写入任何数据;但是原有存在这个文件中对象和数据还可以继续使用。

因此在使用这个命令后,通过修改控制文件将它删除,数据库在启动时就会报文件丢失的错误,并且会在数据字典中产生一个MISGXXXXX的纪录。

因此,以一个数据文件是无法被直接从数据库中删除掉的。

刪除表格空間.SQL> DROP TABLESPACE users INCLUDING CONTENTS and datafiles;在drop users表空間時遇到如下錯誤﹕SQL> DROP TABLESPACE users INCLUDING CONTENTS and datafiles;DROP TABLESPACE users INCLUDING CONTENTS and datafiles*ERROR 在行1:ORA-12919: 無法刪除預設永久表格空間原來在oracle10g中﹐必須為數據庫指定一個默認的永久表空間。

而默認是users表空間﹐所以會出現上面的錯誤信息。

把默認的永久表空間改為system表空間就可以了﹕SQL> alter database default tablespace system;4) SQL> alter database open5)重建被drop掉的表空间,再import前面备份的表空间impdp用户名/密码DUMPFILE=XXX.dmp tablespaces=xxx;4.关闭表空间的自动扩展属性:alter database datafile 'filepath' autoextend offeg:alter database datafile 'c:\2.txt' autoextend off5.打开表空间的自动扩展属性:alter database datafile 'filepath' autoextend oneg:alter database datafile 'c:\2.txt' autoextend on6.使表空间脱机:altertablespacetablespace_name offline7.使表空间联机:altertablespacetablespace_name online8.设置表空间为只读:altertablespacetablespace_name read only9.设置表空间为读写:altertablespacetablespace_name read write11.删除表空间:droptablespacetablespace_name12.删除表空间的同时,删除数据文件droptablespacetablespace_name including contents and datefiles13.查看每个表空间占用空间的大小:selecttablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name10.oracle中如何移动控制文件,数据文件,日志文件oracle9i/10G-xG中移动控制文件,数据文件,日志文件ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。

windows环境中用:host copy 或host move 其它均相同。

以下是unix或linux环境中,一.移动数据文件:ALTER TABLESPACE方法(联机状态):用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。

$ sqlplus '/as sysdba'#把需要移动的数据文件对应的表空间offlineSQL> alter tablespaceipas_acct_data offline#把数据文件cp到想要放的目录下。

SQL> !mv /opt/oracle/wacosdata/ipas_acct_data001.dbf/opt/oracle/nms/oradata/ipas_acct_data001.dbf#修改表空间中数据库文件的位置。

SQL> alter tablespaceipas_acct_data rename datafile'/opt/oracle/wacosdata/ipas_acct_data001.dbf' to'/opt/oracle/nms/oradata/ipas_acct_data001.dbf'#把表空间online。

SQL> alter tablespaceipas_acct_data online#查看修改结果。

SQL> select file_name from dba_data_files where tablespace_name ='IPAS_ACCT_DATA';ALTER DATABASE方法(脱机状态):用此方法,可以移动任何表空间的数据文件。

$ sqlplus '/as sysdba'SQL> shutdown immediateSQL> !mv /opt/oracle/oradata/wacos002.dbf /ora10g/oradata/wacos002.dbfSQL> startup mountSQL> alter database rename file '/opt/oracle/oradata/wacos002.dbf' to'/ora10g/oradata/wacos002.dbf';SQL> alter database open;SQL> set head offSQL> SELECT file_name from dba_data_files where tablespace_name = 'WACOS';二. 移动控制文件:$ sqlplus '/as sysdba'#我是用的spfile启动的,spfile文件不能修改,所以要做这一步。

相关文档
最新文档