好久没有用Oracle了,快要忘的差不多了,今天没事整理一下,留个记录,便于以后查看。

ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。

例如:便于理解,把oracle数据库看作一个实在房间,表空间可以看作这个房间的空间,是可以自由分配,在这空间里面可以堆放多个箱子(箱子可以看作数据库文件),箱子里面再装物件(物件看作表)。用户指定表空间也就是你希望把属于这个用户的表放在那个房间(表空间)里面。

表空间是一个虚拟的概念可以无限大,但是需要由数据文件作为载体。

如果不知道怎么登录可以:戳一下这里

1、建立表空间

--建立临时表空间
CREATE TEMPORARY TABLESPACE temp_name --创建名为temp_name的临时表空间
TEMPFILE 'D:\app\super\oradata\oracle\temp_name.DBF'    -- 临时文件
SIZE 50M    -- 其初始大小为50M
AUTOEXTEND ON    -- 支持自动扩展
NEXT 50M MAXSIZE 20480M    -- 每次增量为50M ,最大2048M
EXTENT MANAGEMENT LOCAL;

--建立表空间
CREATE TABLESPACE test_name --创建名为"test_name"的表空间
LOGGING
DATAFILE 'D:\app\super\oradata\oracle\test_name.DBF'
SIZE 50M    -- 其初始大小为50M
AUTOEXTEND ON    -- 支持自动扩展
NEXT 50M MAXSIZE 20480M    -- 每次增量为50M ,最大2048M
EXTENT MANAGEMENT LOCAL;

2、创建用户并关联表空间

当我使用Oracle19c下面方式创建用户的时候,出现了ORA-65096: 公用用户名或角色名无效的错误,

我的理解应该是12c之后需要在用户名前加上C##或者c##。

CREATE USER userName IDENTIFIED BY password -- 12c之后的版本,可以试试在用户名前加上c##
DEFAULT TABLESPACE test_name  --表空间
TEMPORARY TABLESPACE temp_name; -- 临时表空间,关联任意一个都行

-- 创建表的时候没有关联表空间
CREATE USER userName IDENTIFIED BY PASSWORD;
CREATE USER C##userName IDENTIFIED BY PASSWORD; -- 应该是12c之后都需要

--修改用户表空间
ALTER USER username DEFAULT TABLESPACE test_name;

3、用户授权\撤销授权

Oracle提供三种标准角色(role):connect/resource/dba。

a、connect role(连接角色)

临时用户,特指不需要建表的用户,通常只赋予他们connect role.

connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)。

b、resource role(资源角色)

更可靠和正式的数据库用户可以授予resource role。

resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

c、dba role(数据库管理员角色)

dba role拥有所有的系统权限。

--给用户授权
GRANT CONNECT,RESOURCE,DBA TO userName;

--撤销用户权限
REVOKE CONNECT,RESOURCE FROM userName;

4、删除表空间

--删除表空间
DROP TABLESPACE test_name INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