oracle 用户管理

1. 用户进程java

Ps elf | greporacleocl |grepv grepsql

wKioL1kBuvWQMunRAAA3kCTRqlM179.png-wh_50 

2. 数据库进程数据库

Ps elf |greporacleorcl缓存

wKiom1kBuxTQ-3euAAEpI2cJoPs611.png-wh_50 

3. 守护进程服务器

Ps elf |grep ohasession

wKioL1kBuy_Ca3MgAAAVU-Q93kc640.png-wh_50 

大池:SGA中,大池是一个可选的缓冲区域,管理员能够根据须要对其进行配置,在大规模输入输出及备份过程当中须要大池做为缓存空间,例如,大数据操做、数据库备份与恢复之类的操做。oracle

Java池:Java池是一个可选的缓冲区,可是在安装java或者java程序时必须设置Java池,它用于编译Java语言编写指令。异步

 

六大核心进程:ide

 

DBWn进程:用来将buffer cache中的脏数据写入到硬盘中数据文件中。测试

 

什么是脏数据,例如我执行以下语句

SQL> update emp set sal=sal+100;

此时修改过的数据存放在内存中,并无保存到硬盘上的数据文件中,这些数据缓存在buffer cache中,该事务尚未提交(commit),这样修改过尚未写入硬盘数据文件的数据咱们称之为脏数据。其实此时在打开一个会话,使用SCOTT用户链接查看emp表中数据是未修改过的数据。因此在oracle中这样的操做是异步写入,多个进程能够同时写入,多个帐户就会有多个DBWn进程,其实进程名叫DMW后面的n是产生的进程标识

SQL> update scott.emp set sal=sal+100;

已更新14行。

SQL>

wKiom1kBu4Hyg3L9AABX5AtNq4g762.png-wh_50 

LGWR:日志写入进程只有一个

wKioL1kBu7bTyLR2AAAXSqeQs2Y597.png-wh_50 

当用户commit(提交事务)时触发lgwr进程

red log buffer空间的三分之一空间被使用完时会触发lgwr进程

把脏数据写入磁盘以前,该LGWR进程将日志信息先写入到日志文件中,每隔3秒中执行这样的动做。

LGWR进程不能有多个,由于日志是顺序是写入的,不能作并行写入,不然没法作数据恢复。

CKPT进程:检查全部数据文件和控制文件的头部是否一致,是确保在数据缓冲区中全部修改过的数据块都被写入到数据文件中的一种机制,就是确保数据完整性的一种机制。但检查点完成后,CKPT进程负责更新数据文件和控制文件的头部信息,并保存检查点信息,以保证数据库日志文件和数据文件的同步。其原理是在数据库恢复时,只需找到CKPT保存的最后一次检查点,就能够根据它肯定在日志文件中恢复数据的起始位置,从新执行以后的日志信息便可。

SMON进程:若是数据文件和控制文件头部不一致,就会触发SMON进程。在实例启动时SMON进程会检查全部数据文件的同步信息与控制文件中记录的检查点信息是否一致,不一致就启动实例恢复操做。其实CKPT进程是给SMON进程使用的。

PMON进程:进程监控进程,PMON进程管理用户会话,这个进程会在某个会话出现问题时执行的适当的操做。例如用户的我的计算机在登陆到数据库时从新启动,PMON就能可以检测到这个问题,并且还会整理用户正在进行的任何操做。


1.1. oracle存储结构

数据文件相关知识

想查看系统中有多少个数据文件咱们能够经过动态数据字典或静态数据字典来查看:经过静态数据字典查看数据文件

 wKiom1kBvECzgXEhAACyCluDSZI004.png-wh_50

经过动态数据字典来查看数据文件

 

wKioL1kBvF3wg4vnAACpsw4Q6JE053.png-wh_50

 

直接查看数据文件的内容是看不到的,必须经过一个逻辑的结构即表空间来查看数据文件的内容。表空间是一个逻辑存储结构,而数据文件是一个物理的结构。

