`
hugang357
  • 浏览: 188596 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

详聊Oracle用户表空间宝典

阅读更多
          Oracle还是比较常用的,于是我研究了一下Oracle用户表空间,在这里拿出来和大家分享一下,希望对大家有用。在我们为微软的NTFS分区格式中的用户磁盘配额鼓掌的时候,Oracle数据库中也已经实现了用户磁盘配额的技术。可以借助表空间,来对用户进行磁盘配额管理。利用表空间的用户磁盘配额,可以实现很多功能。
如可以利用用户磁盘配额,来管理用户创建数据库对象的能力。我们都知道,若用户想要在某个表空间中创建方案对象的话,必须同时满足两个对象。一是用户具有数据库系统中CREATE TABLE等相关的权限;二是在这个方案对象使用的表空间中具有配额。因为这两个条件必须同时满足,用户才能够成功的建立对象。所以,若我们可以不给用户某个表空间的配额,如此的话,就可以限制用户的相关操作。
          另外,我们也可以利用磁盘配额来对用户进行数据大小的限制。因为有时候我们可能在同一台数据器重会运行多个应用服务。如笔者以前在同一台服务器里同时运行邮箱与Oracle数据库系统。为了让减少这个两个系统对硬盘空间的过渡应用,所以,有必要对他们进行磁盘配额的限定。故,如用数据库管理员需要将资源限制作为自己数据库安全策略的一部分的话,就可以考虑为每个用户设置表空间配额。
总之,笔者认为,表空间配额是一个很不错的辅助管理工具。笔者在这方面管理上,稍有心得,跟有识之士,讨论讨论。
一、给用户分配表空间。
在Oracle数据库中,对于用户的磁盘配额是通过表空间来实现的。给某个用户分配了多少的表空间,这个用户就有多少的磁盘配额。所以,对于用户进行磁盘配额的管理,就是对用户进行表空间的限制。
在创建用户的时候,若没有关联表空间,则其一般情况下,就属于默认的表空间。而其拥有表空间的大小,则是根据其所属角色的不同而有所区别。如其属于resource组的话,则其表空间是没有大小限制的。
一般情况下,若数据库管理员需要对表空间进行磁盘配额管理的话,则笔者建议,在用户建立的时候,为用户指定表空间,并设置表空间的大小。如我们可以利用如下这条命令配置用户的磁盘空间配额:ALTER USER user_name QUOTA ** ON tablespace。其中参数User_name表示用户名,而参数Tablespace表示用户所属的表空间。若我们参数设置为UNLIMITED的话,表示这个Oracle用户表空间没有限制,直到所有的空间用完为止。
所以,在一般情况下,两种情形下的用户具有无限制的磁盘配额。一是这个用户属于resource这个角色,因为这个角色默认情况下,其是没有磁盘限额限制的。二是在用户建立的时候,手工利用UNLIMITED指定该用户不具有磁盘限额。不过,为了提高Oracle数据库的安全性与灵活性,笔者是大力建议要对用户进行磁盘配额管理。
创建错误:
  若在对用户进行磁盘限额后,数据库管理员最容易犯的错误,就是忘记给用户分配磁盘限额,导致对象创建失败。如笔者第一次接触Oracle数据库的时候,就犯过这方面的错误。我新建了一个用户,并且赋予了其相关的权限。可是,在建表的时候,系统提示错误信息,说“表空间权限不足”。笔者查了好久,最后查询Oracle用户表空间确认配额的时候,发现该用户的缺省配额没有分配。利用命令更改了默认配额之后,就可以创建表了。
二、如何拓展Oracle用户表空间?
若对用户进行磁盘限额之后,有时候数据库管理员会发现用户的磁盘空间不足了,需要进行拓展。此时该如何处理呢?
若采用自动分配表空间大小的话,则Oracle数据库会自动调整表空间的大小,以满足用户的需要。但是,现在由于采用了磁盘配额管理,所以数据库管理员不得不进行手工的调整。不过在谈这个话题之前,数据库管理员有必要了解一下表空间区的分配方式。
       若数据库管理员能够预测到表空间中存放的大部分对象都需要使用相同大小的区的话,那么就可以采用Uinform区的分配方式。采取这种方式的话,Oracle数据库将为这个表空间中的所有数据库对象分配数据库管理员指定大小的区。这种方式的优点是不会产生磁盘碎片,可以提高磁盘空间的利用率与数据库的性能。
若数据库管理员能够预测到表空间中存放的大部分对象需要使用的区的大小是不同的话(往往都是不同的),则需要采用AUTOALLOCAT的区分配方式。这种分配方式下,将由Oracle 数据库自动为表空间的对象分配一定大小的区,而不是有用户指定。这种方式的优点就是可以节省数据库管理员的工作量。缺点是会产生比较多的磁盘碎片。不过总的来说,比起数据库管理员的工作量来说,这点磁盘碎片还是容易接受的。笔者在创建表空间的时候,基本上都是采用这个方式的。
故在拓展表空间的时候,其采用的是原先表空间的分配方式。也就是说,原先表空间采用的是什么区分配方式,则拓展空间也采用原先的分配方式。则是拓展表空间时必须要注意的问题。
当表空间不足,需要进行拓展的时候,笔者常用的方法是通过增加数据文件的方式来实现的。因为表空间是其相关数据文件大小的总和。所以,为表空间增加新的数据文件,是最常用的增加表空间的方式。
如当数据库管理员发现TEST1 表空间大小不足的时候,我们可以利用命令ALTER TABLESPACE TEST1 ADD DATEFILE ‘数据文件存放路径’ SIZE 500M。我们可以利用这个命令增加表空间的大小,然后再增加用户的磁盘配额。如此,就可以对Oracle用户表空间进行拓展。
笔者建议:
虽然数据库管理员可以通过图形界面的方式对Oracle数据库进行类似的管理。但是,若在数据库管理专家面前,采用图形化的管理界面的话,则这个数据库管理员可能会被他们认为是菜鸟。这主要是因为图形管理化的界面效率并不是很高。一方面要从众多的菜单栏中找到相关的功能,会浪费数据库管理员一定的时间;而且,其语句执行的效率,也比命令行要低。故,笔者建议,Oralce数据库管理员还是需要学会命令行的管理方式。
三、磁盘配额管理的几个建议。
1、当在创建表空间对象的时候,出现“超出表空间的空间限量”错误提示的处理思路。这种情况一般是由很多种情况所造成的。笔者在遇到这种问题的时候,一般的处理思路是,先查看该用户的磁盘配额,看其是否满足空间上的需求。若该用户没有磁盘配额管理的话,或者磁盘配额大小符合既定需求的话,则建议查看表空间的大小,看是否是因为表空间不足所造成的。若前两步还是不能够解决问题的,则看看表空间的管理方式。若是数据字典管理模式的话,则把他改为本地管理模式,一般就可以解决问题了。
2、若数据库中存放着不同办事处或者不同分公司的数据时,笔者建议对Oracle数据库进行磁盘限额。这可以有效的防止因为硬盘空间的不足导致整个数据库的崩溃。而若对用户进行磁盘配额管理的话,那最多只是某个办事处(某个用户)数据库操作出现故障而已。这也是提高Oracle数据库可用性的一个有效手段。
分享到:
评论

相关推荐

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    以下将详细介绍如何在Oracle中创建表空间、临时表空间以及赋予用户对表空间的权限。 首先,我们来了解如何创建一个常规表空间: 1. **创建表空间**: 使用`CREATE TABLESPACE`语句来创建一个新的表空间。例如,...

    linux下创建oracle用户表空间

    "Linux 下创建 Oracle 用户表空间" Linux 下创建 Oracle 用户表空间是指在已有的数据库实例上创建一个新的帐号,访问一些新的表操作。以下是创建用户表空间的步骤: 第一个步骤是登录 Linux,以 oracle 用户登录...

    Oracle用户(user)和表空间(tablespace).pdf

    Oracle 数据库是一个强大的关系型数据库管理系统,其用户管理和表空间机制是数据库管理和操作的基础。本文主要探讨了 Oracle 用户(user)和表空间(tablespace)的相关概念、创建、配置、修改以及删除等核心操作,...

    oracle 创建表空间命令

    以下是对"Oracle 创建表空间命令"以及"Oracle 创建用户及表空间,及用户权限分配"的详细解释。 首先,让我们了解如何创建Oracle用户。Oracle用户是数据库系统中的身份实体,用于访问和操作数据库资源。创建用户的...

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    完整ORACLE创建表空间、用户、设置用户权限脚本

    ### 完整Oracle创建表空间、用户及设置用户权限脚本解析 #### 一、创建表空间 在Oracle数据库管理中,创建表空间是数据库管理的基础之一。表空间是Oracle数据库中逻辑存储结构的一部分,它将数据库物理存储空间...

    oracle数据库_实例_用户_表空间之间的关系

    Oracle 数据库实例用户表空间之间的关系 Oracle 数据库实例用户表空间之间的关系是 Oracle 数据库管理系统的核心概念。了解它们之间的关系对于数据库的设计、管理和优化至关重要。 数据库 Oracle 数据库是一个...

    ORACLE quota 表空间限制

    在 Oracle 数据库中,为了更好地管理和控制用户对不同表空间的使用情况,引入了 Quota 的概念。Quota 主要用于限制用户在一个或多个表空间内所能使用的最大空间量。通过设置合适的 Quota,不仅可以有效地防止用户...

    oracle创建表空间和用户授权及删除表空间和用户

    在Oracle数据库管理中,创建与删除表空间以及用户授权是非常重要的操作。本文将详细介绍如何在Oracle环境下进行这些操作,包括创建表空间、为用户分配权限、以及如何删除表空间和用户。 ### 一、创建表空间 #### ...

    Oracle临时表空间不足和批处理缓慢问题探讨.pdf

    Oracle 临时表空间不足和批处理缓慢问题探讨 本文探讨了 Oracle 临时表空间不足和批处理缓慢问题的原因和解决方法。通过分析和测试,发现了问题的根源在于应用逻辑方面,具体来说是 SQL 语句的编写问题。通过编写...

    oracle增加表空间

    ### Oracle在Linux环境下增加表空间及用户操作指南 #### 一、概述 Oracle数据库是业界广泛使用的数据库管理系统之一,为了确保数据库性能与可用性,合理地管理表空间是非常重要的一个环节。本文将详细介绍如何在...

    oracle temp表空间不足解决方法

    Oracle数据库系统中,Temp表空间是用于存储临时段的地方,主要在执行排序、连接和创建索引等操作时使用。当遇到"Oracle temp表空间不足"的问题时,这通常意味着数据库运行过程中产生的临时数据超过了现有Temp表空间...

    Oracle相关SQL葵花宝典

    因此,《Oracle相关SQL葵花宝典》也将介绍Oracle的外部表、Java存储过程以及Oracle与XML的集成。同时,书中还会讨论Oracle的复制技术,如逻辑日志复制和数据泵导出导入,这对于数据备份、恢复和分布式数据库管理至关...

    oracle数据库创建表空间和用户

    oracle数据库导入、导出数据、创建表空间、创建用户、用户授权等操作

    Oracle数据库_实例_用户_表空间之间的关系.doc

    ### Oracle数据库、实例、用户、表空间的关系解析 #### 一、Oracle数据库概述 Oracle数据库是一种高度复杂的数据库管理系统,主要用于企业级数据管理和处理。与其他数据库系统不同,Oracle数据库中的“数据库”这一...

    获取oracle表空间脚本

    ### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...

    oracle创建表空间和用户.sql

    oracle创建表空间和用户.sql 适合初学者实用。

    Oracle数据库用户、表、表空间之间关系.doc

    用户可以使用一个或多个表空间,而表空间也能被多个用户共享。 表空间内部包含各种类型的段,包括数据段(存储表数据)、索引段(存储索引数据)、回退段(用于回滚事务)和临时段(处理临时数据)。段进一步由区...

    oracle数据库用户 表空间创建

    根据给定的文件信息,我们可以总结出以下关于Oracle数据库中用户和表空间创建的相关知识点: ### 一、Oracle表空间创建 #### 1. 表空间概念 在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成...

    Oracle创建表空间.创建用户.创建表

    ### Oracle 创建表空间、创建用户、创建表 #### 一、创建表空间 表空间是Oracle数据库中的逻辑存储单元,它由一个或多个数据文件组成。表空间是Oracle数据库存储结构的基本单位,用来组织和管理数据库中的数据。在...

Global site tag (gtag.js) - Google Analytics