小编Lei*_*fel的帖子

在 Oracle 中进行 PL/SQL 工作的应用程序开发人员的安全性

您如何处理 Oracle 中缺少 Schema 级别的权限?Oracle 的安全架构适用于只需要对象级权限的应用程序,也适用于需要很少限制的 DBA。然而,对于在多模式中使用前端应用程序和 PL/SQL 进行开发的程序员来说,架构中似乎存在一个很大的漏洞。以下是我的一些选择及其缺点:

  1. 让每个程序员按照自己的模式进行开发。DBA 将向需要它们的程序员授予对象级权限。任何包开发都必须由 DBA 完成。主要的缺点是程序员会像比特桶一样使用数据库,这会损害数据库性能。我希望程序员在数据库中开发,但这种方法会大大阻止它。

  2. 为每个程序员提供他们需要在其中进行开发的十几个模式的用户名/密码。授予这些应用程序模式权限以创建过程、表等。这种方法的一些缺点是程序员必须维护多个登录,并且很少以自己的身份登录。跨模式开发也很困难。

  3. 授予程序员对他们需要进行开发的每个模式的代理身份验证权限。这使他们能够以自己的身份登录,而无需授予他们代理特权以外的特权。缺点包括程序员必须为他们代理的每个模式维护单独的连接,跨模式开发更加麻烦,因为连接必须不断变化,并且使用公共数据库链接并通过身份验证的包不会在代理连接内编译。

  4. 赋予每个程序员 DBA 权限。– 这里的缺点是安全性。任何模式程序员都不能被排除在任何模式之外,任何程序员都可以冒充任何其他程序员 (DBA)。

似乎缺少授予每个程序员 SELECT/INSERT/CREATE/etc 的选项。他们需要在其中进行开发的架构上的特权。他们以自己的身份登录以使用一个连接完成他们的工作。他们有权访问的模式中的新对象立即可用。

我错过了什么吗?您如何处理进行 PL/SQL 开发的应用程序程序员?

oracle security database-design oracle-11g-r2

13
推荐指数
1
解决办法
3860
查看次数

在 Oracle 中,如何将 sequence.nextval 保存在变量中以在多个插入中重用?

我正在编写一个脚本来用数据填充一些表以进行测试。

我想写如下内容,但我不知道该怎么做(我是 Oracle 11g)

SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE
SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE

INSERT INTO USERS
        (ID,      USR_NAME)
