第三章 Oracle登录、体系结构、锁

浏览: 2362

第三章的内容憋了半天终于有时间录制了,做个简单的介绍给大家尝尝鲜

3.1 登录和工具

本章主要介绍了sqlplus登录的两个命令和plsql developer工具在64位系统下的使用方法。

  1. 登录Oracle前的准备
    1. TNS
    2. 可用的账号和密码
  2. sqlplus
    1. SQLPLUS [ [Options] [Logon|/NOLOG] [Start] ]
    2. CONN[ECT] [{logon | /| proxy} [AS {SYSOPER | SYSDBA | SYSASM}] [edition=value]]
  3. plsql developer
    1. 64位下下载需要的basic包 http://www.oracle.com/technetwork/topics/winsoft-085727.html


3.2 体系结构

简单的介绍了文件、内存和进程之间的关系


文件:

数据/临时文件:

*.DBF

select * from dba_data_files

数据文件:文件中主要存储数据库中永久的对象,数据等。

临时数据文件:存储一个session中的临时对象,给临时表空间提供存储,在用到哈希计算、排序计算、聚合计算等的时候就会使用到临时表空间。

  • 数据文件可以通过SQL语句ALTER DATABASE进行在线的新增、删除和修改(大小)。
  • 每个数据文件最多只能包含2^22-1个数据块,所以一个数据文件的大小和我们的数据块大小(db_block_size)和OS块大小(block_size)有关,而不是网络上所流传的32G。(我们所实验的11g版本,还有个大文件表空间的特性,可以使表空间更大)


参数文件:

*.init

数据库要启动一个实例,必然需要读取一个参数文件(spfile/pfile),参数文件可以单独存在,即便我们还没有创建一个数据库。

sqlplus环境下查看参数文件路径:

show parameter pfile

我们可以通过修改参数文件中的内容,来起到修改oracle系统参数的目的。

除此之外部分参数还可以动态修改参数值: 

alter system set X = Y scope = [spfile][memory][both]

scope = spfile的含义就是把改动写入到spfile中,当前实例不生效,数据库重启后生效。

scope = memory的含义就是当前实例立即生效,数据库重启后丢失修改。

scope = both的含义就是当前生效,重启不丢失,但不适用某些只能静态修改的参数。(默认值为both)


参数文件分为pfile和spfile,两者之间的关系如下:

pfile(Parameter File):文本文件

spfile(Server Parameter File):二进制文件



两者之间任何一个丢失或损坏都可以通过另一个创建,sqlplus环境下:

create pfile from spfile
create spfile from pfile



控制文件: 

*.CTL

select * from v$controlfile

控制文件是个二进制文件(linux下可用file命令查看二进制文件),记录了数据的一些信息,如数据库的物理结构、名字、日志文件、数据库的创建时间、当前的日志序号、检查点信息等等

控制文件允许多路复用,oracle建议能有多个控制文件以复用,并将copy的文件存储在不同的磁盘上,并会进行同步。

一旦控制文件损坏,数据库就无法启动,所以oracle允许我们用这种方式进行数据文件的备份,以应对紧急情况,一旦其中一个损坏,oracle就会选择读其他未损坏的copy的控制文件,如果全部损坏,那么实例就无法正常启动。


日志文件

*.LOG

select * from v$logfile

内存:


进程:

附上一张官方的体系结构图:


虽然看起来很复杂(实际真的很复杂),但是我们先简单了解下面几个比较重要的进程:

Smon:系统监控进程(system monitor process)

http://docs.oracle.com/cd/E11882_01/server.112/e40540/process.htm#CNCPT9840


Pmon:进程监控进程(Process Monitor Process)

PMON的责任是监听实例,清理缓冲区的缓存,清理被释放的进程资源等。

当调度进程异常终止时,PMON还会监控其他后台进程并进行进程恢复。如释放锁等。

PMON也负责实例的监听,当一个实例启动后,PMON则会定期的启动去concat这个实例,来监听实例是否在运行。


CKPT:检查点


DBWR:数据库写进程


LGWR:写日志进程


3.3 锁

锁的意义:

  当多个进程申请访问同一资源时,为保证事务一致性而存在的一种机制。

锁的类型:DML和DDL

Clipboard Image.png

Clipboard Image.png


手动上锁:

lock table  in [row share][rowexclusive][share][share row exclusive][exclusive] mode;


解锁:

通过v$sql查到对应sql_id

select * from v$sql;

通过v$session查到对应sidserial#

select t.SID,t.SERIAL#,t.* from v$session t
where t.SQL_ID = '';

然后执行

alter system kill session 'sid,serial#'; 



视频地址:https://edu.hellobi.com/course/58

推荐 5
本文由 老头子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

看来课程也要更新了
已经录好了,下周上传
嗯,下载了,很久没来啊,一直在跟着视频学习,期待后面实战讲解的,谢谢。

要回复文章请先登录注册