本文中所用到的实例用户为oracle的scott用户
怎么启用scott用户:https://blog.csdn.net/qq_38170766/article/details/105381500
数据字典的内容
数据字典是很重要的数据库对象,它在数据库创建时由数据库服务器创建,记录了数据库创建的信息,各种对象的信息等:
- 所有模式(用户)对象的定义,这些对象包括表、视图、索引、族、同义词、序列号、储存过程、函数触发器等。
- 数据库的逻辑结构和物理结构,如数据库文件和重做日志文件的信息等。
- 所有模式对象被分配多少的储存空间,以及当前的使用空间。
- 默认列的值。
- 对象完整性约束信息。
- 用户信息。
- 用户或角色的特权信息。
- 审计信息,如哪个用户有访问或修改某些模式对象的权限。
使用和操作数据字典视图
通过动态性能视图具有用户可以查看可读的数据字典基表中的信息。
当使用SQL语句使得某些数据库结构或对象发生变化时,这些都会引起数据库服务器对数据字典信息的修改,如:
- 使用GRANT语句对用户赋予一定权限的时候。
- 使用ALTER DATABASE移动了控制文件的存储目录。
访问数据字典信息需要一定的授权。
不同的用户对数据字典访问有一定的区别(例如:普通的用户就无法访问DBA查看的数据字典)。
数据字典的三个基本应用(在什么场合需要用到数据字典):
- Oracle数据库服务器用来寻找用户信息,模式对象信息和储存结构。
- 当使用DDL(数据定义语句)语句时,会触发oracle修改数据字典。
- 用户使用数据字典获取数据库信息时
数据字典视图分类
数据字典分为3类,这些视图都是静态视图(静态的含义就是这些视图在数据库运行期间不会发生变化,除非执行ANALYZE指令),这三类数据字典视图以不同的前缀区分彼此:
- DBA_***:该视图包含数据库中整个对象信息,以DBA为前缀的视图只能由管理员查询,不要再这些视图上创建同义词。
- ALL_***:该视图包含了某个用所能看到的全部数据库信息,包括当前用户所拥有的的模式对象和用户可以访问的其他公共对象,还有通过授权或授予角色可以访问的模式对象。
- USER_***:该视图包含了当前用户访问的数据库对象信息,它反映了数据库中某个用户的全部情况,该视图隐含了OWNER信息,其全部内容为以ALL为前缀的视图的子集。
-
使用DBA用户连接数据库查看dba_object视图结构
通过下列操作确定了dba_objects视图中列的定义后,我们可以查看dba_objects的具体内容,但是由于有大量的结果输出,我们可以加一些限制条件
SQL> conn sys as sysdba
输入口令:
已连接。
SQL> DESC dba_objects;
名称 是否为空? 类型
-------------------------------------------------------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------------------------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
-
查看dba_object中scott用户的数据库对象信息
SQL> col owner for a20;
SQL> col object_name for a40;
SQL> select owner,object_name,created from dba_objects where owner='SCOTT';
OWNER OBJECT_NAME CREATED
-------------------- ---------------------------------------- --------------
SCOTT PK_DEPT 24-8¿ -13
SCOTT DEPT 24-8¿ -13
SCOTT EMP 24-8¿ -13
SCOTT PK_EMP 24-8¿ -13
SCOTT BONUS 24-8¿ -13
SCOTT SALGRADE 24-8¿ -13
已选择6行。
-
使用DBA用户连接数据库查看all_object视图结构
从下面的例子可以看出来,两者输出都是一样的,也就是说DBA_***,ALL_***视图具有相同的列定义。
SQL> DESC all_objects;
名称 是否为空? 类型
-------------------------------------------------------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------------------------------------------
OWNER NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NOT NULL NUMBER
EDITION_NAME VARCHAR2(30)
-
使用SCOTT用户连接数据库查看all_object中owner的名字
SQL> conn scott/tiger;
已连接。
SQL> select DISTINCT owner from all_objects;
OWNER
--------------------
MDSYS
PUBLIC
CTXSYS
OLAPSYS
SYSTEM
EXFSYS
APEX_030200
SCOTT
ORDSYS
ORDPLUGINS
DBSNMP
OWNER
--------------------
XDB
ORDDATA
SYS
WMSYS
已选择15行。
-
使用SCOTT用户连接数据库查看all_object中特定owner的部分信息
SQL> select owner,object_name,created from all_objects where owner='SCOTT';
OWNER OBJECT_NAME CREATED
-------------------- ---------------------------------------- --------------
SCOTT PK_DEPT 24-8¿ -13
SCOTT DEPT 24-8¿ -13
SCOTT EMP 24-8¿ -13
SCOTT PK_EMP 24-8¿ -13
SCOTT BONUS 24-8¿ -13
SCOTT SALGRADE 24-8¿ -13
已选择6行。
-
使用SCOTT用户连接数据库查看dba_object视图结构
SQL> DESC dba_objects;
ERROR:
ORA-04043: ¿¿ "SYS"."DBA_OBJECTS" ¿¿¿
SQL> select owner,object_name,created from dba_objects where owner='SCOTT';
select owner,object_name,created from dba_objects where owner='SCOTT'
*
第 1 行出现错误:
ORA-00942: ¿¿¿¿¿¿¿
-
查看静态数据字典USER_OBJECTS的定义
SQL> DESC user_objects;
名称 是否为空? 类型
-------------------------------------------------------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------------------------------------------
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
-
查看SCOTT用户的对象信息
SQL> select object_name,object_type,created from user_objects;
OBJECT_NAME OBJECT_TYPE CREATED
---------------------------------------- --------------------------------------------------------- --------------
PK_DEPT INDEX 24-8¿ -13
DEPT TABLE 24-8¿ -13
EMP TABLE 24-8¿ -13
PK_EMP INDEX 24-8¿ -13
BONUS TABLE 24-8¿ -13
SALGRADE TABLE 24-8¿ -13
已选择6行。
使用数据字典视图
数据字典都是静态视图,在数据库重新启动之前,静态数据字典中的信息是不会发生变化的。
-
查看当前用户所拥有的表
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------------------------------------------------------------------
SALGRADE
BONUS
EMP
DEPT
-
查看当前用户创建的索引
user_indexs数据字典视图,查看当前用户创建的索引,索引在某种程度上可以加快查询的速度。
SQL> select index_name from user_indexes;
INDEX_NAME
------------------------------------------------------------------------------------------
PK_EMP
PK_DEPT
-
查看当前用户拥有的视图
user_views数据字典视图,查看当前用户拥有的视图
SQL> select view_name from user_views;
未选定行
-
查看当前用户的所有表名和类型
SQL> select*from user_catalog;
TABLE_NAME TABLE_TYPE
------------------------------------------------------------------------------------------ ---------------------------------
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
-
查看数据库系统上创建的用户信息
SQL> conn sys as sysdba
输入口令:
已连接。
SQL> select username,created from dba_users;
USERNAME CREATED
------------------------------------------------------------------------------------------ --------------
MGMT_VIEW 24-8¿ -13
SYS 24-8¿ -13
SYSTEM 24-8¿ -13
DBSNMP 24-8¿ -13
SYSMAN 24-8¿ -13
SCOTT 24-8¿ -13
TT 05-4¿ -20
OUTLN 24-8¿ -13
FLOWS_FILES 24-8¿ -13
MDSYS 24-8¿ -13
ORDSYS 24-8¿ -13
USERNAME CREATED
------------------------------------------------------------------------------------------ --------------
EXFSYS 24-8¿ -13
WMSYS 24-8¿ -13
APPQOSSYS 24-8¿ -13
APEX_030200 24-8¿ -13
OWBSYS_AUDIT 24-8¿ -13
ORDDATA 24-8¿ -13
CTXSYS 24-8¿ -13
ANONYMOUS 24-8¿ -13
XDB 24-8¿ -13
ORDPLUGINS 24-8¿ -13
OWBSYS 24-8¿ -13
USERNAME CREATED
------------------------------------------------------------------------------------------ --------------
SI_INFORMTN_SCHEMA 24-8¿ -13
OLAPSYS 24-8¿ -13
ORACLE_OCM 24-8¿ -13
XS$NULL 24-8¿ -13
BI 05-4¿ -20
PM 05-4¿ -20
MDDATA 24-8¿ -13
IX 05-4¿ -20
SH 05-4¿ -20
DIP 24-8¿ -13
OE 05-4¿ -20
USERNAME CREATED
------------------------------------------------------------------------------------------ --------------
APEX_PUBLIC_USER 24-8¿ -13
HR 05-4¿ -20
SPATIAL_CSW_ADMIN_USR 24-8¿ -13
SPATIAL_WFS_ADMIN_USR 24-8¿ -13
已选择37行。
动态性能视图及使用
上面讲的是静态数据字典,oracle还维护了一类非常重要的数据字典视图:动态性能视图。
动态性能视图只能存在于运行的数据库中,它是一组虚表,通常也把这组表称为动态性能表。
数据库动态性能视图只能由管理员用户查询。管理员可以在动态性能视图上创建视图,并将访问权限授予其他用户。
任何用户都无法修改或者删除动态性能视图。
sys用户拥有所有的动态性能视图,他们通常以V$开头,包含了一些如:
-
v$controlfile:控制文件存储目录和文件名信息。
-
v$datafile:包含了数据库文件信息。
-
v$fixed_table:包含了当前所有动态性能视图。
-
查询和日志文件相关的信息
下面的操作哟查询了所有和日志文件相关的动态性能视图,如果想要了解日志文件的详细信息我们可以使用v$log视图和v$logfile视图。
SQL> select * from v$fixed_table where name like '%V$LOG%';
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
GV$LOGFILE 4294951289 VIEW 65537
V$LOGFILE 4294950935 VIEW 65537
GV$LOG 4294951318 VIEW 65537
V$LOG 4294951049 VIEW 65537
GV$LOGHIST 4294951320 VIEW 65537
V$LOGHIST 4294951051 VIEW 65537
GV$LOG_HISTORY 4294951332 VIEW 65537
V$LOG_HISTORY 4294951077 VIEW 65537
V$LOGMNR_CONTENTS 4294951541 VIEW 65537
GV$LOGMNR_CONTENTS 4294951542 VIEW 65537
V$LOGMNR_LOGS 4294951543 VIEW 65537
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
GV$LOGMNR_LOGS 4294951544 VIEW 65537
V$LOGMNR_DICTIONARY 4294951545 VIEW 65537
GV$LOGMNR_DICTIONARY 4294951546 VIEW 65537
V$LOGMNR_PARAMETERS 4294951547 VIEW 65537
GV$LOGMNR_PARAMETERS 4294951548 VIEW 65537
GV$LOGMNR_LOGFILE 4294951642 VIEW 65537
V$LOGMNR_LOGFILE 4294951643 VIEW 65537
GV$LOGMNR_PROCESS 4294951645 VIEW 65537
V$LOGMNR_PROCESS 4294951646 VIEW 65537
GV$LOGMNR_TRANSACTION 4294951648 VIEW 65537
V$LOGMNR_TRANSACTION 4294951649 VIEW 65537
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
GV$LOGMNR_REGION 4294951632 VIEW 65537
V$LOGMNR_REGION 4294951633 VIEW 65537
GV$LOGMNR_CALLBACK 4294951635 VIEW 65537
V$LOGMNR_CALLBACK 4294951636 VIEW 65537
GV$LOGMNR_SESSION 4294951639 VIEW 65537
V$LOGMNR_SESSION 4294951640 VIEW 65537
GV$LOGMNR_LATCH 4294952584 VIEW 65537
V$LOGMNR_LATCH 4294952585 VIEW 65537
GV$LOGMNR_DICTIONARY_LOAD 4294952587 VIEW 65537
V$LOGMNR_DICTIONARY_LOAD 4294952588 VIEW 65537
GV$LOGMNR_SYS_OBJECTS 4294952761 VIEW 65537
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
V$LOGMNR_SYS_OBJECTS 4294952762 VIEW 65537
GV$LOGMNR_SYS_DBA_SEGS 4294952763 VIEW 65537
V$LOGMNR_SYS_DBA_SEGS 4294952764 VIEW 65537
GV$LOGMNR_EXTENTS 4294952765 VIEW 65537
V$LOGMNR_EXTENTS 4294952766 VIEW 65537
GV$LOGMNR_DBA_OBJECTS 4294952767 VIEW 65537
V$LOGMNR_DBA_OBJECTS 4294952768 VIEW 65537
GV$LOGMNR_OBJECT_SEGMENTS 4294952769 VIEW 65537
V$LOGMNR_OBJECT_SEGMENTS 4294952770 VIEW 65537
GV$LOGSTDBY 4294951710 VIEW 65537
V$LOGSTDBY 4294951711 VIEW 65537
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
GV$LOGSTDBY_STATS 4294951713 VIEW 65537
V$LOGSTDBY_STATS 4294951714 VIEW 65537
GV$LOGSTDBY_TRANSACTION 4294952180 VIEW 65537
V$LOGSTDBY_TRANSACTION 4294952181 VIEW 65537
GV$LOGSTDBY_PROCESS 4294952178 VIEW 65537
V$LOGSTDBY_PROCESS 4294952179 VIEW 65537
GV$LOGSTDBY_PROGRESS 4294952173 VIEW 65537
V$LOGSTDBY_PROGRESS 4294952174 VIEW 65537
GV$LOGSTDBY_STATE 4294952176 VIEW 65537
V$LOGSTDBY_STATE 4294952177 VIEW 65537
GV$LOGMNR_STATS 4294951833 VIEW 65537
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------------------------------------------------------------------ ---------- --------------- ----------
V$LOGMNR_STATS 4294951834 VIEW 65537
已选择56行。
-
通过v$instance查看实例信息
SQL> select instance_name,host_name,version,startup_time,logins from v$instance;
INSTANCE_NAME HOST_NAME
------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERSION STARTUP_TIME LOGINS
--------------------------------------------------- -------------- ------------------------------
tiqs oracle
11.2.0.4.0 08-4¿ -20 ALLOWED
-
通过v$database查看数据库的信息
SQL> select name,created,log_mode from v$database;
NAME CREATED LOG_MODE
--------------------------- -------------- ------------------------------------
TIQS 05-4¿ -20 ARCHIVELOG