如何查看表空间

wKiom1kBvHqD-hLWAACoGGSWKzE975.png-wh_50 

也能够经过dba_tablespaces查看表空间

wKioL1kBvLjScUsBAACuyMcPiBM079.png-wh_50 

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

wKiom1kBvNHgPJ8MAACXJoBskx8115.png-wh_50 

也能够查看表空间的大小

wKiom1kBvPDxXttlAACb3KDP5RM321.png-wh_50 

也能够在上述的表空间中建立新的数据文件。若是表空间不够用了,只需建立相应的数据文件便可。表空间大小就是组成数据文件的大小的总和,最终数据文件存放在硬盘里的,可是咱们能够把数据文件存放在不一样的硬盘里面,只要在一个表空间便可,这样就解决了硬盘大小对文件的限制,能够将多个硬盘中的数据文件组成一个表空间。

因此在表空间中DBA会存放不少的表,视图,索引,同义词等对象。

段:例如在xx表空间DBA建立了一个名为test的表,这张表表空间所占用的空间,咱们称之为段。根据段中存储的对象的不一样分为了数据段,索引段,回退段,临时段等

能够查看段的信息

wKiom1kBvTThQg6ZAADEk1zeUFY988.png-wh_50 

对于段又有个更小的单位,称之为“区”

区(extent):区是磁盘空间分配的最小单位,磁盘按区划分,每次至少分配一个区,区由连续的数据块组成,段主要由一个或多个区构成,当段建立时,它至少包含一个区,当段中全部空间已经使用完成时,系统自动为该段分配一个新区,区不能跨数据文件存在,只能存在于一个数据文件中。

段是由区组成的,段必须是区的整数倍,假如一张表是25MB,一个区大小是4MB,那么段的大小是28MB,若是在表里添加了3MB的数据,此时段的空间还能容纳表,如今表的大小是28MB,若是又添加了1MB,此时29MB,那么段的空间是32MB.

wKiom1kBvVDAosBsAAC0zgzgK7A956.png-wh_50 

查看EXAMPLE表空间的区和段的分布状况

wKiom1kBvWiTnlNcAAD8GOcduXM227.png-wh_50 

