Oracle体系结构和用户管理

1、oralce体系结构sql

一、概述数据库

Oracle的体系结构是数据库的组成,工做过程,以及数据库中数据的组织与管理机制,要了解oracle数据库的体系结构,就必需要理解oracle的主要组件和重要的概念。Oracle体系结构包含一系列组件,包括实例、用户进程、服务进程、数据文件及其余文件,如参数文件、口令文件和归档日志文件等。以下图所示:缓存

blob.png

实例和数据库是oracle数据库体系结构的核心组成部分,也是最重要的两个概念,dba的主要工做就是维护实例和数据库。安全

1)实例服务器

实例是后台进程和内存的集合,必须启动实例才能访问数据库中的数据。oracle

blob.png


 

Oracle启动时,将分配一个系统全局区(SGA),并启动一系列oracle后台进程ide

一个实例只能打开并使用一个数据库工具

Oracle分为单进程实例和多进程实例,如今广泛都是多进程实例,多进程就是多用户,不一样用户使用不一样进程来执行oracle的不一样部分。性能

 

2)数据库学习

数据库是一个数据的集合,该集合被视为一个逻辑单元。

Oracle 数据库由操做系统文件组成,这些文件为数据库信息提供实际物理存储区

Oracle 数据库包括逻辑结构和物理结构。

物理结构:是指存储数据库信息的一组操做系统文件,每一个数据库有一个逻辑结构和一个物理结构。物理结构是指构成数据库的一组操做系统文件,主要由3种类型文件组成:数据文件,控制文件和重作日志文件。

逻辑结构:是指数据库数据的逻辑存储结构,包括:表空间,数据段,表,视图等。

 

2、oracle存储结构

Oracle的存储结构分为物理结构和逻辑结构,这两种存储结构既相互独立又相互联系。

blob.png

1、物理结构:

物理结构就是oracle数据库建立后使用的操做系统物理文件,分为如下两种:

1)主要文件

数据文件:数据文件是物理存储数据库的文件,数据文件的特色:每一个数据文件只与一个数据库相联系,一个表空间能够包含一个或多个数据文件,一个数据文件只能属于一个表空间。数据文件包含数据库的用户或应用程序数据,以及元数据和数据字典。

 

重作日志文件:它记录了对数据的全部更改信息,并提供一种数据恢复机制,若是数据库服务器发生崩溃,但未丢失任何数据文件,那么实例即可使用这些文件中的信息恢复数据库。

 

控制文件:当数据库读取时,要根据控制文件的信息查找数据文件。控制文件存储了数据文件和重作日志文件的名称和位置。一个数据库至少有两份控制文件,oracle11g默认包括3个控制文件,各个控制文件内容相同,能够避免由于一个控制文件的损坏致使没法启动数据库。控制文件记录了如下关键信息:数据文件的位置和大小、重作日志文件的位置及大小、数据库名称及建立时间、日志序列号。控制文件对数据库相当重要。没有这些文件,就没法打开数据文件以访问数据库中的数据。

 

 

2)其余文件

参数文件:用于定义实例启动时的配置

口令文件:容许sysdbasysoper sysasm 远程链接到实例并执行管理任务

归档日志文件:使用这些文件和数据库备份,能够恢复丢失的数据文件。也就是说,归档日志可以恢复还原的数据文件

 

二、oracle逻辑结构

Oracle的逻辑组件包括表空间、段、区、块和模式等。

1)表空间

表空间是数据库中最大的逻辑单位, SYSTEM SYSAUX 表空间是在建立数据库时建立的必须存在的表空间,还会有TEMPUSERS等。

每一个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。

表空间的大小等于构成该表空间的全部数据文件大小之和。

表空间和数据文件是相对应的,若是没有数据文件,表空间不可能独立存在,若是只有表空间没有数据文件也是不行的,就比如若是电脑没有硬盘,你不能再逻辑上看到CD盘,在这里硬盘就至关因而数据文件,而C盘就至关因而表空间。咱们能够把多个数据文件组成一个表空间,而后在表空间里面存储数据,表空间和数据文件是对应的,一个表空间能够是由一个或多个数据文件组成的,可是一个数据文件只能在一个表空间当中

 

表空间的做用:

对于不一样的用户分配不一样的表空间,对不一样的模式对象分配不一样的表空间,方便对用户操做和模式对象的管理。

能够将不一样数据文件建立到不一样的磁盘中,有利于管理磁盘空间,提升i/o性能,备份和恢复数据等。

 

SYSTEM表空间:用于存放oracle系统内部表和数据字典的数据,如代表、列名、用户名等。

SYSAUX表空间:做为SYSTEM的辅助表空间,用于存放各类数据库工具(如企业管理器、StasPacklogMiner等)用到的数据。用于存放各类模式的对象数据,如智能代理用户DBSNMP、数据挖掘用户ODM等。

USERS表空间:做为用户使用的表空间,能够在这个表空间上建立各类对象,如建立表,索引等。

TEMP表空间:存放临时数据的特殊表空间,例如:当须要进行排序时,系统就将排序的数据临时存放在该表空间,排序处理完成后,便可释放排序数据所占用的空间,称之为临时表空间。

 

 

 

