Oracle体系结构入门

初学Oracle,会对Oracle的体系结构感到困惑,因为它跟MySQL有很大区别,首先介绍几个重要概念:

  1. 数据库:数据库指的是用户存储数据的一些物理文件(包括ORA或者DBF、控制文件、联机日志、参数文件)。
  2. 实例:一个Oracle实例(Oracle Instance)有一系列的后台进程和内存结构组成,一个数据库通常只有一个实例,也可以有n个实例。
  3. 用户:用户是在实例下建立的,一个实例可以有多个用户,用户是管理表的基本单位,而MySQL中是数据库。
  4. 表空间:表空间是Oracle对物理数据库上相关数据文件(DBF和DBF文件)的逻辑映射。一个数据库在逻辑上被划分成一个到若干个表空间。每个数据至少有一个表空间(称之为System表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件
    只能属于一个表空间。
  5. 数据文件(dbf、ora):数据文件是数据库的物理存储单位。 数据库的数据存储在表空间中,在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

在这里插入图片描述

以上内容和图片摘自黑马程序员的教程

  • 首先我们可以把Oracle安装目录下oradata文件夹下的orcl当做一个实例,可能这种说法不够严谨,只是为了便于理解;
    在这里插入图片描述
  • 假设在数据库中有许多许多的表,这些表被分散地存在不同的dbf、ora等中,每个dbf对应一个表空间;
  • 而此时的用户可以理解成一种方案,所有的表被分在了不同的方案上,注意不是表空间,用户才是管理表的基本单位,而每个用户的创建自动会创建对应的方案这是一一对应的。你用某一个用户连接,那么自动的就是在这个方案下面。当你以另外的身份连接时,自然要加方案名了。例如我们在system用户下访问scott用户的表,则可以:
select * from scott.dept;
  • 我们不要被每个用户都绑定一个表空间所迷惑,虽然每个用户只能绑定绑定一个表空间,但用户却可以访问数据库中的所有表(如果权限够的话),那么让用户绑定唯一的表空间是为什么哪?这个我也在探索阶段哈哈,打个问号?

下面给出了一些操作,大家可以自行探索理解!

-- 首先确保用system用户登录

-- 创建表空间
create tablespace spacetest -- 表空间名
datafile 'D:\Oracles\spacetest.dbf' -- 指定文件位置
size 50m  -- 文件初始大小
autoextend on next 500k; -- 不够了,每次增加多少

-- 删除表空间
drop tablespace spacetest;
-- 删除表空间及对应的表空间文件
drop tablespace spacetest including contents and datafiles cascade constraint;

-- 创建用户
create user user1 -- 用户名
identified by oracle -- 密码
default tablespace spacetest; -- 表空间名
-- 删除用户
drop user user1 cascade;

/*
给用户授权
  Oracle数据库中常用角色
  connect:连接角色,基本角色
  resource:开发者角色
  dba:超级管理员角色
*/
-- 给user1用户授予DBA权限
grant dba to user1;
-- 切换用户到user1

-- 查询所有用户
select * from dba_users;
-- 查询用户和表空间对应关系
select username,default_tablespace from dba_users;
-- 查询所有表空间的路径
SELECT * FROM dba_data_files; 
-- 查询所有表空间对应的数据文件
select tablespace_name,file_id,file_name from dba_data_files order by file_id;

-- 在新建的用户user1上创建一个表
CREATE TABLE Customers
(
  cust_id char(10) NOT NULL
);
-- 查询发现表默认放在用户对应的表空间中
SELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES where tablespace_name='spacetest';

-- dba权限的user1用户可以查看scott的表
SELECT * FROM scott.bonus;
-- 切换到scott用户
-- 发现scott用户不能查看customers表
SELECT * FROM user1.customers;
-- 授予scott查看customers表的权限
grant select on customers to scott;
-- 删除scott查看customers表的权限
revoke select on customers from scott;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值