Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2920908
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-11-30 19:51:55

第5章  数据字典和动态性能视图
数据字典记录了数据库的系统信息,包括只读的表和视图,属于SYS用户,存储在system表空间;
数据字典包括数据字典基表和数据字典视图,视图基于基表建立,普通用户不能访问基表,视图包括:USER_XXX、ALL_XXX、DBA_XXX;
动态性能视图记录实例活动信息,是动态变动的;


oracle中,用户和scheme(方案)是一一对应的,scheme是用户所拥有对象的集合,用户可以被其他用户授权从而访问其他用户的对象;
USER_XXX用于显示当前用户所拥有的所有对象;
ALL_XXX用于返回当前用户可以访问的所有对象;
DBA_XXX用于显示数据库的所有对象信息,需要具有DBA角色或SELECT_CATALOG_ROLE角色的用户才能查询;


一、数据字典:记录了oracle数据库的所有系统信息,包括数据字典和数据字典视图
内容包括:
1、对象定义
执行create时,存放对象定义,使用包dbms_metadata可以取得对象定义;
D:\>sqlplus sys/sys as sysdba
SQL> select dbms_metadata.get_ddl('TABLE','EMP') ddl from dual;
ERROR:
ORA-31603: 对象 "EMP" 属于类型 TABLE, 在方案 "SYS" 中未找到
ORA-06512: 在 "SYS.DBMS_METADATA", line 1546
ORA-06512: 在 "SYS.DBMS_METADATA", line 1583
ORA-06512: 在 "SYS.DBMS_METADATA", line 1901
ORA-06512: 在 "SYS.DBMS_METADATA", line 2792
ORA-06512: 在 "SYS.DBMS_METADATA", line 4333
ORA-06512: 在 line 1
SQL> conn scott/tiger
SQL> select dbms_metadata.get_ddl('TABLE','EMP') ddl from dual;
DDL
--------------------------------------------------------------------------------
  CREATE TABLE "SCOTT"."EMP"
   (        "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),


2、对象占用空间
创建表、索引、簇时,oracle分配段存放这些对象,可以分析段占用的空间;
SQL> select bytes from user_segments where segment_name='EMP';
     BYTES
----------
     65536
要查看段已使用空间和剩余空间需先分析表:
SQL> conn scott/tiger
已连接。
SQL> analyze table EMP compute statistics;
表已分析。
SQL> select blocks,empty_blocks from user_tables where table_name='EMP';
    BLOCKS EMPTY_BLOCKS
---------- ------------
         5            3


3、列信息
SQL> set linesize 1000 pagesize 1000
SQL> select column_name,data_type,data_default from user_tab_columns where table
_name='DEPT';
COLUMN_NAME                    DATA_TYPE
                                                          DATA_DEFAULT
------------------------------ -------------------------------------------------
--------------------------------------------------------- ----------------------
----------------------------------------------------------
DEPTNO                         NUMBER
DNAME                          VARCHAR2
LOC                            VARCHAR2


SQL> col column_name format a15
SQL> col data_type format a15
SQL> col data_default format a15
SQL> select column_name,data_type,data_default from user_tab_columns where
_name='DEPT';


COLUMN_NAME     DATA_TYPE       DATA_DEFAULT
--------------- --------------- ---------------
DEPTNO          NUMBER
DNAME           VARCHAR2
LOC             VARCHAR2


4、约束信息
查询数据字典视图:USER_CONSTRAINTS,USER_CONS_COLUMNS;


5、用户、角色、权限信息
DBA_USERS:所有数据库用户信息;
DBA_SYS_PRIVS:用户或角色的系统权限;
DBA_TAB_PRIVS:用户或角色的对象权限;
DBA_COL_PRIVS:用户或角色的列权限;
DBA_ROLE_PRIVS:用户或角色所具有的其他角色;
SQL> select username from dba_users;
USERNAME
------------------------------
MGMT_VIEW
SYS
SYSTEM
DBSNMP
SYSMAN
SCOTT
OUTLN
MDSYS
ORDSYS
CTXSYS
ANONYMOUS
EXFSYS
DMSYS
WMSYS
XDB
ORDPLUGINS
SI_INFORMTN_SCHEMA
OLAPSYS
MDDATA
DIP
TSMSYS


6、其他许多系统信息


常用数据字典:
1、DICT:显示当前用户可访问的所有数据字典视图;
select table_name from dict;
已选择659行。
SQL> show user;
USER 为 "SCOTT"
SQL> select table_name from dict where comments like '%grant%';
TABLE_NAME
------------------------------
USER_COL_PRIVS
ALL_COL_PRIVS
USER_COL_PRIVS_MADE
ALL_COL_PRIVS_MADE
USER_COL_PRIVS_RECD
ALL_COL_PRIVS_RECD
USER_ROLE_PRIVS
USER_SYS_PRIVS
USER_TAB_PRIVS
ALL_TAB_PRIVS
USER_TAB_PRIVS_MADE
ALL_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
ALL_TAB_PRIVS_RECD
USER_AUDIT_STATEMENT
COLUMN_PRIVILEGES
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
TABLE_PRIVILEGES


2、DICT_COLUMNS:显示数据字典视图每个列的作用
SQL> select * from dict_columns where table_name='DICT';
TABLE_NAME                       COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------
DICT                               TABLE_NAME
Name of the object


DICT                               COMMENTS
Text comment on the object


3、dual:用于取得函数的返回值
SQL> select user from dual;
USER
------------------------------
SCOTT


4、global_name:用于显示当前数据库的全名
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JSSBOOK


5、IND:显示当前用户的索引及索引统计信息
SQL> select index_name,index_type from ind where table_name='EMP';
INDEX_NAME                       INDEX_TYPE
------------------------------ ---------------------------
PK_EMP                               NORMAL


6、OBJ:显示当前用户的对象信息
SQL> select object_name,object_id,created from obj where object_type='TABLE';
OBJECT_NAME                                                                                                                          OBJECT_ID CREATED
-------------------------------------------------------------------------------------------------------------------------------- ---------- --------------
DEPT                                                                                                                                      51155 08-10月-11
EMP                                                                                                                                      51157 08-10月-11
BONUS                                                                                                                                      51159 08-10月-11
SALGRADE                                                                                                                              51160 08-10月-11
OBJECTS                                                                                                                               51170 09-10月-11


7、SEQ:显示当前用户的序列信息


8、SYN:显示当前用户所拥有的同义词及同义词所对应的数据库对象名


9、TAB:显示当前用户所拥有的表、视图、序列
SQL> select * from tab;
TNAME                               TABTYPE        CLUSTERID
------------------------------ ------- ----------
DEPT                               TABLE
EMP                               TABLE
BONUS                               TABLE
SALGRADE                       TABLE
OBJECTS                        TABLE


二、动态性能视图:记录当前实例的活动信息
动态性能视图在实例启动时创建,实例停止时删除;
数据字典从数据文件中读取,动态性能视图从SGA和控制文件中读取;
动态性能视图的所有者为SYS,多数只能由特权用户或DBA用户查询;
维护和调整数据库性能时经常用到;


常用动态性能视图:
1、v$fixed_table:列出所有可用的动态性能视图和动态性能表
SQL> select name from v$fixed_table;
----1383行;
2、V$INSTANCE:列出当前实例的详细信息
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME         HOST_NAME                                                          VERSION            STARTUP_TIME   STATUS        PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS          SHU DATABASE_STATUS        INSTANCE_ROLE           ACTIVE_ST BLO
--------------- ---------------- ---------------------------------------------------------------- ----------------- -------------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- ---
              1 jssbook          NCUT-ZHJ                                                          10.2.0.1.0            26-12月-11           OPEN         NO             1 STARTED                       ALLOWED          NO  ACTIVE                PRIMARY_INSTANCE   NORMAL    NO
3、V$SGA:显示SGA主要组成部门
SQL> select * from v$sga;
NAME                          VALUE
-------------------- ----------
Fixed Size                1251196
Variable Size              637536388
Database Buffers      838860800
Redo Buffers                7135232
4、V$SGAINFO:显示SGA更详细信息
SQL> select * from v$sgainfo;
NAME                                      BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size                            1251196 No
Redo Buffers                            7135232 No
Buffer Cache Size                  838860800 Yes
Shared Pool Size                  318767104 Yes
Large Pool Size                   209715200 Yes
Java Pool Size                          109051904 Yes
Streams Pool Size                          0 Yes
Granule Size                            8388608 No
Maximum SGA Size                 1484783616 No
Startup overhead in Shared Pool    41943040 No
Free SGA Memory Available                  0
5、V$PARAMETER:取得初始化参数详细信息
6、V$VERSION:取得oracle版本详细信息
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE        10.2.0.1.0        Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
7、V$OPTION:显示已经安装的oracle选项
true为安装,false为未安装;
8、V$SESSION:显示会话详细信息
SQL> select SID,serial#,username from v$session;
       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
       126          185 SYSMAN
       127          866 SYS
       128          165 DBSNMP
       131           34 DBSNMP
       134          226 SYSMAN
       137          445 SCOTT
       139           52 SYSMAN
       142            2
       143          991 SYSMAN
       146          439
       150            1
       156            3
       157            3
       158            4
       160            1
       161            1
       162            1
       163            1
       164            1
       165            1
       166            1
       167            1
       168            1
       169            1
       170            1
----username为null表示是后台进程
9、V$PROCESS:与oracle相关的所有进程信息
10、V$BGPROCESS:显示后台进程详细信息
SQL> select * from v$bgprocess where paddr<>'00';
PADDR           PSERIAL# NAME  DESCRIPTION                                                                ERROR
-------- ---------- ----- ---------------------------------------------------------------- ----------
6F27A8DC          1 PMON  process cleanup                                                   ##########
6F27AECC          1 PSP0  process spawner 0                                                   ##########
6F27B4BC          1 MMAN  Memory Manager                                                   ##########
6F27BAAC          1 DBW0  db writer process 0                                                   ##########
6F2807DC          1 ARC0  Archival Process 0                                                   ##########
6F280DCC          1 ARC1  Archival Process 1                                                   ##########
6F2813BC          1 ARC2  Archival Process 2                                                   ##########
6F27C09C          1 LGWR  Redo etc.                                                           ##########
6F27C68C          1 CKPT  checkpoint                                                           ##########
6F27CC7C          1 SMON  System Monitor Process                                           ##########
6F27D26C          1 RECO  distributed recovery                                                   ##########
6F27D85C          1 CJQ0  Job Queue Coordinator                                            ##########
6F2819AC          1 QMNC  AQ Coordinator                                                   ##########
6F27DE4C          1 MMON  Manageability Monitor Process                                    ##########
6F27E43C          1 MMNL  Manageability Monitor Process 2                                   ##########
11、v$database:当前数据库详细信息
12、v$controlfile:当前控制文件信息
SQL> col name format a30
SQL> select * from v$controlfile;


STATUS        NAME                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --- ---------- --------------
        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL01.CTL


        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL02.CTL


        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL03.CTL


SQL> col name format a50
SQL> select * from v$controlfile;


STATUS        NAME                                                   IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL01.CTL   NO            16384             430
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL02.CTL   NO            16384             430
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL03.CTL   NO            16384             430
13、v$datafile:当前数据文件信息
SQL> select file#,name,bytes from v$datafile;
     FILE# NAME                                                    BYTES
---------- -------------------------------------------------- ----------
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSTEM01.DBF     513802240
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\UNDOTBS01.DBF    319815680
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSAUX01.DBF     335544320
         4 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\USERS01.DBF         5242880
         5 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS01.DBF               104857600
         6 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS02.DBF              1048576000
         7 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS03.DBF              2097152000
14、v$dbfile:数据文件编号
SQL> select * from v$dbfile;
     FILE# NAME
---------- --------------------------------------------------
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSTEM01.DBF
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\UNDOTBS01.DBF
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSAUX01.DBF
         4 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\USERS01.DBF
         5 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS01.DBF
         6 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS02.DBF
         7 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS03.DBF
15、v$logfile:日志文件信息
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- 
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO01.LOG
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO02.LOG
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO03.LOG
16、v$log:显示日志详细信息
SQL> select group#,members,bytes,status from v$log;
    GROUP#    MEMBERS           BYTES STATUS
---------- ---------- ---------- ----------------
         1            1        52428800 INACTIVE
         2            1        52428800 INACTIVE
         3            1        52428800 CURRENT
17、v$thread:重做线程详细信息
18、v$lock:显示锁信息,与v$session连接可以查询占有锁的会话、等待锁的会话;
SQL> select a.username,a.machine,b.lmode,b.request
  2  from v$session a, v$lock b
  3  where a.sid=b.sid and a.type='USER';
SQL> 未选定行
19、v$tablespace:显示表空间信息
SQL> select * from v$tablespace;
       TS# NAME                                               INC BIG FLA ENC
---------- -------------------------------------------------- --- --- --- ---
         0 SYSTEM                                              YES NO  YES
         1 UNDOTBS1                                              YES NO  YES
         2 SYSAUX                                              YES NO  YES
         3 TEMP                                               NO  NO  YES
         4 USERS                                              YES NO  YES
         5 SCOTT_TBS                                              YES NO  YES
20、v$tempfile:显示当前数据库所包含的临时文件
SQL> select name from v$tempfile;
NAME
--------------------------------------------------
D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\TEMP01.DBF
。。。。。。


====================================================================================================================================
启动服务OracleServiceDEMO--------运行DEMO实例
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/DEMO as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:48:13 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> set lines 10000
SQL> select * from v$instance;
ORA-01034: ORACLE not available
SQL> startup open
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                    1251196 bytes
Variable Size                  637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                    7135232 bytes
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME         HOST_NAME                                                          VERSION            STARTUP_TIME   STATUS        PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS          SHU DATABASE_STATUS        INSTANCE_ROLE           ACTIVE_ST BLO
--------------- ---------------- ---------------------------------------------------------------- ----------------- -------------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- ---
              1 demo                 NCUT-ZHJ                                                          10.2.0.1.0            26-12月-11           OPEN         NO             1 STOPPED                       ALLOWED          NO  ACTIVE                PRIMARY_INSTANCE   NORMAL    NO


SQL> select * from v$database;
      DBID NAME      CREATED            RESETLOGS_CHANGE# RESETLOGS_TIME PRIOR_RESETLOGS_CHANGE# PRIOR_RESETLOG LOG_MODE         CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLFILE_CR CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TI OPEN_RESETL VERSION_TIME   OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL     REMOTE_A ACTIVATION# SWITCHOVER# DATABASE_ROLE    ARCHIVELOG_CHANGE# ARCHIVEL SWITCHOVER_STATUS    DATAGUAR GUARD_S SUPPLEME SUP SUP FOR PLATFORM_ID PLATFORM_NAME                                                                                               RECOVERY_TARGET_INCARNATION# LAST_OPEN_INCARNATION# CURRENT_SCN FLASHBACK_ON          SUP SUP DB_UNIQUE_NAME                 STANDBY_BECAME_PRIMARY_SCN FS_FAILOVER_STATUS          FS_FAILOVER_CURRENT_TARGET         FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER_HOST
---------- --------- -------------- ----------------- -------------- ----------------------- -------------- ------------ ------------------ --------------- ------- -------------- --------------------- ------------------- -------------- ----------- -------------- ---------- -------------------- -------------------- -------- ----------- ----------- ---------------- ------------------ -------- -------------------- -------- ------- -------- --- --- --- ----------- ----------------------------------------------------------------------------------------------------- ---------------------------- ---------------------- ----------- ------------------ --- --- ------------------------------ -------------------------- --------------------- ------------------------------ --------------------- ------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3514387243 DEMO      19-12月-11                     1 19-12月-11                           0                    NOARCHIVELOG             313670             289639 CURRENT 19-12月-11                             326              313822 26-12月-11     NOT ALLOWED 19-12月-11     READ WRITE MAXIMUM PERFORMANCE  UNPROTECTED            ENABLED   3514397227  3514397227 PRIMARY                               0 DISABLED SESSIONS ACTIVE      DISABLED NONE        NO         NO  NO  NO               7 Microsoft Windows IA (32-bit)                                                                                                          1                         1        313925 NO                  NO  NO  DEMO                                                          0 DISABLED                                                                     0


SQL> select * from v$dbfile;
     FILE# NAME
---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         1 D:\ORACLE_DATABASE\DEMO\SYSTEM01.DBF
         2 D:\ORACLE_DATABASE\DEMO\UNDOTBS1.DBF
         3 D:\ORACLE_DATABASE\DEMO\SYSAUX01.DBF


SQL> select * from v$controlfile;
STATUS        NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ---------- --------------
        D:\ORACLE_DATABASE\DEMO\CONTROL01.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430
        D:\ORACLE_DATABASE\DEMO\CONTROL02.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430
        D:\ORACLE_DATABASE\DEMO\CONTROL03.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430


SQL> 


=====================================================================================================================================
启动服务OracleServiceJSSBOOK
D:\>set oracle_sid
oracle_sid=DEMO
D:\>set oracle_sid=JSSBOOK
D:\>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:55:35 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> startup open
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
jssbook


SQL> exit
With the Partitioning, OLAP and Data Mining options 断开
D:\>
D:\>set oracle_sid
oracle_sid=JSSBOOK
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:59:01 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
demo


=====================================================================================================================
总结:
一个机器可以建多个实例,但只能有一个实例处于运行中,取决于oracle_sid;
阅读(751) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~