对于Oracle系统管理员而言,Oracle数据字典就像是一个宝库:它是ORACLE数据库的重要组成部分,提供了诸如数据库结构、数据库对象空间分配和数据库用户等等有关数据库的信息。本文试图从数据库管理系统的若干基本概念出发,具体介绍从ORACLE数据字典来了解ORACLE的方法。
不同的操作系统、不同版本的ORACLE数据字典有所差异,本文均以UNIX操作系统、ORACLE 7为例加以说明。
数据库系统实例和数据库标识
ORACLE数据库系统包含两个方面,即ORACLE数据库和ORACLE实例,用户是通过ORACLE实例来访问ORACLE数据库的。
1.数据库(DATABASE)
数据库是作为整体看待的数据集合,通常在安装ORACLE软件的最后阶段创建,用数据库名加以标识(允许1~8个字符),数据库名在创建数据库时确认,且保存在控制文件中。
2.实例(INSTANCE,也译作例程)
实例是存取和控制数据库的软件机制。它由系统全局区(System Global Area,即SGA)和ORACLE进程两部分组成,和数据库名一样,实例也要唯一标识,并且在安装ORACLE软件时确认。
我们可以采用下述方法来了解实例标识。
有的系统管理员有意无意地将数据库名和实例标识取相同的标识符,当然是可以的,有时甚至会带来某些方便,但笔者认为,还是取不同标识符为宜。
数据库的初始化参数文件
在数据库的建立和运行中,都要阅读一个初始化参数文件,它是个文本文件,可以用一般的编辑程序编辑。
每一个数据库至少有一个初始化参数文件,一般命名为INIT.ORA,在UNIX系统下,按照缺省规定,其初始化参数文件名的命名原则为INIT后紧跟实例的标识,再加ORA后缀,例如,某实例标识为TEST,其初始化参数文件名为INITTEST.ORA。
数据库的初始化参数有100多个,前面提到的DB_NAME即是其中之一。此外,还有许多其他参数,如
CONTROL-FILES 控制文件名
ROLLBACK-SEGMENTS 分配给实例的回滚段名
INIT-SQL-FILES 数据库建立时执行的命令文件
PROCESSES 多进程系统中最大进程数
数据库的物理结构
数据库的物理结构是面向操作系统的,它描述数据库中的数据的存储形式。在物理上OA
CLE数据库文件包括数据文件、日志文件和控制文件。
1.数据文件(DATA FILES)
ORACLE数据库中的数据,逻辑上存放在表空间里,但物理上却是存放在数据文件里的,数据文件有如下特点,即每一个数据文件只与一个数据库相联系,数据库文件一旦建立,就不能改变大小,一个表空间可以包含一个或多个数据文件等。
我们可以用下述方法来了解数据库的全部数据文件。
(1)SQLDBA>SELECT*FROM DBA-DATA-FILES;结果中,列名FILE-NAME即为数据文件名。
(2)SQLDBA>SELECT*FROM V$DATAFILE;结果中,列名NAME即为数据文件名。
(3)SQLDBA>SELECT*FROM V$DBFILE;结果中,列名NAME即为数据文件名。
2.日志文件(REDO LOG FILES)
日志文件用于记录数据库所做的全部变更,以便在系统发生故障时进行恢复。每一个数据库至少有两个日志文件。
3.控制文件(CONTROL FILES)
控制文件虽然是一个较小的二进制文件,但很重要。如果控制文件一旦被破坏,则无法对数据库进行操作。为防止控制文件被破坏,一般一个数据库应至少有二个控制文件,且分别放在不同的磁盘上,控制文件的名字是记录在参数CONTROL_FILES中的。
数据库的逻辑结构
数据库的逻辑结构是面向用户的,数据库的逻辑结构包含表空间、段、范围、数据块和模式对象。从逻辑上看数据库有以下特点。
一个数据库(DATABASE)由一个或多个表空间所组成。
一个表空间(TABLESPACE)由段组成,作为SYSTEM表空间,它由自举段、回滚段、数据段、临时段等多个段组成,而作为非SYSTEM表空间,则因用途而异由不同段组成。
一个段(SEGMENT)由一组范围组成。一个范围(EXTENT)由一组连续的数据块组成。一个数据块(DATABASE BLOCK)对应磁盘上的一个或多个物理块。
在数据库的逻辑结构中,表空间和回滚段比较重要,下面分别加以介绍。
1.表空间
每一个数据库都必须包含一个名为SYSTEM的表空间。该表空间在创建数据库时由系统自动创建,为了保证数据库能正常运行,SYSTEM表空间必须处于在线状态。
为了增强对数据库的控制和维护,一般一个数据库都包含多个表空间。使用多个表空间有许多优点,例如可以使用户数据与数据字典相分离,可以在不同的磁盘上存储不同表空间的数据文件,从而减少I/O冲突,还可以使一些表空间在线,而使另一些表空间离线等等。
2.回滚段
每一个表空间是都由段组成。ORACLE数据库中的段有数据段、索引段、临时段、回滚段和自举段。比较重要的是回滚段,它记录数据库的变更信息,以实现数据库的读一致性及恢复工作。
在SYSTEM表空间里有一个SYSTEM回滚段,是在创建数据库时随之产生的。如果使用多个表空间,至少还应有一个另外的回滚段。回滚段分专用和公用两种,要使用专用回滚段,需要在初始化参数文件的ROLLBACK-SEGMENTS参数上写上专用回滚段的段名并且重新启动数据库,或者通过回滚段在线命令使它在线。
数据库的用户
ORACLE数据库是个多用户系统。为了保证数据库系统的安全,ORACLE数据库管理系统配制了良好的安全机制。例如,每一个ORACLE数据库都有一个用户表,它记载着每一个用户的有关信息,一旦用户进入系统,ORACLE系统会通过这张表来检查用户的合法性。又如,ORACLE系统通过合理分配用户的权限来管理用户。通常,ORACLE将用户分为三类,即DBA、RESOUCE和CONNECT三类角色,使不同的用户的权限各不相同。
在创建数据库时,系统自动建立了两个用户,即SYS和SYSTEM用户,且授给这两个用户DB权限,由于DBA具有最高权限,建议将它们的口令及时修改,以免个别用户以DBA角色进入系统,有意无意地给系统造成损害。
除了SYS、SYSTEM用户外,其余用户都要一一建立,建立用户的方法如下:
假设要建的用户名为RSXT,口令为RSPASS;默认的表空间为USER,临时表空间为TEMP,表空间限额为3M,其余默认,则可用下面方法创建新用户:
- SQLDBA>CREATEUSERRSXTIDENTIFIEDBYRSPASS
-
DEFAULTTABLESPACEUSER
-
TEMPORARYTABLESPACETEMP
-
QUOTA3MONUSER;
请注意,该用户建立后,还要及时授权,否则像上述刚刚建成的用户,则一无所为,甚至都不能连接数据库。对一般用户,通常授予CONNECT和RESOURCE角色权限,命令如下:
SQLDBA>GRANT CONNECT,RESOURCE TO RSXT;
对于一个有着许多用户的数据库系统,我们可以通过下述方法来了解数据库的用户情况。
1.对于非DBA用户
对于非DBA用户,有两条命令,即:
(1)SQL>SELECT*FROM ALL-USERS;
(2)SQL>SELECT*FROM USER-USERS;
其中,从USER-USERS表中,可以了解到该用户的默认表空间和临时表空间等信息。
2.对于DBA用户
对于DBA用户,有三条命令,即:
(1)SQLDBA>SELECT*FROM ALL-USERS;
(2)SQLDBA>SELECT*FROM USER-USERS;
(3)SQLDBA>SELECT*FROM DBA-USERS;
其中,从DBA-USERS中,可以了解到所有用户的详细信息,因而该命令对于数据库管理员来说是很有用的。
关于非DBA用户的信息
由于DBA用户具有最高权限,为安全起见,只有Oracle系统管理员才授予DBA权限,大多数用户均为非DBA用户。尽管相应的权限少了,但是从ORACLE数据字典中,还是可以得到 很多关于非DBA用户的有用信息。
我们可以采用下述方法来了解有关非DBA用户的信息。
1.SQL>SELECT*FROM USER-USERS;
可以查看该用户的默认表空间,临时表空间和用户创建时间。
2.SQL>SELECT*FROM USER-TABLES;
可以查看该用户创建的所有表的详细信息,由于列名较多,一屏看不了几个表。
如果仅仅想查看用户所建表的表名,可以用下面的命令:
SQL>SELECT TABLE-NAME FROM USER-TABLES;
3.SQL〉SELECT*FROM USER-VIEWS;
可以查看该用户所创建的视图,包括创建视图的文本。
同样,如果仅仅想查看用户所建视图的视图名,可以用下面的命令:
SQL>SELECT VIEW-NAME FROM USER-VIEWS;
4.SQL>SELECT*FROM USER-TABLESPACES;
可以查看该用户可存取的表空间的信息。
5.SQL>SELECT TABLESPACE-NAME,SUM(BYTES),SUM(BLOCKS)
FROM USER-FREE-SPACE GROUP BY TABLESPACE-NAME;
可以查看该用户可存取的表空间的剩余空间。
6.SQL>SELECT *FROM USER-TS-QUOTAS;
可以查看该用户的表空间的份额。
7.SQL>SELECT *FROM USER-ROLE-PRIVS;
可以查看该用户被授予的角色。
8.SQL>SELECT *FROM USER-SYS-PRIVS;
可以查看该用户的系统权限及能否再授予其它用户的权限。
9.SQL>SELECT *FROM USER-TAB-PRIVS-RECD;
可以查看该用户能访问其它用户的表、视图等的对象权限。
10.SQL>SELECT *FROM USER-TAB-PRIVS-MADE;
可以查看该用户授予其它用户的表、视图等的对象权限。
对于Oracle系统管理员而言,Oracle数据字典就像是一个宝库:它是ORACLE数据库的重要组成部分,提供了诸如数据库结构、数据库对象空间分配和数据库用户等等有关数据库的信息。本文试图从数据库管理系统的若干基本概念出发,具体介绍从ORACLE数据字典来了解ORACLE的方法。
不同的操作系统、不同版本的ORACLE数据字典有所差异,本文均以UNIX操作系统、ORACLE 7为例加以说明。
数据库系统实例和数据库标识
ORACLE数据库系统包含两个方面,即ORACLE数据库和ORACLE实例,用户是通过ORACLE实例来访问ORACLE数据库的。
1.数据库(DATABASE)
数据库是作为整体看待的数据集合,通常在安装ORACLE软件的最后阶段创建,用数据库名加以标识(允许1~8个字符),数据库名在创建数据库时确认,且保存在控制文件中。
2.实例(INSTANCE,也译作例程)
实例是存取和控制数据库的软件机制。它由系统全局区(System Global Area,即SGA)和ORACLE进程两部分组成,和数据库名一样,实例也要唯一标识,并且在安装ORACLE软件时确认。
我们可以采用下述方法来了解实例标识。
有的系统管理员有意无意地将数据库名和实例标识取相同的标识符,当然是可以的,有时甚至会带来某些方便,但笔者认为,还是取不同标识符为宜。
数据库的初始化参数文件
在数据库的建立和运行中,都要阅读一个初始化参数文件,它是个文本文件,可以用一般的编辑程序编辑。
每一个数据库至少有一个初始化参数文件,一般命名为INIT.ORA,在UNIX系统下,按照缺省规定,其初始化参数文件名的命名原则为INIT后紧跟实例的标识,再加ORA后缀,例如,某实例标识为TEST,其初始化参数文件名为INITTEST.ORA。
数据库的初始化参数有100多个,前面提到的DB_NAME即是其中之一。此外,还有许多其他参数,如
CONTROL-FILES 控制文件名
ROLLBACK-SEGMENTS 分配给实例的回滚段名
INIT-SQL-FILES 数据库建立时执行的命令文件
PROCESSES 多进程系统中最大进程数
数据库的物理结构
数据库的物理结构是面向操作系统的,它描述数据库中的数据的存储形式。在物理上OA
CLE数据库文件包括数据文件、日志文件和控制文件。
1.数据文件(DATA FILES)
ORACLE数据库中的数据,逻辑上存放在表空间里,但物理上却是存放在数据文件里的,数据文件有如下特点,即每一个数据文件只与一个数据库相联系,数据库文件一旦建立,就不能改变大小,一个表空间可以包含一个或多个数据文件等。
我们可以用下述方法来了解数据库的全部数据文件。
(1)SQLDBA>SELECT*FROM DBA-DATA-FILES;结果中,列名FILE-NAME即为数据文件名。
(2)SQLDBA>SELECT*FROM V$DATAFILE;结果中,列名NAME即为数据文件名。
(3)SQLDBA>SELECT*FROM V$DBFILE;结果中,列名NAME即为数据文件名。
2.日志文件(REDO LOG FILES)
日志文件用于记录数据库所做的全部变更,以便在系统发生故障时进行恢复。每一个数据库至少有两个日志文件。
3.控制文件(CONTROL FILES)
控制文件虽然是一个较小的二进制文件,但很重要。如果控制文件一旦被破坏,则无法对数据库进行操作。为防止控制文件被破坏,一般一个数据库应至少有二个控制文件,且分别放在不同的磁盘上,控制文件的名字是记录在参数CONTROL_FILES中的。
数据库的逻辑结构
数据库的逻辑结构是面向用户的,数据库的逻辑结构包含表空间、段、范围、数据块和模式对象。从逻辑上看数据库有以下特点。
一个数据库(DATABASE)由一个或多个表空间所组成。
一个表空间(TABLESPACE)由段组成,作为SYSTEM表空间,它由自举段、回滚段、数据段、临时段等多个段组成,而作为非SYSTEM表空间,则因用途而异由不同段组成。
一个段(SEGMENT)由一组范围组成。一个范围(EXTENT)由一组连续的数据块组成。一个数据块(DATABASE BLOCK)对应磁盘上的一个或多个物理块。
在数据库的逻辑结构中,表空间和回滚段比较重要,下面分别加以介绍。
1.表空间
每一个数据库都必须包含一个名为SYSTEM的表空间。该表空间在创建数据库时由系统自动创建,为了保证数据库能正常运行,SYSTEM表空间必须处于在线状态。
为了增强对数据库的控制和维护,一般一个数据库都包含多个表空间。使用多个表空间有许多优点,例如可以使用户数据与数据字典相分离,可以在不同的磁盘上存储不同表空间的数据文件,从而减少I/O冲突,还可以使一些表空间在线,而使另一些表空间离线等等。
2.回滚段
每一个表空间是都由段组成。ORACLE数据库中的段有数据段、索引段、临时段、回滚段和自举段。比较重要的是回滚段,它记录数据库的变更信息,以实现数据库的读一致性及恢复工作。
在SYSTEM表空间里有一个SYSTEM回滚段,是在创建数据库时随之产生的。如果使用多个表空间,至少还应有一个另外的回滚段。回滚段分专用和公用两种,要使用专用回滚段,需要在初始化参数文件的ROLLBACK-SEGMENTS参数上写上专用回滚段的段名并且重新启动数据库,或者通过回滚段在线命令使它在线。
数据库的用户
ORACLE数据库是个多用户系统。为了保证数据库系统的安全,ORACLE数据库管理系统配制了良好的安全机制。例如,每一个ORACLE数据库都有一个用户表,它记载着每一个用户的有关信息,一旦用户进入系统,ORACLE系统会通过这张表来检查用户的合法性。又如,ORACLE系统通过合理分配用户的权限来管理用户。通常,ORACLE将用户分为三类,即DBA、RESOUCE和CONNECT三类角色,使不同的用户的权限各不相同。
在创建数据库时,系统自动建立了两个用户,即SYS和SYSTEM用户,且授给这两个用户DB权限,由于DBA具有最高权限,建议将它们的口令及时修改,以免个别用户以DBA角色进入系统,有意无意地给系统造成损害。
除了SYS、SYSTEM用户外,其余用户都要一一建立,建立用户的方法如下:
假设要建的用户名为RSXT,口令为RSPASS;默认的表空间为USER,临时表空间为TEMP,表空间限额为3M,其余默认,则可用下面方法创建新用户:
- SQLDBA>CREATEUSERRSXTIDENTIFIEDBYRSPASS
-
DEFAULTTABLESPACEUSER
-
TEMPORARYTABLESPACETEMP
-
QUOTA3MONUSER;
请注意,该用户建立后,还要及时授权,否则像上述刚刚建成的用户,则一无所为,甚至都不能连接数据库。对一般用户,通常授予CONNECT和RESOURCE角色权限,命令如下:
SQLDBA>GRANT CONNECT,RESOURCE TO RSXT;
对于一个有着许多用户的数据库系统,我们可以通过下述方法来了解数据库的用户情况。
1.对于非DBA用户
对于非DBA用户,有两条命令,即:
(1)SQL>SELECT*FROM ALL-USERS;
(2)SQL>SELECT*FROM USER-USERS;
其中,从USER-USERS表中,可以了解到该用户的默认表空间和临时表空间等信息。
2.对于DBA用户
对于DBA用户,有三条命令,即:
(1)SQLDBA>SELECT*FROM ALL-USERS;
(2)SQLDBA>SELECT*FROM USER-USERS;
(3)SQLDBA>SELECT*FROM DBA-USERS;
其中,从DBA-USERS中,可以了解到所有用户的详细信息,因而该命令对于数据库管理员来说是很有用的。
关于非DBA用户的信息
由于DBA用户具有最高权限,为安全起见,只有Oracle系统管理员才授予DBA权限,大多数用户均为非DBA用户。尽管相应的权限少了,但是从ORACLE数据字典中,还是可以得到 很多关于非DBA用户的有用信息。
我们可以采用下述方法来了解有关非DBA用户的信息。
1.SQL>SELECT*FROM USER-USERS;
可以查看该用户的默认表空间,临时表空间和用户创建时间。
2.SQL>SELECT*FROM USER-TABLES;
可以查看该用户创建的所有表的详细信息,由于列名较多,一屏看不了几个表。
如果仅仅想查看用户所建表的表名,可以用下面的命令:
SQL>SELECT TABLE-NAME FROM USER-TABLES;
3.SQL〉SELECT*FROM USER-VIEWS;
可以查看该用户所创建的视图,包括创建视图的文本。
同样,如果仅仅想查看用户所建视图的视图名,可以用下面的命令:
SQL>SELECT VIEW-NAME FROM USER-VIEWS;
4.SQL>SELECT*FROM USER-TABLESPACES;
可以查看该用户可存取的表空间的信息。
5.SQL>SELECT TABLESPACE-NAME,SUM(BYTES),SUM(BLOCKS)
FROM USER-FREE-SPACE GROUP BY TABLESPACE-NAME;
可以查看该用户可存取的表空间的剩余空间。
6.SQL>SELECT *FROM USER-TS-QUOTAS;
可以查看该用户的表空间的份额。
7.SQL>SELECT *FROM USER-ROLE-PRIVS;
可以查看该用户被授予的角色。
8.SQL>SELECT *FROM USER-SYS-PRIVS;
可以查看该用户的系统权限及能否再授予其它用户的权限。
9.SQL>SELECT *FROM USER-TAB-PRIVS-RECD;
可以查看该用户能访问其它用户的表、视图等的对象权限。
10.SQL>SELECT *FROM USER-TAB-PRIVS-MADE;
可以查看该用户授予其它用户的表、视图等的对象权限。
分享到:
相关推荐
1.4.3 优化数据字典存储 1.5 理解 CREATE DATABASE 命令 1.6 创建数据库的技术 1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 ...
1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 1.2.4 进程 8 1.3 存储管理 9 1.3.2 逻辑结构 10 1.3.3 表(Table) 14 1.3.4 视图(View) 18 1.3.5 索引(Index) 18 1.3.6 同义词(Synonym) ...
数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。 (4) 概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物及事物之间的关系。它是现实世界...
数据库管理员的任务I-4 1 Oracle 体系结构组件 目标1-2 基本组件概览1-3 Oracle 服务器1-5 Oracle 例程1-6 建立连接和创建会话1-7 Oracle 数据库1-9 物理结构1-10 内存结构1-11 系统全局区1-12 共享池1-15 库高速...
Oracle 数据库管理员的任务 2-3 用于管理 Oracle 数据库的工具 2-4 安装:系统要求 2-6 检查系统要求 2-7 灵活体系结构 (OFA) 2-8 使用灵活体系结构 2-9 设置环境变量 2-11 Oracle Universal Installer (OUI)...
对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序开发员,也有很好的学习和参考价值。 Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以...
数据管理员的验证方式 2-12 使用密码文件验证 2-13 SQL*PLUS 2-14 Oracle 企业管理器 2-15 Oracle 企业管理器结构:基于 JAVA 的控制台和应用程序 2-16 Oracle 企业管理器结构:管理节点 2-17 Oracle 企业管理器...
7.oracle丢失管理员密码怎么办 11 8.oracle表管理 12 9.oracle基本查询 14 oracle基本所有查询案例 16 10.oracle分页查询 21 (1)删除重复记录 22 11.oracle合并查询 24 12.oracle连接 25 13.oracle函数 26 (1)字符...
对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序开发员,也有很好的学习和参考价值。 Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以...
对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序开发员,也有很好的学习和参考价值。 Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以...
1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 1.2.4 进程 8 1.3 存储管理 9 1.3.2 逻辑结构 10 1.3.3 表(Table) 14 1.3.4 视图(View) 18 1.3.5 索引(Index) 18 1.3.6 同义词(Synonym) ...
《Oracle11g宝典》是Oracle数据库管理员、安全管理员、网络管理员、应用开发人员的参考指南,还是Oracle技术支持和培训机构、Oracle学习班、高等院校计算机专业数据库课程的参考教材和上机指导教材。每类人员都...
对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序 开发员,也有很好的学习和参考价值。 Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以...
对于初学者,《Oracle11g从入门到精通》是一本很好的入门教程,对Oracle管理员和应用程序 开发员,也有很好的学习和参考价值。 Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以...
说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...
用系统管理员,查看当前数据库有几个用户连接: SQL> select username,sid,serial# from v$session; 如果要停某个连接用 SQL> alter system kill session 'sid,serial#'; 如果这命令不行,找它UNIX的进程数 SQL>...
15.5.2 管理员维护模块设计 15.5.3 新闻管理模块设计 15.6 系统前台主要功能模块的设计与实现 15.6.1 今日新闻的显示 15.6.2 查找新闻 15.6.3 查看新闻人物和投票 15.7 本章小结 附录A 0racle 11g词汇集锦 附录B 0...
15.5.2 管理员维护模块设计 15.5.3 新闻管理模块设计 15.6 系统前台主要功能模块的设计与实现 15.6.1 今日新闻的显示 15.6.2 查找新闻 15.6.3 查看新闻人物和投票 15.7 本章小结 附录A 0racle 11g词汇集锦 附录B 0...