Chinaunix首页 | 论坛 | 博客
  • 博客访问: 897246
  • 博文数量: 101
  • 博客积分: 2256
  • 博客等级: 大尉
  • 技术积分: 1481
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 17:52
文章存档

2017年(1)

2013年(2)

2012年(25)

2011年(73)

分类: Oracle

2011-04-19 18:25:03

一.数据字典
1.1数据字典分为两大类:基表和数据字典视图。
1.2数据字典视图
数据字典视图分为3大类,前缀分别为USER,ALL和DBA。
USER_*:该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
ALL_*:该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的限即可。
DBA_*:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)

这里的*可以是TABLES,INDEXES,OBJECTS等.
所有的数据字典视图都是静态视图,数据库不是及时的去刷新信息。需要执行oracle的ANALYZE命令后才刷新。

可能会用到的数据字典视图:
select table_name from user_tables;--查询当前用户下的所有表名;
select table_name,owner from all_tables;--查询某个用户下的所有表名;
select * from user_catalog(或者也可以写成cat);查询当前用户所有表的名字和类型;

1.3动态视图(其实是虚表)
可以用select * from dictionary;或者select * from v$fixed_table;来获取所以得动态视图。
因为有几千条记录,所以可以用spool命令来输出到文本中来。
例如:
sql>spool d:/dictionary.txt;
sql>select * from dictionary;
....
sql>spool

可以用条件语句来查询动态视图的意思。

1.4数据字典应用实例


C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 3月 21 21:24:31 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba;
已连接。
SQL> --查看数据库的名字,创建日期等。
SQL> select name,created,log_mode,open_mode from v$database;

NAME CREATED LOG_MODE OPEN_MODE
--------- -------------- ------------ ----------
JACKY 18-3月 -11 NOARCHIVELOG READ WRITE

SQL> --为非归档模式,状态为可读可写。
SQL> col host_name format a15 --格式化输出语句;
SP2-0735: 未知的 COLUMN 选项开头 "--格式化输..."
SQL> col host_name format a15;
SQL> select host_name,instance_name,version from v$instance;

HOST_NAME INSTANCE_NAME VERSION
--------------- ---------------- -----------------
BK-FDA996F2E2E9 jacky 10.2.0.1.0

SQL> --这样就获取了主机的名称和数据库的版本号
SQL> --接下来用命令来查询数据库的版本信息;
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

SQL> col name for a45;
SQL> select * from v$controlfile;

STATUS NAME IS_ BLOCK_SIZE
------- --------------------------------------------- --- ----------
FILE_SIZE_BLKS
--------------
E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/CONTRO NO 16384
L01.CTL
430

E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/CONTRO NO 16384
L02.CTL
430

E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/CONTRO NO 16384

STATUS NAME IS_ BLOCK_SIZE
------- --------------------------------------------- --- ----------
FILE_SIZE_BLKS
--------------
L03.CTL
430


SQL> --下面为了查询到重做日志的信息;
SQL> select group#,members,bytes,status,archived from v$log;

GROUP# MEMBERS BYTES STATUS ARC
---------- ---------- ---------- ---------------- ---
1 1 52428800 CURRENT NO
2 1 52428800 INACTIVE NO
3 1 52428800 INACTIVE NO

SQL> --结果显示数据库共有三组重做日志,每组只有一个成员,每个成员的大小;
SQL> --为52428800字节,且都没用被归档,当前在用的是第一组;
SQL> col member for a50;
SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
3 STALE ONLINE E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/REDO03.LOG
NO

2 STALE ONLINE E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/REDO02.LOG
NO

1 ONLINE E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/REDO01.LOG
NO


SQL> archive log list;
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 3
当前日志序列 5
SQL> --查看表空间的情况;
SQL> col tablespace_name for a20;
SQL> select tablespace_name,block_size,status,contents,logging from
2 dba_tablespaces;

TABLESPACE_NAME BLOCK_SIZE STATUS CONTENTS LOGGING
-------------------- ---------- --------- --------- ---------
SYSTEM 8192 ONLINE PERMANENT LOGGING
UNDOTBS1 8192 ONLINE UNDO LOGGING
SYSAUX 8192 ONLINE PERMANENT LOGGING
TEMP 8192 ONLINE TEMPORARY NOLOGGING
USERS 8192 ONLINE PERMANENT LOGGING

SQL> --从上面可以看出,除了TEMP临时表空间没有受到重做日志的保护
SQL> --其它都有保护,UNDOTBS1是还原表空间,其它都是永久表空间;
SQL> col file_name for a50;
SQL> set line 120;
SQL> select file_id,file_name,tablespace_name,status,bytes
2 from dba_data_files;

FILE_ID FILE_NAME TABLESPACE_NAME STATUS BYTES
---------- -------------------------------------------------- -------------------- --------- ----------
4 E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/USERS01.DBF USERS AVAILABLE 5242880
3 E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/SYSAUX01.DB SYSAUX AVAILABLE 272629760
F

2 E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/UNDOTBS01.D UNDOTBS1 AVAILABLE 26214400
BF

1 E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/SYSTEM01.DB SYSTEM AVAILABLE 503316480
F

SQL> --查看数据库中有多少用户已经创建的时间;


SQL> col username for a40;
SQL> select username,created from dba_users;

USERNAME CREATED
---------------------------------------- --------------
JACKY 18-3月 -11
MDDATA 30-8月 -05
DIP 30-8月 -05
SCOTT 30-8月 -05
TSMSYS 30-8月 -05
DBSNMP 30-8月 -05
SYSMAN 30-8月 -05
MDSYS 30-8月 -05
ORDSYS 30-8月 -05
CTXSYS 30-8月 -05
ANONYMOUS 30-8月 -05

USERNAME CREATED
---------------------------------------- --------------
EXFSYS 30-8月 -05
DMSYS 30-8月 -05
WMSYS 30-8月 -05
XDB 30-8月 -05
ORDPLUGINS 30-8月 -05
SI_INFORMTN_SCHEMA 30-8月 -05
OLAPSYS 30-8月 -05
MGMT_VIEW 30-8月 -05
SYS 30-8月 -05
SYSTEM 30-8月 -05
OUTLN 30-8月 -05

已选择22行。

阅读(1071) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~