當前位置:首頁 » 數據倉庫 » qt連接oracle資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

qt連接oracle資料庫

發布時間: 2023-03-23 04:41:19

1. Oracle GoldenGate具體有什麼作用或功能是什麼(ITJOB)

Oracle GoldenGate 用於在各種企業系統間以亞秒級速度復制和集成事務數據,是同類最佳的、易於部署的產品。Oracle GoldenGate 可以靈活地在同類和異類系統(包括不同版本的 Oracle Database、不同的硬體平台)之間以及 Oracle 資料庫和非 Oracle 資料庫(包括 Microsoft sql Server、用於開放系統和 z/OS 的 IBM DB2、Sybase 等等)之間移動數據。
本文演示如何安裝、設置和配置此產品以輕松實現 Oracle Database 10g 和 11g 之間數據的無縫復制,還介紹了此產品的加速能力。
Oracle 於 2009 年收購了 GoldenGate,我們可以看到在全球各行業超過 4,000 個解決方案中實施了 Oracle GoldenGate。該軟體執行實時的、基於日誌的更改數據捕獲 (CDC),能夠在異構資料庫間以極低的延遲和很小的空間移動大量事務數據。
通常,您部署 GoldenGate 捕獲、數據泵和交付進程,並且可將這些進程部署在許多不同的操作系統和資料庫上。可根據目標資料庫的需要,復制所有數據或部分數據。當 Oracle GoldenGate 用於 Oracle 資料庫時,可以復制數據操作語言 (DML) 和數據定義語言 (DDL) 操作。(目前只能在同類(不能在異類的)Oracle 版本間復制 DDL 操作。)Oracle GoldenGate 官方支持 Oracle9i 第 2 版到 Oracle Database 11g 第 2 版,並且對所有這些版本提供 DML/DDL 支持。該產品可用於 Oracle Database 的企業版和標准版。
如上所述,可以在所支持的同類或異類 Oracle Database 版本間移動數據,也可以在 Oracle 資料庫和非 Oracle 資料庫間移動數據。大多數情況下,可對數據進行篩選、映射和轉換。注意,如果啟用了 DDL 支持(換言之,如果使用 GoldenGate 進行同類 Oracle Database 版本之間的 DDL 復制),則不支持數據篩選、映射和轉換。
Oracle GoldenGate 是以 DBA 為中心的,因此 DBA 很容易學會如何使用它。其實現時間也是最少的 — 一些站點只用一個月的時間就完全付諸實現。
可獲得什麼
Oracle GoldenGate 產品系列包括:
Oracle GoldenGate
Management Pack for Oracle GoldenGate(也稱為 Oracle GoldenGate Director)Oracle GoldenGate Veridata
Oracle GoldenGate Application Adapters
Oracle GoldenGate for Mainframe
為使增值服務造福客戶,Oracle GoldenGate 核心許可包括 Oracle Active Data Guard 的全權使用許可和 Oracle Database 中 XStream 的全權使用許可。XStream 是與 Oracle Streams 介面的 API。Oracle Active Data Guard 支持主動打開備用資料庫以提供報表服務,甚至在應用重做數據的同時也如此。這個特性非常棒,可將生產報表和查詢工作分流到備用資料庫上。
一直以來,Oracle Streams 只用於在 Oracle 資料庫間復制數據。Oracle GoldenGate 還可以在非 Oracle 資料庫間復制數據,並且這種復制易於建立。
我們應注意到,已發布的 Oracle — GoldenGate 發展方向聲明中指出,「由於 Oracle GoldenGate 的戰略性,將繼續支持 Oracle Streams,但不會對其進行主動增強。而是對 Oracle Streams 中最好的內容行評估以確定是否將其並入 Oracle GoldenGate 中。」
此演示的目的
為了進行此次演示,您應在一台 Microsoft Windows 伺服器上有三個資料庫。這三個資料庫是 HRPRD1、HRPRD2 和 HRPRD3。其資料庫版本分別為 Oracle Database 11g、Oracle Database 10g 和 Oracle Database 10g。
這三個資料庫的 SYS 和 SYSTEM 口令已設置為 hrpassword1,用於測試目的。稍後可更改此口令。
此演示的目的是在 HRPRD2 和 HRPRD3 這兩個 Oracle 10g 資料庫的 HR.EMPLOYEES 表之間建立單向復制。對第一個資料庫中此表的 DML 更改應傳給第二個資料庫。然後,我們將對這一復制進行增強,可以將更改同時復制到 Oracle 11g 資料庫 HRPRD1 中。其結果是,對 HRPRD2 中該表的任何更新、插入和刪除不僅將會成功更新 HRPRD3,也會成功更新 HRPRD1。
這種從 Oracle Database 10g 到 Oracle Database 10g 然後再到 Oracle Database 11g 的復制策略常用於升級情況,進行升級時,需要先復制數據,然後方可切換到升級後的資料庫版本。Oracle GoldenGate 提供了簡單的解決方案。
注意,針對 Oracle 資料庫時,您不 需要使用 Microsoft ODBC 數據源管理器為這些資料庫創建數據源名稱 (DSN)。Oracle GoldenGate 復制將使用監聽器直接連接到 Oracle 資料庫。
需要下載的內容
首先,對於 Windows 系統,需要從 Microsoft 下載中心下載 Microsoft Visual C ++ 2005 SP1 Redistributable Package,然後進行安裝。如果計算機上未安裝 Visual C++,這用於安裝運行本應用程序時所需的 Visual C++ 庫的運行時組件。
接下來,需要從 Oracle 技術網下載 Oracle GoldenGate 軟體。截至本文撰寫時,OTN 只支持 Windows 平台 64 位版本:適用於 Windows 2000、XP 和 2003(64 位)上的 Oracle 10g 的 Oracle GoldenGate 10.4.0.x 版 (8 MB)。要下載 32 位 Windows 版本,您必須使用 Oracle E-Delivery 網站。(請注意,E-Delivery 下載有一個為期 30 天的試用產品許可,而非 OTN 開發人員許可。)登錄此網站後,搜索適用於 Microsoft Windows(32 位)平台的「Oracle Fusion Middleware Proct Pack」(因為 Oracle GoldenGate 被視作一個 Oracle 融合中間件產品,而非 Oracle Database 產品),然後單擊 Go。
此時會出現介質包列表。在此列表中,先選擇 Oracle GoldenGate on Oracle Media Pack for Microsoft Windows (32-bit)。
此介質包中包含:
適用於 Windows 2000、XP 和 2003 上的 Oracle 10g 的 Oracle GoldenGate 10.4.0.x 版V18162-01
大小:8.4 MB
適用於 Windows 2000、XP 和 2003 上的 Oracle 11g 的 Oracle GoldenGate 10.4.0.x 版V18164-01
大小:8.4 MB
Oracle GoldenGate 文檔
V18423-01
大小:20 MB
下載這三個 zip 文件,因為您需要適用於 Oracle 10g 和 Oracle 11g 的 Oracle GoldenGate。
然後,返回到 Oracle 融合中間件的介質包列表,從中選擇 Management Pack for Oracle GoldenGate (v2.0.0.2) Media Pack for Microsoft Windows。
該管理包介質包中包含:
適用於 Windows 的 Oracle GoldenGate Director V2.0.0.x ServerV18127-01
大小:228 MB
適用於 Windows 的 Oracle GoldenGate Director V2.0.0.x ClientV18128-01
大小:55 MB
Oracle GoldenGate Director 文檔
V18129-01
大小:952 KB
如果您想安裝管理包,下載所有這些文件。該管理包是一個安裝您 Windows 伺服器上的獨立產品,。該產品原名為 Oracle GoldenGate Director,它包含一個多層的客戶端-伺服器應用程序,使組織可以輕松監視和管理其 Oracle GoldenGate 部署。
使用 Oracle GoldenGate Director 的 GUI 界面,可以集中設計和配置 Oracle GoldenGate,還可以管理和監視為了在公司各伺服器間復制數據而建立的各種 Oracle GoldenGate 進程。
介質包的主列表中還有其他一些介質包,如 Oracle GoldenGate Veridata Media Pack for Microsoft Windows。
Oracle GoldenGate Veridata 軟體作為伺服器進行安裝,在不同平台上具有代理,它負責將一組數據與另一組數據進行對比以識別不同步的數據,對比時無需停機。此對比可全天候進行,可與大流量的復制同時進行。還可在不同平台間進行數據對比。
除了上述主要介質包外,列表中還顯示了其他 Oracle GoldenGate 包。這些軟體包適用於非 Oracle 資料庫,如 Sybase、SQL Server、IBM DB2、Teradata,還有 JMS 和平面文件,這反映了 Oracle GoldenGate 支持異構的性質。
安裝步驟
您下載的 Oracle GoldenGate 文檔 zip 文件 (V18423-01.zip)中包含 Oracle GoldenGate Oracle Installation and Setup Guide Version 10.4 (gg_ora_inst_v104.pdf),其中描述了適用於 Linux、UNIX 和 Windows 上的 Oracle 資料庫的 Oracle GoldenGate 的安裝步驟。
注意,還有其他一些安裝文檔,它們針對適用於 Sybase、SQL Server、DB2、MySQL、Teradata 等的 Oracle GoldenGate。
首先,將 Oracle GoldenGate for Oracle 10g (V18162-01.zip) 解壓縮到一個新的 Oracle GoldenGate 軟體目錄中,目錄名中不含任何空格。例如,您可以使用 C:\OGG10G 作為 Oracle GoldenGate 目錄。此目錄中的軟體代碼將用於建立第一個和第二個 Oracle 10g 資料庫之間的復制。
由於您的第三個資料庫是 Oracle Database 11g 版,您還需要解壓縮 Oracle GoldenGate for Oracle 11g (V18164-01.zip)。對於此版本的 Oracle GoldenGate,您需要使用一個單獨的目錄,C:\OGG11G。此目錄中的軟體代碼將用於控制到第三個 Oracle Database 11g 資料庫的復制。
如果您有 Oracle9i 資料庫並且想從其復制數據或向其復制數據,需要另一個適用於 Oracle9i 的 Oracle GoldenGate 軟體。不過,您不能通過 Oracle 網站下載 Oracle GoldenGate 的 Oracle9i 版本。如果您需要此版本,可能需要通過 My Oracle Support 發出一個系統請求 (SR)。
在命令提示符處輸入以下命令:
mkdir C:\OGG10G
cd C:\OGG10G
unzip c:\V18162-01.zip
mkdir C:\OGG11G
cd C:\OGG11G
unzip C:\V18164-01.zip
# start the 10g databases if not already startednet start OracleServiceHRPRD2
net start OracleServiceHRPRD3
# start the 11g database if not already startednet start OracleServiceHRPRD1
設置環境變數
現在,您可以打開兩個命令窗口(開始..運行..Cmd),針對 Oracle Database 10g 和 Oracle Database 11g 將相應的環境變數(如 ORACLE_HOME、ORACLE_SID、LD_LIBRARY_PATH 等)設置為相應的值。
為了在兩個 Oracle 10g 資料庫間建立復制,將這些變數進行如下設置:
set ORACLE_HOME=C:\Oracle\proct\10.2.0\db_1set ORACLE_SID=HRPRD2
set PATH=%ORACLE_HOME%\bin;%PATH%
set LD_LIBRARY_PATH=C:\OGG10G; %ORACLE_HOME%\LIB;%ORACLE_HOME%\jdbc\lib
set CLASSPATH=;C:\Program
Files\Java\jre6\lib\ext\QTJava.zip;%ORACLE_HOME%\jdbc\libORACLE_SID 可設置為 HRPRD2 或 HRPRD3,兩者都是 Oracle 10g 資料庫。請注意 PATH、LD_LIBRARY_PATH 和 CLASSPATH 的值。
另一種方法是用系統變數進行這些設置,為此您可以在 Windows XP Professional 中使用:我的電腦..屬性..高級..環境變數..系統變數。在這里添加新的系統變數並按如上所述更改路徑。
在此例中,在一台伺服器上運行兩個資料庫版本的缺點是,每次啟動 Oracle GoldenGate for Oracle 10g 或 Oracle GoldenGate for Oracle 11g 的 Manager 服務時,都必須更改系統變數。您可能要添加與 Oracle Database 11g 有關的系統變數,然後啟動 Oracle GoldenGate for Oracle 11g Manager 服務。這之後,您可能要更改這些系統變數,使其適合於 Oracle Database 10g,然後啟動 Oracle GoldenGate for Oracle 10g Manager 服務。由於這是一個測試系統,這么做可能沒有問題。但在生產環境下,您需要採取一種更自動化的方法(如採用腳本化的方法)在腳本中設置這些變數並啟動 Manager 服務。
GGSCI 命令解釋程序
在命令窗口或「我的電腦」級別設置環境變數之後,轉到 Oracle GoldenGate 的文件夾下,通過命令行(見圖 1)或 Windows 資源管理器運行 Oracle GoldenGate Command Interpreter for Oracle (GGSCI) 程序。
圖 1 Oracle GoldenGate Command Interpreter現在,您可在 GGSCI 中執行 CREATE SUBDIRS 命令來創建 Oracle GoldenGate 的工作子目錄。參見圖 2,其中列出了所創建的重要目錄。
圖 2 創建工作子目錄
將 Oracle GoldenGate Manager 作為本地程序運行您可以將 Oracle GoldenGate Manager 當作一個本地程序在命令窗口中運行,也可以將它作為一個 Windows 服務安裝以便在 Windows 啟動時自動啟動。我們建議使用後面這種方法。
如果您希望將其作為一個本地命令運行,只需調用目錄中的 Manager 執行文件(調用時帶著一個參數文件)即可。命令語法為:
C:\OGG10G>mgr
Usage: MGR PARAMFILE [REPORTFILE ]
[PID ] [PORT ]
[USESUBDIRS] [NOUSESUBDIRS]
[PAUSEATEND] [NOPAUSEATEND]
[CD ]
PARAMFILE 是必需的參數。因此,您必須在 GGSCI 中創建一個參數文件:
GGSCI (HaviPori) 1> edit params mgr
此命令將在 C:\OGG10G\dirprm 目錄中創建一個新的 mgr.prm 文件。在該文件中鍵入將用於運行 manager 進程的埠號,然後保存該文件。
PORT 7809
默認埠號為 7809。無論您選擇哪個埠號,請確保該埠號未被任何其他程序所使用並且沒有任何防火牆限制。因為 PORT 是 Manager 唯一需要的參數,所以必須指定該參數。GGSCI 使用該埠將請求發送給 Manager 以啟動進程,並且 Extract 進程也使用該埠進行各種操作。
創建該參數文件之後,就可以在 Windows 命令提示符下啟動 Manager 了,如下所示:
C:\OGG10G>mgr paramfile c:\OGG10G\dirprm\mgr.prm該命令啟動 Manager,並且顯示圖 3 所示的消息:
圖 3 在 Windows 命令提示符處啟動 Manager
必須保持此窗口為打開狀態,以保持 Manager 運行。如果您注銷,該窗口將關閉,Manager 將停止運行。
將 Manager 作為 Windows 服務進行安裝
上文描述了手動啟動 Manager 的方法,還有一種啟動方法,那就是將 Manager 作為自動啟動的 Windows 服務來安裝。
在 Windows 集群環境下必須使用後面這種方法,因為出現故障時只有服務可以自動切換到備用伺服器上。在非集群系統中,將 Manager 作為服務來安裝是可選的方法但也是強烈建議的方法。
在 Windows 中作為服務創建 Manager 進程時,該服務的默認名稱為 GGSMGR。您可以為此服務指定自定義的名稱。如果您在同一台伺服器上需要不止一個 Oracle GoldenGate Manager 服務,比如一個針對 Oracle GoldenGate for Oracle 10g 的服務和另一個針對 Oracle GoldenGate for Oracle 11g 的服務,則指定名稱是很重要的。如果您打算運行 Oracle GoldenGate Veridata,還需要一個 Manager 服務。
用以下方法為 Manager 服務指定一個不同的名稱。在 GGSCI 命令提示符處執行以下命令:
EDIT PARAMS ./GLOBALS
在出現的記事本編輯器中,選擇新建一個文件(如果是首次這么做),然後輸入以下代碼並保存該 GLOBALS 文件:
MGRSERVNAME OracleGGSMGR1
根據 Windows 上的 Oracle 服務一般帶有 Oracle 前綴(如 OracleDBConsole、OracleJobScheler 服務)的慣例,使用名稱 OracleGGSMGR1。
通過 C:\OGG10G 目錄中的 Install 程序可輕松創建 Manager 服務。使用 install addservice 命令,如圖 4 所示:
圖 4 創建 Manager 服務
新服務在 Windows 服務列表中顯示為一個自動啟動的服務(見圖 5):
圖 5 Manager 服務屬性
Manager 服務以本地系統帳戶運行,也可配置為以特定帳戶(使用用戶名和口令選項)運行,該用戶名和口令可由 addservice 命令指定。現在可通過以下命令啟動該服務:
GGSCI (HaviPori) 1> start manager
Starting Manager as service ('OracleGGSMGR1')...
Service started.
安裝 Windows 事件消息
還可使用 Install 程序將事件消息安裝到 Windows 注冊表中,這樣它們可通過 Windows Event Manager 顯示。使用以下命令可完成此操作:
C:\OGG10G>install addevents
Oracle GoldenGate messages installed successfully.
Install program terminated normally.
還可將 category.dll 和 ggsmsg.dll 文件從 C:\OGG10G 目錄復制到 C:\WINDOWS\system32 目錄,從而生成具體的而不是一般性的錯誤。
建立復制 — 在 HRPRD2 上建立 Extract 進程Oracle GoldenGate Manager 進程已啟動並運行。下一步要建立資料庫之間的復制。
為此,您至少需要創建和配置一個 Extract 和 Replicat 組。在這些組中指定您想捕獲和復制的數據。
Extract 進程捕獲發生的數據更改並將這些更改發送給目標伺服器上的一個「線索」。在目標伺服器上啟動 Replicat 進程,該進程負責進行實際的復制,它從線索中獲取數據更改,然後將這些更改應用到目標資料庫中。
您還需要為 Oracle GoldenGate Replication 准備資料庫:在資料庫級打開追加日誌 功能。為此,在以 SYSDBA 身份登錄到資料庫後使用以下命令:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;Database altered.
SQL> alter system switch logfile;
System altered
現在可以添加 Extract 組了。
GGSCI (HaviPori) 1> ADD EXTRACT emp_ext, TRANLOG, BEGIN NOWEXTRACT added.
您在這里指定了 TRANLOG,這意味著事務(重做)日誌成為數據源。BEGIN 後面可以是該日誌中的一個時間戳以便從該時刻開始進行處理,也可以是 NOW 以便立即開始處理。

