【oracle11g,8】数据字典 和字符集

一.数据字典:

oracle的数据字典记录了数据库管理的元数据,他对于数据库来说是生死攸关的核心档案。

1.数据字典放在system表空间,用户是sys。

2.描述数据库和对象的定义,

3..数据字典是只读的。

4.是server维护的,只能查询。

5.大部分由catalog.sql创建的。

通常所说的数据字典由四部分组成:内部 RDBMS(X$)表、数据字典表、动态性能(V$)视图和数据字典视图。

二. 数据字典组成:

1. 内部 RDBMS(X$)表

X$表是 Oracle 数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行。X$表是加密命名的,而且 Oracle 不作文档说明,这部分知识是 Oracle 公司的技术机密,Oracle
通过这些 X$建立起其他大量视图?供用户查询管理数据库之用。但是由于 X$表记录了大量有用的信息,所以也不停的被全球 DBA 不懈的探索着,最为人所熟知的有:X$BH,X$KSMSP 等。

2. 数据字典表

数据字典表(Data dictionary table)用以存储表、索引、约束以及其他数据库结构的信息。这些对象通常以“$”结尾(例如 TAB$、OBJ$、TS$等),在创建数据库的时候通过运行 sql.bsq脚本来创建。

3.静态数据字典视图

由于 X$表和数据字典表通常不能直接访问,Oracle 创建了静态数据字典视图来?供用户对于数据字典信息的访问,由于这些信息通常相对稳定、不能直接修改,所以又被称为静态数据字典视图。数据字典视图在创建数据库时由 catalog.sql
脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)创建。

①.静态数据字典视图按照前缀的不同通常被分为三类:

a.USER_  类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息。

b.ALL_  类视图包含了用户有权限访问的所有对象的信息。

c.DBA_  类视图包含了数据库所有相关对象的信息,用户需要 SELECT ANY TABLE 权限才能访问。

②.常用数据字典视图举例

a.DICT / DICTIONARY

为了方便检索, Oracle ?供一个名为字典(DICTIONARY)的 视 图 ,基 于 这 个 视 图 , Oracle又创建了两个名为 DICT 和 DICTIONARY 的同义词:

b.  DICT_COLUMNS

同 DICT 类似,DICT_COLUMNS 视图记录了字典视图列(COLUMN)及其相关说明:

c.  OBJ$/DBA_OBJECTS/OBJ

OBJ$是一个底层的字典表,其中记录了数据库中所有对象的信息,DBA_OBJECTS 视图基于 OBJ$建立,一脉相承的,ALL_OBJECTS 和 USER_OBJECTS 视图也随之建立。

4.动态性能视图:

动态性能(V$)视图(Dynamic Performance View)记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库当前状态。 Oracle 通过动态性能视图将 Oracle 数据库的状态展示出来,提供给用户和数据库管理员,Oracle
对 V$视图给出了详细的文档说明供开发管理人员参考,是我们研究和管理数据库的主要依据。

①.GV$和 V$视图

在数据库启动时,Oracle 动态创建 X$表,在此基础之上,Oracle 创建了 GV$和 V$视图。  从 Oracle8 开始,GV$视图开始被引入,其含义为 Global V$。 除了一些特例以外,每个 V$视图都有一个对应的 GV$视图存在。

GV$视图的产生是为了满足 OPS/RAC 环境的需要,在 OPS/RAC 环境中,查询 GV$视图返回所有实例信息,而每个 V$视图是基于 GV$视图,增加了 INST_ID 列的 WHERE 条件限制建立,只包含当前连接实例信息。

总结一下,Oracle 的 GV$视图和 V$视图是在数据库创建过程中建立起来的,内置于数据库中,Oracle 通过 v$fixed_view_definition 视图为我们展现这些定义。

②.GV_$,V_$视图和 V$,GV$同义词

在 GV$和 V$之后,Oracle 建立了 GV_$和 V_$视图,随后为这些视图建立了公用同义词。这些工作都是通过 catalog.sql 脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)实现的。

从 catalog.sql 脚本中摘录一段:

