Oracle07、事務+Oracle訪問其他用戶下的對象

来源:http://www.cnblogs.com/Java766357768/archive/2017/10/15/7669170.html
-Advertisement-
Play Games

一、事務 回顧什麼是事務?一個不可分割的子操作形成一個整體,該整體要麼全部執行成功,要麼全部執行失敗。例如:轉帳回顧為什麼要用事務?如果不用事務的話,為轉帳為例,可能出現一個用戶錢增加了,另一個用戶錢不變回顧編程中,事務可用於哪一層?事務放在業務層回顧jdbc編程中,如何使用事務?connectio ...


一、事務

回顧什麼是事務?
一個不可分割的子操作形成一個整體,該整體要麼全部執行成功,要麼全部執行失敗。例如:轉帳

回顧為什麼要用事務?
如果不用事務的話,為轉帳為例,可能出現一個用戶錢增加了,另一個用戶錢不變

回顧編程中,事務可用於哪一層?
事務放在業務層

回顧jdbc編程中,如何使用事務?
connection.setAutoCommit(false);
pstmt.executeUpdate();
connection.commit();
connection.rollback();

回顧hibernate編程中,如何使用事務?
transaction.begin();
session.save(new User());
transaction.commit();
transaction.rollback();

回顧spring編程中,如何使用事務?
spring可以分為二種
>編程式事務,藕合
>聲明式事務,解藕,提倡

Oracle的事務只針對DML操作,即select/insert/update/delete

回顧MySQL的事務開始:start transaction
Oracle的事務開始:第一條DML操作做為事務開始

Oracle的提交事務
(1)顯示提交:commit  
(2)隱藏提交:DDL/DCL/exit(sqlplus工具)
註意:提交是的從事務開始到事務提交中間的內容,提交到ORCL資料庫中的DBF二進位文件

Oracle的回滾事務
(1)顯示回滾:rollback
(2)隱藏回滾:關閉視窗(sqlplus工具),死機,掉電
註意:回滾到事務開始的地方

回顧什麼是回滾點?
在操作之間設置的一個標誌位,用於將來回滾之用

回顧為什麼要設置回滾點?savepoint a;rollback to savepoint a;
如果沒有設置回滾點的話,Oracle必須回滾到事務開始的地方,其間做的一個正確的操作也將撤銷

/*使用savepoint 回滾點,設置回滾點a */
savepoint a;
/*使用rollback to savepoint,回滾到回滾點a處*/
rollback to savepoint a;

Oracle提交或回滾後,原來設置的回滾點還有效嗎?
原回滾點無效了

Oracle之所以能回滾的原因是?
主要機制是實例池

回顧MySQL支持的四種事務隔離級別及能夠解決的問題
(1)read uncommitted -- 不能解決任何缺點
(2)read committed   -- 臟讀,Oracle預設
(3)reapatable read  -- 不可重覆讀,臟讀,MySQL預設
(4)serializable     -- 幻讀,不可重覆讀,臟讀,效率低

註意:jdbc/dbutils速度快,但書寫煩
      mybaits速度中等,但書寫"中等"
      hibernate速度慢,但書寫"爽"
      
Oracle支持的二種事務隔離級別及能夠解決的問題?
Oracle支持:read committed 和 serializable

Oracle中設置事務隔離級別為serializable?
set transaction isolation level serializable;

演示二個用戶同時操作emp表,刪除KING這條記錄,會有什麼後果?
因為有隔離級別的存在,所以不會出現二個用戶都刪除了KING這條記錄,
一定是一個用戶刪除KING成功,在該用戶沒有提交的情況下,另一個用戶等待

二、訪問其他用戶下的對象

在預設情況下,每個用戶只能查詢自已空間下的對象的許可權,不能查詢其它用戶空間下的對象,這時候,如何訪問其他用戶下麵的對象就顯得有用武之地了。

聲明:scott或hr叫用戶名/方案名/空間名
      scott--tiger
      hr-----lion
      
