Oracle 表空间的使用与创建

devtools/2025/1/19 23:42:03/

Oracle 表空间的使用与创建(结合创建用户及权限管理)

在Oracle数据库中,表空间数据库存储的逻辑单位,它用于存储数据库中的数据对象,如表、索引等。Oracle提供了不同类型的表空间(如普通表空间、大表空间、临时表空间等),适用于不同的应用场景。在创建表空间时,我们不仅需要关注存储策略,还需要注意表空间与用户的关系以及如何分配权限。

本文将介绍如何创建Oracle表空间,创建和管理用户及其权限,并结合具体的SQL语句示例,展示如何管理表空间和用户的使用。

1. Oracle 表空间类型

1.1 普通表空间

普通表空间是最常见的表空间类型,它包含一个或多个数据文件,用于存储数据库对象。每个数据文件的大小是固定的,但可以通过自动扩展功能来进行扩展。

创建普通表空间的SQL语句如下:

CREATE TABLESPACE DATACHANGE 
DATAFILE '/u01/app/oracle/oradata/ORCL/datachange01.dbf' 
SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;

解释:

  • CREATE TABLESPACE:创建一个普通表空间。
  • DATACHANGE:指定表空间的名称。
  • DATAFILE:指定数据文件的路径及文件名。
  • SIZE 8G:设置数据文件的初始大小为8GB。
  • AUTOEXTEND ON NEXT 1G:设置数据文件的自动扩展功能,每次扩展1GB。
  • MAXSIZE UNLIMITED:不限制数据文件的最大大小,允许其无限扩展。
1.2 大表空间(Bigfile Tablespace)

大表空间是为处理大规模数据量而设计的,它只能包含一个数据文件,并且数据文件的大小可以非常大。

创建大表空间的SQL语句如下:

CREATE BIGFILE TABLESPACE DATACHANGE 
DATAFILE '/u01/app/oracle/oradata/ORCL/datachange01.dbf' 
SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;

该SQL语句创建了一个名为DATACHANGE的大表空间,其中包含一个数据文件,初始大小为8GB,并支持自动扩展。

1.3 临时表空间(Temporary Tablespace)

临时表空间用于存储数据库在运行过程中产生的临时数据,如排序操作、哈希连接等。临时表空间通常使用临时文件进行存储,这些文件的内容在数据库重启或会话结束时会被清空。

创建临时表空间的SQL语句如下:

CREATE BIGFILE TEMPORARY TABLESPACE DATACHANGE_TEMP 
TEMPFILE '/u01/app/oracle/oradata/ORCL/datachange_temp.dbf'
SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;

该语句创建了一个名为DATACHANGE_TEMP的临时表空间,包含一个初始大小为8GB的临时文件,并支持自动扩展。

2. 创建用户与赋予权限

在Oracle数据库中,创建用户时需要为其指定默认的表空间和临时表空间,并根据需要为用户赋予相应的权限。下面是创建用户并为其分配表空间、权限以及目录访问权限的SQL示例。

2.1 创建用户
CREATE USER datachange IDENTIFIED BY drgs2019 
DEFAULT TABLESPACE datachange 
TEMPORARY TABLESPACE datachange_temp;

这条SQL语句创建了一个名为datachange的用户,并为其指定了默认表空间datachange和临时表空间datachange_temp。用户的初始密码为drgs2019

2.2 授予权限

接下来,我们需要为datachange用户授予适当的权限,确保其可以正常操作数据库

GRANT DBA TO datachange;

这条SQL语句将DBA角色授予datachange用户,使其具有管理员权限。DBA角色通常赋予数据库管理员操作所有数据库对象的权限。

2.3 创建并授予目录访问权限

Oracle数据库允许将外部目录映射到数据库中,从而方便用户访问操作系统中的文件。我们可以创建目录对象,并授予datachange用户对这些目录的访问权限。

CREATE DIRECTORY dp_temp AS '/data/sftp/fly/datasource/temp/';
GRANT READ, WRITE ON DIRECTORY dp_temp TO datachange;CREATE DIRECTORY dp_dir AS '/data/sftp/fly/datasource/dp/';
GRANT READ, WRITE ON DIRECTORY dp_dir TO datachange;

这两条SQL语句分别创建了名为dp_tempdp_dir的目录对象,并授予datachange用户对这些目录的读取和写入权限。这样,datachange用户就可以通过Oracle访问存储在这些目录中的文件。

2.4 授予连接和资源权限

为确保datachange用户能够正常连接数据库并使用必要的资源,我们需要授予其CONNECTRESOURCE角色。此外,我们还需要为该用户解除表空间的限制。

GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO datachange;

这条SQL语句授予了datachange用户以下权限:

  • CONNECT:允许用户连接到数据库
  • RESOURCE:允许用户创建和管理数据库对象(如表、视图等)。
  • UNLIMITED TABLESPACE:允许用户使用任何表空间,并且不限制其表空间的使用。
2.5 修改密码有效期设置

在某些情况下,我们可能希望解除用户密码的有效期限制,使得密码不会过期。可以通过以下SQL语句来实现:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

该语句修改了默认密码策略,取消了密码过期限制。这样,datachange用户的密码将不再自动过期。

3. 查询表空间使用情况

为了监控和管理表空间的使用情况,数据库管理员可以使用以下查询语句来检查表空间的容量和使用情况:

