Oracle查看用户

时间:2011-07-05 12:46:45

标签: oracle object schema

现在我已经了解了Oracle中模式对象的概念及其在匹配表名时的顺序。

对于用户XYZ发出的sql查询并访问FOO_TABLE,优先顺序是检查

  1. 用户表:XYZ.FOO_TABLE
  2. 用户同义词:XYZ.FOO_TABLE
  3. 公共同义词:PUBLIC.FOO_TABLE
  4. 查看XML中视图的以下数据:

    <ROW>
        <OWNER>XYZ</OWNER>
        <VIEW_NAME>BAR_VIEW</VIEW_NAME>
        <TEXT_LENGTH>...</TEXT_LENGTH>
        <TEXT>
            SELECT *
            FROM SOME_NAME
        </TEXT>
        <EDITIONING_VIEW>N</EDITIONING_VIEW>
        <READ_ONLY>N</READ_ONLY>
    </ROW>
    

    如果我想找到SOME_TABLE的所有者,我可以开始查看以下订单吗?

    1. 用户表:XYZ.SOME_NAME
    2. 用户同义词:XYZ.SOME_NAME
    3. 公共同义词:PUBLIC.SOME_NAME
    4. 最佳, 将

1 个答案:

答案 0 :(得分:2)

你的陈述实际上可以在某种程度上简化为:

  1. 用户对象:XYZ.SOME_TABLE
  2. 公共同义词:PUBLIC.SOME_TABLE
  3. 此规则适用于所有数据库对象(表,包等)。本地同义词步骤不是必需的,因为1)它是本地对象,2)Oracle不允许本地对象之间的名称冲突(即,您不能在一个具有相同名称的模式中具有同义词和表)。

    这里唯一的限定符是,如果视图定义包含模式(SELECT * FROM SOME_SCHEMA.SOME_TABLE)或数据库链接(SELECT * FROM SOME_TABLE@SOME_DB_LINK),则名称解析是从指示的模式完成的(如果是DB链接,来自DB链接定义中指示的模式。