create or replace view v_$fixed_table as select * from v$fixed_table;

create or replace public synonym v$fixed_table for v_$fixed_table;

create or replace view gv_$fixed_table as select * from gv$fixed_table;

create or replace public synonym gv$fixed_table for gv_$fixed_table;

实际上通常大部分用户访问的 V$对象,并不是视图,而是指向 V_$视图的同义词;而 V_$视图是基于真正的 V$视图(这个视图是基于 X$表建立的)创建的。

5.动态性能视图与数据库启动

由于动态性能视图是在数据库启动过程中自动创建的,所以在数据库启动的不同阶段,我们能够访问的视图也各不相同。

①. 在 Nomount 阶段

当数据库启动到 nomount 状态时,实际上仅仅启动了数据库实例,此时的实例信息主要来自参数文件,因此和参数文件记录的相关信息可以查询,以下是这一阶段可以获

取信息的主要视图:

V$PARAMETER、V$SPPARAMETER

V$SGA、V$SGASTAT、V$BH、V$INSTANCE

V$OPTION、V$VERSION

V$PROCESS、V$SESSION

②. 在 Mount 阶段

当数据库启动到 Mount 状态时,控制文件被读取,和控制文件相关的视图此时可以进行查询,以下是这一阶段可以获取信息的主要视图:

V$THREAD、V$CONTROLFILE、V$DATABASE、

V$DATAFILE、V$LOGFILE、V$DATAFILE_HEADER

③. 在 Open 阶段

当数据库 Open 之后,所有的动态性能视图和数据字典都可以被查询。

二.数据字典里的同义词:

SQL> select file#,name from v$datafile; (同义词)

FILE# NAME

---------- --------------------------------------------------

1 /u01/app/oracle/oradata/prod/disk3/system01.dbf

2 /u01/app/oracle/oradata/prod/disk3/sysaux01.dbf

3 /u01/app/oracle/oradata/prod/disk3/undotbs01.dbf

4 /u01/app/oracle/oradata/prod/disk3/users01.dbf

SQL> select file#,name from v_$datafile;

FILE# NAME

---------- --------------------------------------------------

1 /u01/app/oracle/oradata/prod/disk3/system01.dbf

2 /u01/app/oracle/oradata/prod/disk3/sysaux01.dbf

3 /u01/app/oracle/oradata/prod/disk3/undotbs01.dbf

4 /u01/app/oracle/oradata/prod/disk3/users01.dbf

三.模糊查询视图名称

select * from dictionary where table_name like ‘DBA‘;

四.数据字典的视图:(重点)

数据字典视图的分类,静态(static)和动态(dynamic)

1.动态视图

大部分在mount下就可以访问,反映数据库实时的状态

大部分v$开头,多用单数,从控制文件和内存汇总读出。

从v$fixed_table 这个视图查到所有的动态视图的名称。

用于调优和数据库监控。

v$_单数   单实例的动态视图。

Gv$_单数  rac环境的动态视图

SQL> select count(*) from v$fixed_table;

COUNT(*)

----------

1396

常用静态视图:

select name from v$tablespace;

select file#,name from v$datafiles;

select * from v$log;

select * from v$logfile;

select name from v$archived_log;

2.静态视图

在数据库的open状态下访问,用于了解数据库的物理结构信息。

大部分以dba、all、user开头,并用复数形式

user_:存储当前用户所拥有的对象的相关信息

all_:存储当前用户能够访问的对象

dba_:存储所有用户对象的信息(默认只能有sys/system用户访问)

例:

查看区信息

select segment_name ,segment_type,tablespace_name, bytes/1024 k,extents,blocks from dba_segments;

#查看数据文件

SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 m from dba_data_files;

五.字符集:
时间: 2024-10-22 05:39:44

【oracle11g,8】数据字典 和字符集的相关文章

Oracle11g常用数据字典(转)