2. qt的oracle驅動未載入,但顯示有驅動

QMYSQL,QPSQL等資料庫如果直接使用就會出現數據驅橘笑跡動未載入的情況。
沒有載入的原因很多,最常見的是未找到該驅動,首升隱先查看自己安裝的Qt的版本和PostgreSql的版本,若Qt是32位的,那麼PostgreSql也要選擇安裝32位的。如果安裝的位數不一樣驅動肯定找不到的。
qt編程是一個由QtCompany於1991年開發的跨平台C圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可用於開發非GUI程序,比如控制台工具和伺服器。qt是面向對象的框架,使用特殊的代碼生成擴展稱為元對象編圓並譯器MetaObjectCompiler,moc,以及一些宏。

3. QT能用odbc方式連接oracle11g的資料庫嗎

能 得安裝oracleclient 並配置 其餘的跟access沒啥區別

4. 各個埠都代表什麼意思

按照埠號的大小分類,可分為如下幾類 :

(1)公認埠(WellKnownPorts):從0到1023,它們緊密綁定(binding)於一些服務。通常這些埠的通訊明確表明了某種服務的協議。例如:80埠實際上總是HTTP通訊。

(2)注冊埠(RegisteredPorts):從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於這些埠,這些埠同樣用於許多其它目的。例如:許多系統處理動態埠從1024左右開始。

