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

kokeuurv  于 2023-01-25  发布在  Oracle
关注(0)|答案(3)|浏览(126)

首先
我是一个甲骨文新手,我没有一个当地的甲骨文大师来帮助我。

这是我的问题/疑问

我有一些SQL脚本,它们必须发布到许多Oracle示例中。这些脚本创建存储过程。
创建存储过程的架构与包含存储过程从中读取的表的架构不同。
在不同的示例上,包含表的模式具有不同的名称。
显然,我不希望必须编辑脚本来使它们为不同的示例定制。
有人向我建议,解决办法可能是设置同义词。
是否可以为每个示例上的表模式定义一个同义词,并在脚本中使用该同义词?
有没有其他方法可以使它工作而不必每次都编辑脚本?
谢谢你的帮助。

szqfcxe2

szqfcxe21#

可以,您可以为方案创建同义词。

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

更多信息请访问:https://dbaclass.com/article/how-to-create-synonym-for-a-schema/

2mbi3lxu

2mbi3lxu2#

这将有助于知道什么版本的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

这样做的好处是,运行脚本的人只会对每个变量提示一次,而不是每次遇到变量时都提示。因此,要小心错别字:)

lyfkaqu1

lyfkaqu13#

是的,有一种隐藏的方法可以创建模式同义词。
有一个隐藏的参数_enable_schema_synonyms,默认为false,但可以将其设置为true并创建同义词。

相关问题