Oracle数据字典

Oracle数据字典





官网:https://docs.oracle.com/cd/E11882_01/server.112/e40540/datadict.htm#CNCPT002






1.1.1.1      Oracle的数据字典

数据字典(Data Dictionary)也就是通常所说的系统目录,它是Oracle数据库中最重要的组成部分。数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为SYS用户,所有的数据字典表和视图都被储存在该数据库的SYSTEM表空间中。用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的。数据字典中存放了数据库自身的很多信息,包括了用于描述数据库和它的所有对象的信息,所以,数据字典是每个Oracle数据库的核心。例如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。

Oracle数据字典可以包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。

一.内部RDBMSX$)表

X$表是Oracle数据库的核心部分,用于跟踪数据库内部信息,维护数据库的正常运行。X$是加密命名的,而且oracle官方文档不做说明,例如,X$BHX$KSMSP等。X$表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序自动创建。所以,Oracle不允许SYSDBA以外的用户直接访问,也不能授权给其他用户。一般而言,对于这种对象,进行观察、发现、研究X$表的好办法是借用OracleAUTOTRACE功能,当查询一些视图时,可以发现这些X$底层表,例如查询V$PARAMETER时。

普通用户如何查询X$内部表呢?以X$BH表为例,以SYS用户执行以下命令即可:

CREATE OR REPLACE VIEW BH AS SELECT * FROM SYS.X$BH;

CREATE OR REPLACE PUBLIC SYNONYM X$BH FOR BH;

二.数据字典表

数据字典表用以存储表、索引、约束以及其他数据库结构的信息。这些对象通常是以“$”结尾(例如:TAB$OBJ$TS$等)。Bsq是非常重要的一个文件,其中包含了数据字典的定义以及注释说明,深入学习Oracle数据库的用户都应该仔细阅读该文件,该文件位于$ORACLE_HOME/rdbms/admin目录下(在Oracle 11gbsq文件被分别归类到不通的.bsq文件)。这些数据字典表对于数据库的稳定运行生死攸关,所以通常Oracle不允许直接对数据字典进行操作。当用户执行DDLDML操作时,在后台Oracle将这些操作解析为对于数据字典的自动执行。

三.静态数据字典视图

由于X$表和数据字典表通常不能直接访问,因此,Oracle创建了静态数据字典视图提供用户对于数据字典信息的访问,由于这些信息相对稳定、不能直接修改,所以又被称为静态数据字典视图。静态数据字典主要反应的是数据库中的对象信息。静态数据字典视图是由catalog.sql脚本创建(在$ORACLE_HOME/rdbms/admin下)。静态数据字典中的视图可以分为三类,它们分别由三个前缀构成:USER_*ALL_*DBA_*

(1)    USER_*:该类视图存储了关于当前用户所拥有的对象的信息,即所有在该用户模式下的对象,例如:USER_USERSUSER_TABLESUSER_VIEWS

(2)    ALL_*:该类视图存储了当前用户能够访问的对象的信息。(与USER_*相比,ALL_*并不需要拥有该对象,只需要具有访问该对象的权限即可),例如:ALL_USERSALL_TABLESALL_VIEWS

(3)    DBA_*:该类视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说,必须具有管理员权限)。例如:DBA_USERSDBA_TABLESDBA_VIEWS

这里要说明一下,并不是所有的对象都是有三层对象视图,有时候all_层视图是被省略掉的,例如dba_recyclebin,就没有对应的all_层视图。

四.动态性能视图

Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以,称它们为动态数据字典,也称为动态性能视图(Dynamic Performance Views)。这些视图提供了关于内存和磁盘的运行情况,记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库的当前状态。所以,只能对其进行只读访问而不能修改它们。动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以,在访问这类数据字典时往往不是一成不变的。动态性能视图基于从数据库内存结构构建的虚拟表。因此,它们不是存储在数据库中的常规表。由于数据动态更新,所以,动态性能视图的读一致性不能保证。

SYS是这些动态性能表的所有者,这些表的名字都以V_$开头,基于这些表的视图被创建后,Oracle还会为视图创建公共同义词。同义词名称以V$开头,例如,视图V$DATAFILE包含数据库数据文件的信息,而V$FIXED_TABLE包含数据库中所有动态性能表和视图的信息。NOMOUNT状态不能查询所有的V$视图。因为动态性能视图不是真实表,所以数据依赖于数据库和实例的状态。例如,当数据库处于NOMOUNT时,可以查询V$INSTANCEV$BGPROCEP。但是,在MOUNT数据库之前,不能查询V$DATAFILE

数据字典基表是在任何Oracle数据库中创建的第一个对象。数据库的所有数据字典表和视图都存储在系统表空间中。所以,数据字典视图是受读一致性的影响的。因为当数据库打开时,系统表空间总是联机的,所以当数据库打开时,数据字典总是可用的。总之,运用好数据字典技术,可以让数据库开发人员能够更好地了解数据库的全貌,这样对于数据库优化、管理等有极大的帮助。

v$动态视图是描述Oracle当前运行状态的一系列视图集合。这部分视图的特点是以v$开头,描述系统当前状态信息。常见常用的如V$SESSIONV$SESSION_WAITOracle 10g后,其中内容融入到V$SESSION中)、V$LOCKV$SYSSTAT等。只有赋予了SELECT ANY DICTIONARY权限的用户才可以查询所有的V$视图。

V$视图传统上是代表系统当前状态的描述,也就是即时性视图。虽然可以描述当前系统中发生的瓶颈或者性能问题,但是当瓶颈接触之后,很难发现和分析过去一个事件点的系统状态和问题SQL。同时,如果需要对运行时间段的情况进行分析,采用时间段镜像snap技术也存在一些偶然性。