Oracle11g常用数据字典 Oracle数据字典的名称由前缀和后缀组成,使用_连接,含义说明如下: dba_:包含数据库实例的所有对象信息 v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图   user_:记录用户的对象信息 gv_:分布式环境下所有实例的动态视图,包括系统管理和系统优化使用的视图 all_:记录用户的对象信息机被授权访问的对象信息 基本数据字典 描述逻辑存储结构和物理存储结构的数据表,还包括描述其他数据对象信息的表: 数据字典名称 说明 dba_tables

Oracle11g常用数据字典

Oracle数据字典的名称由前缀和后缀组成,使用_连接,含义说明如下: dba_:包含数据库实例的所有对象信息 v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图   user_:记录用户的对象信息 gv_:分布式环境下所有实例的动态视图,包括系统管理和系统优化使用的视图 all_:记录用户的对象信息机被授权访问的对象信息 基本数据字典 描述逻辑存储结构和物理存储结构的数据表,还包括描述其他数据对象信息的表: 数据字典名称 说明 dba_tablespaces 关于表空间的信息 d

Oracle11g视频教程由浅入深,带项目

Oracle11g视频教程培训高清完整版下载(王老师Oracle11g教室\10年经验毫无保留) 课程的具体课程目录如下: 第1部分 Oracle11g简介 1.1 Oracle的发展 1.2 Oracle的主要产品 1.3 为什么要学习Oracle11g 1.4 Oracle11g简介 1.5 Oracle11g的认证 1.6 Oracle11g的安装(for Windows) 1.7 Oracle11g的服务 1.8 Oracle11g的卸载 1.9 访问Oracle11g的工具 1.10

oracle11g修改字符集的问题

oracle 11g数据库修改字符集 NLS_CHARACTERSET我安装数据库的时候设置为ZHS16GBK,而开发需要的UTF8 据开发反应 改DB的原因是:因为DB不支持中文,向数据库表中插入一条数据的时候,中文就都变了类似于"?(是反问号)"的乱码, 为了能顺利插入成功,故做了此次修改; 查询字符集参数 可以查询以下数据字典或视图查看字符集设置情况 nls_database_parameters.props$.v$nls_parameters 查询结果中NLS_CHARACTE

Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK详解

此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库,HP的sqlserver2008 系统 64位数据库服务器,字符集AL32UTF8 . 今天下午在部署HP的一台数据库服务器时,装的oracle11g 企业版默认字符集为AL32UTF8, 而我本地电脑装的oracle11g 个人版数据库字符集server端默认是ZHS16GBK,所以在我把我本机导出的数据库.dmp文件导入到Hp的数据库时,报 imp错误并且

oracle11g 修改字符集 修改为ZHS16GBK

转:http://www.cnblogs.com/jay-xu33/p/5210098.html oracle11g 修改字符集 修改为ZHS16GBK1.cmd下,cd到oracle数据库软件的服务器端 如:D:\app\Administrator\product\11.2.0\dbhome_1\BIN 2.输入set ORACLE_SID=你想进入的数据库的那个sid 3.输入 sqlplus /nolog 4.将数据库启动到RESTRICTED模式下做字符集更改: SQL> conn /a

Oracle11g字符集AL32UTF8修改为ZHS16GBK详解

此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库,HP的sqlserver2008 系统 64位数据库服务器,字符集AL32UTF8 . 今天下午在部署HP的一台数据库服务器时,装的oracle11g 企业版默认字符集为AL32UTF8, 而我本地电脑装的oracle11g 个人版数据库字符集server端默认是ZHS16GBK,所以在我把我本机导出的数据库.dmp文件导入到Hp的数据库时,报 imp错误并且

oracle11g字符集问题之一

select * from T_WORK_EXPERIENCE t where ROLE=N'被雇佣者' 因为ROLE为NVARCHAR2(30),所以要加N.pl/sql developer 中可以查询到数据 不过这个sql语句在vs2012 mvc里运行不行,是字符集的问题,具体怎么解决还在研究中.请指教

ORACLE11G 字符集更改(这里更改为AL32UTF8)

https://www.cnblogs.com/gaoyuechen/p/9447404.html https://blog.csdn.net/qq_19640525/article/details/81116702 原文地址:https://www.cnblogs.com/Steven5007/p/11713980.html