相老师的OCP教程 42-45课 文字版

甲骨论42课锁基础原理

锁是数据库并发的前提。进程等待锁的时间过长会影响用户体验。

锁有latch锁和lock锁。遍历过的链会被serverprocess并发访问,用latch锁保护。

lock锁主要用来保护buffercache,分为排它锁和共享锁。排它锁被对象访问时其它对象不能访问,共享锁不排它。

行锁指向被修改块的对应事务槽。行级锁是Oracle锁的最小粒度单位。一个事务修改事务槽不影响构造CR块对行进行读取。

事务锁TX是由行级锁产生的(行级锁必然产生事务锁),一个事务只有一个事务锁。commit和rollback就将事务锁解锁。DML语句加锁。

表级锁TM有:

l  行级排他锁(Rowexclusive)或RX锁

事务A修改许多行,给每行加行锁,只给A加一个事务锁,在表上加RX锁。RX锁有兼容性,也就是两个事务都给同一个表加RX锁。RX锁和X锁是互斥的,不能同时加。

DML语句自动在被更新表上添加RX锁,lock命令显示在表上添加RX锁,加RX锁后不能加X锁。

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

l  行级共享锁(RowShared)或RS锁

>select … from for update;//需要加RS锁,由于forupdate和update是互斥的。

where rownum=1 //选第一行的sql语句

l  排他锁(Exclusive)或X锁

对表的结构进行改变和删除表需要X锁。此时任何其它会话都不能修改表。

l  共享锁(Share)或S锁

l  共享行级排他锁(ShareRow Exclusive)或SRX锁。

使用锁要注意锁的粒度、锁的排他性。

锁的兼容性:

RX锁可再加RX锁、RS锁。X锁与任何锁排他,对并发影响最大。

加锁语句:增删改产生RX锁,可再加RX和RS。select…fromfor update产生RS锁,可再加RS、RX、S、SRX锁。S锁可再加S和RS。SRX可再加RS。X锁与所有锁排他。

甲骨论43课锁相关视图及相关操作

锁视图:vlock,通过锁的视图找出锁的问题。

>selectxidusn,xidslot,xidsqn,status from v$transaction;//查事务回滚段编号、事务槽编号、覆盖次数、回滚块的状态

vYou can't use 'macro parameter character #' in math modesession的主键,共同标识一个session。

v$enqueue_lock显示那些申请锁定,但是无法获得锁定的session信息。记录按照申请锁定的时间先后顺序排列,排在前面的优先获得锁定。

v$locked_object记录当前被锁定的对象信息,其中OBJECT_ID说明当前被锁定的对象的ID号,可以根据ID号到dba_objects查找被锁定的对象名称。LOCKED_MODE指锁定模式的数字编码。

v$session记录当前会话信息。

>grant selecton v赋予用户访问mystat表的权限,需在sys用户执行

>select sidfrom v$mystat where rownum=1;//查看第一行会话的sid

死锁产生:两个会话同时分别访问两个数据块(锁住),相互依赖导致相互等待。对两个会话roolback解决死锁。死锁发生时在/u01/app/oracle/admin/数据库名/bdump/alert_jiagulun.log日志中记录ORA-00060:Deadlockdetected死锁信息,.trc文件记录了死锁的具体信息。

甲骨论44课Oracle网络原理及配置

由于Oracle没有负载,不容易出问题。

Oracle连接过程:

1)            客户端发送连接请求给Listener

2)            Listener将连接请求发送给Oracle数据库的实例

3)            据库实例启动server process并将server process地址发给Listener

4)            Listener将serverprocess地址发给客户端

5)            客户端直接发送请求给server process

6)            客户端发送用户名和密码给serverprocess,验证通过则正式建立会话。

l  建立会话后Listener不再使用,Listener只负责建立连接的转发(不含密码)。只有在短时间内在大量的连接请求才需要优化。

l  监听只负责找到数据库实例,而与数据库实例没有常链接。

l  监听默认端口号1521

监听的3个文件:listener.ora、tnsnames.ora、sqlnet.ora,服务端有listener.ora和rnsnames.ora,客户端只有tnsnames.ora。

在客户端配置服务端的监听:

1)            #xhost+

2)            #w //获取远程登陆的IP地址

3)            #export DISPLAY=”IP地址”//将图形界面映射到本地

4)            #su -用户

5)            #netca //配置监听,生成listener.ora文件

6)            设置:监听名、协议TCP、标准端口号

7)            在Oracle程序的/network/admin/listener.ora文件检查主机名和端口号。

​    把主机名改为IP地址。

8)            #lsnctl restart;lsnctlstop;lsnctl start;lsnctl status//重启监听

客户端配置:

1)            查看数据库服务名:连接数据库->show parameter service

2)            查看主机名:#netstat –tulnp:grep 1521

3)            #netca

4)            选net本地服务配置、服务名、TCP、主机名(服务器的监听IP)、网络服务名(任填)。

5)            在/network/admin/tnsnames.ora查看生成文件,检查主机名,服务名。

6)            #sqlplus 用户名/密码@网络服务名//从tnsnames.ora自动解析@后的字符串(IP、端口、服务)

排错流程:

1)            tnsnames.ora的ip、端口号、service_names。服务器端 netstat–tulnp|grep 1521;show parameter service。网络服务名要与tnsnames.ora中的一致。

2)            tnsping 网络服务名

3)            > alter system register;//强制将servicename注册到监听中(加速),默认地Oracle会将service name注册到监听中。这两种方式都称为动态注册。

数据库有3个名字:数据库名、实例名、服务名。使用服务名静态注册到监听中。

客户端与监听连接过程:用tnsnames.ora解析命令@后的字串得IP和端口号,根据IP和端口号找监听,如果tnsnames.ora中的服务名与监听中的服务名一致,则建立连接。

服务名的”静态注册”为解决动态注册不稳定的问题。在listener.ora加入脚本。

连接方式:不用监听、只用监听、用监听和tnsnames.ora

l  #sqlplus hr/hr;//直接连接,不用监听

l  #sqlplus / as sysdba

l用监听、不用tnsnames.ora的启动方法:

>sqlplus hr/hr@192.168.0.100:1521/数据库服务名

一个数据库可以使用多个监听,实现负载均衡。

l  #sqlplus hr/hr@数据库服务名;//用监听和tnsnames.ora启动

甲骨论45课Oracle参数文件及数据库的启动和关闭

参数文件位置$ORACLE_HOME/dbs/spfile实例名.ora。9i以后都是动态参数文件,静态参数文件是文本文件,静态参数文件缺点是修改参数需要重启数据库,动态参数文件是二进制文件。如果是单实例,数据库名与实例名相同。

Oracle启动过程:

1)            找参数文件,根据$ORACLE_SID找”spfile实例名.ora”

查:#echo $ORACLE_SID

改:#cd;vi .bash_profile;export ORACLE_SID=实例名;//设置不对显示”连接到空闲的实例上”

Oracle启动过程:nomount、mount、open。三个阶段:

1)            nomount:找到参数文件spfile,根据参数文件分配内存和启动进程。

m#ps –ef//查进程

#ipcs –a//查内存

>show parameter control//显示参数文件

2)            mount:根据参数文件记录的控制文件位置,打开控制文件。

>alert database mount;//打开控制文件

3)            open:打开数据文件和重做日志

>alter database open;

>createpfile from spfile;//从动态文件生成静态文件。

改启动参数:

>alter system set parameter_name=parameter_valuescope=memory|spfile|both [sid=’sid’|’*’];//改启动参数。memory仅内存有效重启后失效,spfile只修改参数文件重启后生效,默认both。若文档中是FALSE,则只能scope=spfile。

>selectname,value,ISSYS_MODIFIABLE from v$parameter;//查看参数值及生效类型

查阅:官方文档/reference/v$parameter/。ISSYS_MODIFIABLE中有IMMEDIATE则立即生效、DEFERRED重新登陆会话生效、FALSE重启生效。

参数错误会导致无法用vim打开。解决方法是:生成静态修改后再重新生成动态文件。

1)            >create pfile fromspfile;exit;

2)            #vim %ORACLE_SID/init.ora;

3)            将参数改回来

4)            #sqlplus / as sysdba;

5)            >create spfile from pfile;

数据库关闭方式:

>shutdown immediate;//最常用

l  normal(等提交回滚和断连接)

等待事务主动提交或回滚,等待用户主动断开连接,存在用户未断开连接则无法关闭。

l  transactional(等提交回滚)

等待正在运行的事务直到提交和回滚(主动结束),然后强行中断连接。将实例中为数据写入数据文件,清空缓存。存在未提交或回滚的事务则无法关闭。

l  immediate(全回滚不等提交,但仍写回buffer cache)

强行中断或因滚所有事务,然后关闭连接。将数据文件写入数据文件。

l  abort(重启需要实例恢复)

模拟突然断电。事务立即中断,没有提交/回滚,内存没有写入数据文件就被清空。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,507评论 6 521
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,626评论 3 401
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 170,466评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,456评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,473评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,016评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,409评论 3 426
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,370评论 0 278
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,909评论 1 322
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,960评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,102评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,754评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,428评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,917评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,036评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,582评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,126评论 2 362

推荐阅读更多精彩内容