oracle数据库中最小的存储单位是块(block--8KBoracle数据库中的数据存储于数据块中。数据块是oracle服务器所能读取或写入的最小存储单元,oracle服务器以数据块为单位管理数据文件的存储空间,数据块的取值范围为2-64KB,其默认大小与oracle版本有关。

wKiom1kBvYWxn0DLAADL9Pat-LA467.png-wh_50 

查看操做系统的最小存储单元

[root@orclsrv ~]# tune2fs -l /dev/sda1

经过OEM也能够查看这些信wKioL1kBvZryqy9CAAEPx8vWER8182.png-wh_50

 

建立表空间和数据文件

SQL> create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on

2  next 5m maxsize 200m;

 

表空间已建立。

wKioL1kBvenTDpS8AABvHDU827A708.png-wh_50 

修改表空间的名字为yy

wKiom1kBvf6yz8-aAAAL__AikeY772.png-wh_50 

wKiom1kBvhXSFIf2AABqzUsk88E678.png-wh_50 

为了好管理,咱们但愿表空间的名字和数据文件的名字一致。

解决办法:

1. 使用操做系统命令将数据文件拷贝一份

2. 把表空间offline

3. 而后对数据文件重命名

wKioL1kBvjGArsjcAAAHOxDW_Fs605.png-wh_50wKioL1kBvkmTQhZrAAAPbwz_lxI358.png-wh_50 

将表空间offline

wKiom1kBvmDzbBQ_AAAOqjyCnX8631.png-wh_50 

wKiom1kBvn-DhkQJAABfXwnBklQ752.png-wh_50 

对数据文件重命名

wKioL1kBvp_y9wagAAAOsf1lwCA850.png-wh_50 

查看修改状况

wKiom1kBvraSp1UpAABpabhQeuc228.png-wh_50 

将表空间online

wKioL1kBvtHxYEWQAAAkGRdru_k555.png-wh_50 

提示须要恢复/u01/yy.dbf

wKiom1kBvuywGYpwAAAO6TCy-6k997.png-wh_50 

将表空间online

wKiom1kBv4mQyjlyAAANsV4965o089.png-wh_50 

wKiom1kBv6LSAQLnAABdgFFWHlk951.png-wh_50 

如何扩展表空间大小

1. 直接改变数据文件大小

wKioL1kBv7iSL3AIAAAOFDaR1EA137.png-wh_50 

wKiom1kBv8mAenoJAABorXGMMjA164.png-wh_50 

2. 给表空间增长数据文件

若是表空间所在的分区的空间不够用了

wKiom1kBv-WwEA3NAAAPxvT9HGs437.png-wh_50 

wKioL1kBv_3xmup2AAAOLqneuK4080.png-wh_50 

wKioL1kBwBjyfGyZAABtZjfNSM0398.png-wh_50 

删除表空间

wKioL1kBwDSydI-wAAAQ1zkDXSg899.png-wh_50 

建立临时表空间

wKioL1kBwFjwjUdOAABiUw5IenA783.png-wh_50 

wKioL1kBwHHCm_R4AAA0VF8QhN4261.png-wh_50 

建立临时表空间

wKiom1kBwIeDQA0UAAAVOGwgtvg549.png-wh_50 

wKiom1kBwJqyihQqAABDI3gywQo433.png-wh_50 

删除临时表空间与删除表空间的命令是同样的。

wKioL1kBwLHxyymIAAAQyg5E1OM570.png-wh_50 

1.2. oracle 用户管理

若是想查看oracle系统中存在用户能够查看dba_users视图

wKioL1kBwMfwsj5iAABxcnqljVk235.png-wh_50 

若是使用sqlplus查询须要提早格式化

SQL> col username for a20

SQL> col account_status for a20

SQL> col default_tablespace for a20

SQL> set linesize 120

SQL> set pagesize 120

SQL> select username,account_status,default_tablespace from dba_users;

 

USERNAME     ACCOUNT_STATUS  DEFAULT_TABLESPACE

-------------------- -------------------- --------------------

MGMT_VIEW     OPEN SYSTEM

SYSOPENSYSTEM

SYSTEM     OPENSYSTEM

DBSNMP     OPENSYSAUX

SYSMAN     OPENSYSAUX

SCOTTOPENUSERS

OUTLN     EXPIRED & LOCKED  SYSTEM

FLOWS_FILES     EXPIRED & LOCKED  SYSAUX

MDSYS     EXPIRED & LOCKED  SYSAUX

ORDSYS     EXPIRED & LOCKED  SYSAUX

EXFSYS     EXPIRED & LOCKED  SYSAUX

 

Oracle 用户管理---

要想访问数据库,任何人都必须成为可以经过oracle身份验证的有效数据库用户,咱们能够配置应用程序要求每一个须要进行访问的个体都具备不一样的数据库帐户,也能够配置应用程序自身做为公共用户链接数据库并在内部处理应用程序级别的权限。不管选用哪一种方法,在数据库内部都须要建立一个或多个容许操做数据的用户。

1.3. 用户与模式(schema

建立用户的语法:

Create user用户名 identified by 密码 default tablespace表空间 quota 大小 on 表空间;

注意:在建立用户的时候虽然用户名写的时小写的,可是存储到数据字典的时候倒是大写的,好比create user tom.若是非要使用小写的话,用户名须要使用双引号括起来 create user tom

建立的用户没有任何权限,连登录数据库的权限都没有。

若是没有设置用户对某个表空间的配额,那么即便这个用户对该表空间有写权限,也是没法写入的。

举例说明:

查看HR用户的状态

wKiom1kBwQnT1vTeAAAWYdWy6AY619.png-wh_50 

修改HR用户的密码为oracle

wKiom1kBwRzS2uOZAAAf5iEwRjg161.png-wh_50 

手工设置过时;

wKiom1kBwTigKdYPAAAiCFBFlG0140.png-wh_50 

解锁用户

wKioL1kBwVbSNSaRAAAcdayoa1o157.png-wh_50 

举例说明oracle的授予权限和撤销权限

在建立用户以前,建立一个表空间xxx

建立一个表空间xxx

createtablespace xxx datafile '/u01/xxx.dbf' size 100m autoextend on next 10m maxsize unlimited;

建立用户tom

create user tom identified by oracle;

查询建立的用户tom

wKioL1kBwYDQfuh4AABkprvjMhE617.png-wh_50 

虽然建立的时是小写tom,但存储到数据字典中的是大写,因此查询时也须要写大写

wKiom1kBwZbzx3vUAABcI01mvJY188.png-wh_50 

删除tom用户

Drop user tom;

create user"tom" identified by oracle;

wKiom1kBwayysI5IAABbgviXZdQ826.png-wh_50 

删除tom用户

wKioL1kBwcKyqtcoAABfKQhbENg365.png-wh_50 

正确的删除方式应该是:

drop user"tom";

建立用户tom,默认的表空间是XXX,并无指定配额,因此tom用户也没法在xxx表空间上建立对象

wKioL1kBwdyxScfiAAApbEryfZk341.png-wh_50 

使用tom用户链接数据库的结果

wKiom1kBwfSgIEUmAAApubc9W9I979.png-wh_50 

SQL>conn sys/oracle as sysdba

Drop user tom; 删除tom用户

建立tom用户的同时指定默认的表空间是xxxtom用户的磁盘配额是10m

可使用dba_ts_quotas视图查看每一个用户的磁盘配额

wKiom1kBwkGzzXHgAAA_tC8uuKo488.png-wh_50 

wKioL1kBwl2D1a4HAABe24hdPpU289.png-wh_50 

刚才咱们测试建立的tom用户连建立会话的权限都

wKioL1kBwnuxcb4KAAApubc9W9I242.png-wh_50 

1.4. 为用户授予权限34

tom用户授予session权限

SQL>conn sys/oracle as sysdba

SQL> grant create session to tom;

 

受权成功。

测试一下链接

wKiom1kBwuLgOBt-AAALJJZeuzg508.png-wh_50 

测试tom用户是否可以建立表

wKioL1kBwvyTAVaLAAAZPZQawbM355.png-wh_50 

tom用户授予建立表的权限

wKiom1kBwySh9BqFAAAYblOEvgA133.png-wh_50 

建立aa

wKioL1kBwzqS-NmOAAAMH6OecOw392.png-wh_50 

测试tom用户可否为表插入记录,能够插入记录了。

wKioL1kBw1izIJ8AAAAYbtrpurE716.png-wh_50 

1.5. 撤销权限

查看tom用户当前拥有的权限

wKiom1kBw3eBaWCBAAAuJCta_64399.png-wh_50 

撤销tom用户的create table 权限

wKiom1kBw4_A4-qJAAAfg5ljICQ079.png-wh_50 

测试tom用户可以查看SCOTT用户下的emp

wKioL1kBw73zItxjAAAhddnqNCw112.png-wh_50 

使用sys用户链接数据库

wKiom1kBw9KQ9lBjAAALYQ90ZS4659.png-wh_50 

tom用户受权select scott用户下的emp表的权限

wKioL1kBw-iTGPcGAAANcQCk_zQ166.png-wh_50 

使用tom用户链接数据库

wKioL1kBxAWjS9xLAAAzW73lMSc553.png-wh_50

相关文章
相关标签/搜索