Oracle 10g开始,V$动态视图进入了一个新的时代,可以保存V$SESSION的历史信息。ASHActive Session History)技术就是每个一个间隔的时间段,保存当前动态视图的镜像进行保存,这些信息保存7天。借助ASH技术,Oracle提出了基于历史进行分析的AWRAutomatic Workload Report)报表。最后,从性能主动优化的出发点,提出了ADDMAutomatic Database Diagnostic Monitor)报告,提供智能化的数据库优化提示。这些方便的功能特性,全都是基于动态视图。v$动态视图主要是针对SGA和数据库实例进程的显示。在这个过程中,Oracle使用了DMADirect Memory Access)技术,可以高效的获取这些分析数据。

数据库启动时,Oracle动态创建X$表,在此基础之上,Oracle创建了GV$V$视图。从Oracle 8开始GV$视图开始被引入,其含义是Global,除一些特例之外,每个V$视图都有一个对应的GV$视图存在;GV$视图的产生是为了满足OPS/RAC环境的需要;每个V$视图都包含如下类似语句,用于限制返回当前实例的信息:

Where inst_id=USERENV('Instance');

下面介绍几个与系统数据字典视图定义有关的几个视图,而其它的视图学习也可以根据下面这几个视图来学习:

(一)DICTIONARYDICT_COLUMNS

l  DICTIONARY视图记录了全部数据字典表的名称和解释,它有一个同义词DICT

l  DICT_COLUMNS视图记录了全部数据字典表里字段名称和解释。

如果想查询跟索引有关的数据字典,那么可以使用如下SQL语句:

SELECT * FROM DICTIONARY WHERE INSTR(COMMENTS, 'index') > 0;

如果想知道数据字典中的USER_INDEXES视图中各字段的详细含义,那么可以用如下SQL语句:

SELECT COLUMN_NAME, COMMENTS

  FROM DICT_COLUMNS

 WHERE TABLE_NAME = 'USER_INDEXES';

依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看Oracle的其它文档资料了。当然上面的结果也可以用如下语句来查询:

SELECT * FROM DBA_COL_COMMENTS UCC WHERE UCC.TABLE_NAME='USER_INDEXES';

SELECT * FROM DBA_TAB_COMMENTS UTC WHERE UTC.TABLE_NAME='USER_INDEXES';

(二)V$FIXED_TABLEV$FIXED_VIEW_DEFINITION

面试官可能会这样问:“在Oracle中,哪个视图可以查询数据中所有底层的表?”。答案就是V$FIXED_TABLEV$FIXED_TABLE可以查询数据库中所有底层的表。V$FIXED_TABLE视图显示数据库中所有动态性能表、视图和导出表。由于某些V$表(例如V$ROLLNAME)涉及底层的表,因此,没有列出。另外,V$FIXED_VIEW_DEFINITION这个视图包含所有固定视图(以V$起头的视图)的定义,如下所示:

SYS@ORALHRDB1> DESC V$FIXED_TABLE

 Name                                      Null?    Type

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

 NAME                                               VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 TYPE                                               VARCHAR2(5)

 TABLE_NUM                                          NUMBER

SYS@ORALHRDB1>SELECT VIEW_DEFINITION FROM V$FIXED_VIEW_DEFINITION WHERE VIEW_NAME='V$FIXED_TABLE';

VIEW_DEFINITION

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

select  NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE where inst_id =

USERENV('Instance')

SYS@ORALHRDB1> SELECT VIEW_DEFINITION FROM V$FIXED_VIEW_DEFINITION WHERE VIEW_NAME='GV$FIXED_TABLE';

VIEW_DEFINITION

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

select inst_id,kqftanam, kqftaobj, 'TABLE', indx from x$kqfta union all select i

nst_id,kqfvinam, kqfviobj, 'VIEW', 65537 from x$kqfvi union all select inst_id,k

qfdtnam, kqfdtobj, 'TABLE', 65537 from x$kqfdt

可以看到底层的表主要由x$kqftax$kqfdt组成,而x$kqfvi主要是视图的定义。

下表给出了一些常见的数据字典及其解释:

 STYLEREF 1 \s 3- SEQ \* ARABIC \s 1 15 常见的数据字典

视图名称

解释

视图名称

解释

DBA_TABLES(TABS)

所有用户(当前用户)的所有表的信息

DBA_FREE_SPACE

记录系统表空间的自由空间的信息

DBA_TAB_COLUMNS(COLS)

所有用户(当前用户)的表的列的信息

V$CONTROLFILE

记录系统控制文件的基本信息

DBA_VIEWS

所有用户的所有视图信息

V$PARAMETER

记录系统各参数的基本信息

DBA_SYNONYMS(SYN)

所有用户(当前用户)同义词信息

V$CONTROLFILE_RECORD_SECTION

记录系统控制运行的基本信息

DBA_SEQUENCES(SEQ)

所有用户(当前用户)序列信息

V$DATAFILE

记录来自控制文件的数据文件信息

DBA_CONSTRAINTS

用户的表的约束信息

V$FILESTAT

记录数据文件读写的基本信息

DBA_INDEXES(IND)

所有用户(当前用户)索引的简要信息

V$DATAFILE_HEADER

记录数据文件头部的基本信息

DBA_IND_COLUMNS

所有用户索引的列信息

V$THREAD

记录日志线程的基本信息

DBA_TRIGGERS

所有用户触发器信息

V$LOG

记录日志文件的基本信息

DBA_SOURCE

所有用户存储过程信息

V$LOGFILE

记录日志文件的概要信息

DBA_SEGMENTS

所有用户段(表,索引及Cluster)使用空间的信息

V$ARCHIVED_LOG

记录归档日志文件的基本信息

DBA_EXTENTS

所有用户段的扩展段信息

V$ARCHIVE_DEST

记录归档日志的路径信息

DBA_OBJECTS

所有用户对象的基要信息

V$INSTANCE