以上表空间咱们不能建立,系统安装好以后自动建立好了,咱们也能够根据须要本身建立。

 

建立表空间的语法是:

CREATE TABLESPACE tablespacename

DATAFILE filename[SIZE integer [K|M]]

[AUTOEXTEND [OFF|ON]];

 

 

案例一:建立一个自动增加的表空间tbs_work

若是不能建立,说明数据库没有启动,执行STARTUP命令以后再建立。

blob.png

若是空间不够用了,能够调整表空间大小。

方法一:更改数据文件大小,并指明数据文件的存放路径,使用RESIZE关键字执行调整后的表空间大小。

blob.png

方法二:向表空间内添加新的数据文件,当数据文件满了以后自动存储到新的数据文件。

blob.png


案例二:改变表空间的读写状态,ONLY表示只读,WRITE表示可读写。

blob.png


删除表空间

blob.png


案例3、想查看系统中有多少个数据文件

blob.png

blob.png

案例4、如何查看表空间

blob.png


案例5、查看表空间和数据文件之间的对应关系

blob.png


2)

段存在于表空间中,是一种指定类型的逻辑存储结构。

段由一组区组成

段分为4类:数据段、索引段、回退段、临时段。

 

3)

区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。

区是由连续的数据块组成。

段主要有一个或多个区构成,当建立段时,至少包含一个区。

区不能跨数据文件存在,只能存在于一个数据文件中。

 

4)数据块

是数据中最小的数据组织单位与管理单位

Oracle数据中的数据存储于数据块中

数据块是oracle服务器所能读取或写入的最小存储单元

数据块的取值范围是2K-64KB,默认值与oracle版本有关

 

5)模式

模式是数据库对象的集合。包括:表、视图、索引、同义词、序列、过程和程序包等。

当建立一个用户时,oracle会自动建立一个与用户名相同的模式,所以,模式又称为用户模式。

用户登陆后,默认访问的是与本身的名称相同的模式中的数量库对象。

 

案例六:xx表空间DBA建立了一个名为test的表,这张表表空间所占用的空间,咱们称之为段,查看数据段的命令

blob.png

 

显示有5940个段

blob.png

案例七:查看EXAMPLE表空间的区和段的分布状况

blob.png

案例八:查看块

blob.png

 

案例9、查看操做系统最小存储单元

blob.png


3、oracle的内存结构

内存是影响数据库性能的第一要素,oracle内存存储的主要内容以下:

程序代码

关于已经链接的会话信息,包括当前全部活动会话和非活动会话

程序运行时必须的相关信息,如查询计划

Oracle进程之间通讯和共享的信息,如锁

 

