Oracle中,数据库对象名称的解析顺序:
-
Oracle首先查看在发出命令的用户模式中是否存在表或视图。
-
如果表或视图不存在,Oracle检查私有同义词是否存在。
-
如果私有同义词存在,将使用这个同义词所引用的对象。
-
如果私有同义词不存在,检查同名的公共同义词是否存在。
-
如果公共同义词存在,将使用这个同义词所引用的对象。
-
如果公共同义词不存在,Oracle返回消息”ORA-00942 table or view does not exit”。
我们可以看到,Oracle对数据库对象的解析顺序是:①表或视图——>②私有同义词——>③公共同义词——>④返回ORA-00942错误
这里需要注意的是,在同一schema下,如果已经存在表或视图,则与其重名的同义词将不能被创建。但是可以创建public的synonym。
相关推荐
- **题目解析**:在Oracle数据库中,系统全局区(System Global Area, SGA)是数据库实例启动时分配的一块共享内存区域,用于存储数据库的数据和控制信息。SGA包括多个内存结构,如数据缓冲区、重做日志缓冲区、共享池...
- 绑定变量名称一致:如果SQL语句中包含绑定变量,这些变量的名称也必须完全相同。 通过遵循上述原则,可以显著提高Oracle数据库的性能和响应时间。例如,在生产环境中,合理的优化器选择和高效的表访问策略可以极...
1. **全表扫描**:即顺序访问表中的所有记录。尽管这种方式简单直接,但在处理大量数据时效率较低。 2. **通过ROWID访问表**:ROWID是指向表中特定记录的唯一标识符,包含了该记录的物理位置信息。利用ROWID可以...
当第一次执行某个SQL语句时,Oracle会在内存中解析并缓存这个语句及其执行计划。这个缓存位于系统全局区(SGA)的共享池中,可供所有数据库用户共享。 共享SQL语句的好处包括: - 减少重复解析SQL语句的时间。 - ...
Oracle支持SQL语句的共享机制,即首次解析后将语句存储在内存中,以便后续执行时可以直接复用已有的执行计划。这种机制有助于提高SQL执行性能并减少内存消耗。 - **共享池**:位于SGA中的共享池负责存储已解析的SQL...
3. **使用相同的绑定变量名称**:如果SQL语句中包含绑定变量,那么这些绑定变量的名称也必须完全一致。 ### 示例分析 假设存在两个用户:Jack和Jill。Jack拥有私有同义词`sal_limit`,而Jill也拥有一个同名的私有...
1. **SQL语句缓存**:首次解析后,Oracle会在共享池(shared pool)中缓存SQL语句及其执行计划。共享池位于系统全局区域(SGA)中,所有数据库用户都可以访问。这样,相同的SQL语句再次执行时可以直接使用已有的执行...
全表扫描适用于小表或简单查询,它按照顺序读取表中的所有记录。然而,对于大型表,这种方式可能导致性能瓶颈。相比之下,基于ROWID的访问方式利用ROWID(记录的物理地址)快速定位记录,特别适用于涉及索引列的查询...
通过以上分析可以看出,为了充分利用Oracle的SQL语句共享机制,需要确保SQL语句的书写格式、引用的对象以及绑定变量名称的一致性。此外,合理选择优化器类型也是提升数据库性能的重要手段之一。
Oracle将已解析的SQL语句存储在共享池中,这是SGA(System Global Area)的一部分,可以被所有数据库用户共享。 **共享SQL语句的关键点**: - **字符级比较**: 执行的SQL语句必须与共享池中的语句完全相同,包括空格...
### ORACLE DBA面试题集知识点解析 #### 1. 共享池中的内存层有多少? **知识点解析:** 共享池是Oracle SGA(System Global Area)的一个重要组成部分,主要用于存储共享的数据结构,如SQL区域、PL/SQL代码、数据...
为了提高性能并节省内存资源,Oracle会在首次解析SQL语句后将其存放在共享池中,供后续使用。这意味着如果两次执行相同的SQL语句,第二次执行时可以直接使用已解析的结果,无需再次进行解析。 1. **共享池**:位于...
4. **SYS_DBURIGEN({column|attribute})**:此函数用于生成基于数据库对象的URL,便于访问数据库中的资源。在示例中,它基于DISPLAYNAME列生成URL。 5. **SYS_XMLAGG(expr[,fmt])**:这个聚合函数将多个XML文档...
- 对象名称是识别数据库中对象的唯一标识符。 - **6.4 共享SQL依赖管理** - 共享SQL依赖管理涉及到如何有效地管理SQL语句在不同模式对象间的共享。 - **6.5 本地和远程依赖管理** - 本地依赖指的是在同一数据库内...
1. **全表扫描**:这种方式顺序地访问表中的每一行记录。虽然这种方式在某些情况下可能是必要的,但对于大型表而言,它可能会导致性能问题。Oracle通过一次读取多个数据块来优化全表扫描的过程。 2. **通过ROWID...
如果后续有相同的SQL语句提交,Oracle可以直接利用共享池中的已解析语句和执行计划,避免了重复的解析过程,提高了SQL语句执行效率,并节省了内存资源。 然而,共享池并非适用于所有SQL语句。尤其是涉及到多表连接...