记录当前实例的基本信息

CAT

当前用户可以访问的所有基表

V$SYSTEM_PARAMETER

显示实例当前有效的参数信息

TAB

当前用户创建的所有基表,视图,同义词等

V$SGA

显示SGA区的大小信息

DICT

构成数据字典的所有表的信息

V$SGASTAT

记录SGA使用统计详细信息

V$DATABASE

记录系统运行的情况

V$DB_OBJECT_CACHE

记录对象缓存大小信息

DBA_TABLESPACES

记录系统表空间的基本信息

V$BGPROCESS

显示后台进程信息

DBA_DATA_FILES

记录系统数据文件及表空间的基本信息

V$SESSION

显示当前会话信息

V$SORT_USAGE

显示临时段的大小及会活、可以看出哪些进程硬盘排序

V$FIXED_TABLE

列出当前发行的固定对象的说明

V$SQLAREA

列出共享区的SQL使用统计

V$LATCH

列出锁存器的统计数据

V$SQLTEXT

SGA中属于共享SQL游标的SQL语句内容

V$LIBRARYCHCHE

有关库缓存性能的统计数据

V$SYSSTAT

包括基本的实例统计数据

V$ROLLSTAT

列出联机的回滚段的名字

V$SYSTEM_EVENT

包括一个事件的总等待时间

V$ROWCACHE

显示活动数据字典的统计

V$WAITSTAT

列出块竞争统计数据,只有当时间统计数据参数被“使能”时系统才能对其更新

 

 

 

 

真题1、如何列举某个用户下所有表的注释及列的注释?

答案:可以使用DBA_TAB_COMMENTS视图来查询表的注释,使用DBA_COL_COMMENTS视图来查询列的注释。它们的示例分别如下所示:

某个用户下所有表的注释:

SELECT D.OWNER, D.TABLE_NAME, D.COMMENTS

  FROM DBA_TAB_COMMENTS D

 WHERE D.OWNER = 'LHR'

 AND D.COMMENTS IS NOT NULL;

其结果如下所示:

某个用户下某个表的所有列的注释:

SELECT D.OWNER, D.TABLE_NAME,D.COLUMN_NAME, D.COMMENTS

  FROM DBA_COL_COMMENTS D

 WHERE D.OWNER = 'LHR'

 AND D.TABLE_NAME='CMMND_INFO_HSTRY'

 AND D.COMMENTS IS NOT NULL;

其结果如下所示:

 

真题2、如何查找存储过程或视图中引用了哪些基表?

答案:可以查询DBA_DEPENDENCIES视图,该视图记录了对象与对象之间的依赖关系,NAME列为当前对象,而REFERENCED_NAME为其依赖的基对象。所以,该视图也可以查询某个表被哪些对象所引用,从而知道该表是否可以被删除。

下例展示了DBA_SQL_PLAN_BASELINES视图依赖的对象:

SH@PROD1> SELECT D.OWNER,

  2         D.NAME,

  3         D.TYPE,

  4         D.REFERENCED_OWNER,

  5         D.REFERENCED_NAME,

  6         D.REFERENCED_TYPE

  7    FROM DBA_DEPENDENCIES D

  8   WHERE D.NAME = 'DBA_SQL_PLAN_BASELINES';

 

OWNER     NAME                           TYPE               REFERENCED_OWNER               REFERENCED_NAME            REFERENCED_TYPE

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

PUBLIC    DBA_SQL_PLAN_BASELINES         SYNONYM            SYS                            DBA_SQL_PLAN_BASELINES     VIEW

SYS       DBA_SQL_PLAN_BASELINES         VIEW               SYS                            SQLOBJ$AUXDATA             TABLE

SYS       DBA_SQL_PLAN_BASELINES         VIEW               SYS                            SQLOBJ$                    TABLE

SYS       DBA_SQL_PLAN_BASELINES         VIEW               SYS                            SQL$TEXT                   TABLE

可以看到,公共同义词DBA_SQL_PLAN_BASELINES依赖于和其同名的视图,而DBA_SQL_PLAN_BASELINES视图依赖于SYS.SQLOBJ$AUXDATASYS.SQLOBJ$SYS.SQL$TEXT3个基表。

 







Oracle数据字典
http://blog.csdn.net/haiross/article/details/41246241
http://blog.itpub.net/26026406/viewspace-709306/

数据字典Oracle数据库安装之后,自动创建的一系列数据库对象。数据字典是Oracle数据库对象结构的元数据信息。熟悉和深入研究数据字典对象,可以很大程度的帮助我们了解Oracle内部机制。


Oracle字典视图包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。

一.内部RDBMSX$)表

X$表是Oracle数据库的核心部分,用于跟踪数据库内部信息,维护数据库的正常运行。X$是加密命名的,而且oracle官方文档不做说明;最为人所熟知的是X$BHX$KSMSP等;
X$
表是oracle数据库的运行基础,在数据库启动时有oracle应用程序自动创建。所以oracle不允许SYSDBA以外的用户直接访问,也不能授权给其他用户。

一般而言,对于这种对象,进行观察、发现、研究X$表的好办法是借用oracleAUTOTRACE功能,当查询一些视图时,可以发现这些X$底层表;

如下:

23:26:35 scott@felixSQL>set autot traceonly;

23:47:54 scott@felixSQL>select *from v$parameter;

347rows selected.

  

Execution Plan

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

Planhashvalue:1128103955

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

|Id | Operation         |Name    |Rows | Bytes|Cost(%CPU)|Time    |

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

|  0|SELECTSTATEMENT |         |    1| 4414|    1(100)|00:00:01|

|* 1| HASHJOIN       |         |    1| 4414|    1(100)|00:00:01|

|* 2|  FIXEDTABLEFULL| X$KSPPI |    1|  249|    0  (0)|00:00:01|