VALUES  (:ENABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
       (CAR_ID,         CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD',   :ENABLED_USER_ID);

INSERT INTO USERS
        (ID,      USR_NAME)
VALUES  (:DISABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
       (CAR_ID,         CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD',   :DISABLED_USER_ID);
Run Code Online (Sandbox Code Playgroud)

我知道我可以重新排列查询并使用sequence.currval引用,但我更喜欢将 id 保存在正确命名的变量中。

也许我应该将脚本包装在 a 中,DECLARE ... BEGIN ... END;但我希望有一种更简洁的方法来做到这一点。


2011 年 5 月 27 日 15:31

似乎无论如何我都必须在DECLARE块中声明变量。所以我正在尝试

DECLARE
  USER_ID NUMBER(10,0) := …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g

13
推荐指数
4
解决办法
5万
查看次数

包相对于独立的过程和函数有什么好处?

寻找一个规范的答案来回答为什么包应该在 Oracle 数据库中比独立的过程和函数更受欢迎。

oracle plsql

13
推荐指数
1
解决办法
2万
查看次数

为什么我们需要备份 Oracle 归档日志和数据文件

Oracle® 数据库备份和恢复基础知识 10g 第 2 版 (10.2) 说

归档重做日志是成功恢复媒体的关键。定期备份它们。

但是,我想知道为什么存档日志的备份如此重要。是否可以仅使用常规 RMAN 完整和增量数据文件备份进行时间点恢复。

oracle backup rman

12
推荐指数
2
解决办法
2万
查看次数

LNNVL 理由

LNNVL 是一个内置函数的预言机,它在条件评估为 FALSE 或 UNKNOWN 时返回 TRUE,并在条件评估为 TRUE 时返回 FALSE。我的问题是返回与真值条件相反的值而不是仅处理 NULL 值有什么好处?

例如,假设您有一个 Emp 表,其中包含可能包含空值的 StartCommission 和 CurrentCommission 列。以下仅返回值都不为 null 的行:

SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
Run Code Online (Sandbox Code Playgroud)

如果您想包含其中任何一个佣金为空的行,您可以执行以下操作:

SELECT * FROM Emp WHERE StartCommission = CurrentCommission 
OR StartCommission IS NULL OR CurrentCommission IS NULL;
Run Code Online (Sandbox Code Playgroud)

似乎存在一个函数来缩短此语法,但使用 LNNVL 会返回所有不相等的记录和所有具有空值的记录。

SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
Run Code Online (Sandbox Code Playgroud)

添加 NOT 只返回没有空值的行。在我看来,这种情况下所需的功能是保持真条件为真,假条件为假,并使未知条件评估为真。我真的在这里创建了一个低用例吗?是否真的更可能想要将未知变为真、将真变为假、将假变为真?

create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2));
insert into emp values (null,null);
insert into emp values (null,.1);
insert into …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 oracle-11g

12
推荐指数
2
解决办法
2248
查看次数

MySQL Workbench 数据库大小

我正在尝试查找所有 MySQL Workbench 数据库都在使用的硬盘上的总大小。

有谁知道一种简单的方法来解决这个问题?

如果不出意外,默认位置 mysql/workbench 用于在 Windows 机器上保存原始数据?

提前致谢!昆蒂斯

mysql windows mysql-workbench database-size

12
推荐指数
1
解决办法
8405
查看次数

是否有任何数据库引擎会根据现有外键来直觉连接条件?

令我感到奇怪的是,当我定义了外键时,引擎无法使用此信息自动找出正确的 JOIN 表达式,而是要求我重新键入相同的子句。是否有任何数据库,也许是某种研究项目,可以检查现有的外键?

join foreign-key database-recommendation feature-comparison

11
推荐指数
1
解决办法
231
查看次数

将 bak 文件还原为较小的 mdf 和 ldf 数据库文件

我有一个遗留数据库,它可怕的设计缺乏我不会在这里介绍,但服务器上的文件(相对)巨大。我有:

我的数据库.mdf
:24.8GB 我的数据库.ldf :114.6GB

该数据库每晚备份到一个 .bak 文件,然后发送到我们的报告服务器,在那里恢复。.bak 文件要小得多,只有 1.8GB。

但是,当我尝试在报告服务器上还原它时,由于空间不足而失败。服务器上有大约 100GB 的可用空间,它试图吃掉原始服务器上文件消耗的全部 139.4GB。除非我的压缩知识大错特错,否则我很有信心 1.8GB 的​​文件实际上并没有扩展 7400%。

我的问题:有没有办法告诉 SQL Server 恢复这个备份文件而不预先保留那个空间?我不关心任何日志;我只需要数据就在那里。我从开发和模式的角度理解数据库,但我绝不是任何类型的 DBA。

这是在 SQL Server 2008 R2 上。感谢您的任何帮助或建议。

sql-server-2008 sql-server sql-server-2008-r2 recovery

11
推荐指数
1
解决办法
6338
查看次数

用于小型微控制器的快速数据库

我使用的是 PIC32,它是一个 32 位处理器,时钟频率为 80 MIPS,有大约 64-128KB 的可用 RAM。它将在 FAT32 文件系统上访问 microSD 卡 - 最大 4 GB。运行所有这些都在推动它,但我需要一个紧凑的数据库,可以轻松地移植到这个平台并且速度快。有没有人有什么建议?

embedded database-recommendation

10
推荐指数
1
解决办法
4261
查看次数

不是管理员可以在 Windows 上安装 Oracle 吗?

没有管理员权限可以在windows上安装oracle软件吗?

oracle windows

10
推荐指数
2
解决办法
5573
查看次数