Oracle表空间、用户详解

news/2024/7/7 20:08:00

目录

  • 新建连接
  • 三者关系
  • 表空间
    • 创建表空间
    • 修改表空间和数据文件
      • 修改数据文件容量
      • 新增表空间的数据文件
      • 重命名数据文件
      • 修改表空间状态
      • 修改数据文件状态
    • 删除表空间
    • 查询
  • 用户
    • 创建
    • 删除
    • 查询
    • 修改

新建连接

工具选择:
我们一般会选择一个工具来连接本地的Oracle,而我这里选择的是Navicat 15 ——


开启服务:
为了Navicat能连接上Oracle,我们需要本地开启Oracle服务(因为Oracle很占内存,所以一般不会设置自动启动)。

wins键——服务——开启服务

只要把这几个启动了,就可以连接了(我也不清楚哪几个是必须的,如果还是连接不了,就把所有的Oracle服务都启动就没问题了)。


新建连接:

  • 我们先登录 system 用户,因为它拥有普通dba角色权限

    Oracle用户权限说明: http://www.kaotop.com/it/171606.html

  • 注意1: 如果你之前已经建立了一个Oracle连接,然后你想直接修改连接的用户来登录其他用户,那么其会报错:
所以,请新建一个连接。
  • 注意2: 有些小伙伴就要问了,凭什么非要用 System 登录呢,是看不起我们的 SCOTT 或者 SH 吗?
    因为它们没有权限呀:

    select * from user_sys_privs;
    

    Oracle数据库权限一览表: https://blog.csdn.net/oYinHeZhiGuang/article/details/104718403

    如果直接用 SCOTT 创建表空间或者用户,会报错:ORA-01031: 权限不足

三者关系

先来说明一下表空间、用户和表的关系,其关系如下:

一个表空间下面可以有多个用户,而一个用户下面可以有多张表。

  • 表空间:数据库数据的物理存储空间
    那些后缀名为 .DBF 的文件就是表空间
  • 用户:可以通过用户操作数据库(前提是该用户有相应权限)
    创建用户必须为其指定表空间,如果没有显性指定表空间,则默认指定为 USERS 表空间
  • 表:数据记录的集合

通过对这三者的关系分析,可知道创建流程:创建表空间 → 创建用户 → 创建表。

表空间

表空间与数据库的关系:


创建表空间

创建表空间: 创建一个初始大小为20MB,每次扩容4M,最大容量为40MB的表空间。

注意: 在创建表空间的时候,一定要指定数据文件路径

-- 创建表空间 HIPAY
create tablespace hipay
-- 指定表空间属下的数据文件,初始化容量为 20MB
datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' size 20m
-- 设置数据文件为自动扩容,每次扩容为4MB,最大容量为40MB
autoextend on next 4m maxsize 40m
  • Oracle大小写敏感,且默认会将表空间名、用户名、表名、字段名转换为大写
  • 如果不想名称转换为大写,可以在创建的时候,给名称加一个 "" 包起来,查询的时候用''包起来
  • 指定表空间的数据文件,可以指定已经存在的数据文件,也可以指定一个不存在的,然后Oracle会自动创建一个
  • 在指定表空间的数据文件的时候,可以指定多个数据文件

查看表空间:

SELECT
	t.tablespace_name,-- 表空间
	t.file_name,-- 文件名
	t.autoextensible,-- 是否自增
	t.bytes / 1024 / 1024 "SIZE(M)",-- 初始值
	t.increment_by * 8 / 1024 "NEXT(M)",-- 步长 1blok = 8KB
	t.maxbytes / 1024 / 1024 "MAXSIZE(M)" -- 最大值
	
FROM
	dba_data_files t 
WHERE
	t.tablespace_name = 'HIPAY';

创建表空间官方文档: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/CREATE-TABLESPACE.html

修改表空间和数据文件

修改数据文件容量

  • 修改数据文件大小:
    修改数据文件初始大小为 10MB
    ALTER database datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' resize 10m;
    
  • 修改数据文件自动扩容:
    每次扩容10MB,最大容量为500MB,可以把500m换成 unlimited,即无上限
    ALTER database datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' autoextend ON NEXT 10m maxsize 500m;
    

新增表空间的数据文件

HIPAY 新增一个容量为 20MB 的数据文件。

ALTER tablespace "HIPAY" ADD datafile 'D:\Applications\orcl\oradata\orcl\TEST01.dbf' SIZE 20M;

重命名数据文件

ALTER tablespace HIPAY RENAME datafile 'D:\Applications\orcl\oradata\orcl\TEST01.dbf' TO 'D:\Applications\orcl\oradata\orcl\TEST02.dbf';

修改表空间状态

  • 离线状态:

    ALTER tablespace HIPAY OFFLINE;
    
  • 在线状态:

    ALTER tablespace HIPAY ONLINE;
    

    oracle表空间offline的三种方式区别: https://blog.51cto.com/jiujian/1033891

  • 只读状态:

    ALTER tablespace HIPAY read ONLY;
    
  • 可读写状态:

    ALTER tablespace HIPAY read write;
    

注意:离线状态不可设置只读,只有在只读状态才可修改为可读写,因为默认可读写。


修改数据文件状态

  • 离线状态:
    设置数据文件为离线状态需要先设置表空间为离线状态

    ALTER tablespace HIPAY OFFLINE;
    ALTER database datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' OFFLINE;
    
  • 在线状态:

    ALTER database datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' ONLINE;
    
  • 删除数据文件:

    ALTER database datafile 'D:\Applications\orcl\oradata\orcl\TEST.dbf' OFFLINE DROP;
    