|  3|  FIXEDTABLEFULL| X$KSPPCV|  100|  406K|    0  (0)|00:00:01|

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

 

Predicate Information(identifiedby operationid):

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

    1-access("X"."INDX"="Y"."INDX")

       filter(TRANSLATE("KSPPINM",'_','#')NOTLIKE'#%'OR

              "KSPPSTDF"='FALSE'ORBITAND("KSPPSTVF",5)>0)

   2-filter("X"."INST_ID"=USERENV('INSTANCE')AND

             BITAND("KSPPIFLG",268435456)=0ANDTRANSLATE("KSPPINM",'_','#')NOT

              LIKE'##%')


Statistics

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

          8 recursive calls

          0 dbblock gets

          2 consistent gets

          0 physicalreads

          0 redosize

      38375 bytes sent viaSQL*Netto client

        776 bytes received viaSQL*Netfrom client

         25 SQL*Net roundtrips to/from client

          0 sorts(memory)

          0 sorts(disk)

        347 rows processed


再看这个X$KVIT([K]ernel Layer Performance Layer[V][I]nformation tables [T]ransitory Instance parameter)这个视图记录的是和实例相关的一些内部参数设置,可以看到一些很有意思的内容;

select kvittag,kvitval,kvitdscfrom x$kvit;


                             

二:数据字典表:

数据字典表用以存储表、索引、约束以及其他数据库结构的信息。这些对象通常是以‘$’结尾(例如:TAB$OBJ$TS$等)

Bsq是非常重要的一个文件,其中包含了数据字典的定义以及注释说明,每个视图深入学习oracle数据库的用户都应该仔细阅读以下该文件该文件位于$ORACLE_HOME/rdbms/admin目录下:(在11gbsq文件被分别归类到不通的.bsq文件)。

[oracle@felixadmin]$ pwd

$ORACLE_HOME/rdbms/admin

[oracle@felixadmin]$ ls -l *.bsq

-rw-r--r-- 1 oracle oinstall   25905 Mar 19 2009 daw.bsq

-rw-r--r-- 1 oracle oinstall   91730 Jul 22 2011 dcore.bsq

-rw-r--r-- 1 oracle oinstall    2832 Oct 23 2006 ddm.bsq

-rw-r--r-- 1 oracle oinstall     674 Jul 14 2008 ddst.bsq

-rw-r--r-- 1 oracle oinstall   17993 Feb 23 2010 denv.bsq

-rw-r--r-- 1 oracle oinstall    1364 Oct 31 2005 dexttab.bsq

-rw-r--r-- 1 oracle oinstall    4937 Oct 31 2005 dfmap.bsq

-rw-r--r-- 1 oracle oinstall     728 Oct 31 2005 djava.bsq

-rw-r--r-- 1 oracle oinstall   33697 Apr 26 2011 dlmnr.bsq

-rw-r--r-- 1 oracle oinstall    9632 Dec 8  2009 dmanage.bsq

-rw-r--r-- 1 oracle oinstall   25509 Jun 8  2007 dobj.bsq

-rw-r--r-- 1 oracle oinstall   32867 May 18 2011 doptim.bsq

-rw-r--r-- 1 oracle oinstall   47093 Nov 12 2009 dpart.bsq

-rw-r--r-- 1 oracle oinstall   16679 Jan 8  2007 dplsql.bsq

-rw-r--r-- 1 oracle oinstall   17811 Oct 9  2009 drac.bsq

-rw-r--r-- 1 oracle oinstall  128181 May 13 2011 drep.bsq

-rw-r--r-- 1 oracle oinstall  139898 Jun 11 2010 dsec.bsq

-rw-r--r-- 1 oracle oinstall   17751 Mar 9  2009 dsqlddl.bsq

-rw-r--r-- 1 oracle oinstall   19958 Jul 30 2008 dsummgt.bsq

-rw-r--r-- 1 oracle oinstall   15830 Apr 29 2011 dtools.bsq

-rw-r--r-- 1 oracle oinstall    5474 Oct 31 2006 dtxnspc.bsq

-rw-r--r-- 1 oracle oinstall 2495314 Sep17  2011 recover.bsq

-rw-r--r-- 1 oracle oinstall   53130 Jul 14 2008 sql.bsq

 

这些数据字典表对于数据库的稳定运行生死攸关,所以通常oracle不允许直接对数据字典进行操作。当用户执行DDLDML操作时,在后台oracle讲这些操作解析为对于数据字典的自动执行。

 

以下是某个bsq的内容:

[oracle@felixadmin]$ cat ddm.bsq

rem   pstengar  05/22/06-add audit$ columnto model$

rem   mmcracke  03/14/05- creation

 

rem dataminingmodeltable

createtable model$

(

  obj#         numbernotnull,                  /* unique model object id */

  func         number,                      /* mining function (bit flags)*/

  alg          number,                     /* mining algorithm (bit flags)*/

  bdur         number,                                    /* time to build */

  msize        number,                               /* size of model (MB) */

  version      number,                                    /* model version */

  audit$       varchar2("S_OPFL")notnull             /* auditing options */

)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

