Oracle体系结构和用户管理
一 Oracle体系结构结构
数据库的体系结构是指数据库的组成,工作过程,以及数据库中数据的组织与管理机制。
实例和数据库是Oracle数据库体系结构的核心组成部分
1实例:Oracle实例是后台进程和内存结构的集合。必须启动实例才能访问数据中的数据。Oracle实例启动时,将分配一个系统全局去(SGA),并启动一系列Oracle后台进程。一个实例只能打开并使用一个数据库。
Oracle实例有两种类型:单进程实例
:多进程实例
2 数据库: 数据库是数据的集合,是指存储数据库信息的一组操作系统文件。
二 Oracle存储结构
物理结构:指构成数据的一组操作系统文件,(主要由3种类型文件组成)
1)数据文件:后缀.dbf,一个数据文件只属于一个数据库和表空间
2)重做日志文件:后缀.log,记录数据库的所有更改 并提供恢复机制。成组出现,最少要两组每组最少一个文件。
3)控制文件:后缀.ctl,保存数据文件和重做日志文件位置、大小、日志序号等信息。启动数据库所必需。至少两份默认有三份控制文件。各个控制文件相同,可以避免因为一个控制文件的损坏而导致无法启动数据库。
上述三种文件缺一数据库都不能启动
4)其他文件:参数文件、归档日志文件、密码文件等
逻辑结构:存放数据的逻辑容器,由大到小为:数据库-表空间-段-区-块
表空间:数据都存储在表空间中,默认有system、temp、undo、users、sysaux、example六个表空间。每个数据库中,都有一个名为system的表空间,即系统表空间
段:存在于表空间中,由一组区组成,存储具体的对象比如表、索引等
区:磁盘分配空间的最小单位
数据块:能读取或写入的最小数据单位
模式:是一种特殊的对象集合,比如用户模式是指用户的所有对象的集合
三Oracle内存结构
内存结构是Oracle数据库体系中最为重要的一部分
内存结构:分为系统全局区(SGA)、程序全局区(PGA)和用户全局区(UGA)。
SGA:共享的内存,存储数据库信息(和数据库无关)。占有最大内存。分共享池、数据缓冲区、重做日志缓冲区、大池、java池等
PGA:不是实例的一部分,用户连接后分配的内存,包含服务器进程和后台进程的数据和控制信息
四Oracle进程结构
由用户进程、服务器进程、后台进程组成
用户进程:用户连接服务器时启动,比如启动sqlplus时,运行客户端
服务器进程:用户连接成功并连接oracle实例时启动,用户进程的代理
后台进程:实例启动时启动:有5个必须的后台进程:进程监控(PMON)进程、系统监控(SMON)进程、数据写入(DBWR)进程、日志写入(LGWR)进程、检查点(CKPT)进程。
五 用户管理:
sys用户:超级用户(oracle系统管理员),所有数据字典和视图多存储在sys模式中只能与sysoper和sysdba角色登陆,可以启动关闭数据库
system用户:默认管理员,存储管理工具使用的内部表和视图,可以管理数据库、用户、权限等
scott:示例用户
六数据库权限:
分系统权限和对象权限
系统权限:执行系统级别的权限,比如连接数据库,创建、修改、删除表等权限。相当于数据定义语言(DDL)和数据控制语言(DCL)的权利。
用户最少需要create session权限才可以连接(登陆)数据库,一般通过角色授予,主要角色有:
connet:拥有连接数据库权限,包含create session权限
resource:拥有创建表等对象的权限,一般授予开发人员
dba:数据库管理员,对数据库有最高权限
对象权限:针对特定模式对象执行操作的权利。相当于数据操纵语言(DML)的权利。比如select、insert等
Oracle中的常用系统预定义角色
CONNECT:拥有连接数据库的权限
RESOURCE:拥有创建表,触发器,过程等权限
DBA:数据库管理员角色,拥有管理数据库的最高权限,一个具有DBA角色的用户可以撤销任何别的用户甚至别的DBA权限,这是很危险的,所以不要轻易授予该角色
Sqlplus方向键解决步骤
一:安装readline
OS的安装光盘里提供了readline包.(已安装的话,可以忽略此步)
# RHEL 4
[root@oracle11g ~]# rpm -Uvh readline*
error: Failed dependencies: libtermcap-devel is needed by readline-devel-5.1-1.1.i386.rpm
[root@oracle11g ~]# rpm -Uvh libtermcap-devel-2.0.8-46.1.i386.rpm
[root@oracle11g ~]# rpm -Uvh readline*
package readline-5.1-1.1 is already installed
[root@oracle11g ~]# rpm -Uvh readline-devel-5.1-1.1.i386.rpm
# RHEL 5
[root@oracle11g ~]# rpm -ivh readline* libtermcap-devel*
二:安装rlwrap
[root@oracle11g ~]# tar -zxvf rlwrap-0.30.tar.gz
[root@oracle11g ~]# cd rlwrap-0.30
[root@oracle11g rlwrap-0.30]# ./configure
[root@oracle11g rlwrap-0.30]# make
[root@oracle11g rlwrap-0.30]# make install
三:方便使用rlwrap
[root@oracle11g rlwrap-0.30]# vi /home/oracle/.bash_profile
添加
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman' Linux下的SQL Plus 终于可以像Windows下的那样使用了。
首先由root用户切换到Oracle用户下
# su - oracle
创建表空间tbs_work
更改表空间大小
方法二:向表空间内添加数据文件,为表空间添加一个新的数据文件
查询系统所有的表空间名称和文件位置
删除表空间
创建用户cyy,默认表空间为tbs1_work,临时表空间,配额50m,必须改密码
查当前用户所属表空间,sys用户可以查dba_users里所有用户的表空间
授予用户连接数据库角色和创建表的系统权限
授予用户有查看scott模式下的emp表的对象权限,用on ... to ...的方式
撤销用户权限
revoke update on scott.emp from cyy;
查看对象权限
查看用户系统权限
查看用户角色权限
查看当前用户模式下的所有对象
查看当前用户模式下的所有表