福建省电力公司oracle培训教材-Oracle9i-DBA-基础课件_第1页
福建省电力公司oracle培训教材-Oracle9i-DBA-基础课件_第2页
福建省电力公司oracle培训教材-Oracle9i-DBA-基础课件_第3页
福建省电力公司oracle培训教材-Oracle9i-DBA-基础课件_第4页
福建省电力公司oracle培训教材-Oracle9i-DBA-基础课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORACLE9iDBA基础系统软件部

汤庆锋福州磬基电子有限公司ORACLE9iDBA基础系统软件部汤庆锋数据字典数据字典是ORACLE数据库最重要的组成部分。数据字典是一系列存放数据库元数据信息的表和视图。数据字典具有如下特征:数据字典由一些基表和相关的视图组成。数据字典在数据库创建时自动创建。SYS是数据字典的所有者。数据字典由OracleServer维护(更新)对于用户和管理人员来说,数据字典是只读的。数据字典数据字典是ORACLE数据库最重要的组成部分。数据字典使用数据字典能够提供如下的信息:逻辑和物理的数据库结构

selectname,bytesfromdba_data_files;对象的定义和空间分配

select*fromuser_segments;完整性约束

selecttable_name,constraint_namefromuser_constraints;用户信息

selectusername,default_tablespace,temporary_tablespacefromdba_users;权限信息

selectgrantee,granted_rolefromdba_role_privs;数据字典使用数据字典能够提供如下的信息:数据字典数据字典的分类:根据它们的前缀,数据字典可以分为如下类别:DBA_:这种视图提供数据库中所有对象的信息,有个owner列如,dba_tables,dba_indexesALL_:这种视图提供数据库中当前用户可以访问的对象的信息如,all_tables,all_indexesUSER_:这种视图提供用户拥有的对象信息如,user_tables,user_indexesV$:这种视图又叫动态性能视图,因为它们为随着数据库的打开和使用连续更新,而且它们的内容也和运行有关。如,v$database,v$instance数据字典数据字典的分类:常用数据字典视图查询对象信息

tab,obj,dba_tables,dba_objects查询数据库、实例的信息

v$database,v$instance查询用户信息

dba_users、all_users查询用户权限

dba_role_privs、dba_sys_privs查询数据库的结构信息(表空间、数据文件、日志文件)

dba_tablespaces、dba_data_files、v$logfile常用数据字典视图查询对象信息控制文件每一个Oracle数据库都有一个控制文件controlfile控制文件记录数据库的物理结构其中包括:数据库名称相关的数据库和联机重做日志文件的名称和位置数据库创建的时间戳当前日志序列号检查点信息备份信息

Oracle数据库的控制文件和数据库同时创建,控制文件主要用于打开数据库、存取数据库和恢复数据库。如果控制文件被破坏,则无法对数据库进行操作。为了防止控制文件被破坏,ORACLE允许镜象控制文件。一般一个数据库应至少有两个控制文件,它们分别分布在不同的磁盘上。控制文件的文件名(包括镜象)由初始化参数文件(initSID.ora)中的参数CONTROL_FILES指出。控制文件每一个Oracle数据库都有一个控制文件c如何镜像控制文件创建附加的控制文件拷贝用户创建新的控制文件的方法是将现有文件拷贝到新的地址将文件名添加到控制文件列表类似地用户通过拷贝文件为新的名字或地址来重命名现有文件并且改变控制文件列表中的文件名。

关闭数据库

使用操作系统的命令将现存的控制文件拷贝到不同的地方

编辑数据库初始化文件(initSID.ora)中的CONTROL_FILES参数添加新的控制文件名和位置。重新启动数据库如何镜像控制文件创建附加的控制文件拷贝删除控制文件删除控制文件用户可以从数据库中删除控制文件例如如果控制文件的位置不合适或控制文件破坏时用户可能希望这样做。记住在任何时候数据库建议至少有两个控制文件。关闭数据库。编辑数据库初始化参数文件中的CONTROL_FILES参数删除旧的控制文件名。重新启动数据库。警告:这个操作不能物理上从磁盘上删除不希望的控制文件,用户从数据库中删除控制文件之后使用操作系统的命令来删除不需要的文件.删除控制文件删除控制文件查询控制文件的信息ORACLE数据字典存放着控制文件的所有信息V$controlfileShowparametercontrol_filesV$controlfile_record_section(显示控制文件的记录)查询控制文件的信息ORACLE数据字典存放着控制文件的所有信重做日志文件(undologfiles)重做日志文件是用于记录数据库所做的全部变更,以便在系统发生故障时,用它对数据库进行恢复。当对数据库进行修改时(如插入、修改、删除等),oracle将对数据库所做的全部变更首先记录在SGA的日志缓冲区中。后台进程(LGWR)将日志缓冲区中的信息写入日志文件中。而ARCH后台进程实现重做日志文件的归档(ARCHIVELOG模式)。

