Oracle:是否可以为模式创建同义词?

时间:2010-09-23 15:42:23

标签: oracle schema synonym

首先

我是一个神谕新手,我没有当地的神谕大师来帮助我。

这是我的问题/问题

我有一些SQL脚本必须发布到许多Oracle实例。 脚本创建存储过程 创建存储过程的模式与包含存储过程正在读取的表的模式不同。

在不同的实例上,包含表的模式具有不同的名称。

显然,我不想编辑脚本以使它们针对不同的实例进行定制。

有人向我建议,解决方案可能是设置同义词。

是否可以在每个实例上定义表模式的同义词,并在我的脚本中使用同义词?

有没有其他方法可以在不编辑脚本的情况下完成这项工作?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

了解Oracle的版本有所帮助,但as of 10g--No, you can't make a synonym for a schema 您可以为表创建同义词,这样您就不会在脚本中指定架构。但这意味着同义词必须在每个实例上都相同才有用......

另一个选项是用变量替换模式引用,因此当脚本运行时,系统会提示用户输入模式名称。我更喜欢这种方法,因为它的工作量较少。这是一个可以在SQLPlus中使用的示例:

CREATE OR REPLACE &schema1..vw_my_view AS
  SELECT *
    FROM &&schema2..some_other_table

这样做的好处是,运行脚本的人只会为每个变量提示一次,而不是每次遇到变量。所以要小心拼写错误:)

答案 1 :(得分:2)

是的,有一种隐藏的方法可以创建模式同义词。

隐藏参数_enable_schema_synonyms。它默认为false,但您可以将其设置为true并创建同义词。

答案 2 :(得分:2)

是的,您可以为架构创建同义词。

select ksppinm, ksppstvl from x$ksppi a, x$ksppsv b where a.indx=b.indx and ksppinm like '%schema%synonym%'
ALTER SYSTEM SET  "_enable_schema_synonyms" = true SCOPE=SPFILE;
STARTUP FORCE
show parameter synonym

假设您已经有一个名为ORA的模式......

CREATE SCHEMA SYNONYM  ORASYN for ORA;   -- create synonym for schema
CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema

此处提供更多信息:http://oracle-network.com/database/how-to-create-synonym-for-a-schema/