简答题1. OLR如何进行备份恢复?
OLR的备份策略和OCR的有所不同,默认情况下GI在初始安装时会在路径SGRID_HOME/cdata/<节点名>下产生一个备份。
[root@orclalhr orclalhr]# cd
[root@orclalhr ~]# cd/u01/app/11.2.0/grid/cdata/orclalhr
[root@orclalhr orclalhr] #11
total 5608
-rw-------1 grid oinstall 5742592 May 1 2015 backup_20150501_174602.olr
OLR不会被自动备份,如果在集群的一些配置信息发生改变后,需要使用下面的命令手动进行备份:
[root@orclathr orclalhr]# ocrconfig-local-manualbackup
orclalhr 2017/03/09 10:21:51 /u01/app/11.2.0/grieVedata/orclalhr/baekup_20170309_102151.olr
orclalhr 2015/05/01 17:46:02 /u01/app/11.2.0/grid/cdata/orclalhr/backup_20150501_174602.olr
建议在集群的重要配置信息(例如,集群私网配置)发生改变之后,使用命令ocrconfig -local -manualbackup手动备份OLR。当OLR丢失之后,可以使用命令“ocrconfig -local -restore<OLR备份文件>”来恢复,不能从集群的其他节点复制OLR到本地节点,这是因为OLR中保存的一些信息是针对本地节点的。如果需要验证OLR的一致性,那么可以使用ocrcheck -local命令。简单地说,所有适用于OCR的命令同样适用于OLR,但是需要增加 -local选项。
对于OLR的备份恢复简单过程如下(M0s:1193643.1和1368382.1):
<GI_HOME>/bin/ocrconfig -local -manualbackup
<GI_HOME>/bin/ocrconfig -local -showbackup
ps -ef| grep ohasd.bin
<GI_HOME>/bin/crsct1 stop crs <============ for GI Cluster
<GI_HOME>/bin/crsct1 stop has <============for Standalone
<GI_HOME>/bin/ocrconfig -local -restore <olr-backup>
<GI_HOME>/bin/crsctl start ors <============for GI Cluster
<GI_HOME>/bin/crsct1 start has <=============for GI Standalone, this must be done as grid user.
[考点] RAC
2. 怎么捕获用户登录信息,如SID、IP地址等?
3. 在Oracle中,常用的与锁有关的数据字典视图有哪些?
常用的与锁有关的数据字典视图有DBA_DML_LOCKS、DBA_DDL_LOCKS、V$LOCK、DBA_LOCK和V$LOCKED_OBJECT。V$LOCKED_OBJECT记录的是DML锁信息,而没有记录DDL锁。V$LOCK和DBA_LOCKS、DBA_LOCK内容一样,DBA_LOCKS是DBA_LOCK的同义词。可以用动态性能视图V$FIXED_VIEW_DEFINITION来查看它们的关系。
V$SESSION视图的TADDR列表示事务处理状态对象的地址,对应于V$TRANSACTION.ADDR列;V$SESSION视图的LOCKWAIT列表示等待锁的地址,对应于V$LOCK的KADDR列;若当前会话没有被阻塞则为空。V$SESSION视图的SADDR列对应于V$TRANSACTION的SES_ADDR列。可以通过ROW_WAIT_OBJ#、ROW_WAIT_FILE#、ROW_WAIT_BLOCK#和ROW_WAIT_ROW#这4个字段查询现在正在被锁的表的相关信息(ROWID),例如,表名、文件名及行号。V$SESSION视图中的P1和P2参数根据等待事件的不同所代表的含义也不同,可以从V$EVENT_NAME视图获知每个参数的含义。
在V$LOCK中,当TYPE列的值为TM锁时,则ID1列的值为DBA_OBJECTS.OBJECT_ID,ID2列的值为0;当TYPE列的值为TX锁时,则ID1列的值为视图V$TRANSACTION中的XIDUSN字段(undo Segment Number,事务对应的撤销段序列号)和XIDSLOT字段(Slot Number,事务对应的槽位号),其中,ID1的高16位为XIDUSN,低16位为XIDSLOT。ID2列的值为视图V$TRANSACTION中的XIDSQN字段(Sequence Number,事务对应的序列号)。
当TYPE列的值为TX锁时,计算ID1列的值的公式为
SELECT TRUNC(ID1/POWER(2,16))AS XIDUSN,BITAND(ID1,TO_NUMBER('FFFF','XXXX'))+0 AS XIDSLOT,ID2 XIDSON FROM DUAL;
所有与锁有关的数据字典视图之间的关联关系如下图所示。
[考点] 锁
4. InnoDB存储引擎支持哪些事务类型?
对于InnoDB存储引擎来说,其支持扁平事务、带有保存点的扁平事务、链事务和分布式事务。对于嵌套事务,其原生不支持。因此对有并发事务需求的用户来说,MySQL数据库或InnoDB存储引擎就显得无能为力,然而用户仍可以通过带保存点的事务来模拟串行的嵌套事务。
[考点] 存储引擎
5. 数据库设计的需求分析阶段是如何实现的?目标是什么?
数据库设计的需求分析通过三步来完成:需求信息的收集、分析整理和评审。其目的在于对系统的应用情况做全面详细的调查,确定企业组织的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些需求写成用户和数据设计者都能够接受的文档。
[考点] 数据库系统的组成与结构
6. 有如下两张表:
1)用户资料表:SERV(SERV_lD NUMBER(10),PROD_ID NUMBER(L0),USER_TYPE VARCHAR2(30),TERMINAL_NAME vARCHAR2(30)),其中,SERV_ID为用户标识,是SERV表的主键;PROD_ID为产品标识;USER_TYPE为用户类型;TERMINAL_NAME为终端类型。
2)终端类型临时表:TERMINAL(SERV_ID NUMBER(10),TERMINAL_NAME VARCHAR2(30))。
在初始化情况下,SERV表的SERV_ID、PROD_ID、USER_TYPE字段值是己知的,TERMINAL_NAME字段是空的,现在要根据:PROD_ID、USER_TYPE字段的值来更新NAME字段。
更新条件为:
1)当条件满足“PROD_ID=1 AND USER_TYPE='A'”时,TERMINAL_NAME更新为“固话”。
2)当条件满足“PROD_ID=1 AND USER_TYPD='B'”时,TERMINAL_NAME更新为“小灵通”。
3)当条件满足“PROD_ID=2”时,TERMINAL_NAME更新为“宽带”。
4)当条件满足“USER_TYPE='C'”时,TERMINAL_NAME更新为“CDMA”。
5)以上条件均不满足时,TERMINAL_NAME更新为“-1”。
根据以上条件,完成存储过程,存储过程的名称为SPTERMINAL。
存储过程如下:
CREATE OR REPLACE PROCEDURE SPTERMINAL IS
BEGIN
UPDATE SERV S
SET S.TERMINAL_NAME=
(SELECT CASE
WHEN S.PROD_ID=1 AND S.USER_TYPE='A' THEN '固话'
WHEN S.PROD_ID=1 AND S.USER_TYPE = 'B' THEN '小灵通'
WHEN S.PROD_ID=2 THEN '宽带'
WHEN S.USER_TYPE='C' THEN 'CDMA'
ELSE '-1'
END AS TERMINAL_NAME
FROM TERMINAL T
WHERE S.SERV_ID=T.SERV_ID)
WHERE EXISTS (SELECT 1 FROM TERMINAL T1 WHERE S.SERV_ID=T1.SERV_ID);
COMMIT;
END SP_UPDATE_TERMUNAL_NAME;
[考点] 存储过程
7. 如何预估即将创建索引的大小?
如果当前表大小是1TB,那么在某一列上创建索引的话索引大概占用多大的空间?对于这个问题,Oracle提供了2种可以预估将要创建的索引大小的办法:
1)利用系统包DBMS_SPACE.CREATE_INDEX_COST直接得到。利用DBMS_SPACE.CREATE_TABLE_COST可以获得将要创建的表的大小。
2)利用Oracle 11g新特性NOTE RAISED WHEN EXPLAIN PLAN FOR CREATE INDEX。
[考点] 索引
8. Oracle健康检查有哪些方面?
要想对数据库进行全面检查,内容比较多,下面列举部分检查项目:
1)数据库的实例是否运行,最近是否有自动重启现象。
2)ASM实例是否正常运行,剩余ASM磁盘空间有多大。
3)数据库的参数是否正常,数据库的参数近期是否被修改过。
4)数据库的表空间大小,是否有表空间快满了,表空间增长是否过快(系统表空间是否增长过快)。
5)是否有业务表创建在了SYSTEM表空间上,审计表是否在SYSTEM表空间上。
6)RMAN备份是否过期,备份是否可用,是否有控制文件的备份。
7)数据库JOB是否有运行错误。
8)数据库的告警日志是否有异常告警,例如ORA-4030、ORA-4031、ORA-60、ORA-600、ORA-01555等。
9)数据库归档空间、闪回恢复区是否足够。
10)是否有非常耗费资源的SQL曾经运行过,系统是否有VERSION COUNT过高的SQL。
11)DG、OGG是否运行正常,归档日志是否正常传递到TARGET端。
12)数据库是否开启了审计?
13)数据库有哪些普通索引、分区索引是失效的,系统是否有很大的索引从未使用过。
14)系统有哪些大表没有进行分区,哪些分区表的分区数过多,哪些分区表的各分区大小严重不均匀。
15)系统有哪些外键没有创建索引,系统组合索引列个数过多。
16)系统有哪些表使用了过时字段,例如LONG、CHAR。
17)系统有哪些表上创建的索引数过多。
18)系统拥有DBA角色的用户是否有变动。
19)近期是否有用户频繁使用错误密码进行登录系统。
20)表或索引是否含有很高的并行度。
21)系统是否含有无效的触发器。
22)系统是否含有CACHE值小于20并且已经产生等待的序列。
23)系统近期是否含有异常的等待事件。
24)系统是否含有登录时间很长却没有响应的会话。
25)系统是否含有统计信息过旧或从未收集过统计信息的表和索引。
26)系统有哪些全局临时表被收集了统计信息。
27)系统自动收集统计信息的JOB是否被禁用。
28)系统AWR、ASH功能是否被禁用。
[考点] 性能诊断
9. 错误“OGG-00446 Could not find archived log for sequence”如何处理?
如果面试官问到维护OGG曾经碰到的一次故障处理过程,那么就可以拿这个错误作为案例来说明。OGG-00446主要是归档文件丢失引起,处理办法就是将缺失的归档日志找回来。如果找不到所需归档日志,那么可以按照如下2种办法来处理。
第一种办法是改变抽取进程的时间,但这可能会导致数据不一致,执行方法如下:
GGSCI(HP-HP)1>alter extract extl,begin now
第二种办法是重新初始化,重新初始化过程如下。
源库查询到当前的SCN:
SQL>SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
------------
12242466771468
基于SCN导出所需要的数据:
expdp XXX/XXX directory=DMP dumpfile=xpadb_20160125_01.dmp LOGFILE=xpadb_20160125.log TABLES=BASE_ACTION POWER,BASE_BANK FLASHBACK_SCN=12242466771468
目标库导入所需要的数据:
impdp XXX/XXX DIRECTORY=OGGD DUMPFILE=xpadb 20160125_01.dmp LOGFILE=impdp.xpadb_20160125_01.log REMAP_SCHEMA=xpadb:xpadrpt REMAP_TABLESPACE=xpaddat:xpaddata
目标库重新开启应用进程:
[考点] OGG
10. SCN可以分为哪几类?
SCN可以分为4类,系统检查点SCN(System Checkpoint SCN)、文件检查点SCN(Datafile Checkpoint SCN)、开始SCN(Start SCN)和结束SCN(Stop SCN),参考下表。
[考点] RMAN
11. 如果$GRID_HOME下的权限被人为修改过,那么如何来修复该权限问题?
使用chown -R误操作将整个$GRID_BASE的权限修改了,或者删除了$GRID_HOME/log文件夹下的所有内容,导致集群不能启动。在这种情况下可以根据MOS文档:Tips for checking file permissions on GRID environment (ID 1931142.1)来修复该问题。
该文档中描述到,在$GRID_HOME/crs/utl(Oracle 11.2及12.1.0.1)或<GRID_HOME>/crs/utl/<hosmame>(Oracle 12.1.0.2)下面的crsconfig_dirs和crsconfig_fileperms文件中记录了整个$GRID_HOME下面的文件和目录的相关权限。
可以通过命令“cluvfy comp software -n all -verbose”来校验集群的权限是否正确。
所以要解决这个问题其实并不难,大致可以通过如下几种方法来解决:
1)根据MOS文档提供的建议,通过$GRID_HOME/crs/install/rootcrs.pl -init或rootbas.pl -init进行解决。rootcrs.pl -init是在PSU>11.2.0.3.6下执行的,如果PSU<11.2.0.3.6,则可以执行如下两条命令来实现同样的效果。
<GRID_HOME>/crs/install/rootcrs.pl -unlock
<GRID_HOME>/crs/install/rootcrs.pl -patch
2)采用MOS文档1515018.1上提供的脚本在正常库上生成脚本,然后将生成的脚本在异常库上执行,从而来修复权限问题。
3)Oracle 11gR2可以删除CRS的配置,然后重新运行root.sh即可。如果OCR和数据库不在同一个磁盘组里,那么重新运行root.sh脚本并不影响数据库,所以无须担心。
$GRID_HOME/crs/install/rootcrs.pl -deconfig -force -verbose
$GRID_HOME/root.sh
4)MOS文档1515018.1上提供了一个修复脚本:permission.pl。可以根据该脚本来修复。
在安装有GI的环境下,权限、属主是严格被设定的,任何对它们的错误修改容易引发一系列的问题,而且这些问题往往都很诡异,很难按照常规的思路去诊断。一旦出现权限的问题,作者建议按第1)和第3)种方式来修改。
如果可执行文件$ORACLE_HOME/bin/oracle的属主或权限设定出了问题,那么可能会造成很多问题。例如,无法登录到数据库、ora-600错误、“TNS-12518: TNS: listener could not hand off client connection”“Linux Error: 32: Broken pipe”“ORA-12537: TNS: connection closed”、访问ASM磁盘出错等。解决办法很简单,可以在grid用户下运行setasmgidwrap命令重新配置$ORACLE_HOME/bin/oracle可执行文件的权限和属主,或者直接将oracle文件的权限修改为6751。$ORACLE_HOME/bin/oracle可执行文件正确属主应该是oracle: asmadmin,并且权限必须有s共享才可以,如下:
[考点] RAC
12. 常用的crontab命令有哪些?
常用的crontab命令如下:
crontab -1 #列出某个用户crond服务的详细内容
crontab -r #删除没个用户的crond服务
crontab -e #编辑某个用户的crond服务
[考点] 定时任务
13. 什么是RAC?RAC有哪些优缺点?
RAC(Real Application Clusters,实时应用集群)是Oracle数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。如何在一个7*24的系统上实现数据库的高可用性呢?RAC就是最好的解决方案,RAC也成为高级DBA的必备技能之一。
从Oracle 9i版本开始就支持RAC了,可以支持7*24有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无须修改代码。在Oracle 9i之前,RAC称为OPS(Oracle Parallel Server)。RAC与OPS之间的一个较大区别是,RAC采用了Cache Fusion(缓存融合)技术,节点已经取出的数据块更新后没有写入磁盘前,可以被另外一个节点更新,然后以最后的版本写入磁盘;在OPS中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache Fusion时,RAC的各个节点间数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。在Oracle RAC环境下,Oracle提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1)优点
1)RAC是一种双机并行模式,并非主备模式。也就是说,RAC集群的所有成员都可以同时接收客户端的请求。所以,RAC实现了容错、单点故障解决(如果有节点挂掉,那么其他节点可以继续提供服务)和多节点负载均衡(不同节点可以相互配合,分担负载)。
2)提供高可用性、故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。
3)通过并行执行技术提高事务响应时间,通常被用于OLAP系统。
4)通过横向扩展提高每秒交易数和连接数,通常被用于OLTP系统。
5)扩展了机器的负载能力,节约了硬件成本,可以用多个廉价PC(Personal Computer)服务器代替昂贵的小型机或大型机,同时节约相应维护成本。
6)易伸缩、可扩展性好,可以方便添加、删除节点,扩展硬件资源。
7)实现了业务分割处理。
8)低成本。能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,这要比通过对某台高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。
9)高吞吐量。随着节点数的增加,整个RAC的吞吐量也在不断增长。
(2)缺点
1)相对单机,由于底层技术复杂,所以,管理更复杂,对DBA的技术要求更高。
2)可能会增加软件成本(如果使用高配置的PC服务器,那么Oracle一般按照CPU个数收费)。
3)在RAC系统规划设计较差时性能可能会不如单节点,存在资源争用(Cache Fusion)。
(3)RAC的特点如下:
1)每一个节点的实例都有自己的SGA。
2)每一个节点的实例都有自己的后台进程。
3)每一个节点的实例都有自己的联机Redo日志文件。
4)每一个节点的实例都有自己的Undo表空间。
5)所有节点都共享一份Data Files和Control Files。
[考点] RAC
14. RAC环境下的OGG需要注意什么问题?
对于RAC环境,OGG的相关软件和工作目录需要配置在共享磁盘(Shared Disk)环境中,从而保证对RAC的所有节点都是可用的,从任何一个节点都可以启动OGG的进程。当其中一个节点出现异常时,可以在剩余的节点启动而无须修改任何配置参数;否则如果运行在单个节点上,则需要将剩余节点中的归档日志通过一定的技术共享出来并加载到OGG的运行节点。另外,OGG也要求RAC的所有节点必须保持时钟同步。
[考点] OGG
15. 物理DG如何启用和停止日志应用服务?
(1)启用日志应用:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
(2)启用实时的日志应用:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
DISCONNECT FROM SESSION子句并非必需,该子句的作用是指定启动完应用后自动退出到命令操作符前。如果不指定该子句,那么当前SESSION就会一直停留处理Redo应用,如果想做其他操作,那么就只能新建一个连接。
(3)停止日志应用服务:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
(4)查看DG备机是否启用了日志应用,有两种办法可以判断:①可以查看是否有mrp进程,如果看不到mrp进程,那么说明没有启用日志应用;②查看V$ARCHIVE_DEST_STATUS的RECOVERY_MODE列,若启用了实时应用,则在Oracle 11g显示MANAGED REAL TIME APPLY,在Oracle 10g显示MANAGED。
[oracle@dg~]$ ps -ef|grep ora_mrp
oracle 19592 1 0 10:15? 00:00:01 ora_mrp0_phydb
[考点] DG
16. 试述数据、数据库、数据库系统、数据库管理系统的概念。
1)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音等。现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。数据与其语义是不可分的,例如,100这个数字可以表示一件物品的价格是100元,也可以表示一段路程是100公里,还可以表示一个人的体重为100斤。
2)数据库(DataBase,DB):数据库是长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
3)数据库系统(DataBase System,DBS):数据库系统是指在计算机系统中引入数据库后的系统构成。数据库系统和数据库是两个概念。数据库系统是一个系统,数据库是数据库系统的一个组成部分。但是,在日常工作中人们常常把数据库系统简称为数据库。
4)数据库管理系统(DataBase Management System,DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS是一个大型的复杂的软件系统,是计算机中的基础软件。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。目前,专门研制DBMS的厂商及其研制的DBMS产品很多。著名的有美国IBM公司的DB2关系数据库管理系统和IMS层次数据库管理系统、美国Oracle公司的Oracle关系数据库管理系统、美国微软公司的SQL Server等。
[考点] 数据库系统的组成与结构
17. 在MySQL中如何有效地删除一个大表?
在Oracle中对于大表的删除可以通过先TRUNCATE+REUSE STORAGE参数,再使用DEALLOCATE逐步缩小,最后DROP掉表。在MySQL中,对于大表的删除,可以通过建立硬链接(Hard Link)的方式来删除。建立硬链接的方式如下:
In big_table.ibd big_table.ibd.hdlk
建立硬链接之后就可以使用DROP TABLE删除表了,最后在OS级别删除硬链接的文件即可。为什么通过这种方式可以快速删除呢?当多个文件名同时指向同一个INODE时,此时这个INODE的引用数N>1,删除其中任何一个文件都会很快。因为其直接的物理文件块没有被删除,只是删除了一个指针而已。当INODE的引用数N=1时,删除文件时需要把与这个文件相关的所有数据块清除,所以会比较耗时。
18. MySQL支持事务吗?
在缺省模式下,MySQL是AUTOCOMMIT模式的,所有的数据库更新操作都会即时提交。这就表示除非显式地开始一个事务,否则每个查询都被当作一个单独的事务自动执行。但是,如果MySQL表类型是使用InnoDB Tables(或其他支持事务的存储引擎),那么MySQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MySQL运行在非AUTOCOMMIT模式下。在非AUTOCOMMIT模式下,必须使用COMMIT来提交更改,或者使用ROLLBACK来回滚更改。需要注意的是,在MySQL 5.5以前,默认的存储引擎是MyISA2M(从MySQL 5.5开始,默认存储引擎是InnoDB),而MyISAM存储引擎不支持事务处理,所以改变AUTOCOMMIT的值对数据库没有什么作用,但不会报错。所以,若要使用事务处理,则一定要确定所操作的表是支持事务处理的,如InnoDB。如果不知道表的存储引擎,那么可以通过查看建表语句来确定表的存储引擎。
[考点] 存储引擎
19. 什么是数据库三级封锁协议?
众所周知,基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)。所谓X锁是事务T对数据A加上X锁时,只允许事务T读取和修改数据A。所谓S锁是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁。若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁。从而可以读取A,但不能更新A。
在运用X锁和S锁对数据对象加锁时,还需要约定一些规则,例如,何时申请X锁或S锁、持锁时间、何时释放等,称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。一般使用三级封锁协议,也称为三级加锁协议。该协议是为了保证正确的调度事务的并发操作。三级加锁协议是事务在对数据库对象加锁、解锁时必须遵守的一种规则。下面分别介绍这三级封锁协议。
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题,在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。
二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
[考点] 数据库三级封锁协议和两段锁协议
20. LPar和DLPar分别是什么?
LPar(Logical Partitions,逻辑分区)是指将一个物理的服务器划分成若干个虚拟的或逻辑的服务器,每个虚拟的或逻辑的服务器运行自己独立的操作系统,有自己独享的处理器、内存和I/O资源,系统资源(如CPU、内存和I/O)在不同的系统分区之间移动时,需要所影响的系统分区重新引导。动态LPar(Dynamic Logical Partitions,DLPar)可以在不同的分区之间移动资源时,不影响分区的正常运行,即不需要重新引导分区,这将大大提高应用的灵活性和系统的可用性。LPar的配置和管理是通过硬件管理控制台(Hardware Management Console,HMC)来实现的。