当前位置:首页 » 数据仓库 » 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());
    }