删除表空间

  • 脱机(表空间为空)

    DROP tablespace hipay;
    
  • 脱机(表空间有数据)

    DROP tablespace hipay including contents;
    
  • 完全删除(表空间与数据文件)

    DROP tablespace hipay including contents and datafiles;
    

查询

  • 查询数据文件

    SELECT
    	* 
    FROM
    	dba_data_files;
    
  • 查询表空间

    SELECT
    	* 
    FROM
    	dba_tablespaces;
    SELECT
    	* 
    FROM
    	dba_free_space;
    
  • 查看表空间的使用情况

    WITH temp_data_files AS ( SELECT ddf.tablespace_name, sum( bytes ) total FROM dba_data_files ddf GROUP BY ddf.tablespace_name ),
    temp_free_space AS ( SELECT dfs.tablespace_name, sum( bytes ) free FROM dba_free_space dfs GROUP BY dfs.tablespace_name ) SELECT
    dt.tablespace_name 表空间名称,
    dt.contents 类型,
    ( tdf.total / 1024 / 1024 ) "总大小(M)",
    ( tfs.free / 1024 / 1024 ) "空闲(M)",
    round( ( tdf.total - tfs.free ) / 1024 / 1024, 2 ) "已使用(M)",
    round( ( tdf.total - tfs.free ) / tdf.total * 100, 2 ) "占比(%)" 
    FROM
    	dba_tablespaces dt,
    	temp_data_files tdf,
    	temp_free_space tfs 
    	
    WHERE
    	tdf.tablespace_name = dt.tablespace_name 
    	AND tfs.tablespace_name = dt.tablespace_name;
    

用户

创建

用户的创建依赖于表空间,所以在创建用户的时候需要指定表空间(默认为 USERS):

-- 创建test用户,密码为123456
CREATE USER test IDENTIFIED BY 123456
-- 默认表空间
DEFAULT tablespace hipay
-- 临时表空间
temporary tablespace temp
-- 表空间额度
quota unlimited ON hipay;

-- 授权(可以登录)
GRANT CREATE SESSION TO test;

## 查询

删除

DROP USER test cascade;

查询

查看用户:

SELECT
	* 
FROM
	dba_users t 
WHERE
	t.username = 'TEST';

查看当前用户的的权限:

SELECT
	* 
FROM
	user_role_privs;
	
SELECT
	* 
FROM
	session_privs

查看当前用户的系统权限和表级权限:

SELECT
	* 
FROM
	user_sys_privs;

SELECT
	* 
FROM
	user_tab_privs;

查看所有用户:

SELECT
	* 
FROM
	dba_users;
SELECT
	* 
FROM
	all_users;
SELECT
	* 
FROM
	user_users;

修改

修改密码:

ALTER USER test IDENTIFIED BY 234556;

设置权限:

GRANT CONNECT,
RESOURCE TO test;

撤销权限:

REVOKE CONNECT,
RESOURCE FROM test;

Oracle数据库权限一览表: https://blog.csdn.net/oYinHeZhiGuang/article/details/104718403


http://lihuaxi.xjx100.cn/news/170952.html

相关文章

JavaEE——Servlet中的session

之前的博客中提到,cookie是为了浏览器能够在本地保存数据而产生的机制,是在浏览器工作的。而session则是与之对应的,在客户端工作的。一个服务器对应多个客户端,每个客户端都有自己的session,以sessionId为key&#xf…

2.19 emoji符号大全【玩赚小红书】

知乎无法显示全部表情符号,大家可以参考这个网站:🤣 Emoji表情大全,颜文字百科 💌 😃💁表情符号 😀 😃 😄 😁 😆 😅 &…

PySide创建界面关联项目(五) 百篇文章学PyQT

本文章是百篇文章学PyQT的第五篇,本文讲述如何使用PySide创建UI界面,并且关联入PyCharm 新建的项目中成功运行第一个PyQT程序,博主在本篇文章中将遇到和踩过的坑总结出来,可以供大家参考,希望大家安装顺利。包括 安装、…

STM32F407 电机编码器测量

文章目录一、STM32F407 定时器编码器功能1.1 STM32定时器简介1.2 STM32定时器编码器功能二、带编码器的直流电机三、代码与验证3.1 初始化代码3.2 验证一、STM32F407 定时器编码器功能 1.1 STM32定时器简介 STM32的定时器功能非常强大,根据官方手册,定…

[U3D ShaderGraph] 全面学习ShaderGraph节点 | 第一课 | 内置节点

欢迎 ShaderGraph是可视化的着色器编辑工具。您可以使用此工具以可视方式创建着色器,而不用编写代码。 本专栏可以让你更了解ShaderGraph中每个节点的功能,更自如的在做出自己想要的效果。 如果你想学习在unity中如何制作一个特效,如何在unity中让模型更炫酷,那么快来加入这…

基于Prometheus的容器云平台监控架构设计

【导读】为容器云提供良好的监控环境是保证容器服务的高可靠性、高可用性和高性能的重要部分,通过本文能够快速认识当前容器环境下都有哪些监控方案,并对主流的监控方案有一个系统的了解和认识,并详细介绍基于Prometheus的容器云平台监控架构设计。 1 概述 随着容器化的大…

Trie字典树详解

字典树📖1. 什么是Trie树📖2. Trie树的一些应用场景📖3. Trie树的优缺点📖4. Trie树的节点怎样定义📖5. 代码实现📖6. 字典树的优化📖1. 什么是Trie树 Trie树,又叫字典树&#xff0…

一文详解JVM的内存结构

目录 前言 内存结构 程序计数器 虚拟机栈 本地方法栈 堆内存 方法区 内部组成 前言 Java的JVM解决的问题是跨操作系统问题。程序员只需要专注于代码的编写,这些代码能够在不同的操作系统Mac,Linux和Windows运行的前提是JVM。JVM还提供了垃圾回收机制…