createuniqueindex model$idx

  on model$(obj#)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

rem dataminingmodel components table

createtable modeltab$

(

  mod#               number      notnull,             /* model object id */

  obj#               number      notnull,             /* table object id */

  typ#               number      notnull             /* model table type */

)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

createuniqueindex modeltab$idx

  on modeltab$(mod#, typ#)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

rem dataminingmodelattributetable

createtable modelatt$

(

  mod#               number        notnull,           /* model object id */

  name               varchar2(30)  notnull,            /* attribute name */

  atyp               number,                             /* attribute type */

  dtyp                number        notnull,                 /* data type */

  length             number,                                /* data length */

  precision#         number,                                  /* precision */

 scale              number,                                      /* scale */

  properties         number                                  /* properties */

)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

createindex modelatt$idx

  on modelatt$(mod#)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

rem dataminingmodelsettingstable

createtable modelset$

(

  mod#               number        notnull,           /* model object id */

  name               varchar2(30)  notnull,              /* setting name */

  value              varchar2(4000),                      /* setting value */

  properties         number                                  /* properties */

)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

createindex modelset$idx

  on modelset$(mod#)

storage(maxextentsunlimited)

tablespaceSYSAUX

/

Rem

Rem Sequencefor export/import

createsequence DM$EXPIMP_ID_SEQ

/

grantselecton DM$EXPIMP_ID_SEQ to public

/

[oracle@felixadmin


或者再例如:当创建一张数据表时,
oracle将会在后台执行一系列的内部操作,比如像OBJ$表中插入数据、向tab$表中记录数据、向col$表中记录字段信息、向con$记录约束信息、向seg$中记录数据段信息。

例如:

进行一个10046trace

00:56:54 scott@felixSQL>alter session set events '10046 tracename context forever,level 12';


Session altered.

01:00:18 scott@felixSQL>create table felix2 as select * fromdba_objects;

 

Table created.

 

01:00:39 scott@felixSQL>select value from v$diag_info wherename='Default Trace File';

 

VALUE

-----------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/felix/felix/trace/felix_ora_19538.trc

 

摘录一些跟踪文件信息,下面这个是前台的DDL语句在后台是怎样被转化成一系列的DML语句进行执行的,首先记录的是创建语句:

[oracle@felix ~]$ cat/u01/app/oracle/diag/rdbms/felix/felix/trace/felix_ora_19538.trc| grep create

createtable felix2 as select * from dba_objects

     m_stmt:='call mderr.raise_md_error(''MD'',''SDO'', -13391, ''GeoRaster reserved names cannot be used to create regulartriggers.'')';

     m_stmt:='beginSDO_GEOR_UTL.createDMLTrigger(:1,:2); end;';

 

然后是向obj$ con$ seg$ tab$ col$表中增加信息:

[oracle@felix ~]$ cat/u01/app/oracle/diag/rdbms/felix/felix/trace/felix_ora_19538.trc| grep insert

   m_stmt:='insert into sdo_geor_ddl__table$$values (1)';

   m_stmt:='insert into sdo_geor_ddl__table$$values (2)';

insertintoobj$(owner#,name,namespace,obj#,type#,ctime,mtime,stime,status,remoteowner,linkname,subname,dataobj#,flags,oid$,spare1,spare2,spare3)values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18)

 

insertintoseg$(file#,block#,type#,ts#,blocks,extents,minexts,maxexts,extsize,extpct,user#,iniexts,lists,groups,cachehint,hwmincr,spare1, scanhint,bitmapranges)values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,DECODE(:17,0,NULL,:17),:18,:19)

 

insertintotab$(obj#,ts#,file#,block#,bobj#,tab#,intcols,kernelcols,clucols,audit$,flags,pctfree$,pctused$,initrans,maxtrans,rowcnt,blkcnt,empcnt,avgspc,chncnt,avgrln,analyzetime,samplesize,cols,property,degree,instances,dataobj#,avgspc_flb,flbcnt,trigflag,spare1,spare6)values(:1,:2,:3,:4,decode(:5,0,null,:5),decode(:6,0,null,:6),:7,:8,decode(:9,0,null,:9),:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,decode(:26,1,null,:26),decode(:27,1,null,:27),:28,:29,:30,:31,:32,:33)

 

insertintocol$(obj#,name,intcol#,segcol#,type#,length,precision#,scale,null$,offset,fixedstorage,segcollength,deflength,default$,col#,property,charsetid,charsetform,spare1,spare2,spare3)values(:1,:2,:3,:4,:5,:6,decode(:5,182/*DTYIYM*/,:7,183/*DTYIDS*/,:7,decode(:7,0,null,:7)),decode(:5,2,decode(:8,-127/*MAXSB1MINAL*/,null,:8),178,:8,179,:8,180,:8,181,:8,182,:8,183,:8,231,:8,null),:9,0,:10,:11,decode(:12,0,null,:12),:13,:14,:15,:16,:17,:18,:19,:20)


oracle
通过将DDL解析为dml操作,并将这些操作记录在数据字典表中,通过将这些信息反向解析,可以得到原始的创建语句。

 

三:静态数据字典视图:

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

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

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

(3)   DBA_类视图包含了数据库所拥有的所有相关对象的信息,用户需要select any table权限才能访问。

这里要说明一下,并不是所有的对象都是有三层对象视图,有时候all_层视图是被省略掉的。比如我们之前在闪回中介绍的dba_recyclebin,就没有对应的all_层视图。

 

01:31:13 scott@felixSQL>select table_name,tablespace_name fromuser_tables;

 

TABLE_NAME                                                  TABLESPACE_NAME

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

DEPT                                                        USERS

EMP                                                         USERS

BONUS                                                       USERS

SALGRADE                                                    USERS

FELIX2                                                      USERS

 

常用的数据字典举例:

(1)DICT_COLUMNS

01:54:55 scott@felixSQL>SELECT COLUMN_NAME,COMMENTS FROMDICT_COLUMNS WHERE TABLE_NAME='DICT';

 

COLUMN_NAME                   COMMENTS

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

TABLE_NAME                    Nameoftheobject

COMMENTS                      Textcommentontheobject


这个视图记录了字典很重要的信息,例如找到具有较多字段的
TOP 10字典视图:

scott@felixSQL>select * from(
    select table_name,count(*)
    from dict_columns
    group by table_name
    order by 2 desc)
    where rownum<=10;

 

TABLE_NAME                                                    COUNT(*)

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

GV$SESSION                                                          98

V$SESSION                                                           97

GV$ACTIVE_SESSION_HISTORY                                          97

DBA_HIST_ACTIVE_SESS_HISTORY                                       97

V$ACTIVE_SESSION_HISTORY                                           96

GV$SQL                                                               88

V$SQL                                                                87

GV$SQLAREA                                                           83

V$SQLAREA                                                            82

DBA_HIST_SQLSTAT                                                    78

 

而通过DICT视图可以很快的找到这些和COLUMN有关的视图:

scott@felixSQL>select table_name from dict where table_namelike'DBA%COLUMNS';

 

TABLE_NAME

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

DBA_APPLY_CONFLICT_COLUMNS

DBA_APPLY_DML_CONF_COLUMNS

DBA_APPLY_KEY_COLUMNS

DBA_APPLY_TABLE_COLUMNS

DBA_AUDIT_POLICY_COLUMNS

DBA_CLU_COLUMNS

DBA_COMPARISON_COLUMNS

DBA_CONS_COLUMNS

DBA_CONS_OBJ_COLUMNS

DBA_CUBE_DIM_VIEW_COLUMNS

DBA_CUBE_HIER_VIEW_COLUMNS

DBA_CUBE_VIEW_COLUMNS

DBA_ENCRYPTED_COLUMNS

DBA_IND_COLUMNS

DBA_JOIN_IND_COLUMNS

DBA_LOG_GROUP_COLUMNS

DBA_OLDIMAGE_COLUMNS

DBA_PART_KEY_COLUMNS

DBA_PUBLISHED_COLUMNS

DBA_REPFLAVOR_COLUMNS

DBA_REPKEY_COLUMNS

DBA_STREAMS_COLUMNS

DBA_STREAMS_KEEP_COLUMNS

DBA_SUBPART_KEY_COLUMNS

DBA_SUBSCRIBED_COLUMNS

DBA_TAB_COLUMNS

DBA_UPDATABLE_COLUMNS

 

27rows selected.

 

(2)OBJ$/DBA_OBJECTS/OBJ

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

OBJ是对于USER_OBJECTS建立的同义词,其创建语法如下:

CREATE PUBLICSYNONYM OBJ FIR SYS.USER_OBJECTS;

 

02:02:33 scott@felixSQL>select object_name,object_type from obj;

 

OBJECT_NAME                   OBJECT_TYPE

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

PK_DEPT                       INDEX

DEPT                          TABLE

EMP                           TABLE

PK_EMP                         INDEX

BONUS                         TABLE

SALGRADE                      TABLE

FELIX2                        TABLE

 

3*_SOURCE视图

DBA_SOURCE/ALL_SOURCE/USER_SOURCE用于保存存储对象的源码。这类视图存储的对象包括function/Java/packge/packgebody/procedure/trigger/type/typebody等;

02:06:47 scott@felixSQL>desc dba_source;

 Name                                Null?   Type

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

 OWNER                                         VARCHAR2(30)

 NAME                                          VARCHAR2(30)

 TYPE                                          VARCHAR2(12)

 LINE                                          NUMBER

 TEXT                                          VARCHAR2(4000)


通过
TEXT字段能够获得相关对象创建的脚本;

 

四:动态性能视图:

动态性能视图(V$)(dynamicperformance view)记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库的当前状态


v$动态视图是描述Oracle当前运行状态的一系列视图集合。这部分视图的特点是以v$开头,描述系统当前状态信息。常见常用的如v$session、v$session_wait(
10g后,其中内容融入到v$session中)、v$lock和v$sysstat等。

 

v$视图传统上是代表系统当前状态的描述,也就是即时性视图。虽然可以描述当前系统中发生的瓶颈或者性能问题,但是当瓶颈接触之后,很难发现和分析过去一个事件点的系统状态和问题SQL。同时,如果需要对运行时间段的情况进行分析,采用时间段镜像snap技术也存在一些偶然性。

 

oracle10g开始,v$动态视图进入了一个新的时代,可以保存v$session的历史信息。ASH(Active Session History)技术就是每个一个间隔的时间段,保存当前动态视图的镜像进行保存,这些信息保存7天。借助ASH技术,Oracle提出了基于历史进行分析的AWR(Automatic Workload Report)报表。最后,从性能主动优化的出发点,提出了ADDM(Automatic Database Diagnostic Monitor)报告,提供智能化的数据库优化提示。这些方便的功能特性,全都是基于动态视图

 

v$动态视图主要是针对SGA和数据库实例进程的显示。在这个过程中,Oracle使用了DMA(Direct Memory Access)技术,可以高效的获取这些分析数据。


(1)GV$V$视图

数据库启动时,oracle动态创建X$,在此基础之上,oracle创建了GV$V$视图。从oracle 8开始GV$视图开始被引入,其含义是Global,除一些特例之外,每个V$视图都有一个对应的GV$视图存在;GV$视图的产生是为了满足OPS/RAC环境的需要;每个V$视图都包含如下类似语句,用于限制返回当前实例的信息:

Where inst_id=USERENV('Instance');

 

用单实例进行测试如下(如果是rac环境的话返回的是多个实例名称)

02:41:54 scott@felixSQL>select inst_id,instance_name,status fromgv$instance;

 

   INST_ID INSTANCE_NAME                    STATUS

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

         1 felix                           OPEN

 

V$视图只会返回本实例上的实例名:

02:41:12 scott@felixSQL>selectinstance_number,instance_name,statusfrom v$instance;

 

INSTANCE_NUMBER INSTANCE_NAME                   STATUS

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

              1 felix                           OPEN

 

ORACLE提供了一些特殊视图用以记录其他视图的创建方式v$fixed_view_definition就是其中之一,从GV$FIXED_TABLEV$FIXED_TABLE开始,我们来看一下GV$视图和v$视图的创建方式:

V$视图的创建方式:

SQL>select * from v$fixed_view_definition whereview_name='V$FIXED_TABLE';

 

VIEW_NAME            VIEW_DEFINITION

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

V$FIXED_TABLE        select NAME, OBJECT_ID ,TYPE, TABLE_NUMfromGV$FIXED_TABLEwhere inst_id=USERENV('Instance')

 

GV$视图的创建方式:

SQL>select * from v$fixed_view_definition whereview_name='GV$FIXED_TABLE';

 

VIEW_NAME      VIEW_DEFINITION

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

GV$FIXED_TABLE select inst_id,kqftanam, kqftaobj,'TABLE',indxfrom x$kqftaunionallselect i

               nst_id,kqfvinam, kqfviobj,'VIEW',65537from x$kqfviunionallselect inst_id,k

               qfdtnam, kqfdtobj,'TABLE',65537from x$kqfdt

 

总结一下:oraclegv$视图和v$视图时在数据库创建过程中建立起来的,内置于数据库中,oracle通过v$fixed_view_definition视图为用户展示这些定义;

 

 

另外X$表的信息可以从v$fixed_table中查到:

scott@felixSQL>select count(*) from v$fixed_table where namelike'X$%';

 

  COUNT(*)

----------

       970

 

 

动态性能视图与数据库启动:

 (1)   NOMOUNT

nomount阶段可以获取信息的视图主要有:V$PARAMETERV$APPARAMETERV$SGA V$SGASTAT V$BH V$INSTANCE V$OPTION V$PROCESSV$SESSION

(2)   mount阶段

可以获取信息的主要视图:V$DATABASE V$DATAFILEV$VERSIONV$PROCESS V$DATAFILE_HEADER

(3)   OPEN阶段

在数据库OPEN之后,所有数据字典和动态性能视图都可以被查询;

 

 

V$PARAMETER结构

03:46:58 scott@felixSQL>select VIEW_DEFINITION fromv$fixed_view_definition where view_name='V$PARAMETER';

 

VIEW_DEFINITION

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

select NUM,NAME,TYPE,VALUE, DISPLAY_VALUE, ISDEFAULT,ISSES_MODIFIABLE

, ISSYS_MODIFIABLE, ISINSTANCE_MODIFIABLE, ISMODIFIED ISADJUSTED,ISDEPRECAT

ED, ISBASIC,DESCRIPTION, UPDATE_COMMENT,HASH from GV$PARAMETERwhere inst_id

=USERENV('Instance')


这里清晰的看到,
V$PARAMETER视图是由GV$PARAMETER创建的

 

SQL>select VIEW_DEFINITION from v$fixed_view_definition whereview_name='GV$PARAMETER';

 

VIEW_DEFINITION

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

select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl,ksppstdf, decode

(bitand(ksppiflg/256,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg/65536,3),1,'I

MMEDIATE',2,'DEFERRED',                                 3,'IMMEDIATE','FALSE'),

 decode(bitand(ksppiflg,4),4,'FALSE',                                    decod

e(bitand(ksppiflg/65536,3),0,'FALSE','TRUE')),    decode(bitand(ksppstvf,7),

1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), decode(bitand(ksppstvf,2),2,'TRUE','FALSE

'), decode(bitand(ksppilrmflg/64,1),1,'TRUE','FALSE'), decode(bitand(ksppi

lrmflg/268435456,1),1,'TRUE','FALSE'), ksppdesc, ksppstcmnt,ksppihash fro

m x$ksppi x, x$ksppcv ywhere(x.indx=y.indx)and bitand(ksppiflg,268435456)

=0and ((translate(ksppinm,'_','#')notlike'##%')and   ((translate(ksppinm

,'_','#')notlike'#%')     or(ksppstdf='FALSE')or     (bitand(ksppstvf,5

)>0)))

 

在这里可以看到GV$PARAMETER来源于X$KSSPIX$KSPPCV两个表。这两个表基本上包含所有数据库参数




一、数据字典
  数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。它是随着数据库的建立而建立的,当数据库执行特定动作时数据字典也会自动更新。数据一览与数据字典来记录、校验和管理正在进行的操作。
oracle中、sys用户是数据字典的拥有者,数据字典保证在所有数据库的系统表空间system内,任何用户都无权更改sys模式下的模式对象或数据字典中的行。也就是说数据字典只能查询,不能手动进行修改。

  数据字典用途
  oracle通过存取数据字典从而比较方便地获取有关用户某事对象和存储结构等信息。当系统执行了DDL语句后,oracle会及时修改数据字典。任何用户只能以读的形式使用数据字典获取数据库信息。

数据字典存储的信息

  • 数据用户的名称
  • 为用户授予的权限和角色
  • 模式对象的名称,如 tables,views,indexex,procedures,functions,packages,triggers等。
  • 完整性约束的具体信息;
  • 每个字段的默认值;
  • 数据库空间的使用情况;
  • 审计功能,在Oracle_Home\productdb_l\rdbms\admin目录下的文件cataudit.sql就是用于为审计创建数据字典视图的脚步。
  • 对象与用户的严格管理(适用于高度机密管理);
  • 其他一般数据库信息。

  三种前缀的数据字典视图 
  user_ :任何用户都可以读取的视图,每个用户读取的都不一样,它只提供当前用户某事下的对象信息。如查询当前模式下的所有对象select object_name, object_type from user_objects;

  all_ :所有用户都可读取的用户视图,它提供与用户有关的对象信息。如查询当前用户可访问的所有对象
select owner, object_name, object_type from all_objects;
  dba_:提供了只有数据库管理员才可读取的视图,包括所有用户视图中的对象信息。如select owner, object_name, object_type from sys.dba_objects;

二、数据字典相关查询

  1、 查询用户

复制代码
select username from dba_users; -- 只有管理员权限的用户才能查询 select username from all_users; -- 当前或任何用户都可使用 -- 查看当前用户的默认表空间 select username, default_tablespace from user_users; --当前用户角色 select * from user_role_privs; -- 当前用户的系统权限和表级权限 select * from user_sys_privs; select * from user_tab_privs;
复制代码

   2、查询 表空间 (拥有DBA权限的用户才能查询)

复制代码
select * from dba_data_files; select * from dba_tablespaces; --表空间 select tablespace_name, sum(bytes), sum(blocks) from dba_free_space group by tablespace_name; --空闲表空间 select * from dba_data_files where tablespace_name='USERS'; -- 表空间对于的数据文件 select * from dba_segments where tablespace_name='USERS'; --查询用户模式对象所使用过的正在使用空间大小 select name, type, source_size, code_size from user_object_size;
复制代码

  3、查询数据库对象(拥有DBA权限的用户才能查询)

select * from dba_objects select * from dba_objects where object_type = upper('package body'); select * from dba_objects where OBJECT_TYPE='TABLE' and OWNER='SCOTT'

  可根据拥有者查询下列对象类型(object_type)

  cluster    databaselink
  function   index
  library   package
  package body   procedure
  sequence   synonym
  table   trigger
  type   undefined
  view
  4、查询表

--表使用的extent的信息。segment_type='ROLLBACK'

复制代码
select * from dba_tables; select extent_id, bytes from dba_extents where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id; -- 查看回滚段的空间分配信息列信息 SELECT * FROM user_tab_columns; select distinct table_name from user_tab_columns where column_name='ID'; -- 查看当前用户下所有的表 select * from user_tables; --查看名称包含log字符的表 select object_name, object_id from user_objects where instr(object_name, 'LOG') > 0; -- 查看某表的创建时间 select object_name, created from user_objects where object_name = upper('&table_name'); -- 查看某表的大小 select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&table_name'); -- 查看放在oracle的内存的表 select table_name, cache from user_tables where instr(cache, 'Y') > 0;
复制代码

  5、查询索引

复制代码
select * from dba_indexes; -- 索引,包括主键索引 select * from all_indexes; select * from dba_ind_columns; -- 索引列 select i.index_name, i.uniqueness, c.column_name from user_indexes i, user_ind_columns c where i.index_name=c.index_name and i.table_name = 'PERSON'; --连接使用 -- 查看索引个数和类别 select index_name, index_type, table_name from user_indexes order by table_name; -- 查看索引被索引的字段 select * from user_ind_columns where index_name=upper('&index_name'); -- 查看索引的大小 select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name = upper('&index_name');
复制代码

  6、查询序列

select * from dba_sequences; select * from all_sequences;

查看序列号,last_number是当前值 select * from user_sequences;

  7、查询视图

select * from dba_views; select * from all_views;

可用目录desc all_views;来查看视图结构
其中,Text列可用于查询视图生产的脚本。

复制代码
--查询当前用户视图的名称 select view_name from user_views; --查询创建视图的select语句 select view_name, text_length from user_views; set long 2000; --可以根据视图的text_length 值设定set long的大小 select text from user_views where view_name = upper('&view_name');
复制代码

  8、查询聚簇

select * from dba_clusters;

  9、查询快照

select * from dba_snapshots;

  快照、分区应存在相对应的表空间

  10、查询同义词

select * from dba_synonyms where table_owner='SCOTT'; select * from ALL_synonyms where table_owner='SYSTEM';

  如果用户表可以被访问,那么同义词也可以被访问,用户表不能被访问,则同义词也不能被访问。

  11、查询数据库链

select * from dba_db_links;

   12、查询触发器(12)

select * from dba_triggers;

存储过程,函数从dba_objects查找

查询文本 select text from user_source where name = 'PRO_PERSON_FINDBYID';

oracle总是将存储过程,函数放在system表空间。

  13、查看函数和过程的状态

select object_name, status from user_objects where object_type='FUNCTION'; select object_name, status from user_objects where object_type='PROCEDURE'; --查看源代码 select * from all_source where owner='WUXX' and name=upper('&plsql_name');

  14、查询约束

约束是和表关联的,可以在create table或alter table table_name add/drop/modify 来建立、修改、删除约束。
可以临时禁止约束,如:
alter table book_example
disable constraint book_example_l;
数据完整性约束

select constraint_name, constraint_type, table_name from dba_constraints;

  15、查询回滚段
在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发送的事务来相应确定其大小。(DML语句才可回滚,create, drop, truncate等DDL不能回滚)
回滚段数量=并发事务/4,但不能超过50个;是每个回滚段大小足够处理一个完整的事物;

create rollback segment r05 tablespace rbs; create rollback segment rbs_cvt tablespace rbs storage(initial 1M next 500k);

  16、查询作业

select job, broken, next_date, interval, what from user_jobs; select job, broken, next_date, interval, what from dba_jobs; --正在运行的作业 select * from dba_jobs_running;

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60*60))');加入作业。间隔10秒

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60))');加入作业。间隔11分
使用表exec dbms_job.remove(21)删除21号作业。

其他信息查询
查询优化模式对象使用过的或正在使用的空间大小

select name, type, source_size, code_size from user_object_size;

查询字段的默认值

select table_name, column_name, data_default, low_value, hight_value from dba_tab_columns;










About Me

.............................................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友646634621,注明添加缘由

● 于 2018-04-01 06:00 ~ 2018-04-31 24:00 在魔都完成

● 最新修改时间:2018-04-01 06:00 ~ 2018-04-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

小麦苗的微信公众号小麦苗的DBA宝典QQ群2《DBA笔试面宝典》读者群小麦苗的微店

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群2     《DBA笔试面试宝典》读者群       小麦苗的微店

.............................................................................................................................................


DBA笔试面试讲解群
《DBA宝典》读者群 欢迎与我联系



请使用浏览器的分享功能分享到微信等