创建Oracle同义词带来的3种意外惊喜
创始人
2024-06-29 00:21:17
0

Oracle数据库中提供了同义词管理的功能。Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、函数、JAVA类、包等等,数据库管理员都可以根据实际情况为他们定义同义词。通过Oracle数据库同义词管理,可以给数据库管理员与应用程序开发人员带来不少惊喜。

惊喜一:应用程序开发可以不管数据库的具体对象名。

在应用程序中,要不断的调用Oracle数据库的对象,如表、视图、对象等等。为此,在管理软件开发的过程中,若应用程序已经完成了某部分功能的开发。此时,数据库管理员若一定需要更改某个数据库对象的命名。那么,此时应用程序也需要调整。这在实际工作中,会很不方便。特别是有些应用程序如果提供了功能自定义平台的话,会非常的麻烦。如在一个ERP软件中,有报表自定义功能。在系统中,原来就有一张供应商产品明细表。但是,用户觉得这张报表信息不够齐全。用户希望能够显示出某个零件所对应的成品。此时,用户可以更改原有的数据库对象来完成这个自定义。但是,这往往不被建议这么做。因为若不小心修改错误,那么就很难再修改回来。所以自定义平台中,若需要对原有报表进行比较大的变更时,往往建议用户另外建立一个视图,来收集自己所需要的信息。若这么做的话,那么用户不仅需要定义数据库对象,而且还要重新调整前台应用程序的报表格式。显然这工作量有多大。

而现在有了Oracle同义词功能的话,这一切都会变得方便。因为前台应用程序可以不用作调整,而只需把数据库对象同义词进行重新定义即可。这既保障了前台应用程序的可恢复性;同时也降低了工作量。这就是Oracle数据库同义词给我们带来的第一个惊喜。

惊喜二:避免应用程序直接访问数据库对象,提高数据库安全性。

在开发数据库应用程序的时候,应当普遍遵守的一个规则是尽量避免直接饮用数据库的表、视图、函数或者其他对象。因为这会在很大程度上破坏数据库的安全性。

如在前台应用程序中直接调用数据库对象,那么攻击者只需要对应用程序所引用的对象进行分析,就可以很容易的了解后台数据库的基本逻辑结构。这显然会为攻击者提供很大的便利。所以,为了保障数据库的安全,前台应用程序最好通过同义词来访问后台数据库。如此的话,攻击者就很难通过前台应用程序的调用,来分析后台数据库的对象,以及对象之间的关系。

惊喜三:简化数据库对象的访问。

有时候,我们某个数据库对象的名字可能会很长,如AD_USER_ROLE_NAME_TRL。若每次调用这个数据库对象的时候,都要输入这么长的对象名,肯定会让数据库管理员很头疼。但是,若名字定义的太短了呢,可读性就不好。其他一些数据库,只有牺牲可读性,把数据库对象的名字尽量缩短。

不过在Oracle数据库中,则可以不用这个烦恼。因为我们可以给这个数据库对象设置一个Oracle同义词,就好像别名一样。如此的话,在访问的时候,只需要通过同义词访问即可,而不需要输入这么长的对象名。

除了上面三个应用之外,在分布式数据库系统中,为存储在远程数据库中的对象创建同义词,使用户可以像使用本地对象一样对远程对象进行操作,就不需要提供网络连接名进行限定了。显然,这也会给一些分布式数据库管理员带来很大的便利。

Oracle同义词有两种类型,分别是公用同义词与方案同义词。

1)公用Oracle同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。在引用这些对象时,并不需要在其前面添加一个Public所有者名字作为限定。否则的话,如果在一个公用同义词前加上一个Public,就是画蛇添足,系统反而会给出一个错误提示。不过在实际应用中,笔者不建议用户采用公用同义词。因为现在系统中,公用同义词已经有很多。若用户仍然为数据库定义公用同义词的话,不能够起到简化数据库对象访问的作用。

2)方案Oracle同义词:它是是跟公用同义词所对应,他是由创建他的用户或者方案所有。故也被称为私有同义词。当然,这个同义词的创建者,可以控制其他用户是否有权使用属于自己的方案同义词。方案同义词经常在应用程序开发中使用,为应用开发提供命名上的解决方案。如当一个数据库对象,如一张表,被重命名或者被复制成新的表时,并且新名字与老名字都需要使用的情况下,数据库管理员就可以使用方案同义词,即为老名字和新名字都建立专用同义词,不过他们都同时指向同一个数据库对象。

其实创建方案同义词也很简单。不过其必须要有一个前期条件,就是必须要拥有一定的权限,如CREATE SYNONYM权限,若是要在他人的方案中建立同义词的话,则还必须拥有CREATE ANY SYNONYM权限等等。这些是必须遵循的首要条件。否则的话,就不能够建立同义词。

另外需要注意的是,即使在数据库对象不存在的情况下,也可以为预计要建立的数据库对象设置同义词。这个特性很好用,它可以帮助数据库开发团队或者应用程序开发团队进行更高的协作。如只要数据库管理员跟应用程序预先做好对象的命名与同义词的定义工作,那么即使数据库管理员还没有开发好某个数据库对象,前台应用程序开发人员也可以通过引用同义词的方式引用为建立的数据库对象。如此的话,就不会因为某一步工作没有完成而给其他人的工作带来什么负面影响。

【编辑推荐】

  1. 详解Oracle创建用户权限全过程
  2. 详解Oracle创建用户授权与修改密码
  3. Oracle创建临时表空间用到的代码的示例
  4. Oracle创建表空间的实操
  5. Oracle创建表空间的代码示例

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...