日志文件都有如下特征:一个数据库必须至少有两个日志文件组,日志文件组以循环方式使用一个日志文件组,由一个或多个日志成员组成log1log2log3外部存储设备LGWR重做日志文件(undologfiles)重做日志重做日志文件为了防止日志文件出现故障,Oracle允许设置镜象日志。所谓镜象日志就是上不同的磁盘上同时维护两个或多个联机日志文件副本。这样如果一个日志文件的磁盘发生故障,则可用另一个磁盘上的日志文件。重做日志文件为了防止日志文件出现故障,Oracle允创建联机重做日志组和成员创建联机重做日志组和成员方法1:用带有ALTERDATABASEADDLOGFILE子句创建。方法2:用带有ORACLEEnterpriseManager工具创建(推荐)。下面的语句给数据库添加一个新的重做日志组ALTERDATABASEADDLOGFILEGROUP5(‘d:\orant\database\log5_1.ora')SIZE500K;下面的语句给数据库添加一个新的重做日志组5,增加一个成员ALTERDATABASEADDLOGFILEMEMBER'd:\orant\database\log5_2.ora'TOGROUP5;创建联机重做日志组和成员创建联机重做日志组和成员归档重做日志文件归档重做日志文件(ArchiveLogFiles)也叫离线日志文件。它是在线重做日志文件的拷贝。当数据库处于ARCHIVELOG状态时,归档进程将拷贝已写满的(Filled)重做日志文件到另一路径。归档日志文件主要用做数据库的恢复。数据库缺省被创建为NOARCHIVELOG模式ORACLE建议数据库模式为ARCHIVELOG模式归档模式的优点:数据库在发生故障时,可以恢复到故障点(而不是备份点)允许在线备份数据库归档重做日志文件归档重做日志文件(Archive归档重做日志文件设置数据库为ARCHIVELOG模式1.关闭数据库并编辑初始化参数:Sql>shutdownimmediate编辑初始化参数使log_archive_start=true2.启动数据库于MOUNT状态Sql>startupmount;3.修改数据库的归档模式Sql>alterdatabasearchivelog;4.打开数据库Sql>alterdatabaseopen;归档重做日志文件设置数据库为ARCHIVELOG模式查询重做日志和归档信息可以通过archiveloglist命令来查询数据库工作于哪种模式Sql>archiveloglist通过查询下面的数据字典可以获得重做日志组和成员的信息V$logV$logfile查询重做日志和归档信息可以通过archiveloglis表空间及其管理一个数据库从逻辑上说是由一个或多个的表空间组成,表空间是数据库中物理编组的数据仓库。数据库数据以逻辑方式存取在表空间当中,以物理形式存储于表空间相应的数据文件当中。数据库System表空间user表空间rollback表空间用电表空间表表表表表空间及其管理一个数据库从逻辑上说是由一个或多个的表表空间及其管理表空间有如下特征:表空间可以包含一个或多个数据文件,一个数据文件只能从属于一个表空间一个数据库可以有一个或多个表空间表空间的大小是所有从属于它的数据文件大小的总和数据库的大小是所有表空间大小的总和改变表空间的大小是通过改变数据文件的大小来实现表空间及其管理表空间有如下特征:建议使用多重表空间使用多重表空间使用多重表空间可使用户在执行数据库维护、运算的过程中更加灵活例如用户可以执行下列操作:把用户数据从数据字典的数据中分开以减少字典对象和模式对象对于相同数据文件的争用把某一应用程序的数据和其它应用程序的数据分隔开这样如果必须使表空间脱机时可以防止多个应用程序受到影响在不同的磁盘中存储表空间的数据文件以减少I/O争用把回退数据从用户数据中分开防止单个磁盘的故障导致数据的永久性丢失在其他表空间保持联机的时候可使个别表空间脱机这样可以提供更好的综合工作效率为特定类型数据库的用法保存表空间。比如频繁的更新操作、只读操作或临时数据段的存储这样用户可以优化表空间的使用独立备份个别表空间

中的数据建议使用多重表空间使用多重表空间表空间维护创建表空间创建一个表空间时,必须指定至少一个以上的数据文件,因为用户的数据最终将存储在操作系统文件里。示例:创建一用于存储用电管理数据的表空间-ydgl命令方式:CREATETABLESPACEydglDATAFILE'd:\orant\database\ydgl.ora'SIZE100MAUTOEXTENDONNEXT10M;GUI方式:通过EnterpriseManager->StorageManager来创建表空间维护创建表空间删除表空间删除表空间如果不再需要表空间及其内容(包含在表空间中的数据段)用户可以从数据库中将其删除除SYSTEM表空间之外Oracle数据库中的任何表空间都可以删除,用户必须具有DROPTABLESPACE的系统权限才可以删除表空间。示例:删除ydgl表空间命令方式:Droptablespaceydglincludingcontents;注:includingcontents选项:用在删除非空的表空间。GUI方式:删除表空间删除表空间本地管理表空间(LocallyManaged)在Oracle8I以前的版本中全部表空间都是以字典管理类型dictionary-managed创建的字典管理表空间,依靠SQL字典表跟踪磁盘空间的利用,而从Oracle8i开始用户可以创建本地管理(locallymanaged)表空间它使用位图(而不是SQL字典列表)来跟踪已使用的和自由的空间。由于向后兼容性的关系字典管理保留为缺省的表空间空间管理方式Oracle建议用户现在使用本地管理表空间。本地管理表空间可以更高效地管理表空间,减少磁盘碎片如:createtablespacersgldatafile‘d:\orant\database\rsgl.dbf’size10Mextentmanagementlocal;本地管理表空间(LocallyManaged)在Ora临时表空间临时表空间主要是用来提高排序操作的效率,一个临时表空间只可以被用作排序段,而不能用于存储任何永久数据对象,可用以下语句生成临时表空间tempCREATETEMPORARYTABLESPACEtempTEMPFILE‘d:\oracle\oradata\temp01.dbf'SIZE100MEXTENTMANAGEMENTLOCALUNIFORMSIZE10M;临时表空间临时表空间主要是用来提高排序操作的效率,一个临时表Oracle存储结构和关系段1(segment)数据块扩展区(Extent)段2(segment)如EMP表BlockBlockOracle存储结构和关系Segment(段)、扩展区(Extent)、数据块(Block)段(Segment)是由一个或多个扩展区(Extent)组成的逻辑存储单元。每个数据库对象指派一个来存储数据,如一个EMP(员工)表就是一个段,段中所有扩展区的总和就是此段的大小扩展区(Extent)是由一系列连续的数据块组成,当一个段生成时,首先指派Extent,当此Extent数据已满时,新的Extent将指派到此段,可用以下参数来控制。Initial:第一个扩展区的大小Next:用来指定下一个扩展区的大小Pctincrease:指定第三个扩展区及随后扩展区的增长参数数据块(Block)是ORACLE存储体系中最小的逻辑单元。数据块的大小在数据库生成时被指定,且不可修改。Segment(段)、扩展区(Extent)、数据块(Blo回滚段(undoSegment)回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。当数据被修改时,回滚段用来记录原来的数据。回滚段用于提供读一致性、事务回滚。事务回滚:当事务修改表中的数据时,该数据修改前的值(即前影象)会存放在回滚段中,当用户回滚事务rollback时,oracle将会利用回滚段中数据前影象将修改的数据恢复到原来的值。读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改;当一个长时间的查询在执行时,若其他会话改变了该查询要查询的某个数据块,Oracle将利用回滚段的数据前影象来构造一个读一致性视图。回滚段(undoSegment)回滚段用于存放数据修改自动管理回滚段回滚段自动管理需要设置以下的初始化参数UNDO_MANAGEMENT=AUTOUNDO_TABLESPACE=UNDOTBSUNDO_MANAGEMENT:指定是否用自动管理或手工管理模式(AUTOorMANUAL).UNDO_TABLESPACE:指定一个表空间用做回滚(UNDO)自动管理回滚段回滚段自动管理需要设置以下的初始化参数表及其管理表是ORACLE中最重要的数据库对象,表存储一些相似的数据集合,这些数据被描述成若干列或字段。员工代码姓名性别职务工资001张三男会计1000003李四女出纳600。。。。。。。。。。。。。。。。。。。。。100王五男经理2000表及其管理表是ORACLE中最重要的数据库对象,表存储一些相ORACLE数据类型ORACLE数据类型ORACLE数据类型CHAR:存放固定长度的字符串VARCHAR2:存放可变长度的字符串NUMBER:存放0、正负数、浮点数DATE:存放时间数据(包括日期和时间)LONG:存放变长字符串。一般用来存储大文本,ORACLE8以后的版本建议用CLOB类型替换,每个表中只能有一个LONG列。LONGRAW存放多媒体数据,如声音、图片,建议用BLOB类型替换。CLOB:用与存储多达4GB的字符数据BLOB:用于存储多达4GB的图形、音频、视频文件ORACLE数据类型CHAR:存放固定长度的字符串创建表创建表:基本格式:CREATETABLE<表名>(<列名><数据类型>[列约束],…...)[TABLESPACE<表空间>];例:创建一雇员表EMP,并把它存储在RSGL表空间

CREATETABLEEMP(EMPNONUMBER(4),ENAMEVARCHAR2(10),JOBVARCHAR2(20),SALNUMBER(6,1),HIREDATEDATE,DEPTNONUMBER(2))tablespaceRSGL;要以自己的模式创建新表必须有CREATETABLE的系统许可权要以另一个用户的模式创建表必须有CREATEANYTABLE的系统许可权。创建表创建表:通过查询创建表可以通过查询已有的表或视图来创建表,而无须定义数据列和数据类型。例如:1.创建EMP表的副本emp_bak

createtableemp_bakasselect*fromemp;2.创建一新表YGXX,其数据类型和数据来源于EMP表Createtableygxx(ygdm,ygxm,zw,gz,jj,bmdm)AsSelectempno,ename,job,sal,comm,deptnofromemp;通过查询创建表可以通过查询已有的表或视图来创建表,而无须定义创建临时表临时表中的数据只对创建这些数据的会话或者特定的事务可用,ORACLE在每次提交以后就删除行或截断表。临时表上可以创建索引,视图和触发器临时表的DML(数据操作语言)语句不会生成redolog例:创建一临时表emp_tempCreateglobaltemporarytableemp_tempAsselect*fromemp;创建临时表临时表中的数据只对创建这些数据的会话或者特定的事务重组表(表迁移)在未分区的表上使用altertable命令中的MOVE子句,可以重组表(extents)或者把表从一个表空间移到另一个表空间中去。例:把雇员表EMP迁移到RSGL表空间Altertableempmovetablespacersgl;重组表(表迁移)在未分区的表上使用altertable命令表及其管理修改表示例:定义EMP表中EMPNO为主键

ALTERTABLEEMPADDPRIMARYKEY(EMPNO);向EMP表中新添一奖金列-COMMALTERTABLEEMPADD(COMMNUMBER(6,2));3.修改EMP表中SAL的字段宽度为5位整数2位小数

ALTERTABLEEMPMODIFY(SALNUMBER(7,2));ORACLE允许向表中新添列或修改列宽度,但不允许直接从表中删除列(8i以前)或改变列名。表管理同样也采用GUI方式:OralceEnterpriseManager->SchemaManager表及其管理修改表表及其管理删除表(DROPTABLE)格式:DROPTABLE<表名>;如果要删除的表中包含的主关键字或唯一关键字涉及到其它表的外部关键字而且用户打算删除子表的FOREIGNKEY约束那么就要使用如下所示包含CASCADE选项的DROPTABLE语句(如删除dept表).示例:删除雇员表Droptableemp;注意:要删除表的用户必须具有DROPTABLE或DROPANYTABLE的系统特权。所有与表有关的索引和触发器都将删除删除命令不能通过ROLLBACK命令撤销表及其管理删除表(DROPTABLE)截断表(TRUNCATE)TRUNCATE语句和DROP语句类似,但TRUNCATE语句不会删除表的结构,也不会删除表上的任何一个索引、触发器、权限。在默认情况下Oracle将释放表和索引的空间TRUNCATE命令不能进行回退TRUNCATE命令不能选择性的进行删除TRUNCATE命令数据删除非常快,不产生回退(undo)信息例如:删除表EMP的数据且释放空间Truncatetableemp;截断表(TRUNCATE)TRUNCATE语句和DROP语句如何修改EMP表的empno的数据类型CHAR(4)?1.createtableemptmpasselect*fromemp;2.deletefromemp;3.altertableempmodify(empnochar(4));4.insertintoempselect*fromemptmp;如何删除EMP表的COMM字段(oracle8i以前的版本)?1.createtableemptmpasselectempno,ename,job,mgr,hiredate,sal,deptno;2.renameemptoempold;3.renameemptmptoemp;把EMP表中SAL字段的名称改为GZ?(提示利用列的别名)1.createtableemptmpasselectempno,ename,job,mgr,hiredate,salgz,commfromemp;2.renameemptoempold;3.renameemptmptoemp;课后练习如何修改EMP表的empno的数据类型CHAR(4)?课后练索引及其管理

索引被用来快速访问数据而非读取全部表格,使用它可以大大减少磁盘I/O数目。因此为了提高表上数据的查询速度,用户可在表上建立索引。ORACLE能够自动维护索引:当表进行增、删、改时,索引将自动更新相应的记录。索引类型B-树(B-TREE)索引默认方式,B-树包含索引列和ROWID(行的物理地址)位图(Bitmap)索引位图索引不会重复存储索引的列值。每个列值被看成是一个关键字,相应的ROWID置位一个位(bit),位图索引适用于仅有几个固定值的列,如性别字段索引及其管理索引被用来快速访问数据而非读取全部表格,使用索引建立索引命令格式:CREATEINDEX<索引名>ON<表名><(列名)>;例如,在EMP表的ENAME列上建立名为IDX_EMP_ENAME的索引

CREATEINDEXIDX_EMP_ENAMEONEMP(ENAME);建立索引的原则应该为较大的表建立索引,小表最好不要建。表越大,索引越有效。索引越多,查询速度越快,但却减慢了插入、修改、删除操作的执行速度。查询型的表应多建索引;更新型的表应少建索引。索引建立索引索引及其管理合并索引索引在使用一段时间以后,会产生碎片,COALESCE子句可以消除碎片.例:alterindexidx_emp_enamecoalesce;重建索引

命令格式:ALTERINDEX<索引名>REBUILD;删除索引用户可能删除索引的原因如下:对于针对相关表使用的查询索引不能提供预期的性能改善(例如表可能很小或者表中有许多数据行但是索引项极少)应用程序没有使用索引查询数据索引变为无效的在重建之前必须被删除索引变得过于破碎在重建之前必须被删除命令格式:

DROPINDEX<索引名>示例:DROPINDEXidx_emp_ename;索引及其管理合并索引查询索引信息通过查询以下的数据字典可以获得有关索引的信息User_indexesDba_indexesDba_ind_columns查询索引信息通过查询以下的数据字典可以获得有关索引的信息数据完整性约束数据库数据的完整性是指数据的正确和相容性。ORACLE提供一种功能来保证数据完整性,这种功能称为完整性检查。数据完整性是为防止数据库中存在不符合语义的数据,以防止错误信息的输入和输出。如果任何DML执行结果会破坏完整性约束,那么该语句被回滚并返回一个错误。完整性约束是对表的列定义一组规则性的说明方法。ORACLE提供如下完整性约束:NOTNULL:不允许列值为空UNIQUE:在指定的列或列组上,不允许两行有相同值(允许列值为空)PRIMARYKEY:主键约束。与unique类似,但每个表只能有一个主键约束,而且列值不能为空。CHECK:在指定的列上,只允许存储一定范围的的值FOREIGN:外键约束也称引用约束数据完整性约束数据库数据的完整性是指数据的正确和相容数据完整性约束例:建立一带完整性约束的雇员表(EMP)CREATETABLEEMP(EMPNONUMBER(4)PRIMARYKEY,ENAMEVARCHAR(10)NOTNULL,JOBVARCHAR(20),SALNUMBER(6,1)CHECK(SAL>1000),HIREDATEDATE,DEPTNONUMBER(2)REFERENCESDEPT(DEPTNO));外键约束的另外一个选项Ondeletecascade:删除父表中的行,同时相关子表中的记录也删除如上例:deptnonumber(2)REFERENCESDEPT(DEPTNO)Ondeletecascade;数据完整性约束例:建立一带完整性约束的雇员表(EMP)约束的生效和无效创建约束条件,约束条件自动生效。可以使用ALTERTABLE的DISABLE子句可以使约束失效。约束失效Altertableempprimarykeydisable;约束生效Altertableempprimarykeyenable;约束的生效和无效创建约束条件,约束条件自动生效。可以使用查询约束信息查询下列数据字典视图可以查询完整性约束Dba_constraintsDba_cons_columns查询约束信息查询下列数据字典视图可以查询完整性约束视图及其管理视图实际上是存储在数据库中的SELECT(查询)语句。每次在SQL语句中使用视图时,表示该视图的SELECT语句就会被执行,来得到需要的数据。使用视图的优点简化数据操作集中用户感兴趣的数据安全性:通过视图,用户只能查询和修改他们能看到的数据。而数据库中的其他数据他们既看不到也取不到。增强逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响创建视图命令格式:CREATE[ORREPLACE]VIEW<视图名>

AS<SELECT查询子句>;注:用户可将视图看作存储查询

或一个虚拟表任何使用表的地方都可使用视图。视图及其管理视图实际上是存储在数据库中的SELECT管理口令安全和资源概要文件(profile)被用来控制用户对系统和数据库资源的使用,oracle提供了预定义的资源参数,概要文件可以被用来管理密码。当数据库创建时,oracle生成一个名为DEFAULT的概要文件。

ORACLE允许通过概要文件控制以下几种类型的资源:每个用户的当前会话数目CPU使用时间用户连接到数据库的占用时间用户连接到数据库的空闲时间私有SQL和PL/SQL区的使用管理口令安全和资源概要文件(profile)被用来控制用打开资源限制功能只有设置了参数resource_limit为TRUE时,才可以使用ORACLE的资源限制。通过设置初始化参数resource_limit为TRUE通过命令方式:altersystemsetresource_limite=true打开资源限制功能只有设置了参数resource_limi资源限制参数Sessions_pre_user:用来限制一个用户当前会话的数量。Cpu_per_session:用来限制一个会话可以使用的CUP时间Cpu_per_call:用来限制一个SQL语句可以使用的CPU时间Connect_time:用来指定一个会话可以连接到数据库的最大时间Idle_time:会话连续空闲时间的最大数,当达到此参数时,用户被自动从数据库断开,所有未处理的事务得到回滚资源限制参数Sessions_pre_user:用来限制一个管理口令概要文件还可以用来管理口令,有如下设置:账号锁定(Accountlocking)设置失败的登录尝试次数和锁定日期的天数口令过期(Passwordexpiration)设置多长时间应该修改一次口令口令的复杂性(Passwordcomplexity)使用定制的函数来验证口令的复杂性管理口令概要文件还可以用来管理口令,有如下设置:概要文件管理创建概要文件例:为会计用户创建一个管理口令和资源的概要文件Createprofileaccounting_userlimitSessions_per_user6Idle_time120Failed_login_attempts3;修改概要文件Alterprofileaccounting_userlimitPassword_lefe_time30;删除概要文件Dropprofileaccounting_user;概要文件管理创建概要文件查询概要文件信息DBA_profiles可以查询概要文件的信息Selectprofile,resource_name,limitfromdba_profiles;User_resource_limits:显示当前用户的资源限制User_password_limits:显示当前用户的口令限制查询概要文件信息DBA_profiles可以查询概要文件的信ORACLE的安全机制

Oracle数据库管理系统是一个多用户的系统,它允许户共享系统资源。为了保证数据库系统的安全,防止非法用户使用系统资源,为此Oracle配置了良好的安全机制。对系统中的每一个用户ORACLE都分配给他一个操作数据库的权限,用户只有具有对数据库或数据库对象进行某种操作的权限才可以进行操作。Oracle采用如下三种安全机制:用户级安全保证在访问Oracle数据库的任何对象之前,必须首先使用一个合法的用户名和口令。用户级安全保证是通过创建用户且赋予口令来实现。系统级安全保证系统级安全保证是通过授予用户某种特殊操作权力(称系统特权)来实现。例如:建立表空间、建立用户、建立表、删除表中数据的权力等。对象级安全保证对象级安全保证是通过授予用户对数据库中特定的表、视图、序列、过程进行操作的权力来实现。例如:对EMP(雇员)表插入或删除一个雇员记录的权力就属于对象级特权。ORACLE的安全机制Oracle数据库管理系统是一用户管理ORACLE是通过建立用户和相关模式来管理数据库的用户安全。建立用户的核心是完成安全领域的设置,即建立用户名、口令、系统资源的限制、缺省表空间、临时表空间和空间限额等。创建用户OracleEnterpriseManager-SecurityManager高效、简便的图形管理工具,建议使用。2.字符命令方式语法格式:Createuser<用户名>IdentifiedBy<口令>DefaultTableSpace<缺省表空间名>TemporaryTableSpace<临时表空间名>Quota<使用空间大小>on<表空间>;缺省表空间名:用于存放用户所建立的对象。例如:表、索引临时表空间名:为排序或统计的SQL语句提供临时存储空间。Quota:指定每一个表空间中可供用户使用的最大空间限额用户管理ORACLE是通过建立用户和相关模式来管理数创建用户示例:创建一用户rsglCreateuserrsglIdentifiedByrsglDefaultTableSpacersglTemporaryTableSpacetemporary_dataQuota500Monrsgl;授予RSGL用户创建对话的权利:Grantcreatesessiontorsgl;创建用户示例:创建一用户rsgl修改用户信息命令方式修改口令:Alteruserscottidentifiedbytiger;锁定用户:Alteruserscottaccountlock;OEM图形方式修改用户信息命令方式删除用户命令方式通过dropuser命令来删除用户例:删除无对象用户Dropusertest;删除有对象用户Dropuserscottcascade;注意:此命令将删除用户对象,该操作不能回退(ROLLBACK)删除用户命令方式查询用户信息查询用户信息的数据字典视图All_users查询数据库所有用户的名称、用户ID和创建日期Select*fromall_users;Dba_users查询所有用户的详细信息Select*fromdba_users;查询用户信息查询用户信息的数据字典视图系统特权

ORACLE提供了100多种系统特权,其中每一种系统特权允许用户执行一个或一类数据库操作。系统特权没有被指定在任何特定的对象上,管理员可以给用户、角色或PUBLIC授予系统特权。授予系统特权OracleEnterpriseManager-SecurityManager命令格式:

GRANT<系统特权>TO<用户>[ADMINOPTION];ADMINOPTION选项:使被授权者能够将所授予的特权再授予其他用户。例:授予AJ用户与数据库连接和创建表的权力。

Grantcreatesession,createtabletoAJ;

例:授予sysman用户建立、管理、删除用户并具有将这些特权传给其他用户的权力。

Grantcreateuser,alteruser,dropusertosysmanwithadminoption;系统特权ORACLE提供了100多种系统特权,其中每系统特权的控制和管理回收系统特权OracleEnterpriseManager-SecurityManager命令格式:

REVOKE<系统特权>FROM<用户>;例:回收AJ用户创建表的权力。

REVOKEcreatetableFROMAJ;

例:回收sysman用户修改、删除用户。

REVOKEalteruser,dropuserFROMsysman;查看存在的系统权限:

SELECT*FROMUSER_SYS_PRIVS;系统特权的控制和管理回收系统特权对象特权的控制和管理对象特权是指用户在指定的对象(如表、视图等)上执行特殊操作的权力。对象的所有者拥有在这个对象上的所有权限。所有者可以给数据库中的其他任何用户授予在这个对象上的权利。Oracle提供8种对象特权:

SELECT、INSERT、UPDATE、DELETE、EXECUTE、INDEX、ALTER、REFERENCES授予对象特权OracleEnterpriseManager-SecurityManager命令格式:

GRANT<对象特权>ON<对象名>TO<用户>[WHTHGRANTOPTION];WITHGRANTOPTION选项:使被授权者能够将所授予的特权再授予其他用户。注意:对象的所有者才可以对对象授权。对象特权的控制和管理对象特权是指用户在指定的对象(如表对象特权的控制和管理授予对象特权例:授予AJ用户的aj01、aj02的查询特权授予ZHCX(综合查询用户)。

GRANTselectONaj01,aj02TOZHCX;例:把SCOTT用户的EMP表的所有特权授予rsgl用户。

GRANTallONempTOrsgl;例:把SCOTT用户的EMP表的查询特权、插入、和更新ENAME列(姓名)的特权授予PUBLIC。GRANTselect,insert,update(ename)ONempTOPUBLIC;对象特权的控制和管理授予对象特权回收对象特权回收对象特权OracleEnterpriseManager-SecurityManager命令格式:

REVOKE<对象特权>ON<对象>FROM<用户>;例:回收ZHCX用户查询aj01、aj02表的权力。

REVOKEselectonaj01,aj02FROMZHCX;

例:回收PUBLIC用户对EMP表插入、更新ename列的权力。

REVOKEinsert,update(ename)onempFROMPUBLIC;查看存在的对象特权

SELECT*FROMUSER_TAB_PRIVS;SELECT*FROMUSER_COL_PRIVS;回收对象特权回收对象特权角色及其管理角色是命名的一相关特权组(包括系统特权和对象特权)的集合。Oracle使用它来简化特权管理。一旦用户被赋予某个角色,则自动继承该角色的所有特权。Oracle预定义的角色:CONNECT:连上Oracle,做最基本操作(面向最终用户)RESOURCE:具有程序开发最基本的权限(面向开发人员)DBA:具有数据库管理员所有权限(面向数据库管理人员)EXP_FULL_DATABASE:具有对整个数据库备份输出的权限(备份人员)IMP_FULL_DATABASE:具有对整个数据库恢复输入的权限(备份人员)角色及其管理角色是命名的一相关特权组(包括系统特权和对角色及其管理创建角色命令格式:CREATEROLE<角色名>[IDENTIFIEDBY<口令>]例如:创建一名为MANAGER的角色

CREATEROLEMANAGER;为角色授权例如:授予MANAGER角色若干系统特权和对象特权

GRANTcreatesession,createtable,createprocedure,selectanytableTOMANAGER;GRANTselect,insertonaj01,aj02TOMANAGER;

把角色授予用户例如:把MANAGER角色授予MAN1、MAN2、MAN2;GRANTMANAGERTOMAN1,MAN2,MAN3;角色及其管理创建角色练习0。创建一表空间(用户名称自定)大小为2M,允许自动扩充1。创建一用户(用户名称自定),缺省表空间为你新建的表空间;授予用户有创建对话、创建表、查看任意表的特权。2。把scott用户的emp、dept表复制到你的用户下。3。在你用户下,创建一视图v_test(查询字段为emp、dept中的ename,dname),然后把v_test的查询特权授予所有用户。练习0。创建一表空间(用户名称自定)大小为2M,允许自动扩充ORACLE9iDBA基础系统软件部

汤庆锋福州磬基电子有限公司ORACLE9iDBA基础系统软件部汤庆锋数据字典数据字典是ORACLE数据库最重要的组成部分。数据字典是一系列存放数据库元数据信息的表和视图。数据字典具有如下特征:数据字典由一些基表和相关的视图组成。数据字典在数据库创建时自动创建。SYS是数据字典的所有者。数据字典由OracleServer维护(更新)对于用户和管理人员来说,数据字典是只读的。数据字典数据字典是ORACLE数据库最重要的组成部分。数据字典使用数据字典能够提供如下的信息:逻辑和物理的数据库结构

selectname,bytesfromdba_data_files;对象的定义和空间分配

select*fromuser_segments;完整性约束

selecttable_name,constraint_namefromuser_constraints;用户信息

selectusername,default_tablespace,temporary_tablespacefromdba_users;权限信息

selectgrantee,granted_rolefromdba_role_privs;数据字典使用数据字典能够提供如下的信息:数据字典数据字典的分类:根据它们的前缀,数据字典可以分为如下类别:DBA_:这种视图提供数据库中所有对象的信息,有个owner列如,dba_tables,dba_indexesALL_:这种视图提供数据库中当前用户可以访问的对象的信息如,all_tables,all_indexesUSER_:这种视图提供用户拥有的对象信息如,user_tables,user_indexesV$:这种视图又叫动态性能视图,因为它们为随着数据库的打开和使用连续更新,而且它们的内容也和运行有关。如,v$database,v$instance数据字典数据字典的分类:常用数据字典视图查询对象信息

tab,obj,dba_tables,dba_objects查询数据库、实例的信息

v$database,v$instance查询用户信息

dba_users、all_users查询用户权限

dba_role_privs、dba_sys_privs查询数据库的结构信息(表空间、数据文件、日志文件)

dba_tablespaces、dba_data_files、v$logfile常用数据字典视图查询对象信息控制文件每一个Oracle数据库都有一个控制文件controlfile控制文件记录数据库的物理结构其中包括:数据库名称相关的数据库和联机重做日志文件的名称和位置数据库创建的时间戳当前日志序列号检查点信息备份信息

Oracle数据库的控制文件和数据库同时创建,控制文件主要用于打开数据库、存取数据库和恢复数据库。如果控制文件被破坏,则无法对数据库进行操作。为了防止控制文件被破坏,ORACLE允许镜象控制文件。一般一个数据库应至少有两个控制文件,它们分别分布在不同的磁盘上。控制文件的文件名(包括镜象)由初始化参数文件(initSID.ora)中的参数CONTROL_FILES指出。控制文件每一个Oracle数据库都有一个控制文件c如何镜像控制文件创建附加的控制文件拷贝用户创建新的控制文件的方法是将现有文件拷贝到新的地址将文件名添加到控制文件列表类似地用户通过拷贝文件为新的名字或地址来重命名现有文件并且改变控制文件列表中的文件名。

关闭数据库

使用操作系统的命令将现存的控制文件拷贝到不同的地方

编辑数据库初始化文件(initSID.ora)中的CONTROL_FILES参数添加新的控制文件名和位置。重新启动数据库如何镜像控制文件创建附加的控制文件拷贝删除控制文件删除控制文件用户可以从数据库中删除控制文件例如如果控制文件的位置不合适或控制文件破坏时用户可能希望这样做。记住在任何时候数据库建议至少有两个控制文件。关闭数据库。编辑数据库初始化参数文件中的CONTROL_FILES参数删除旧的控制文件名。重新启动数据库。警告:这个操作不能物理上从磁盘上删除不希望的控制文件,用户从数据库中删除控制文件之后使用操作系统的命令来删除不需要的文件.删除控制文件删除控制文件查询控制文件的信息ORACLE数据字典存放着控制文件的所有信息V$controlfileShowparametercontrol_filesV$controlfile_record_section(显示控制文件的记录)查询控制文件的信息ORACLE数据字典存放着控制文件的所有信重做日志文件(undologfiles)重做日志文件是用于记录数据库所做的全部变更,以便在系统发生故障时,用它对数据库进行恢复。当对数据库进行修改时(如插入、修改、删除等),oracle将对数据库所做的全部变更首先记录在SGA的日志缓冲区中。后台进程(LGWR)将日志缓冲区中的信息写入日志文件中。而ARCH后台进程实现重做日志文件的归档(ARCHIVELOG模式)。

日志文件都有如下特征:一个数据库必须至少有两个日志文件组,日志文件组以循环方式使用一个日志文件组,由一个或多个日志成员组成log1log2log3外部存储设备LGWR重做日志文件(undologfiles)重做日志重做日志文件为了防止日志文件出现故障,Oracle允许设置镜象日志。所谓镜象日志就是上不同的磁盘上同时维护两个或多个联机日志文件副本。这样如果一个日志文件的磁盘发生故障,则可用另一个磁盘上的日志文件。重做日志文件为了防止日志文件出现故障,Oracle允创建联机重做日志组和成员创建联机重做日志组和成员方法1:用带有ALTERDATABASEADDLOGFILE子句创建。方法2:用带有ORACLEEnterpriseManager工具创建(推荐)。下面的语句给数据库添加一个新的重做日志组ALTERDATABASEADDLOGFILEGROUP5(‘d:\orant\database\log5_1.ora')SIZE500K;下面的语句给数据库添加一个新的重做日志组5,增加一个成员ALTERDATABASEADDLOGFILEMEMBER'd:\orant\database\log5_2.ora'TOGROUP5;创建联机重做日志组和成员创建联机重做日志组和成员归档重做日志文件归档重做日志文件(ArchiveLogFiles)也叫离线日志文件。它是在线重做日志文件的拷贝。当数据库处于ARCHIVELOG状态时,归档进程将拷贝已写满的(Filled)重做日志文件到另一路径。归档日志文件主要用做数据库的恢复。数据库缺省被创建为NOARCHIVELOG模式ORACLE建议数据库模式为ARCHIVELOG模式归档模式的优点:数据库在发生故障时,可以恢复到故障点(而不是备份点)允许在线备份数据库归档重做日志文件归档重做日志文件(Archive归档重做日志文件设置数据库为ARCHIVELOG模式1.关闭数据库并编辑初始化参数:Sql>shutdownimmediate编辑初始化参数使log_archive_start=true2.启动数据库于MOUNT状态Sql>startupmount;3.修改数据库的归档模式Sql>alterdatabasearchivelog;4.打开数据库Sql>alterdatabaseopen;归档重做日志文件设置数据库为ARCHIVELOG模式查询重做日志和归档信息可以通过archiveloglist命令来查询数据库工作于哪种模式Sql>archiveloglist通过查询下面的数据字典可以获得重做日志组和成员的信息V$logV$logfile查询重做日志和归档信息可以通过archiveloglis表空间及其管理一个数据库从逻辑上说是由一个或多个的表空间组成,表空间是数据库中物理编组的数据仓库。数据库数据以逻辑方式存取在表空间当中,以物理形式存储于表空间相应的数据文件当中。数据库System表空间user表空间rollback表空间用电表空间表表表表表空间及其管理一个数据库从逻辑上说是由一个或多个的表表空间及其管理表空间有如下特征:表空间可以包含一个或多个数据文件,一个数据文件只能从属于一个表空间一个数据库可以有一个或多个表空间表空间的大小是所有从属于它的数据文件大小的总和数据库的大小是所有表空间大小的总和改变表空间的大小是通过改变数据文件的大小来实现表空间及其管理表空间有如下特征:建议使用多重表空间使用多重表空间使用多重表空间可使用户在执行数据库维护、运算的过程中更加灵活例如用户可以执行下列操作:把用户数据从数据字典的数据中分开以减少字典对象和模式对象对于相同数据文件的争用把某一应用程序的数据和其它应用程序的数据分隔开这样如果必须使表空间脱机时可以防止多个应用程序受到影响在不同的磁盘中存储表空间的数据文件以减少I/O争用把回退数据从用户数据中分开防止单个磁盘的故障导致数据的永久性丢失在其他表空间保持联机的时候可使个别表空间脱机这样可以提供更好的综合工作效率为特定类型数据库的用法保存表空间。比如频繁的更新操作、只读操作或临时数据段的存储这样用户可以优化表空间的使用独立备份个别表空间

中的数据建议使用多重表空间使用多重表空间表空间维护创建表空间创建一个表空间时,必须指定至少一个以上的数据文件,因为用户的数据最终将存储在操作系统文件里。示例:创建一用于存储用电管理数据的表空间-ydgl命令方式:CREATETABLESPACEydglDATAFILE'd:\orant\database\ydgl.ora'SIZE100MAUTOEXTENDONNEXT10M;GUI方式:通过EnterpriseManager->StorageManager来创建表空间维护创建表空间删除表空间删除表空间如果不再需要表空间及其内容(包含在表空间中的数据段)用户可以从数据库中将其删除除SYSTEM表空间之外Oracle数据库中的任何表空间都可以删除,用户必须具有DROPTABLESPACE的系统权限才可以删除表空间。示例:删除ydgl表空间命令方式:Droptablespaceydglincludingcontents;注:includingcontents选项:用在删除非空的表空间。GUI方式:删除表空间删除表空间本地管理表空间(LocallyManaged)在Oracle8I以前的版本中全部表空间都是以字典管理类型dictionary-managed创建的字典管理表空间,依靠SQL字典表跟踪磁盘空间的利用,而从Oracle8i开始用户可以创建本地管理(locallymanaged)表空间它使用位图(而不是SQL字典列表)来跟踪已使用的和自由的空间。由于向后兼容性的关系字典管理保留为缺省的表空间空间管理方式Oracle建议用户现在使用本地管理表空间。本地管理表空间可以更高效地管理表空间,减少磁盘碎片如:createtablespacersgldatafile‘d:\orant\database\rsgl.dbf’size10Mextentmanagementlocal;本地管理表空间(LocallyManaged)在Ora临时表空间临时表空间主要是用来提高排序操作的效率,一个临时表空间只可以被用作排序段,而不能用于存储任何永久数据对象,可用以下语句生成临时表空间tempCREATETEMPORARYTABLESPACEtempTEMPFILE‘d:\oracle\oradata\temp01.dbf'SIZE100MEXTENTMANAGEMENTLOCALUNIFORMSIZE10M;临时表空间临时表空间主要是用来提高排序操作的效率,一个临时表Oracle存储结构和关系段1(segment)数据块扩展区(Extent)段2(segment)如EMP表BlockBlockOracle存储结构和关系Segment(段)、扩展区(Extent)、数据块(Block)段(Segment)是由一个或多个扩展区(Extent)组成的逻辑存储单元。每个数据库对象指派一个来存储数据,如一个EMP(员工)表就是一个段,段中所有扩展区的总和就是此段的大小扩展区(Extent)是由一系列连续的数据块组成,当一个段生成时,首先指派Extent,当此Extent数据已满时,新的Extent将指派到此段,可用以下参数来控制。Initial:第一个扩展区的大小Next:用来指定下一个扩展区的大小Pctincrease:指定第三个扩展区及随后扩展区的增长参数数据块(Block)是ORACLE存储体系中最小的逻辑单元。数据块的大小在数据库生成时被指定,且不可修改。Segment(段)、扩展区(Extent)、数据块(Blo回滚段(undoSegment)回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。当数据被修改时,回滚段用来记录原来的数据。回滚段用于提供读一致性、事务回滚。事务回滚:当事务修改表中的数据时,该数据修改前的值(即前影象)会存放在回滚段中,当用户回滚事务rollback时,oracle将会利用回滚段中数据前影象将修改的数据恢复到原来的值。读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改;当一个长时间的查询在执行时,若其他会话改变了该查询要查询的某个数据块,Oracle将利用回滚段的数据前影象来构造一个读一致性视图。回滚段(undoSegment)回滚段用于存放数据修改自动管理回滚段回滚段自动管理需要设置以下的初始化参数UNDO_MANAGEMENT=AUTOUNDO_TABLESPACE=UNDOTBSUNDO_MANAGEMENT:指定是否用自动管理或手工管理模式(AUTOorMANUAL).UNDO_TABLESPACE:指定一个表空间用做回滚(UNDO)自动管理回滚段回滚段自动管理需要设置以下的初始化参数表及其管理表是ORACLE中最重要的数据库对象,表存储一些相似的数据集合,这些数据被描述成若干列或字段。员工代码姓名性别职务工资001张三男会计1000003李四女出纳600。。。。。。。。。。。。。。。。。。。。。100王五男经理2000表及其管理表是ORACLE中最重要的数据库对象,表存储一些相ORACLE数据类型ORACLE数据类型ORACLE数据类型CHAR:存放固定长度的字符串VARCHAR2:存放可变长度的字符串NUMBER:存放0、正负数、浮点数DATE:存放时间数据(包括日期和时间)LONG:存放变长字符串。一般用来存储大文本,ORACLE8以后的版本建议用CLOB类型替换,每个表中只能有一个LONG列。LONGRAW存放多媒体数据,如声音、图片,建议用BLOB类型替换。CLOB:用与存储多达4GB的字符数据BLOB:用于存储多达4GB的图形、音频、视频文件ORACLE数据类型CHAR:存放固定长度的字符串创建表创建表:基本格式:CREATETABLE<表名>(<列名><数据类型>[列约束],…...)[TABLESPACE<表空间>];例:创建一雇员表EMP,并把它存储在RSGL表空间

CREATETABLEEMP(EMPNONUMBER(4),ENAMEVARCHAR2(10),JOBVARCHAR2(20),SALNUMBER(6,1),HIREDATEDATE,DEPTNONUMBER(2))tablespaceRSGL;要以自己的模式创建新表必须有CREATETABLE的系统许可权要以另一个用户的模式创建表必须有CREATEANYTABLE的系统许可权。创建表创建表:通过查询创建表可以通过查询已有的表或视图来创建表,而无须定义数据列和数据类型。例如:1.创建EMP表的副本emp_bak

createtableemp_bakasselect*fromemp;2.创建一新表YGXX,其数据类型和数据来源于EMP表Createtableygxx(ygdm,ygxm,zw,gz,jj,bmdm)AsSelectempno,ename,job,sal,comm,deptnofromemp;通过查询创建表可以通过查询已有的表或视图来创建表,而无须定义创建临时表临时表中的数据只对创建这些数据的会话或者特定的事务可用,ORACLE在每次提交以后就删除行或截断表。临时表上可以创建索引,视图和触发器临时表的DML(数据操作语言)语句不会生成redolog例:创建一临时表emp_tempCreateglobaltemporarytableemp_tempAsselect*fromemp;创建临时表临时表中的数据只对创建这些数据的会话或者特定的事务重组表(表迁移)在未分区的表上使用altertable命令中的MOVE子句,可以重组表(extents)或者把表从一个表空间移到另一个表空间中去。例:把雇员表EMP迁移到RSGL表空间Altertableempmovetablespacersgl;重组表(表迁移)在未分区的表上使用altertable命令表及其管理修改表示例:定义EMP表中EMPNO为主键

ALTERTABLEEMPADDPRIMARYKEY(EMPNO);向EMP表中新添一奖金列-COMMALTERTABLEEMPADD(COMMNUMBER(6,2));3.修改EMP表中SAL的字段宽度为5位整数2位小数

ALTERTABLEEMPMODIFY(SALNUMBER(7,2));ORACLE允许向表中新添列或修改列宽度,但不允许直接从表中删除列(8i以前)或改变列名。表管理同样也采用GUI方式:OralceEnterpriseManager->SchemaManager表及其管理修改表表及其管理删除表(DROPTABLE)格式:DROPTABLE<表名>;如果要删除的表中包含的主关键字或唯一关键字涉及到其它表的外部关键字而且用户打算删除子表的FOREIGNKEY约束那么就要使用如下所示包含CASCADE选项的DROPTABLE语句(如删除dept表).示例:删除雇员表Droptableemp;注意:要删除表的用户必须具有DROPTABLE或DROPANYTABLE的系统特权。所有与表有关的索引和触发器都将删除删除命令不能通过ROLLBACK命令撤销表及其管理删除表(DROPTABLE)截断表(TRUNCATE)TRUNCATE语句和DROP语句类似,但TRUNCATE语句不会删除表的结构,也不会删除表上的任何一个索引、触发器、权限。在默认情况下Oracle将释放表和索引的空间TRUNCATE命令不能进行回退TRUNCATE命令不能选择性的进行删除TRUNCATE命令数据删除非常快,不产生回退(undo)信息例如:删除表EMP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论