Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle10g 创造另一个_Oracle10g - Fatal编程技术网

Oracle10g 创造另一个

Oracle10g 创造另一个,oracle10g,Oracle10g,我试图创建一个新角色,该角色将拥有公共角色的所有特权,然后从公共角色中删除所有特权。这是出于安全目的 这就是问题所在。我无法将SYS./1005bd30_LnkdConstant和其他具有相同格式的文件授予我的新角色 样本: SYS./10076b23_或customdatumclosur SYS./100c1606_标准MIDI文件读取 ORDSYS./1013c29d_平面图像服务器Pro . . 我真的需要这些吗?或者我的新“公众”角色可以不需要这些吗 任何帮助都将不胜感激。让我在这里快

我试图创建一个新角色,该角色将拥有公共角色的所有特权,然后从公共角色中删除所有特权。这是出于安全目的

这就是问题所在。我无法将SYS./1005bd30_LnkdConstant和其他具有相同格式的文件授予我的新角色

样本:

SYS./10076b23_或customdatumclosur SYS./100c1606_标准MIDI文件读取 ORDSYS./1013c29d_平面图像服务器Pro . .

我真的需要这些吗?或者我的新“公众”角色可以不需要这些吗


任何帮助都将不胜感激。

让我在这里快速猜测一下。您遇到的问题是对象名称区分大小写。快速修复方法是将对象名称用双引号括起来,如下所示

GRANT EXECUTE ON SYS."/1005bd30_LnkdConstant" TO mynewpublicrole;
您表示“无法向角色授予[在]SYS./1005bd30_LnkdConstant上执行”。
我认为这意味着当你运行GRANT语句时,Oracle提出了一个异常,很可能

  ORA-00903: invalid table name
将objectname括在双引号中(如示例所示)可以解决该问题

无法回答您的新角色是否需要对这些对象执行权限的问题。嗯,这个角色不一定需要他们。问题是用户是否需要它们(是直接授予的,还是通过角色间接授予的),这可以通过彻底的测试来确定


其他一些评论

如果您打算创建一个新角色并将该角色授予所有用户,那么我看不到安全性有任何改变或改进。所以,我假设情况并非如此

看来你是在试图运用“最少特权”的原则。我赞扬这一努力

我看到应用程序开发人员遵循的最常见的模式之一是让应用程序作为模式对象的所有者连接到数据库。这意味着应用程序拥有它可能不需要的各种特权,例如DROP TABLE、ALTER PROCEDURE等

我们使用的模式是有一个拥有模式对象的“所有者”用户,和一个单独的“应用程序”用户,该用户对“所有者”对象具有它所需的特定权限,以及“所有者”对象的同义词。(同义词允许引用OWNER.object,而无需对OWNER进行限定。)不用说,我们不向PUBLIC授予特权,而是在需要时授予角色

我之所以提到这一点,是因为这是我们用来实现“最低特权”原则的一种模式


对于其他安全问题,我建议您查看“Oracle安全检查表”白皮书:


执行GRANT语句时可能遇到的其他一些异常:

  ORA-01031: insufficient privileges


在这两种情况下,请确保以SYS(SYSDBA)的身份连接到数据库以授予特权。我们几乎总是作为对象的所有者授予特权,而不是让其他用户作为被授予者。我几乎从不在对象权限上使用“WITH GRANT选项”。这是一个更简单的模型,避免了依赖关系树的任何潜在问题。

这个问题的标题应该是什么?“在Oracle 10g中创建没有公共权限的角色”?
  ORA-04042: procedure, function, package, or package body does not exist.