SELECT *
FROM   (SELECT A.FILE_ID AS 文件ID, A.TABLESPACE_NAME AS 表空间名称,A.FILE_NAME 文件名称,TRIM(TO_CHAR(A.BYTES / 1024 / 1024, '99999990.99')) AS 总容量,TRIM(TO_CHAR(B.BYTES / 1024 / 1024, '99999990.99')) AS 剩余容量,TRIM(TO_CHAR(A.BYTES / 1024 / 1024 - B.BYTES / 1024 / 1024,'99999990.99')) AS 使用容量,TRIM(TO_CHAR((1 - B.BYTES / A.BYTES) * 100, '99999990.99')) || '%' AS 使用占比,'永久' AS 属性FROM   (SELECT TABLESPACE_NAME, FILE_NAME, FILE_ID, SUM(BYTES) BYTESFROM   DBA_DATA_FILESGROUP  BY TABLESPACE_NAME, FILE_NAME, FILE_ID) A,(SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTESFROM   DBA_FREE_SPACEGROUP  BY TABLESPACE_NAME, FILE_ID) BWHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAMEAND    A.FILE_ID = B.FILE_IDUNION ALLSELECT C.FILE_ID AS 文件ID, C.TABLESPACE_NAME AS 表空间名称,C.FILE_NAME AS 文件名称,TRIM(TO_CHAR(C.BYTES / 1024 / 1024, '99999990.99')) AS 总容量,TRIM(TO_CHAR((C.BYTES - NVL(D.BYTES_USED, 0)) / 1024 / 1024,'99999990.99')) AS 剩余容量,TRIM(TO_CHAR(NVL(D.BYTES_USED, 0) / 1024 / 1024, '9999990.99')) AS 使用容量,TRIM(TO_CHAR(NVL(D.BYTES_USED, 0) * 100 / C.BYTES, '99999990.99')) || '%' AS 使用占比,'临时' AS 属性FROM   (SELECT TABLESPACE_NAME, FILE_NAME, FILE_ID, SUM(BYTES) BYTESFROM   DBA_TEMP_FILESGROUP  BY TABLESPACE_NAME, FILE_NAME, FILE_ID) C,(SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES_CACHED) BYTES_USEDFROM   V$TEMP_EXTENT_POOLGROUP  BY TABLESPACE_NAME, FILE_ID) DWHERE  C.TABLESPACE_NAME = D.TABLESPACE_NAME(+)AND    C.FILE_ID = D.FILE_ID(+))
ORDER  BY 属性 ,表空间名称, 文件ID;

这条查询语句从DBA_DATA_FILESDBA_FREE_SPACEDBA_TEMP_FILESV$TEMP_EXTENT_POOL视图中获取表空间的总容量、

剩余容量、使用容量和使用占比等信息,帮助数据库管理员进行存储空间的管理。

4. 总结

在本文中,我们讨论了如何创建和管理Oracle数据库的表空间、如何为用户分配表空间、权限及目录访问权限,以及如何监控表空间的使用情况。通过合理的表空间管理和用户权限分配,数据库管理员可以有效地维护数据库的稳定性和性能。


http://www.ppmy.cn/devtools/151949.html

相关文章

跨站请求伪造(CSRF)介绍

一、什么是跨站请求伪造(CSRF) 跨站请求伪造(Cross-Site Request Forgery,简称CSRF)是一种针对网站的恶意利用方式,也被称为“One Click Attack”或“Session Riding”。 CSRF攻击通过伪装来自受信任用户…

java权限修饰符

Java 的访问修饰符(Access Modifiers)是控制类、方法、变量等成员访问范围的关键工具。它们定义了类、方法或成员变量的可见性,以及在不同位置(如不同包或子类)是否能访问这些成员。Java 提供了四种主要的访问修饰符&a…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态🐇一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计🦩1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

ES6中有哪些作用域

在ES6(ECMAScript 2015)中,作用域(Scope)是指变量、函数和对象在代码中的可访问范围。ES6 引入了新的作用域规则,除了传统的全局作用域和函数作用域外,还新增了块级作用域。以下是 ES6 中的主要…

STM32 HAL库函数入门指南:从原理到实践

1 STM32 HAL库概述 STM32 HAL(Hardware Abstraction Layer)库是ST公司专门为STM32系列微控制器开发的一套硬件抽象层函数库。它的核心设计理念是在应用层与硬件层之间建立一个抽象层,这个抽象层屏蔽了底层硬件的具体实现细节,为开发者提供了一套统一的、…

vue2:实现上下两栏布局,可拖拽改变高度

要拖拽改变两栏高度,那么总高度要确定,在拖拽的过程中,实时根据光标位置计算两栏高度,所以: 1、最外层有一个box, 高度是屏幕高度screenHeight; 2、该值在页面挂载时获取初始值(window.innerHeight-100),这里减少100,因为窗口上面有工具栏; 3、监听窗口resize事件…

Linux安装Docker教程(详解)

如果想要系统学习docker,建议进入官方文档中学习:docker官方文档 一. 基本概念 Docker Desktop 和 Docker Engine 有什么区别? Docker Desktop for Linux 提供用户友好的图形界面,可简化容器和服务的管理。它包括 Docker Engine&#xff0c…

力扣动态规划-2【算法学习day.96】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…