技术文档:Oracle中的数据字典技术简析
- 格式:doc
- 大小:26.00 KB
- 文档页数:5
ORACLE数据字典(一)数据字典概念Oracle数据字典由表和视图组成,其中存储了一些与数据库结构信息相关的数据库对象。
数据字典描述了实际数据的组织方式。
例如,表的创建者信息、创建时间信息、表空间信息、用户访问权限信息等。
它们可以像其他数据库表或视图一样进行查询,但不能修改。
它们存储在系统表空间中。
当用户在操作数据库中的数据时遇到困难,他们可以访问数据字典来查看详细信息。
数据字典不仅是数据库的核心,也是所有用户,包括最终用户、程序员和数据库管理员的重要工具。
因为数据字典是只读的,所以我们只能对其表或视图使用SQL查询语句。
oracle数据库字典通常是在创建和安装数据库时被创建的,oracle数据字典是oracle数据库系统工作的基础,没有数据字典的支持,oracle数据库系统就不能进行任何工作。
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
数据字典内容包括:1.数据库中所有模式对象的信息,如表、视图、集群、索引、集群、同义词、序列、过程、方法、包、触发器等。
2,分配多少空间,当前使用了多少空间等。
3,列的缺省值。
4.约束信息的完整性。
5.Oracle用户的名称。
6,用户及角色被授予的权限。
7,用户访问或使用的审计信息。
8,其它产生的数据库信息。
(二)数据字典分类数据字典按照存在的形式分为数据字典表和数据字典视图。
2.1数据字典表数据字典表里的数据是oracle系统存放的系统数据,而普通表存放的是用户的数据。
为了方便的区别这些表,这些表的名字都是用\结尾,这些表属于sys用户。
数据字典表由$oracle_uuhome/rdbms/admin/sql创建。
创建BSQ脚本,并在此脚本中调用其他脚本来创建这些数据字典表。
在这些创建脚本中使用基表创建SQL。
只有Oracle可以读取和写入这些数据字典表。
基表是存储数据库信息的基础表。
基表是在任何Oracle 数据库中创建的第一个对象。
使用“创建数据库”创建数据库时,只要Oracle server运行SQL BSQ脚本,就会自动创建这些对象。
一、概述Oracle数据字典是Oracle数据库内置的元数据信息集合,用于存储和展示数据库中的对象、表、视图、索引等相关信息。
其中,字段内容是数据字典中的一个重要部分,它记录了数据库中各个字段的属性、数据类型、约束等信息。
本文将从字段内容的定义、结构和应用角度进行详细的介绍和分析,帮助读者更好地理解和运用Oracle数据字典中的字段内容。
二、字段内容的定义在Oracle数据库中,字段内容指的是数据库中表的字段定义信息,包括字段名、数据类型、长度、约束、默认值等。
它是数据库设计和管理的重要指标之一,对于数据库开发人员、管理员和分析师来说具有重要意义。
三、字段内容的结构字段内容包括以下几个方面的信息:1.字段名:字段在表中的名称,一般由字母、数字和下划线组成。
2.数据类型:字段存储的数据类型,如VARCHAR2、NUMBER、DATE等。
3.长度:字段存储数据的长度限制,如VARCHAR2(50)表示最大长度为50个字符。
4.约束:字段的数据约束,如主键约束、外键约束、唯一约束等。
5.默认值:字段的默认数值或表达式,当插入数据时若未指定该字段的值,则自动填充默认值。
四、字段内容的应用1.数据库设计:在进行数据库设计时,需要合理地定义字段内容,选择合适的数据类型、长度和约束,以便存储和保护数据的完整性和一致性。
2.数据分析:在进行数据分析时,可以通过字段内容了解到表中各个字段的基本信息,为数据清洗、转换和分析提供依据。
3.性能优化:通过分析字段内容,可以优化数据库的物理结构、索引设计等,提高数据库的性能和响应速度。
五、字段内容的查询方法在Oracle数据库中,可以通过以下几种方式查询字段内容:1.使用SQL语句查询数据字典视图,如USER_TAB_COLUMNS、ALL_TAB_COLUMNS、DBA_TAB_COLUMNS等。
2.使用Oracle SQL Developer工具进行可视化操作,通过图形化界面查看和编辑字段内容。
数据字典数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。
用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成。
数据字典包括:数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典试图取得系统信息,数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型。
er_tables:显示当前用户所拥有的表。
他只返回用户所对用方案的所有表。
select tabel_name from users_tables;2.all_tables:用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其他方案的表。
select tabel_name from all_tables;3.dba_tables它会显示所有方案拥有的数据表,但是查询这种数据库字典视图,要求用户必须是dba角色或是有select anytable系统权限。
例如:当用system用户查询数据字典视图dba_tables 时,会返回system,sys,scott....方案所对应的数据库表。
在建立用户时,oracle会把用户的信息用户存放在数据字典中,当给用户赋予权限或者角色时,oracle会把权限或者角色的详细信息存放在数据字典中。
dba_users可以查询显示所有数据库用户的详细信息。
desc dba_role_privs(看表的列结构)数据字典视图:dba_sys_privs可以显示用户具有的系统权限。
数据字典视图:dba_tab_privs可以显示用户具有的对象权限。
数据字典视图:dba_col_privs可以显示用户具有的列权限。
数据字典视图:dba_role_privs可以显示用户所有具有的角色。
数据字典视图:1.查看scott具有的角色,可查询dba_role_privs;角色是若干个权限的集合。
Oracle数据字典数据字典是Oracle数据库的核心组件,它是由一系列对于用户而言是只读的基础表和视图组成,它保存了关于数据库本身以及其中存储的所有对象的基本信息。
可以认为数据字典记录了数据库实例自身的重要信息。
对数据字典的管理和维护由Oracle系统负责,任何数据库用户都无法对数据字典中的内容进行修改,但是数据库用户可以查看数据字典中的内容。
为了方便用户查看数据字典中的信息,数据字典中的信息也是通过表和视图的形式组织起来的,数据字典和视图都保存在SYSTEM表空间中。
数据字典中的信息实际上中保存在基本表中的,并且只有Oracle系统才有权读取和写入基础表。
基础表中存储的信息通常是经过加密处理的。
视图是一种虚拟表,它本身并不包含数据,其中的数据是经过处理后基本表中的数据。
数据字典中视图的作用是将表中各种信息进行分类,以方便用户获取其中的数据。
大多数情况下,用户可以通过数据字典视图来获取与数据库相关的信息,而不需要访问数据字典表。
在Oracle实例运行期间,需要从数据字典表中读取信息,用于判断用户要访问的对象是否存在等信息。
同时,Oracle还不断地向数据字典表中写入数据,以反映用户对数据库、以及数据库中保存的各对象所做的修改。
例如,用户创建了一个表,这时系统将在数据字典中记录该表的结构信息、表在存储信息等。
对于数据库用户而言,数据字典中的视图好一本关于当前Oracle数据库的参考手册,可以通过SELECT语句查询。
数据库用户由于权限不同,所能访问的数据字典视图的数量和类型也不同。
用户所使用数据字典视图大致可以分为三类,并且各种类型的视图以不同名称的前缀表示。
这三类数据字典视图的介绍如下:●USER视图USER视图就是以USER_字符为名称前缀的数据字典视图。
每个数据库用户都有一组属于自己的视图,在USER视图中包含了属于该用户的所有对象的信息。
●ALL视图ALL视图就是以ALL_字符为名称前缀的数据字视图。
对于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 多进程系统中最大进程数数据库的物理结构数据库的物理结构是面向操作系统的,它描述数据库中的数据的存储形式。
Oracle中的数据字典技术及常用数据字典总结一、Oracle数据字典数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。
当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
Oracle中的数据字典有静态和动态之分。
静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
以下分别就这两类数据字典来论述。
[@more@]1.静态数据字典这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、all_*、dba_*。
user_*该视图存储了关于当前用户所拥有的对象的信息。
(即所有在该用户模式下的对象)all_*该试图存储了当前用户能够访问的对象的信息。
(与user_*相比,all_*并不需要拥有该对象,只需要具有访问该对象的权限即可)dba_*该视图存储了数据库中所有对象的信息。
(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同以外(因为权限不一样,所以访问对象的范围不一样),其他均具有一致性。
具体来说,由于数据字典视图是由SYS(系统用户)所拥有的,所以在却省情况下,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。
没有DBA权限的用户只能看到user_*和all_*视。
如果没有被授予相关的SELECT权限的话,他们是不能看到dba_*视图的。
由于三者具有相似性,下面以user_为例介绍几个常用的静态视图:user_users视图主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
数据字典总结(Oracle 10g)Oracle data dictionary1 To see some kind of fields belong to some table--查看字段中含有”A”并且所有者是”Test”的表SQL>select table_name from dba_tab_cols where column_name='A'and owner='TEST';2 rename a table to a new one--重命名表名SQL>rename oldtablename to newtablename3 modify a field,changing its data type.Datum empty needed first.--修改字段的类型SQL>altertable testtable modifycolumn id varchar2(12)4 rename a column of a table to a new one--重命名字段名SQL>altertable testtable rename column id to iden;5 delete a column form a table--删除字段SQL>altertable testtable dropcolumn id;6 add a new field to a table--添加字段SQL>altertable testtable add newfield varchar2(2);7 To view privileges or roles one user own--查看当前用户下的表权限SQL>select*from user_tab_privs;--查看当前用户下的角色权限SQL>select*from user_role_privs;8 To see current database name--查看当前数据库名SQL>selectnamefrom v$database;9 To see tablespace user own--查看当前用户下的表空间SQL>select*from dba_tablespaces;--for more details--查看当前用户下的文件名,表空间,字节数,用户块的信息SQL>select file_name,tablespace_name,bytes,user_blocks from dba_data_files;10 To create your own tablespace--创建一个表空间SQL>Create tablespace MyFirstSpace datafile 'c:/oracle/product/9.2.0/dbs/MyFirstSpace.ora'size 512M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED default storage (initial 128K next 2M pctincrease 0);11 drop a tablespace--删除一个半空间SQL>drop tablespace MyFirstSpace including contents;12 alter its owner for tablespace--改变表空间的拥有者SQL>alter tablespace MyFirstSpace ownerto shen;13 resize tablespace--重新设置表空间的大小SQL>alterdatabase datafile 'c:/oradata/k12db/MyFirstSpace.dbf' resize 500M;14 to see all tables one user own--For current user--查看当前用户下的所有的表SQL>select table_name from user_tables;--for all users--查看所有用户下的所有的表SQL>select table_name from all_tables;15 see your system table props$--查看系统设置的命令SQL>select*from props$;16 update character set to needed--修改数据库字符集的例子SQL>alterdatabasecharacterset ZHS16GBK;17 View current time--查看当前的系统时间SQL>select sysdate from dualwhile in sql server getdate is used as a function--sql server的语法SQL>select getdate()18 select current date--查看当前的日期SQL>selectcurrent_datefrom dual19 Change current date display type--设置日期的显示格式的方法SQL>alter session set NLS_date_formate='dd-mon-yyyy hh:mi:ss';20 query current database instance--查看当前的数据库实例名SQL>select instance_name from v$instance;21 domain integrity operationSQL>altertable tbname addconstraint pk_tbname primarykey(n1)22 referential integrity operation--添加外键的语法SQL>altertable emp addconstraintconstraint fk_tbname foreignkey(n1)references tbname(n1)-- initially deferred deferrable23 Check operation--添加check的语法SQL>altertable emp addconstraint ck_emp_agender check(agender='男'or agender='女')24 Create a table through a subquery--通过子查询创建表的语法SQL>createtable emp_41 asselect id, last_name, userid,start_datefrom s_emp where dept_id = 41;25 A plex example on table structure--复杂的表结构SQL>CREATETABLE s_emp(id NUMBER(7)CONSTRAINT s_emp_id_pk PRIMARYKEY,last_name VARCHAR2(25)CONSTRAINT s_emp_last_name_nn NOTNULL,first_name VARCHAR2(25),userid VARCHAR2(8)CONSTRAINT s_emp_userid_nn NOTNULLCONSTRAINT s_emp_userid_uk UNIQUE,start_date DATE DEFAULT SYSDATE,ments VARCHAR2(25),manager_id NUMBER(7),title VARCHAR2(25),dept_id NUMBER(7)CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),salary NUMBER(11,2),mission_pct NUMBER(4,2)CONSTRAINT s_emp_mission_pct_ck CHECK(mission_pct IN(10,12.5,15,17.5,20)));26 search constraint defination from a table--查看某个表下的约束名,约束类型,查询条件,重命名的名字SQL>select constraint_name, constraint_type,search_condition, r_constraint_namefrom user_constraintswhere table_name ='&table_name';27 query result set between 80 and 100--查看记录在80至100之间的数据SQL>select*from((select rownum as numrow, c.*from(select[field_name,...] from table_name where condition1 orderby condition2) c)where numrow > 80 and numrow <= 100 )orderby condition3;28 init a table by using Insert into select syntax--insert的语法初始化表SQL>insertinto testc(id,addr)select(empid,empaddr)from testb 29 drop a constraint--删除约束SQL>altertable fortest dropconstraint fortest_cons30 create a user--创建一个用户createuser gdcc identified by oracle default tablespace tsg users Temporary tablespace Temp;31 full description on create a user--更详细的创建用户的语法SQL>CREATEUSER sidneyIDENTIFIED BY out_standing1DEFAULT TABLESPACE exampleQUOTA 10M ON exampleTEMPORARY TABLESPACE tempQUOTA 5M ONsystemPROFILE app_userPASSWORD EXPIRE;32 create a procedure--创建存储过程,执行的方法SQL>create or replace procedure get_newsasaa number;beginselect count(*)into aa from cf_news;dbms_output.put_line('aa='||aa);end;--excute the procedureSQL>execute get_news;aa=333 A simple sample on create index--创建视图的语法SQL>create or replace view testview3asselect*from test3;34 a view by using aggregate function--创建个带有聚集函数的视图SQL> create view testview4asselect id,sum(id) test3_id from test3groupby id;35 Exp 和Imp的帮助的查看方法:Dos命令下:Exp help=yImp help=y36 删除用户下对象的方法最方便的方法就是 drop user aaa cascade;然后重建用户。
Oracle数据库⼊门——常⽤的数据字典⼀、主要由以下⼏种视图构成:er视图以user_为前缀,⽤来记录⽤户对象的信息2.all视图以all_为前缀,⽤来记录⽤户对象的信息及被授权访问的对象信息3.dba视图以dba_为前缀,⽤来记录数据库实例的所有对象的信息4.v$视图以v$为前缀,⽤来记录与数据库活动相关的性能统计动态信息5.gv$视图以gv$为前缀,⽤来记录分布式环境下所有实例的动态信息⼆、oracle常⽤的数据字典1.基本数据字典字典名称说明dba_tables 所有⽤户的所有表信息dba_tab_columns 所有⽤户的表的字段信息dba_views 所有⽤户的所有视图信息dba_synonyms 所有⽤户的所有同义词信息dba_sequences 所有⽤户的所有序列信息dba_constraints 所有⽤户的表的约束信息dba_ind_columns 所有⽤户的表的索引的字段信息dba_triggers 所有⽤户的触发器信息dba_sources 所有⽤户的存储过程信息dba_segments 所有⽤户的段的使⽤空间信息dba_extents 所有⽤户的段的扩展信息dba_objects 所有⽤户对象的基本信息cat 当前⽤户可以访问的所有基表tab 但前⽤户创建的所有基表、视图、同义词等dict 构成数据字典的所有表的信息2.与数据库组件相关的数据字典数据库组件数据字典中的表或视图说明数据库 v$datafile 记录系统的运⾏情况表空间 dba_tablespaces 记录系统表空间的基本信息dba_free_space 记录系统表空间的空闲空间信息控制⽂件 v$controlfile 记录系统控制⽂件的基本信息v$control_record_section 记录系统控制⽂件中记录⽂档段的信息v$parameter 记录系统个参数的基本信息数据⽂件 dba_data_files 记录系统数据⽂件及表空间的基本信息v$filestat 记录来⾃控制⽂件的数据⽂件信息v$datafile_header 记录数据⽂件头部的基本信息段 dba_segments 记录段的基本信息区 dba_extents 记录数据区的基本信息⽇志 v$thread 记录⽇志线程的基本信息v$log 记录⽇志⽂件的基本信息v$logfile 记录⽇志⽂件的概要信息归档 v$archived_log 记录归档⽇志⽂件的基本信息v$archived_dest 记录归档⽇志⽂件的路径信息数据库实例 v$instance 记录实例的基本信息v$system_parameter 记录实例当前有效的参数信息内存结构 v$sga 记录sga区的信息v$sgastat 记录sga的详细信息v$db_object_cache 记录对象缓存的⼤⼩信息v$sql 记录sql语句的详细信息v$sqltext 记录sql语句的语句信息v$sqlarea 记录sql区的sql基本信息后台进程 v$bgprocess 显⽰后台进程信息v$session 显⽰当前会话信息3.常⽤动态性能视图视图名称说明v$fixed_table 显⽰当前发⾏的固定对象的说明v$instance 显⽰当前实例的信息v$latch 显⽰锁存器的统计数据v$librarycache 显⽰有关库缓存性能的统计数据v$rollstat 显⽰联机的回滚段的名字v$rowcache 显⽰活动数据字典的统计v$sag 记录sga区的信息v$sgastat 记录sga的详细信息v$sort_usage 显⽰临时段的⼤⼩及会话v$sqltext 记录sql语句的语句信息v$sqlarea 记录sql区的sql基本信息v$stsstat 显⽰基本的实例统计信息v$system_event 显⽰⼀个事件的总计等待时间v$waitstat 显⽰块竞争统计数据。
走近Oracle数据字典--数据字典表数据字典,第一次听到这个词的时候,还是刚刚踏进IT行业,计算机的知识是自己业余学的,所以对这样的专有名称并不了解,不耻下问的问一个老鸟,告知是我们写程序时,比如状态,地方码,区码等一些基础信息,也叫做code table。
哦。
原来是这么回事。
有了这个经历,再一次在谈及数据库时听到数据库里也有数据字典的时候,就没有那么多的陌生了,心里知道,对于数据库软件来说,他本身也是和我们写的程序一样,也是一应用,那么里面的数据字典就是数据库应用需要的一些基础信息叻。
的确,数据库是数据的集合,数据库维护和管理这用户的数据,那么这些用户数据表都存在哪里,用户的信息是怎样的,存储这些用户的数据的路径在哪里,这些信息不属于用户的信息,却是数据库维护和管理用户数据的核心,这些信息就是数据库的数据字典来维护的,数据库的数据字典就汇集了这些数据库运行所需要的基础信息叻。
每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统schema里来展示的,那么Oracle又是如何的叻。
这是本文章所主要要探讨的内容叻。
Oracle里数据字典按照他们存在的形式可以分为数据字典表和动态性能视图。
数据字典表和用户创建的表没有什么区别,不过数据字典表里的数据是Oracle系统存放的系统数据,而普通表存放的是用户的数据而已,为了方便的区别这些表,这些表的名字都是用"$"结尾,在我们看到的sql语句里看到"$"结尾的这些表,大家就可以想到这可能是一个数据字典表了,同样,既然如此,我们创建自己的用户表的时候就不要用“$”结尾,以免让别人误会,数据字典表是系统存放系统用户的,所以他的owner是sys,在手工用create database的命令的时候,会调用$ORACLE_HOME/rdbms/admin /sql.bsq文件,这个就会执行生成我们这些数据字典表。
学习笔记:oracle数据字典详解---本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图。
然后列出一些附例。
数据字典系统表,保存在system表空间中。
由表和视图组成,由服务器在安装数据库时自动创建,用户不可以直接修改数据库字典,在执行DDL 语句时,oracle会自动修改。
记录一些表和视图(只读的),新建的表不要和这空间建在一起(9i以前的版本新用户建的表默认表空间为system,注意修改)--查询数据字典:select * from dictionary--数据字典导出方法:conn / as sysdbaspool onspool c:\dic.txtselect * from dictionaryspool off主要四部分:1,内部RDBMS表:x$……2,数据字典表:……$3,动态性能视图:gv$……,v$……4,数据字典视图:user_……,all_……,dba_……数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)+++一,内部RDBMS表x$……,例如:x$kvit,x$bh,x$ksmsp,x$ksppi和x$ksppcv核心部分,用于跟踪内部数据库信息,维持DB的正常运行。
是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。
最好不要修改.x$kvit=Kernel Layer Performance Layer V Information tables Transitory Instance parameter 数据库启动时,动态创建x$……+++二,数据字典表……$,如tab$,obj$,ts$……--用来存储表、索引、约束以及其他数据库结构的信息。
--创建数据库时通过脚本sql.bsq来创建,脚本:$oracle_home/rdbms/admin/sql.bsq+++三,动态性能视图gv$……,v$……,如V$parameter--记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。
oracle19c 数据字典保护参数解释说明1. 引言1.1 概述在现代信息时代,数据的安全性和保护变得越来越重要。
数据库作为存储和管理大量关键数据的核心组件,必须采取有效措施来保护其中的数据。
Oracle是当今业界最流行和广泛使用的关系型数据库之一,它提供了许多功能和机制来确保数据库的安全性。
本文将重点介绍Oracle 19c中的数据字典保护参数,并对其进行详细解释说明。
数据字典是Oracle数据库中存储有关表、列、索引、用户等对象以及其属性信息的系统表。
由于数据字典的重要性,为了防止非授权用户获取敏感数据或篡改系统元数据,Oracle引入了一些特定参数来加强对数据字典的保护。
1.2 文章结构本文将按照以下结构进行讲解:- 第2部分将介绍什么是数据字典保护参数,并强调数据字典在Oracle数据库中的重要性。
- 第3部分将详细解释说明Oracle 19c中各个具体的数据字典保护参数。
- 第4部分将介绍实施这些参数所需遵循的步骤和注意事项。
- 最后,在第5部分总结文章内容并再次强调Oracle 19c数据字典保护参数的重要性,并展望数据库安全性的未来发展方向。
1.3 目的本文的目的是为读者提供对于Oracle 19c中数据字典保护参数的全面理解和解释。
通过深入了解这些参数及其作用,读者将能够更好地保护数据库中存储的关键数据,并采取适当措施预防潜在的安全威胁。
同时,本文也旨在引起人们对数据库安全性问题的关注,并为未来改进数据库安全性提供思路和方向。
2. 数据字典保护参数2.1 什么是数据字典保护参数数据字典保护参数是Oracle数据库中的一组配置选项,用于保护和管理数据库中的核心组件和关键元数据。
这些参数可以控制对数据字典的访问权限、修改操作以及数据字典在系统运行时的行为。
2.2 数据字典的重要性数据字典是Oracle数据库中非常重要的组成部分,它记录了数据库对象(如表、视图和索引)的定义和属性信息,存储了系统级别的统计信息,并提供了对数据库结构和内容的访问接口。
Oracle数据库字典介绍Oracle数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象。
数据库字典描述了实际数据是如何组织的。
对它们可以象处理其他数据库表或视图一样进行查询,但不能进行任何修改。
Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。
在Oracle数据库字典中,许多视图都有三个不同的实例,它们的前缀分别为"USER_"、"ALL_"及"DBA_"。
"USER_"为前缀的数据库字典视图通常记录执行查询的帐户所拥有的对象的信息,"ALL_"为前缀的数据库字典视图通常记录包括执行查询的帐户所拥有的对象的信息及授权至PUBLIC的帐户用户所拥有的对象的信息,"DBA_"为前缀的数据库字典视图则包含所有数据库对象的信息,而不管其所有者。
其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。
V$视图是基于X$虚拟视图的。
V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA 系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_视图。
与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。
在Oracle的绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLES和USER_TABLES这样的视图家族。
Oracle 中有超过100个视图家族,下表列出了最重要和最常用的视图家族,需要注意的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。
在Oracle中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。
技术文档:Oracle中的数据字典技术简析
数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。
当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
Oracle中的数据字典有静态和动态之分。
静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
以下分别就这两类数据字典来论述。
1. 静态数据字典
这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、all_*、dba_*。
user_*
该视图存储了关于当前用户所拥有的对象的信息。
(即所有在该用户模式下的对象)
all_*
该试图存储了当前用户能够访问的对象的信息。
(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可) dba_*
该视图存储了数据库中所有对象的信息。
(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同以外(因为权限不一样,所以访问对象的范围不一样),其他均具有一致性。
具体来说,由于数据字典视图是由SYS(系统用户)所拥有的,所以在却省情况下,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。
没有DBA权限的用户只能看到user_*和all_*视。
如果没有被授予相关的SELECT权限的话,他们是不能看到dba_*视图的。
由于三者具有相似性,下面以user_为例介绍几个常用的静态视图:
user_users视图
主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
例如执行下列命令即可返回这些信息。
select * from user_users
user_tables视图
主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。
通过此视图可以清楚了解当前用户可以操作的表有哪些。
执行命令为:select * from user_tables
user_objects视图
主要描述当前用户拥有的所有对象的信息,对象包括表、视图、
存储过程、触发器、包、索引、序列等。
该视图比user_tables视图更加全面。
例如, 需要获取一个名为package1的对象类型和其状态的信息,可以执行下面命令:
这里需注意upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。
user_tab_privs视图
该视图主要是存储当前用户下对所有表的权限信息。
比如,为了了解当前用户对table1的权限信息,可以执行如下命令:select * from user_tab_privs where table_name=upper(‘table1’)
了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执行。
前面的视图均为user_开头的,其实all_开头的也完全是一样的,只是列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。
对于dba_开头的需要管理员权限,其他用法也完全一样,这里就不再赘述了。
2. 动态数据字典
Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。
这些视图提供了关于内存和磁盘
的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。
下面就几个主要的动态性能视图进行介绍。
v$access
该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
运行如下命令:
select * from v$access
结果如下:(因记录较多,故这里只是节选了部分记录)
v$session
该视图列出当前会话的详细信息。
由于该视图字段较多,这里就不列详细字段,为了解详细信息,可以直接在sql*plus命令行下键入:desc v$session即可。
v$active_instance
该视图主要描述当前数据库下的活动的实例的信息。
依然可以使用select语句来观察该信息。
v$context
该视图列出当前会话的属性信息。
比如命名空间、属性值等。
3.小结
以上是Oracle的数据字典方面的基本内容,还有很多有用视图
因为篇幅原因这里不能一一讲解,希望大家在平时使用中多留心。
总之,运用好数据字典技术,可以让数据库开发人员能够更好的了解数据库的全貌,这样对于数据库优化、管理等有极大的帮助。