(3)動態和/或私有埠(Dynamicand/orPrivatePorts):從49152到65535。理論上,不應為服務分配這些埠。實際上,機器通常從1024起分配動態埠。但也有例外:SUN的RPC埠從32768開始。


(4)qt連接oracle資料庫擴展閱讀

各種服務常用埠號:

1,HTTP協議代理伺服器常用埠號:80/8080/3128/8081/9098

2,SOCKS代理協議伺服器常用埠號:1080

3,FTP(文件傳輸)協議代理伺服器常用埠號:21

4,Telnet(遠程登錄)協議代理伺服器常用埠號:23

5,HTTP伺服器,默認埠號為80/tcp(木馬Executor開放此埠)

6,HTTPS(securely transferring web pages)伺服器,默認埠號為443/tcp 443/udp

7,Telnet(不安全的文本傳送),默認埠號為23/tcp(木馬Tiny Telnet Server所開放的埠)

8,FTP,默認的埠號為21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的埠)

9,TFTP(Trivial File Transfer Protocol),默認埠號為69/udp

10,SSH(安全登錄)、SCP(文件傳輸)、埠號重定向,默認的埠號為22/tcp

11,SMTP Simple Mail Transfer Protocol(E-mail),默認埠號為25/tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個埠)

12,POP3 Post Office Protocol(E-mail),默認埠號為110/tcp