按照内存的使用方法不一样,oracle数据库的内存又可分为系统全局区(SGA)、程序全局区(PGA)、用户全局区(UGA

blob.png

1、系统全局区 ( SGA

数据库信息存储于系统全局区,由多个数据库进程共享,当数据库实例启动时SGA的内存本自动分配,SGA是数据库中占用服务器内存最大的一个区域,也是影响数据库性能的一个重要指标,SGA按做用不一样,分为如下几个部分。

blob.png

blob.png

二、PGA

PGA不是实例的一部分,包含单个服务器进程或者单个后台进程所需的数据和控制信息。

PGA是在用户进程链接到数据库并建立一个会话时自动分配

该区域内保留每一个与oracle数据库链接的用户进程所需的内存

当一个用户会话结束,PAG就会释放

 

 

三、UGA

用户全局区(UGA)为用户进程存储会话状态

UGA能够做为SGA或者PGA的一部分。具体位置取决于如何链接Oracle

若是经过一个共享服务器链接,UGA包含在SAG

若是经过一个专有服务器链接,UGA就包含在专有服务器的PGA

 

 

案例一:验证内存结构工做的原理(select语句是如何被执行的?

 

当用户执行语句select  *  from scott.emp的时候,工做原理分为四步,以下:

 

第一步:先作编译,编译包含了语法的检查和语义的检查。

 

第二步:若是编译没有问题会进入shared pool(共享池 )中,而shared pool 是由library cachedata dictionary cache(数据字典缓存)组成。Sql语句第一时间会进入library cache中,即library cache中会存放被编译过的正确的sql语句,仅仅是sql语句而已。library cache中没有缓存的sql语句须要进行硬解析(即须要耗费设备的I/0资源从硬盘读取)。假设library cache中有这个sql语句,就不须要作硬解析,接着会查 data dictionary cachedata dictionary cache中缓存了权限和对象数据及属性,全部data dictionary cache检查用户是否对scott.emp表是否具备访问权限,若是有权限继续往下执行,若是没有权限,直接给用户返回一个结果。若是一条语句历来都没有被执行过,这条语句首先被缓存在share pool中的library cache中,下一次被执行的时候直接从share pool中取sql语句。存放sql语句也须要占用空间,share pool的空间也是有限的,为了防止share pool空间不够用,采用先进先出的规则即后执行的sql语句会覆盖先执行的sql语句来释放空间,固然share pool的空间越大越好。

 

第三步data buffer cache如今hr用户能够访问scott.emp表了,data buffer cache的做用就是从磁盘或存储中将数据块调入内存,缓存在buffer cache中。总结:buffer cache缓存数据自己,library cache缓存sql语句自己。

 

第四步:redo log buffer<重作日志缓冲区>当用户执行insert,update,delete,create,alter等操做后,数据发生了变化,这些变化了的数据写入数据缓冲区(buffer cache)以前,先写入重作日志缓冲区,同时变化以前的数据也放入重作日志缓存中,这样作,是为了保证在数据恢复时oracle就知道哪些事务须要提交,哪些事务须要撤回。

 

能够经过企业管理器来查看share pool的相关信息

若是控制台打不开,能够执行命令打开:


blob.png

blob.png

blob.png

blob.png

blob.png

 

能够从v$sgainfo中查看shared pool size

blob.png

测试语句执行时间:

SQL> set timing on

SQL> select * from scott.emp;第一次执行sql语句

 

已用时间:  00: 00: 00.05

 

SQL> /再次执行上一条命令所用的时间为00: 00: 00.00

 

已用时间:  00: 00: 00.00

 

经过上面的测试发现,缓存提升了查询的速度。

 

 

 

 

 

 

4、oracle进程结构

blob.png

Oracle5个后台进程是必须启动的,不然数据库实例没法启动成功,分别是:进程监控(PMON)进程、系统监控(SMON)进程、数据写入(DBWR)进程、日志写入(LGWR)进程、检查点(CKPT)进程。

blob.png

CKPT进程:确保数据缓冲区中全部修改过的数据块都被写入数据库文件的机制。保证数据库日志文件和数据文件的同步。

 

 

相关命令:

1、查看用户进程和数据库进程

Ps elf | greporacleocl |grepv grep

 

blob.png

2守护进程

Ps elf |grep oha

blob.png

三、查看日志进程LGWR

blob.png

5、oracle用户管理

当建立一个新数据库时,oracle将常见一些默认的数据库用户,如SYS,SYSTEMSCOTT等用户。SYSSYSTEM用户都是oracle管理用户,而SCOTT用户是oracle数据库的一个示范用户,SCOTT数据库里面包含一些测试展现用的示例表(用于学习交流)

1、默认数据库用户

1SYS

SYS用户是oracle中的一个超级用户,数据库中全部数据字典和视图都存在SYS模式中,数据字典存储了用来管理数据库对象的全部信息,是oracle数据库中很是重要的系统信息。SYS用户主要用来维护系统信息和管理实例。SYS用户只能以SYSOPERSYSDBA角色登陆系统。

 

2SYSTEM

SYSTEM用户是oracle中默认的数据库管理员,它拥有DBA权限。该用户模式中存储了oracle管理工具使用的内部表和视图。一般经过SYSTEM用户管理数据库的用户、权限和存储等。不建议在SYSTEM模式中建立用户表。SYSTEM不能以SYSOPERSYSDBA角色登陆系统,只能以默认方式登陆。

 

3SCOTT

SCOTT用户是oracle数据库的一个示范用户,通常在数据库安装时建立。SCOTT用户模式包含4个示例表,其中一个是EMP表,使用USERS表空间存储模式对象。

一般出于安全考虑,对于不一样用途的表须要不一样的访问权限,此时,就须要建立不一样的用户,oracle中的create user命令用于建立用户,每一个用户都有一个默认表空间和一个临时表空间。若是没有指定,oracle就将USERS设为默认表空间,将TEMP设为临时表空间。

 

4)Sysdbasysoper两个系统权限区别  

sysdbasysoper属于system privilege,也称为administrative privilege,拥有例如数据库开启关闭之类一些系统管理级别的权限。sysdbasysoper具体的权限以下:  

SYSOPER】权限,即数据库操做员权限,权限包括:

打开数据库服务器

关闭数据库服务器

备份数据库

恢复数据库

日志归档

会话限制

SYSDBA】权限,即数据库管理员权限,权限包括:

打开数据库服务器

关闭数据库服务器

备份数据库 恢复数据库

日志归档

会话限制

管理功能

建立数据库  

 

sysdba】拥有最高的系统权限,登录后是sys

sysoper】主要用来启动、关闭数据库,sysoper 登录后用户是public

 

二、建立自定义用户

步骤:

1) 选择用户名和密码

2) 识别用户需用于存储对象的表空间

3) 决定每一个表空间的限额

4) 分配缺省表空间和临时表空间

5) 建立用户

6) 向用户授予权限和角色

 

 

语法:

CREATE USER user

       IDENTIFIED BY password

       [DEFAULT  TABLESPACE tablespace]

       [TEMPORARY  TABLESPACE tablespace]

       [QUOTA {integer [K|M] | UNLIMITED}ON tablespace

       [QUOTA {integer [K|M] | UNLIMITED}ON tablespace ] ...]

       [PASSWORD EXPIRE ]

blob.png

三、修改YDW用户的密码为pwd123456

blob.png

三、删除用户YDW

三、查询oracle的全部用户

相关文章
相关标签/搜索