好久没有用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