
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发 *** 作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行 *** 作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新 *** 作。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。
扩展资料:
排它锁和共享锁的不同之处:
1、共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
2、共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据,资源共享。
3、共享锁又称为读锁(Share lock,简记为S锁),若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
参考资料:
参考资料:
看来你数据库从来不做备份,归档日志都可以随便删掉
我先都你怎么去做备份吧
先在服务器建个大一些的文件系统 /backup ,用于保存备份
在服务器上执行:
su - oracle
export ORACLE_SID= 实例名
rman target /
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
CONFIGURE channel 1 device type disk format '/backup/%d_%U';
CONFIGURE channel 2 device type disk format '/backup/%d_%U';
CONFIGURE channel 3 device type disk format '/backup/%d_%U';
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; --这里定义你需要保留多少个全备份
---------------------------------------------------------------------------------------
自己定个备份策略,多长时间全备份一次
backup database plus archivelog delete input skip inaccessible;
再根据你归档日志产生情况,自己定一下多少时间备份、删除一次归档日志,如果在一个全备周期内确定归档日志不会满,也可以不单独备份日志
delete archivelog all delete input skip inaccessible;
这些备份日常也要维护
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
这个脚本适合所有数据库,不用改动
检查清单中,需补充一项:检查本地防火墙,是否开启。防火墙可能导致无法连接到数据库,需关闭本地防火墙。
下图是本人的microsoft sql server附加数据库型数据后,用软件无法连接到数据库,报错:ODBC SQL Server Driver 登录超时已过期。把本地防火墙关闭后就OK了。
以上就是关于怎么理解数据库的锁 一般锁分别哪几种全部的内容,包括:怎么理解数据库的锁 一般锁分别哪几种、请教一个关于unix系统上oracle数据库归档备份的问题、创建sql server odbc数据源时显示登录超时已过期怎么解决啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)