/*查詢當前用戶是誰*/
show user;

/*查詢scott自己表空間下的所有對象時,可加,或不加用戶名select * from emp;*/
select * from emp;
或
select * from scott.emp;

/*以sysdba身份解鎖hr普通帳戶*/
alter user hr account unlock;

/*以sysdba身份設置hr普通帳戶的密碼*/
alter user hr identified by lion;

/*當scott查詢hr表空間下的所有表時,必須得加用戶名*/
select * from hr.jobs;

/*以sysdba身份角色,授予scott用戶查詢所有用戶空間下的對象許可權*/
grant select any table to scott;

/*以sysdba身份,撤銷scott用戶查詢所有用戶空間下的對象許可權*/
revoke select any table from scott;

/*scott自已查看自己所擁有的許可權*/
select * from user_sys_privs;

/*從scott用戶空間導航到sysdba用戶空間*/
conn / as sysdba;

/*從sysdba用戶空間導航到scott用戶空間*/
conn scott/tiger;

/*從scott用戶空間導航到hr用戶空間*/
conn hr/lion;

/*查詢hr用戶空間中的所有對象*/
select * from tab;

/*從hr用戶空間導航到scott用戶空間*/
conn scott/tiger;

/*在scott用戶空間下,查詢hr用戶空間下的jobs表,必須加上hr用戶空間名*/
select * from hr.jobs;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • javascript中,如何讓一個元素(比如div)運動起來呢? 設置基本的樣式,一定要讓div有定位( 當然用margin的變化也可以讓元素產生運動效果 ); 基本的結構: 當我們點擊,這個按鈕的時候,要讓div運動起來,其實就是讓div的left值持續變化,那麼div就會產生運動效果,我們先讓l ...
  • 傳遞簡單數據 創建兩個activity,FirstActivity和TwoActivity,這裡將會將數據從FisrtActivity傳給TwoActivity。 創建完activity的目錄界面如下。 現在我們先對它們的layout佈局做一些調整。 1. 在activity_first.xml中添 ...
  • 以前上傳證書也遇到過這種類似的提示,按照官網配置流程經過一番折騰總能解決,然而這次折騰了大半天了。。。搞毛線啊,此事必有蹊蹺。最終發現是我Mac系統版本(剛從10.12.6升到10.13)太高了,因為10.12.6的openssl版本是0.9.8zh,而10.13的系統openssl的版本是2.x. ...
  • DatePickerDialog類的實例化需要用到回調介面,如下定義: android.app.DatePickerDialog.DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYe ...
  • 今天我將要講的是fragment間的數據是如何進行傳遞的。這裡我將舉個簡單的例子。 首先要有個MainActivity,它托管了MainFragment,而MainFragment又托管了DatePickerFragment。其間用到了簡單的模型Crime,它只有Date類型的mDate一個屬性。例 ...
  • 傳統font大小適配可能會根據屏幕寬度與iphone5或iphone6寬度的一個比例來適配。但如果有這樣一個需求,在顯示@2x圖片的手機上顯示一種字體,在顯示@3x圖片的手機上顯示另一個固定大小的字體。 所以這裡的重點是要區分手機屏幕顯示圖片是@2x型還是@3x型的。 CGFloat scale = ...
  • mysql中用於表示時間的三種類型date, datetime, timestamp (如果算上int的話,四種) 比較容易混淆,下麵就比較一下這三種類型的異同 相同點 都可以用於表示時間都呈字元串顯示 不同點 1.顧名思義,date只表示'YYYY-MM-DD'形式的日期,datetime表示'Y ...
  • 一、視圖 什麼是視圖【View】 (1)視圖是一種虛表 (2)視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表(3)向視圖提供數據內容的語句為 SELECT 語句,可以將視圖理解為存儲起來的 SELECT 語句(4)視圖向用戶提供基表數據的另一種表現形式(5)視圖沒有存儲真正的數據,真正的數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...