oracle体系结构

oracle体系结构

数据库:指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。(官方)

数据库 = dbms+硬件。 dbms:数据库管理系统。软件。

实例(在oracle里就是数据库:instance。数据库运行时的软件体现。关闭服务或断电时,实例就不存在了,但数据还在。

实例分为:内存+进程。

oracle内存分为:

sga:系统级内存。

pga:进程级内存。

uga:用户级内存。

oracle进程分为:应用进程(bin下面)及服务进程(3个必须运行的服务)。

使用plsql 登录时第三行其实就是实例!

第一行和第二行指的是用户和密码

第四行是“身份”,身份是角色的集合。

oracle体系结构图

一个实例可以拥有多个用户和多有表空间,一个表空间可以有多个用户,但一个用户只能属于一个表空间。


从图中我们可以看出“表空间”其实更类似与mysql里头的数据库。表空间下面才是表,不同表空间下的表相互之间没有关系。

一些结论:

1、一个用户只能属于一个表空间

2、同一个数据库用例中,用户名是不能重复的

3、不同用户中可以创建同名的表

4、表空间创建后需要创建用户后才能使用,因为任何数据库对象都需要建立在一个数据用户上

5、连接dba权限的用户可以直接访问其他用户的数据库对象,否则需要相关用户授权

6、访问其他用户的数据库对象时需要加上对象所属用户的用户名。


Oracle体系结构可划分为物理结构及逻辑结构。

物理结构:oracle运行时所需的文件。

分成3大类:

数据文件---保存所有的逻辑对象,比如表。以及表之间的关系。

SELECT * FROM dba_data_files;

日志文件---记录数据库的“变化”。需要在mount模式下激活。作用:恢复。

SELECT * FROM v$logfile;

控制文件----数据文件及日志文件之间的“桥梁”。

SELECT * FROM v$controlfile;

逻辑结构:数据库在某个层级的逻辑隔离。按从大到小分为:

1、表空间(不同表空间下的对象,在逻辑上完全无关) >

2、!!逻辑对象(表,视图,索引,序列,存储过程,函数,触发器,包,用户,角色....) >

3、段(数据段,临时段,回滚段,索引段) >

4、区间(最小的操作单位) >

5、块(oracle的存储单位,1个快相当于固定的字节数).

逻辑结构图


物理结构

--数据文件--保存所有逻辑对象,比如表以及表和表之间的关系
select * from dba_data_files;

--日志文件--记录数据库的变化,需要在 mount模式下运行,作用:恢复
select * from v$logfile;

--控制文件--数据文件和日志文件之间的桥梁
select * from v$controlfile;

数据字典

--查看全部表空间
select * from dba_tablespaces;
--查看表
select * from all_tables; --当前用户权限内可操作的所有表
select * from user_tables; --当前用户拥有的所有表

--查看用户拥有的角色
select * from user_role_privs;
select * from dba_role_privs where grantee='ZHANGSAN';
--查看角色拥有的权限
select * from dba_sys_privs where grantee='CONNECT';
select * from dba_sys_privs where grantee='RESOURCE';

--创建用户  --ddl dml dcl
create user zhangsan identified by oracle;
grant connect to zhangsan;
grant resource to zhangsan;

create table test(id number primary key, name varchar2(20) not null);

select *from v$session;
select * from v$instance;


用户管理

select username,default_tablespace from dba_users;
select * from dba_tablespaces;

-- 创建表空间
create tablespace classes12
datafile 'D:\oracle\tablespacelocation\classes12.dbf' size 5m
--autoextend on next 5m naxsize 128m

create user lisi identified by oracle;
--修改表空间
alter user lisi default tablespace classes12;

--修改密码
alter user lisi identified by etc123;
--授权
grant connect,resource to lisi;

--用户锁定与解锁
alter user lisi account unlock; --lock
--删除用户
drop user lisi cascade; --cascade 级联删除,删除该用户下所有对象
--删除表空间
drop tablespace classes12 including contents and datafiles; --删除表空间的同时清楚内容以及数据文件

权限管理

--当前用户的角色
select * from user_role_privs;
select * from dba_role_privs where grantee='ZHANGSAN';

--查看角色对应的权限
select * from role_sys_privs where role='RESOURCE';
--查看当前用户给别的用户赋予的权限
select * from dba_tab_privs where grantee='ZHANGSAN';
--查看当前用户所拥有的表
select * from user_tables;

select * from test;
insert into test values(1,'张三');
update test set name='李四' where id=1;
select * from test for update;

--把test表的部分权限赋予scott,然后才能对test进行操作
grant select,insert on zhangsan.test to scott;

select * from zhangsan.test;
sdelete from zhangsan.test;
--收回权限
revoke select on zhangsan.test from scott;

create user lisi identified by oracle;
 grant connect,resource to lisi;


grant select,insert on zhangsan.test to public;--public指代所有用户
revoke select,insert on zhangsan.test from public;--public指代所有用户

--权限传递
grant select,insert on zhangsan.test to scott with grant option;--同时同意scott把改权限可以赋予给别人
grant select,insert on zhangsan.test to lisi;
select * from zhangsan.test;
revoke select,insert on zhangsan.test from scott;

--权限给角色
create role myrole;
grant select on zhangsan.test to myrole;


--角色给用户
grant myrole to lisi;

posted @ 2019-08-15 09:59  Jotal  阅读(302)  评论(0编辑  收藏  举报