13,Webshpere應用程序,默認埠號為9080

14,webshpere管理工具,默認埠號9090

15,JBOSS,默認埠號為8080

16,TOMCAT,默認埠號為8080

17,WIN2003遠程登錄,默認埠號為3389

18,Symantec AV/Filter for MSE,默認埠號為 8081

19,Oracle 資料庫,默認的埠號為1521

20,ORACLE EMCTL,默認的埠號為1158

21,Oracle XDB(XML 資料庫),默認的埠號為8080

22,Oracle XDB FTP服務,默認的埠號為2100

23,MS SQL*SERVER資料庫server,默認的埠號為1433/tcp 1433/udp

24,MS SQL*SERVER資料庫monitor,默認的埠號為1434/tcp 1434/udp

5. 新手Qt5.1.1怎麼連接oracle資料庫

前提襪老是電腦必須安裝oracle客戶端。 配置方法: 1、找到oracle的安裝目錄。如:C:\oracle\proct\10.2.0\db_1\network\ADMIN 2、碼旁找到tnsnames.ora文件。 3、用文本遲好橡方式打開,添加以下內容: 本地實例名 = (DESCRIPTION = (ADDRESS = (PROTOCOL =...

6. security可以針對用戶設置只讀許可權嗎

術之多
Security4:授予查看定義,執行SP和只讀數據的許可權

2022-10-15 原文
SQL Server資料庫有完善的許可權管理機制,對於存儲過程,其許可權分為查看定義,執行和修改,查看SP定義的許可權是:VIEW DEFINITION ,執行存儲過程的許可權是:EXECUTE,修改SP的許可權是:ALTER,但是該許可權也能修改表結構,視圖的定義等資料庫對象。數據的讀取許可權是SELECT,這個查看定義是不同的許可權。對於一個數據表,如果僅授予VIEW DEFINITION許可權,而沒有授予SELECT許可權,那麼用戶只能查看數據表的結構(Schema),而無法查看錶中存儲的數據。

在管理許可權時,可以給特定的用戶授予「只能讀取數據和執行SP,而不能修改數據」的許可權,也就是,使特定的用戶只能查看數據(只讀,SELECT),只能查看定義(VIEW DEFINITION),和執行SP的許可權(EXECUTE),這樣的許可權設置,既能使遲數用戶查看到業務數據,又能避免用戶私自修改數據。

對於數據的讀取許可權,SQL Server內置固定資料庫角色 db_datareader,把用戶添加到該角色中,用戶就被授予了對資料庫中所有數據(表或視圖)的讀取許可權,就是說,用戶可以對數據表或視圖執行select命令讀取數據;也可以逆向思考,不允許用戶修改數據,把用戶添加到固定資料庫角色 db_denydatawriter 中,這樣,用戶不能添加,更新和刪除任何數據,就是說,不能對任何數據表執行insert,updae和delete命令。這兩個資料庫角色,相當於以下兩個命令:

grant select to [domain\user];
deny update,delete,insert to [domain\user];
許可權的分配分為:授予(grant)和拒絕(deny),對於已分配的許可權,也可以通過回收(revoke)命令收回,許可權管理是個技術活。

一,授予查看定義的許可權

查看資料庫對象的許可權是VIEW DEFINITION,通常資料庫對象是指:數據表,視圖碼逗首,存儲過程,函數等,被授予VIEW DEFINITION許可權之後,用戶只能查看定義,而無法從數據表或視圖中查看數據,無法執行SP和函數等。

1,授予SQL Server實例級別的查看定義的許可權

以下代碼用於授予許可權VIEW ANY DEFINITION,代碼必須在master資料庫中執行,使指定的用戶能夠查看當前SQL Server實例中的所有資料庫對象的定義:

use master
go
grant view any definition to [domain\user]
2,授予User,只能查看當前資料庫對象的定義的許可權

以下代碼用於授予VIEW DEFINITION,使指定的用戶能夠查看指定資料庫中的所有對象的定義:

use db_name
go
grant view definition to [domain\user]
3,授予User,只能查看當前資料庫的指定資料庫對象的定義的許可權

以下代碼用於授予VIEW DEFINITION,通過on子句,使指定的用戶能夠查看指定對象的定義:

use db_name
go
grant view definition
on object::schema_name.object_name
to [domain\user]
二,授予執行存儲過程的許可權

以下代碼授予用戶執行存儲過程的許可權,通過on子句指定用戶只能執行特定的SP:

use db_name
go
grant execute
on object::schema_name.object_name
to [domain\user]
如果grant execute省略on子句,表示所有的SP,這樣,用戶可以執行資料庫中的所有SP:

use db_name
go
grant execute
to [domain\user]
三,授予用戶修改存儲過程的許可權

修改存儲過程的許可權是ALTER,但是,ALTER同時也能修改表結構,視圖定義等資料庫對象,如下代碼所示:

GRANT ALTER TO [domain\user]
如果僅授予用戶修指輪改SP的許可權,那麼必須逐個設置,或者把SP創建在獨立的schema下,通過授予用戶修改schema,達到控制用戶只修改SP的目的:

GRANT ALTER
ON SCHEMA::proc_schema
TO [domain\user]
四,授予用戶查看SP的定義,執行和修改SP的許可權

通過GRANT子句,可以一次性把查看SP的定義,執行和修改SP的許可權都授予指定的用戶:

GRANT ALTER, EXECUTE, VIEW DEFINITION
ON SCHEMA::[proc_schema]
TO [domain\user]
在GRANT子句中省略ON子句,表示授予用戶的許可權作用於所有的資料庫對象,包括數據表,視圖,存儲過程,函數等。

五,授予Public用戶查看定義的許可權

當Login沒有映射到相應的User時,該Login被映射到默認的Public,設置給用戶查看定義的許可權,這樣,每個登陸到SQL Server實例的用戶,都可以查看定義。

use master
go
grant view any definition to public

use dbn_ame
go
grant view definition to public
六,授予用戶查看定義,只讀數據和執行SP的許可權

存儲過程 sp_msforeachdb @command 是微軟未公開的存儲過程,該存儲過程遍歷當前的SQL Server實例的所有資料庫,在每個資料庫中執行相同的命令:

use master
go

create login [domain\user]
from windows;
go

grant view any definition
to [domain\user] ;
go

exec sp_msforeachdb
'
use [?];
if not exists
(
select *
from sys.database_principals
where name=''domain\user''
)
create user [domain\user]
for login [domain\user];
alter role db_datareader
add member [domain\user];
grant execute to [domain\user];
'
go
遍歷資料庫的功能,也可以使用游標來實現,本文不再贅述。

參考文檔:

Run same command on all SQL Server databases without cursors

Granting View Definition Permission to a User or Role in SQL Server

Security4:授予查看定義,執行SP和只讀數據的許可權的更多相關文章

MySQL能否授予查看存儲過程定義許可權給用戶
在其他RDBMS中,可以將查看某個存儲過程(PROCEDURE)定義的許可權給某個用戶,例如在SQL Server中,可以單獨將查看ProcereName定義的許可權授予UserA GRANT VIE ...

查看ORACLE執行計劃的幾種常用方法
SQL的執行計劃實際代表了目標SQL在Oracle資料庫內部的具體執行步驟,作為調優,只有知道了優化器選擇的執行計劃是否為當前情形下最優的執行計劃,才能夠知道下一步往什麼方向. 執行計劃的定義:執行目 ...

查看Job執行的歷史記錄
SQL Server將Job的信息存放在msdb中,Schema是dbo,表名以「sysjob」開頭. 一,基礎表 1, 查看Job和Step,Step_ID 是從1 開始的. select j.jo ...

查看Oracle執行計劃
1.PL/SQL解釋計劃窗口 優點:方面 缺點:看到信息有限 2.explain_plan for 針對某個句子優化較方便 3.sqlplus Sqlplus里輸入命令: set autotrace ...

如何查看MySQL執行計劃
在介紹怎麼查看MySQL執行計劃前,我們先來看個後面會提到的名詞解釋: 覆蓋索引: MySQL可以利用索引返回select列表中的欄位,而不必根據索引再次讀取數據文件 包含所有滿足查詢需要的數據的索引 ...

查看SQL執行計劃
一用戶進入某界面慢得要死,查看SQL執行計劃如下(具體SQL語句就不完全公布了,截斷的如下): call count cpu elapsed disk ...

MSSQL優化之——查看語句執行情況
MSSQL優化之——查看語句執行情況 在寫SQL語句時,必須知道語句的執行情況才能對此作出優化.了解SQL語句的執行情況是每個寫程序的人必不可少缺的能力.下面是對查詢語句執行情況的方法介紹. 一.設置 ...

查看Oracle執行計劃的幾種方法
查看Oracle執行計劃的幾種方法 一.通過PL/SQL Dev工具 1.直接File->New->Explain Plan Window,在窗口中執行sql可以查看計劃結果.其中,Cos ...

查看Mysql執行計劃
使用navicat查看mysql執行計劃: 打開profile分析工具: 查看是否生效:show variable like 『%profil%』; 查看進程:show processlist; 選擇 ...

隨機推薦

從零自學Java-1.編寫第一個Java程序
編寫第一個Java程序 完成工作:1.在文本編輯器中輸入一個Java程序. 2.使用括弧組織程序. 3.保存.編譯和運行程序. package com.Jsample;//將程序的包名稱命名為com. ...

JSP 過濾器
JSP教程 - JSP過濾器 JSP過濾器是可用於攔截來自客戶端的請求或處理來自伺服器的響應的Java類. 過濾器可用於執行驗證,加密,日誌記錄,審核. 我們可以將過濾器映射到應用程序部署描述符文件w ...

ASP.NET動態引用樣式表(css)和腳本(js)文件
// 引入js文件 HtmlGenericControl scriptControl = new HtmlGenericControl("script"); scriptContr ...

mySQL 約束 (Constraints)
約束用於限制加入表的數據的類型: 1.創建表時規定約束(通過 CREATE TABLE 語句) 2.表創建之後也可以(通過 ALTER TABLE 語句). 約束類型: NOT NULL(非空) UN ...

直播內容不合規怎麼辦?智能AI為您解決審核難題
背景 近些年來,視頻直播快速發展,大量的直播平台如雨後春筍一般出現,但是這同樣給直播內容的監管帶來了巨大的挑戰,一方面國家對於直播內容監管的要求日益嚴格,另一方面相對於文字內容的審核,多媒體內容的審核 ...

selenium - pycharm三種案例運行模式
1.unittest 運行單個用例 (1)將滑鼠放到對應的用例,右鍵運行即可 2.unittest運行整個腳本案例 將滑鼠放到if __name__ == "__main__": ...

dns伺服器測試工具
下載地址:https://www.eatm.app/wp-content/uploads/2018/08/eDnsTest.20180810.zip

ArcGIS API for JS4.7載入FeatureLayer,點擊彈出信息並高亮顯示
我載入的是ArcGIS Server本地發布的FeatureService,ArcGIS API for JS4.7記載FeatureLayer時,在二維需要通過代碼啟用WebGL渲染,在三維模式下, ...

[2018-12-15] Hello World!
這個blog以後就用來發oi相關的演算法與數據結構了 還可能想學習一點web前端的知識和一些與計算機有關的軟體和技術 可能有空大概會試試搭建blog以及一些各種軟體和c++以外的玩意

理解RHEL上安裝oracle的配置參數 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login
無論安裝什麼版本的Oracle,在安裝之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf這三個文件 那這三個文件究 ...

熱門專題

VUE如何設置登陸超時和未登錄跳到登錄界面COOKIE SERVER2016 集成 SHELL FOR I 2個變數 資料庫用戶賬號密碼加密校驗 安卓PTRACE HOOK框架 OPENCV 顯示圖片內存泄漏 VB.NET HTTP介面 靜態參數@AUTOWIRED注入不進去 QT5 UTF-8轉GBK TCL語言 如何定義三維數組 PHP 二維碼轉 四維 DELPHI CS構架 客戶端卡 UBUNTU如何掛在EXFAT格式 AJAX連接C語言程序 使用JENKINS常見報錯匯總 POSTGRESQL判斷視圖是否存在,存在便刪除 MASK RCNN 論文 VS無法查看腳本被哪些預制體引用嗎 TCP IP通訊數據傳輸 WPF DATAGRID教程
Home
Powered By WordPress

7. MinGW 5.3.0 (32-bit) win7 如何添加靜態庫

Qt連接ORACLE比較麻煩,你發布的時候客戶電腦上也要裝Oracle客戶端。

1.需要裝Oracle客戶端,而且需要配置Oracle連接源

8. Oracle goldengate ogg要怎麼實現主備庫切換啊

Oracle Goldengate目前支持主被動式的雙向配置,換而言之OGG可以將來自於激活的主庫的數據變化完全復制到從庫中陸敗,從庫在不斷同步數據的同時已經為計劃內的和計劃外的outages做好了故障切換的准備,也就是我們說的Live Standby。這里我們重點介紹一下配置Oracle Goldengate Live Standby系統的步驟,和具體的故障切換過程。


如果自己搞不定可以找ASKMACLEAN專業ORACLE資料庫修復團隊成員幫您恢復!



SQL>connclinic/clinic
Connected.
SQL>droptabletv;
createtabletv(t1intprimarykey,t2int,t3varchar2(30));
Tabledropped.

SQL>

Tablecreated.

SQL>dropsequenceseqt1;

;
Sequencedropped.

SQL>SQL>
Sequencecreated.

declare
rndnumber(9,2);
begin
foriin1..100000loop
insertintotvvalues(seqt1.nextval,i*dbms_random.value,'MACLEANISTESTING');
commit;
endloop;
end;
/

/*以上腳本在primary主庫的某個茄咐應用賬戶下創建了測試用的數據,
接著我們可以使用各種工具將數據初始化到從庫中,如果在這個過程中
希望實時在線數據遷移的話,可以參考《Goldengate實現在線數據遷移》
*/

/*注意我們在LiveStandby的環境中往往需要復制sequence序列,以保證切換到早納顫備庫時業務可以正常進行*/

/*初始化備庫數據後,確保已與主庫完全一致*/
primary:
SQL>selectsum(t2)fromtv;

SUM(T2)
----------
2498624495

SQL>selectlast_numberfromuser_sequences;

LAST_NUMBER
-----------
100001

standby:
SQL>selectsum(t2)fromtv;

SUM(T2)
----------
2498624495

SQL>selectlast_numberfromuser_sequences;

LAST_NUMBER
-----------
100001
以上完成准備工作後,我們可以進入到正式配置Goldengatelivestanby的階段,包括以下步驟:
配置由主庫到備庫的extract、replicat、datapump,該步驟同普通的單向復制沒有太大的區別
配置由備庫到主庫的extract、replicat、datapump
啟動由主庫到備庫的extract、replicat、datapump
接下來我們會實踐整個配置過程:
1.
創建由主庫到備庫的extract、datapump、replicat
GGSCI(rh2.oracle.com)10>dbloginuseridmaclean
Password:
.

GGSCI(rh2.oracle.com)11>addtrandataclinic.*
.TV


GGSCI(rh2.oracle.com)4>addextractextstd1,tranlog,beginnow
EXTRACTadded.

GGSCI(rh2.oracle.com)5>addexttrail/d01/ext/cl,megabytes100,extractextstd1
EXTTRAILadded.

GGSCI(rh2.oracle.com)7>viewparamsextstd1

--IdentifytheExtractgroup:
EXTRACTextstd1
--:
useridmaclean,passwordmaclean
--:
EXTTRAIL/d01/ext/cl
--Specifysequencestobecaptured:
SEQUENCEclinic.seqt1;
--Specifytablestobecaptured:
TABLEclinic.*;
--:
--TABLEEXCLUDE

GGSCI(rh2.oracle.com)17>addextractpumpstd1,exttrailsource/d01/ext/cl,beginnow
EXTRACTadded.

GGSCI(rh2.oracle.com)98>addrmttrail/d01/rmt/cl,megabytes100,extractpumpstd1
RMTTRAILadded.

GGSCI(rh2.oracle.com)129>viewparamspumpstd1
--Identifythedatapumpgroup:
EXTRACTpumpstd1
useridmaclean,passwordmaclean
--:
useridmaclean,passwordmaclean
RMTHOSTrh3.oracle.com,MGRPORT7809
--:
RMTTRAIL/d01/rmt/cl
--Passdatathroughwithoutmapping,filtering,conversion:
PASSTHRU
sequenceclinic.seqt1;
Tableclinic.*;


在備庫上配置由主庫到備庫的replicat:

GGSCI(rh3.oracle.com)4>addreplicatrepstd1,exttrail/d01/rmt/cl,beginnow
REPLICATadded.

GGSCI(rh3.oracle.com)49>viewparamsrepstd1
--IdentifytheReplicatgroup:
REPLICATrepstd1
--:
ASSUMETARGETDEFS
--:
useridmaclean,passwordmaclean
--Specifytablesfordelivery:
MAPclinic.*,TARGETclinic.*;
--:
--MAPEXCLUDE

2.
創建由備庫到主庫的extract、datapump、replicat

GGSCI(rh3.oracle.com)51>dbloginuseridmaclean
Password:
.

GGSCI(rh3.oracle.com)52>addtrandataclinic.*
.TV.

/*不要忘記在備庫端的相關表加上追加日誌*/

GGSCI(rh3.oracle.com)53>addextractextstd2,tranlog,beginnow
EXTRACTadded.

GGSCI(rh3.oracle.com)54>addexttrail/d01/ext/cl,megabytes100,extractextstd2
EXTTRAILadded.

GGSCI(rh3.oracle.com)58>viewparamsextstd2
--IdentifytheExtractgroup:
EXTRACTextstd2
--:
useridmaclean,passwordmaclean
--:
EXTTRAIL/d01/ext/cl
--Specifysequencestobecaptured:
SEQUENCEclinic.seqt1;
--Specifytablestobecaptured:
TABLEclinic.*;
--:
--TABLEEXCLUDE

GGSCI(rh3.oracle.com)59>addextractpumpstd2,exttrailsource/d01/ext/cl,beginnow
EXTRACTadded.

GGSCI(rh3.oracle.com)60>addrmttrail/d01/rmt/cl,megabytes100,extractpumpstd2
RMTTRAILadded.

GGSCI(rh3.oracle.com)63>viewparamspumpstd2

--Identifythedatapumpgroup:
EXTRACTpumpstd2
useridmaclean,passwordmaclean
--:
useridmaclean,passwordmaclean
RMTHOSTrh2.oracle.com,MGRPORT7809
--:
RMTTRAIL/d01/rmt/cl
--Passdatathroughwithoutmapping,filtering,conversion:
PASSTHRU
sequenceclinic.seqt1;
Tableclinic.*;

在主庫上配置replicat:


GGSCI(rh2.oracle.com)136>addreplicatrepstd2,exttrail/d01/rmt/cl,beginnow,checkpointtablemaclean.ck
REPLICATadded.

GGSCI(rh2.oracle.com)138>viewparamsrepstd2

--IdentifytheReplicatgroup:
REPLICATrepstd2
--:
ASSUMETARGETDEFS
--:
useridmaclean,passwordmaclean
--Specifytablesfordelivery:
MAPclinic.*,TARGETclinic.*;
--:
--MAPEXCLUDE

3.
完成以上OGG配置後,可以啟動主庫到備庫的extract、pump、以及replicat:
GGSCI(rh2.oracle.com)141>startextstd1
SendingSTARTrequesttoMANAGER...
EXTRACTEXTSTD1starting


GGSCI(rh2.oracle.com)142>startpumpstd1
SendingSTARTrequesttoMANAGER...
EXTRACTPUMPSTD1startingGGSCI(rh3.oracle.com)70>startrepstd1
SendingSTARTrequesttoMANAGER...
REPLICATREPSTD1starting

/*如果你是在offline狀態下配置的話,那麼此時可以啟用應用了*/
接下來我們嘗試做有計劃的主備庫切換演練:
1.
首先停止一切在主庫上的應用,這一點和DataGuardSwitchover一樣。在保證沒有活動事務的情況下,才能切換干凈。
2.
在主庫端使用LAG等命令了解extract的延遲,若返回如"AtEOF,nomorerecordstoprocess"的信息,則說明所有事務均已被抽取。
GGSCI(rh2.oracle.com)144>lagextstd1
...
Lastrecordlag:0seconds.
AtEOF,nomorerecordstoprocess.

在EOF的前提下關閉extract:
GGSCI(rh2.oracle.com)146>stopextstd1
...
Requestprocessed.

3.
同樣對pump使用LAG命令,若返回如"AtEOF,nomorerecordstoprocess"的信息,則說明已抽取的數據都被發送到備庫了。
GGSCI(rh2.oracle.com)147>lagpumpstd1
...
Lastrecordlag:3seconds.
AtEOF,nomorerecordstoprocess.

在EOF的前提下,關閉datapump
GGSCI(rh2.oracle.com)148>stoppumpstd1
...
Requestprocessed.

3.
檢查備庫端replicat的同步情況,如返回"AtEOF,nomorerecordstoprocess.",則說明所有記錄均被復制。
GGSCI(rh3.oracle.com)71>lagrepstd1
...
Lastrecordlag:5seconds.
AtEOF,nomorerecordstoprocess.

在EOF的前提下關閉replicat

GGSCI(rh3.oracle.com)72>stoprepstd1
...
Requestprocessed.

4.
緊接著我們可以在備庫上為業務應用用戶賦予必要的insert、update、delete許可權,啟用各種觸發器trigger及cascadedelete約束等;
以上手段在主庫上對應的操作是收回應用業務的許可權,disable掉各種觸發器及cascadedelete約束,
之所以這樣做是為了保證在任何時候扮演備庫角色的資料庫均不應當接受任何除了OGG外的手動的或者應用驅動的業務數據變更,
以保證主備庫間的數據一致。

5.
修改原備庫上的extract的啟動時間到現在,已保證它不去抽取那些之前的重做日誌

GGSCI(rh3.oracle.com)75>alterextstd2,beginnow
EXTRACTaltered.

GGSCI(rh3.oracle.com)76>startextstd2

SendingSTARTrequesttoMANAGER...
EXTRACTEXTSTD2starting


若之前沒有啟動由備庫到主庫的pump和replicat的話可以在此時啟動:

GGSCI(rh3.oracle.com)78>startpumpstd2

SendingSTARTrequesttoMANAGER...
EXTRACTPUMPSTD2starting

GGSCI(rh2.oracle.com)161>startrepstd2

SendingSTARTrequesttoMANAGER...
REPLICATREPSTD2starting

6.此時我們可以正式啟動在原備庫現在的主庫上的應用了


接下來我們嘗試回切到原主庫上:
1.前提步驟與之前的切換相似,首先停止在原備庫上的任何應用,
之後使用LAG命令確認extract和replicat的進度,在確認後關閉extract和replicat。
完成在主庫上的維護工作:包括賦予許可權,啟用觸發器等等。

2.修改原主庫上的extract的開始時間為當前,保證它不去處理之前的重做日誌:
GGSCI(rh2.oracle.com)165>alterextractextstd1,beginnow
EXTRACTaltered.

3.此時我們已經可以啟動在原主庫現在的主庫上的應用了

4.啟動最早配置的由主庫到備庫的extract、pump、replicat:

GGSCI(rh2.oracle.com)166>startextstd1

SendingSTARTrequesttoMANAGER...
EXTRACTEXTSTD1starting

GGSCI(rh2.oracle.com)171>startpumpstd1

SendingSTARTrequesttoMANAGER...
EXTRACTPUMPSTD1starting

GGSCI(rh3.oracle.com)86>startrepstd1

SendingSTARTrequesttoMANAGER...
REPLICATREPSTD1starting


以上完成了OGG的LiveStandby中主備庫之間的計劃內的切換Switchover,That'sGreat!

9. Qt ODBC Driver not loaded怎麼辦

使用odbc連接資料庫時報友汪錯driver not loaded,解決方法:
1)
cd %QTDIR%\src\plugins\sqldrivers\odbc
qmake -o Makefile odbc.pro
make/mingw32-make.exe
將在%QTDIR%\plugins\sqldrivers\odbc下生好答仔成qsqlodbc4.dll和libqsqlodbc4.a
2)在代碼中增加Q_IMPORT_PLUGIN(qsqlodbc)
3)在.pro文件中增加QTPLUGIN += qsqlodbc
4)建議先進行make clean
5)mysql、舉碰postgresql類似

