基础知识补漏-数据字典
2016-09-08 15:01
267 查看
数据字典
数据字典表(Data dictionary table)用以存储表、索引、约束以及其他数据库结构的信息。 这些对象通常以“$”结尾(例如 TAB$、OBJ$、TS$等),在创建数据库的时候通过运行 sql.bsq 脚本来创建。
DBA_OBJECTS 中有两个字段经常使人误解:OBJECT_ID 和 DATA_OBJECT_ID。这两个字 段分别来自 OBJ$中的 OBJ#和 DATAOBJ#,其中 OBJ#(也即 OBJECT_ID)可以被看作是对 象的逻辑号(类似序列号一样分配),该序号一旦分配之后就不会发生改变;而 DATAOBJ#
(也即 DATA_OBJECT_ID)则是和物理存储关联的编号,通常被认为是对象的物理号,这个 编号会随着对象物理存储结构的改变而发生改变。
不要在 DATAOBJ#上创建索引,因为在空间事务如 TRUNCATE 中, DATAOBJ#会发生改变。
在执行 TRUNCATE 操作时,数据库只是简单的回收空间,将空间标记为可用(并不会去数据块上真正去删除数据), 同时将对象的数据对象重新定位,完成空间回收。那么实际上,虽然 Oracle 并未 供直接的 办法,在原对象存储位置被重新写入数据之前,TRUNCATE 数据仍然是有办法恢复的。
查询当前会话的trace文件(仅11g)
SQL> SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';
Oracle 通过将 DDL 解析为 DML 操作,并且将这些操作记录在数据字典表中。
查询表的ddl语句
set pagesize 99
set long 12000
select dbms_metadata.get_ddl('TABLE','EYGLE') from dual;
静态数据字典视图按照前缀的不同通常被分为三类:
1.USER_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息。
2.ALL_ 类视图包含了用户有权限访问的所有对象的信息。
3.DBA_ 类视图包含了数据库所有相关对象的信息,用户需要 SELECT ANY TABLE 权
限才能访问。
每个用户与方案 (Schema)是对应的,Schema 是用户所拥有的对象的集合。
简要统计不同用户拥 有的表对象数量
select owner,count(*) from dba_tables group by owner order by 2;
创建公共同义词
CREATE PUBLIC SYNONYM sales FOR eygle.sales_data;
除了一些特例以外,每个 V$视图都有一个对应的 GV$视图存在。
v$视图来自gv$视图,gv$视图来自x$表。
V_$视图的权限可以授予其他用户, 而 Oracle 不允许任何对于 V$视图的直接授权。
通常大部分用户访问的 V$对象,并不是视图,而是指向 V_$视图的 同义词;而 V_$视图是基于真正的 V$视图(这个视图是基于 X$表建立的)创建的。
在数据库进行数据访问时,oracle优先访问view,然后是同义词。
动态性能视图是在数据库启动过程中自动创建的,所以在数据库启动的不同阶段,我们能访问的视图也各不相同。
根据object_id查看对象信息
select object_name,object_id,object_type from dba_objects where object_id=841;
oracle对于对象名的解析顺序:
1、oracle首先查看在发出命令的用户模式中是否存在表或视图。
2、如果表或视图不存在,检查私有同义词是否存在。
3、如果私有同义词存在,使用这个同义词所用的对象。
4、如果私有同义词不存在,检查同名的公有同义词是否存在。
5、如果公有同义词存在,将使用这个同义词所引用的对象。
6、如果公有同义词不存在,返回ORA-00942 table or view does not exist
在业务系统的底层,应该尽量避免频繁使用复杂的数据字典视图。
存在long数据类型的表的复制
copy from oti/oti@fwx to oti/oti@fwx create all_tab_columns_temp using select * from all_tab_columns t where t.owner = 'OTI';
数据字典表(Data dictionary table)用以存储表、索引、约束以及其他数据库结构的信息。 这些对象通常以“$”结尾(例如 TAB$、OBJ$、TS$等),在创建数据库的时候通过运行 sql.bsq 脚本来创建。
DBA_OBJECTS 中有两个字段经常使人误解:OBJECT_ID 和 DATA_OBJECT_ID。这两个字 段分别来自 OBJ$中的 OBJ#和 DATAOBJ#,其中 OBJ#(也即 OBJECT_ID)可以被看作是对 象的逻辑号(类似序列号一样分配),该序号一旦分配之后就不会发生改变;而 DATAOBJ#
(也即 DATA_OBJECT_ID)则是和物理存储关联的编号,通常被认为是对象的物理号,这个 编号会随着对象物理存储结构的改变而发生改变。
不要在 DATAOBJ#上创建索引,因为在空间事务如 TRUNCATE 中, DATAOBJ#会发生改变。
在执行 TRUNCATE 操作时,数据库只是简单的回收空间,将空间标记为可用(并不会去数据块上真正去删除数据), 同时将对象的数据对象重新定位,完成空间回收。那么实际上,虽然 Oracle 并未 供直接的 办法,在原对象存储位置被重新写入数据之前,TRUNCATE 数据仍然是有办法恢复的。
查询当前会话的trace文件(仅11g)
SQL> SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';
Oracle 通过将 DDL 解析为 DML 操作,并且将这些操作记录在数据字典表中。
查询表的ddl语句
set pagesize 99
set long 12000
select dbms_metadata.get_ddl('TABLE','EYGLE') from dual;
静态数据字典视图按照前缀的不同通常被分为三类:
1.USER_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息。
2.ALL_ 类视图包含了用户有权限访问的所有对象的信息。
3.DBA_ 类视图包含了数据库所有相关对象的信息,用户需要 SELECT ANY TABLE 权
限才能访问。
每个用户与方案 (Schema)是对应的,Schema 是用户所拥有的对象的集合。
简要统计不同用户拥 有的表对象数量
select owner,count(*) from dba_tables group by owner order by 2;
创建公共同义词
CREATE PUBLIC SYNONYM sales FOR eygle.sales_data;
除了一些特例以外,每个 V$视图都有一个对应的 GV$视图存在。
v$视图来自gv$视图,gv$视图来自x$表。
V_$视图的权限可以授予其他用户, 而 Oracle 不允许任何对于 V$视图的直接授权。
通常大部分用户访问的 V$对象,并不是视图,而是指向 V_$视图的 同义词;而 V_$视图是基于真正的 V$视图(这个视图是基于 X$表建立的)创建的。
在数据库进行数据访问时,oracle优先访问view,然后是同义词。
动态性能视图是在数据库启动过程中自动创建的,所以在数据库启动的不同阶段,我们能访问的视图也各不相同。
根据object_id查看对象信息
select object_name,object_id,object_type from dba_objects where object_id=841;
oracle对于对象名的解析顺序:
1、oracle首先查看在发出命令的用户模式中是否存在表或视图。
2、如果表或视图不存在,检查私有同义词是否存在。
3、如果私有同义词存在,使用这个同义词所用的对象。
4、如果私有同义词不存在,检查同名的公有同义词是否存在。
5、如果公有同义词存在,将使用这个同义词所引用的对象。
6、如果公有同义词不存在,返回ORA-00942 table or view does not exist
在业务系统的底层,应该尽量避免频繁使用复杂的数据字典视图。
存在long数据类型的表的复制
copy from oti/oti@fwx to oti/oti@fwx create all_tab_columns_temp using select * from all_tab_columns t where t.owner = 'OTI';
相关文章推荐
- 基础知识:oracle数据字典总结
- 基础知识:oracle数据字典总结
- SQL Server 索引基础知识(8)--- 数据基本格式补充
- 了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑定的基础知识
- 资料:数据恢复知识基础
- 基础知识:MySQL数据类型及列类型
- MPLS 基础之1:数据平面知识
- XML基础知识学习八(使用XSL来显示XML数据)
- 基础知识:MySQL数据类型及列类型
- SQL Server 索引基础知识(8)--- 数据基本格式补充
- [转]SQL Server 索引基础知识(1)--- 记录数据的基本格式
- 硬盘的基础知识及数据恢复
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- SQL Server 索引基础知识(1)--- 记录数据的基本格式 (转)
- 数据压缩技术简史---关于实时数据压缩的基础知识
- SQL Server 索引基础知识(1)--- 记录数据的基本格式(转自蝈蝈俊.net)
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- 复习基础知识:数据规范化
- [第三章、Java基础知识]第一节、数据类型
- 基础知识:MySQL数据类型及列类型 (2)