成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle中的DDL鎖

數據庫 Oracle
DDL鎖是Oracle數據庫中的安全防護,有了DDL鎖后,數據庫中的數據安全得到了保障,所以DDL鎖是很重要的,下面就為大家詳細介紹DDL鎖。

導讀:當我們發出DDL命令時,會自動在被處理的對象上添加DDL鎖定,從而防止對象被其他用戶所修改。當DDL命令結束以后,則釋放DDL鎖定。我們不能顯式地請求一個DDL鎖定,只有當對象結構被修改或者被引用時,才會在對象上添加DDL鎖定。比如創建或者編譯存儲過程時會對引用的對象添加DDL鎖定。在創建視圖時,也會對引用的表添加DDL鎖定等。

  在執行DDL命令之前,Oracle會自動添加一個隱式提交命令,然后執行具體的DDL命令,在DDL命令執行結束之后,還會自動添加一個隱式提交命令。實際上,Oracle在執行DDL命令時,都會將其轉換為對數據字典表的DML操作。比如我們發出創建表的DDL命令時,Oracle會將表的名稱插入數據字典表tab$里,同時將表里的列名以及列的類型插入col$表里等。因此,在DDL命令中需要添加隱式的提交命令,從而提交那些對數據字典表的DML操作。即使DDL命令失敗,它也會發出提交命令。

  我們來看下面的例子,啟動兩個session,其中一個叫做sess #1,另一個叫做sess #2。在sess #1里發出如下的SQL語句:

SQL> insert into t values(1);
  1 row created.

  然后在sess #2里查詢表T里的數據:

SQL> select * from t;
  no rows selected

  顯然,由于sess #1還沒有提交,因此sess #2里不能檢索出sess #1所插入的記錄。接下來,我們在sess #1里執行下面的語句:

SQL> create table t(c1 number);
  create table t(c1 number)
  *
  ERROR at line 1:
  ORA-00955: name is already used by an existing object

  由于表T已經存在,因此創建表T的命令失敗。這時我們再回到sess #2里查詢表T:

SQL> select * from t;
  ID
  ----------
  1

  很明顯,我們并沒有在sess #1里發出commit命令,但這時sess #1里所作的插入操作已經被提交了。這個commit就是通過create table這個DDL命令隱式發出的,盡管create table命令已經失敗了。

  DDL鎖定具有以下三種類型:

  1、 排他的DDL鎖定(Exclusive DDL Lock)

  大部分的DDL操作都會在被操作的對象上添加排他的DDL鎖定,從而防止在DDL命令執行期間,對象被其他用戶所修改。當對象上添加了排他的DDL鎖定以后,該對象上不能再添加任何其他的DDL鎖定。如果是對表進行DDL命令,則其他進程也不能修改表里的數據。

  2、共享的DDL鎖定(Shared DDL Lock)

  用來保護被DDL的對象不被其他用戶進程所更新,但是允許其他進程在對象上添加共享的DDL鎖定。如果是對表進行DDL命令,則其他進程可以同時修改表里的數據。比如我們發出create view命令創建視圖時,在視圖的所引用的表(這種表也叫基表)上添加的就是共享的DDL命令。也就是說,在創建視圖時,其他用戶不能修改基表的結構,但是可以更新基表里的數據。

  3、可打破的解析鎖定(Breakable Parsed Lock)

  在shared pool里緩存的SQL游標或者PL/SQL程序代碼都會獲得引用對象上的解析鎖定。如果我們發出DDL命令修改了某個對象的結構時,該對象相關的、位于shared pool里的解析鎖定就被打破,從而導致引用了該對象的SQL游標或者PL/SQL程序代碼全都失效。下次再次執行相同的SQL語句時,需要重新解析,這也就是所謂的SQL語句的reload了??纱蚱频慕馕鲦i定不會阻止其他的DDL鎖定,如果發生與解析鎖定相沖突的DDL鎖定,則解析鎖定也會被打破。

  我們主要通過dba_ddl_locks視圖來監控DDL鎖定,沒有與DDL鎖定相關的V$視圖。如果沒有發現dba_ddl_locks視圖,則執行腳本$ORACLE_HOME/rdbms/admin/catblock.sql來創建該視圖,執行腳本時應該以用戶sys的身份登錄數據庫。

上文中介紹到的Oracle中的DDL鎖使Oracle數據庫中的數據安全得到了保障,避免數據庫中數據的丟失或者被人亂改。

【編輯推薦】

  1. Oracle安全全接觸
  2. Oracle安全數據系統架構全接觸
  3. 對Oracle安全性的建設的建議
責任編輯:迎迎 來源: 中國IT實驗室
相關推薦

2010-04-16 17:35:39

Oracle進程

2011-04-11 17:10:16

Oracle

2010-04-16 14:55:12

ORACLE鎖

2010-04-16 14:39:54

ORACLE鎖

2010-04-29 09:52:27

Oracle鎖

2010-04-26 10:09:22

Oracle存儲過程

2010-04-16 14:27:37

Oracle鎖表

2010-04-19 09:52:24

Oracle行級鎖

2010-04-19 10:35:04

Oracle進程

2010-05-06 17:54:54

Oracle鎖

2022-02-20 21:35:43

MySQLDDL阻塞

2009-11-17 17:02:01

Oracle鎖存器

2011-08-18 13:44:42

Oracle悲觀鎖樂觀鎖

2010-10-27 16:27:18

Oracle查詢

2010-04-14 11:42:36

Oracle進程

2020-01-16 14:59:32

Java鎖優化CAS

2011-08-09 16:15:23

OracleDDL語句DML語句

2023-06-12 09:09:19

MySQLDDLNSTANT

2010-04-15 13:10:09

Oracle系統結構

2024-03-18 12:21:28

Java輕量級鎖重量級鎖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91免费在线| 亚洲 欧美 综合 | 99久久精品免费看国产四区 | 国产精品国产a级 | 色欧美综合 | 午夜影院在线观看 | 国产精品视频在线播放 | 成人国产在线视频 | 精品视频一区二区 | 罗宾被扒开腿做同人网站 | 亚洲成人www | 国产免费播放视频 | 一区二区精品电影 | 波多野结衣在线观看一区二区三区 | 亚洲成人网在线 | 久久精品小短片 | 国产精品一区在线观看你懂的 | 国产99精品| 久久精品小视频 | 欧美精品啪啪 | 一区二区三区四区视频 | 国产一区二区自拍 | 天天操综合网站 | 欧美日本一区 | 日韩欧美中文字幕在线观看 | 伊人春色在线观看 | 欧美日韩中文字幕 | 91文字幕巨乱亚洲香蕉 | 久久99视频 | 日日骚网| 三级黄视频在线观看 | 老头搡老女人毛片视频在线看 | 欧美日韩久久 | 亚洲精品久久久久久久久久久久久 | 久草网址 | 久久久精品国产 | 日韩手机视频 | 日韩一区二区三区视频在线观看 | 尤物在线视频 | 综合久久综合久久 | 毛片网络 |