10. QtSql編程RedHat linux系統下oracle資料庫中文亂碼

  1. 首先確認你的NLS_LANG環境變數是AMERICAN_AMERICA.US7ASCII,拼寫無誤

  2. 統一編碼設置:

    統一GBK編碼(gbk或gb18030)
    QTextCodec*gbkTC=QTextCodec::codecForName("gbk");
    QTextCodec::setCodecForTr(gbkTC);
    QTextCodec::setCodecForLocale(gbkTC);
    QTextCodec::setCodecForCStrings(gbkTC);

    統一UTF8編碼(utf-8或utf8)
    QTextCodec*utg8TC=QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForTr(utg8TC);
    QTextCodec::setCodecForLocale(utg8TC);
    QTextCodec::setCodecForCStrings(utg8TC);
  3. 編碼轉換/前提也是要設置默認編碼,然後針對來源字元串的編碼進行轉換,例如:

    QTextCodec*gbkTC=QTextCodec::codecForName("gb18030");
    QTextCodec*utg8TC=QTextCodec::codecForName("utf-8");

    QTextCodec::setCodecForTr(gbkTC);
    QTextCodec::setCodecForLocale(gbkTC);
    QTextCodec::setCodecForCStrings(gbkTC);

    1.UTF-8轉換GBK
    QStringUTF2GBK(QStringutfStr)
    {
    returngbkTC->toUnicode(utfStr.toLocal8Bit());
    }

    2GBK轉換UTF-8
    QStringGBK2UTF(QStringgbkStr)
    {
    returnutg8TC->toUnicode(gbkStr.toUtf8());
    }