1、Oracle的基本概念
2、安装Oracle Database 10g
1)Oracle总是推荐可用的RAM比系统需求所指定的RAM大,这样可以避免由于缺少资源所带来的性能问题(如分页与交换)。
2)在Oracle的MetaLink支持站点上可以找到支持操作系统与版本的最新列表。
3)对于Oracle的有效管理来说,OFA管理目录的结构十分重要,因此Oracle强烈推荐使用这种结构。DBA应当了解在Oracle中设置的参数,从而才可以确保在OFA目录结构中正确地定位各种文件。
4)读者须要非常熟悉下列环境变量及其用法。
● ORACLE_BASE:符合OFA得Oracle目录结构的根,适用于计算机上的所有Oracle软件产品。这个环境变量指定计算机上所有Oracle产品的目录,例如/opt/oracle。
● ORACLE_HOME:当前Oracle安装软件的主目录。通常,这个环境变量指定由ORACLE_BASE指示的路径下的一个目录。例如,在Linux或Unix系统下该变量可以为$ORACLE_BASE/product/10.1.0。
● ORACLE_SID:将要连接或创建的Oracle实例的标识符。该环境变量在大多数环境下必须为8个或8个以下的字符,这些字符以字母开头,并且可以包含字母和数字。在实际应用群集环境下,这个环境变量必须为5个或少于5个字符。虽然ORACLE_SID必须总是被设置为本地连接到一个实例,但是默认的初始实例名为ORCL。
● NLS_LANG:这个环境变量指定用于Oracle安装的全局设置,采用的格式为language_territory.character_set。在除了Windows之外的所有环境中,NLS_LANG的默认值都为“American_America.US7ASCII”。在Windows环境中,NLS_LANG的值被设置为操作系统与键盘设置所指定的区域设置。
● DISPLAY:在Unix环境下,需要为Oracle Universal Installer指名图形屏幕显示的发送位置。默认的方法是继承操作系统中DISPLAY环境变量的值,并且按照这个值发送所有输出。如果希望将图形显示重定向到某个X Windw终端或其他位置,那么就需要以“hostname:display“形式设置DISPLAY环境变量,例如opus01.haunting.com:1.0。安装Oracle的用户最好能够具有修改DISPLAY值的权限,在基于Unix的环境下,使用xhost命令可以设置DISPLAY环境变量的值。
5)理解如何设置DISPLAY环境变量及其在安装期间的用法,这对应试大有帮助。
6)读者至少应当熟悉这里提到的两个runInstaller参数及其用法。
使用“-parameterFile <oraparam.ini参数文件位置>”来指示使用哪个参数文件的命令行手动调用安装程序:
/mnt/cdrom/runInstaller -parameterFile /home/oracle/oraparam.ini
使用-ignoreSysPrereqs使得Oracle Universal Installer不执行任何系统检测:
/mnt/cdrom/runInstaller -ignoreSysPrereqs
7)读者应该熟悉OUI在基于Unix平台上的工作方式,并且还需要理解Oracle安装详细目录位置与文件的重要性。
8)应试者应充分理解Oracle Database 10g的不同版本。
9)我们可以选择使用下列3种方法来存储Oracle数据文件:File System、ASM以及Raw Devices。File System选项也包含Oracle Cluster File System与第三方磁盘存储阵列。
10)读者应当熟悉每种配置助手能够完成的功能。
11)读者应当理解oratab文件的重要性、位置以及内容。
3、创建Oracle数据库
1)牢记SGA具有3种必备元素:共享池、数据库高速缓存区以及日志缓冲区。
2)牢记下列5种必须的后台进程:系统监视进程、进程监视进程、数据库写入器进程、日志写入器进程以及检查点进程。
3)在Oracle 10g版本中,创建数据看时必须创建SYSAUX表空间。如果没有进行指定,那么系统会默认创建这个表空间。
4)请读者记住:显示数据库中所有表的试图是DBA_TABLES,而不是ALL_TABLES。
5)使用CREATE DATABASE命令可以创建一个数据库,此时数据库的所有设置均采用默认值。
6)创建数据库之后,就再也不能改变数据库块大小参数(DB_BLOCK_SIZE),而其他所有参数都可以进行调整。
4、接合Oracle数据库
1)CREATE、ALTER和DROP是主要的3种DDL语句,这些语句被用于在数据库中添加、修改或删除对象。
2)DCL语句包括GRANT和REVOKE命令,它们可以被用于为用户或角色授予或取消权限。可以被授予和取消的两种权限是系统权限和对象权限。取决于不同的对象类型,对象权限可能不同。
3)本章概述了SQL以及Oracle使用的SQL语言的一些主要元素。考试将测试您正确使用SQL语法的能力,因此对这应当回顾Oracle Database 10g文件以得到与使用SQL进行编程相关的其他信息。SQL是一个很大的主题,短短一章的内容并不能充分诠释这个主题。事实上,只有通过专门的著作才能够阐明SQL的详细用法。
4)DISTINCT关键字可以应用于SELECT列表中的所有列或表达式。
5)Oracle能够支持传统的连接语法,不过应当首选ANSI JOIN语法。
6)ORDER BY子句必须始终出现在SQL语句的最后。我们可以使用任何有效的表达时进行排序,如公式或应用于数据的计算。
7)INSERT、UPDATE与DELETE语句只能应用于一个表中的数据。
8)执行第一个DML语句时会启动一个事务。执行COMMIT或ROLLBACK命令时可以结束一个事务,执行隐式的提交或回滚操作也可以结束一个事务。正常终止与服务器的连接时(如退出某个程序)可以执行隐式的提交操作。只要与数据库的连接失败,就会执行隐式的回滚操作。
9)SELECT语句对正在查询的数据不进行锁定。
10)有效的PL/SQL代码块只需要BEGIN和END关键字,并且在这两个关键字之间至少存在一行有效的代码。
11)安装iSQL*Plus的默认端口号为5560。
12)Oracle Database 10g中包含了一个JVM,使用这个JVM可以执行在数据库中存储的Java存储过程和函数。内置的JVM使用JDBC来操纵数据库数据。
13)对于编写Oracle应用程序来说,OCI是最快速和最复杂的API。
14)使用Windows平台的开发人员可以使用ODP.NET、OO4O、ODBC以及前面所介绍的其他任何API来编写访问Oracle数据的应用程序。
5、管理Oracle进程
1)SYSDBA与SYSOPER不是用户,而是能够被授予用户的权限。在默认情况下,只有用户SYS才具有这些权限。
2)因为在实例启动时只被读取一次,所以“init”文件被认为是“静态的”参数文件。因为Oracle在实例运行时会不断地读取和更新“spfile”文件,所以这种文件被认为是“动态的”参数文件。
3)如果Oracle检测到需要实例恢复,那么就会自动执行。实例恢复无法人工启动(或取消)。
6、管理Oracle存储结构
1)分清组成Oracle数据库的物理存储结构与逻辑存储结构非常重要。请读者熟悉在这两种存储结构中所使用的术语。
2)Oracle Database 10g具有两个被视为系统一部分的表空间:SYSTEM与SYSAUX。以前的Oracle版本只需要SYSTEM表空间。
3)SYSTEM表空间是数据库中数据字典所处的位置。如果没有SYSTEM表空间,那么数据库就无法运作。
4)表空间可以存储下列3种对象中的一种:永久对象,例如表与索引;临时段,例如排序段与临时表数据;用于事务回滚或闪回查询的撤销数据。
5)数据库中要求存储的任何对象都被归类为段。
6)区间是为某个段分配的若干临近数据块的集合。我们可以在表空间内本地管理区间(首选),也可以对去间进行字典管理(考虑到向后兼容性)。
7)如果不指定INCLUDING CONTENTS和CASCADE CONSTRAINTS命令,那么只有在表空间不包含任何永久对象的情况下才能删除这些表空间。
8)在命令行中删除某个表空间并不会将数据文件从数据库中删除。如果使用Enterprise Manager删除某个表空间,那么同时还可以选择是否删除数据文件。
9)只有在使用字典管理表空间的情况下,才需要设置PCTFREE、PCTUSED、FREELISTS和FREELISTGROUPS参数。
10)在数据库处于MOUNT状态(尚未打开)时,我们可以查询V$TABLESPACE、V$DATAFILE和V$TEMPFILE视图。
7、管理数据库用户
1)创建数据库对象(视图、表等)的任何用户都拥有一个模式,并且都被视为模式用户(schema user)。
2)除了SYS和SYSTEM用户之外,Oracle Database 10g数据库通常还具有许多用户,这些用户在数据库创建阶段被定义。大多数用户的账户都被锁定,并且需要通过DBA或运行DBCA来进行人工解锁。
3)除了用户名之外,用户的所有属性都可以通过使用ALTER USER命令被修改。
4)要删除某个模式用户,就必须指定DROP USER命令的CASCADE选项。不过,最好的方法是首先删除这个用户的对象,然后再删除该用户。
5)使用WITH ADMIN OPTION可以使被授权者能够为其他用户授予系统权限。
6)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
7)对象权限由对象的拥有者授予。
8)如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权是级联的。
9)角色是用于权限或其他角色的容器,并且能够进行外部身份验证。
10)使用Enterprise Manager创建某个用户时,该用户会被自动授予CONNECT角色。读者须要记住为这个角色授予的各种权限。
11)如果没有使用ALTER USER命令或Enterprise Manager进行指定,那么为某个用户授予的所有角色都被视为这个用户的默认角色。
12)Oracle只有在RESOURCE_LIMIT系统初始化参数值被设置为TRUE时才会实施资源限制。这个参数在默认情况下被设置为FALSE。
13)在任意时候,用户都只具有一个有效的配置文件。
8、管理数据库对象
9、操纵数据库数据
1)读者需要牢记:服务器进程将数据块从数据文件读取至数据库高速缓存区,而DBWn进程则将数据块从数据库高速缓存区写入数据文件。
2)须要记住的是:“撤销”不是“重做”的逆过程!对于表段、索引段或撤销段的数据块的变化来说,重做可以保护所有的数据块变化。就重做而言,撤销段只是一个段,对这个段所做的任何变化都必须是持久的。
3)执行COMMIT命令时,DBWn进程不会进行任何操作。
4)在正常运行期间,DBWn进程只将某些脏缓冲区写入磁盘。在需要某个检查点时,DBWn进程会将所有的脏缓冲区写入磁盘。
5)如果多语句事务中的一条语句违反了某个约束,那么只有这条语句被回滚,该事务的其余语句则保持完整和未提交状态。
6)读者应当记住下列3种Data Pump文件类型:SQL文件、日志文件以及转储文件。
7)Oracle目录始终属于用户SYS,但是为了创建目录,必须被授予适当的权限“CREATE DIRECTORY”。
8)像其他DML一样,外部表路径插入操作使用了一个正规的提交。直接路径操作并不使用提交,而是简单地将高水印向上移动,从而能够包含最新写入的数据块。
10、使用PL/SQL进行Oracle编程
1)我们只能通过触发事件来运行触发器。
11、保护Oracle数据库的安全
12、配置Oracle互联
1)如果没有使用RAC,那么侦听器与实例必须在相同的计算机上运行。在RAC环境中,群集中任何计算机上的任何侦听器能够连接任何计算机上的任何实例。
2)tnsping实用程序完成与指定侦听器的一次握手,但是并不测试实例是否正在运行以及数据库是否已被打开。只有Net Manager内的Test命令才能完成上述测试。
13、管理共享服务器
1)为了保持一个会话,与调度进程的连接必须持久,而与侦听器的连接可以是短暂的。
2)所有调度进程共享一个公共的输入队列,但是每个调度进程都具有自己的响应队列。
3)在共享服务器中,不进入SGA的PGA存储结构为堆栈空间。
14、管理数据库性能
1)Oracle总是会尝试自动重编译无效的PL/SQL对象和视图,但是可能不会成功。虽然Oracle可能建议手动地进行编译,不过我们并非必须进行这个操作。
2)启用NOLOGGING选项只是为索引重建禁用重做生成。在索引重建之后,针对该索引的所有DML命令都会像平时一样生成重做。
3)除了DBA_TABLES视图中的表统计量之外,分析某个表示还会收集DBA_INDEXES视图中的索引统计量以及DBA_COLUMNS试图中的列统计量。
4)对象统计量不是实时的,并且在新分析对其进行刷新之前是静态的。如果没有足够频繁地进行对象统计,统计量将变得过时,从而会使优化器选择不当的执行计划。
5)动态性能视图填充了来自实例或控制文件的信息;前缀为DBA、ALL或USER的视图则填充了来自数据字典的信息。
15、监视Oracle
1)在默认情况下,MMON进程每隔1小时会将统计量作为一个快照保存至AWR。
2)AWR位于SYSAUX表空间内,并且不能被重新定位至其他位置。
3)在默认情况下,AWR快照保存7天,ADDM报告保存30天。
4)只要收集快照,MMON进程就会启动ADDM。
5)告警通过MMON后台进程发送,并通过Database Control显示。
16、管理撤销
1)一个数据库可以存在多个撤销表空间,但是在任意给定时刻都只能使用一个撤销表空间。
2)任何事务生成的撤销数据都无法被分配到多个撤销段中。
3)我们可以从SQL*Plus中更改某个表空间的撤销保留保证,但是无法通过Database Control完成相同的功能。
17、处理锁定
1)除了报告死锁的发生之外,DBA不需要完成针对死锁的操作。死锁问题是由Oracle数据库自动解决的。
18、配置数据库的备份与恢复
1)读者需要记住语句失败的4种常见原因:无效数据、缺少权限、空间分配问题以及逻辑错误。
2)执行SHUTDOWN ABORT命令能否使数据库出现讹误?答案是绝对不会!这个命令不可能使数据库出现讹误。尽管如此,但是使用SHUTDOWN ABORT命令是一种不好的习惯。
3)控制文件最多具有8个被复用的副本。
19、备份Oracle数据库
1)只有在数据库位于archivelog模式中时,部分备份才有效。
2)只有使用RMAN才能完成增量备份,使用操作系统命令则无法进行增量备份。
3)只有在数据库位于archivelog模式中才能进行联机备份。
4)映像副本只能在磁盘上生成;备份集则可以在磁盘或磁带上生成。
20、恢复Oracle数据库
1)在Oracle环境中,“还原”意味着使用备份替换受损的或丢失的文件,“恢复”意味着通过使用归档日志来同步受损文件与数据库得剩余部分。
2)恢复受损的控制文件时必须使数据库停机,这个操作无法在联机状态下完成。
3)在数据库打开时可以恢复复用的联机重做日志文件,因此不会造成数据库的停机。
21、管理Oracle数据库中的全球化特性
1)读者须要记住能够指定全球化的各种级别的优先顺序。在服务器端,实例设置优先与数据库设置,但是服务器上的所有相关设置都会被客户端重写,从低到高的级别优先顺序为:客户环境、会话级别、语句级别。
22、配置监听器的安全性
1)外部过程必须以C语言编写。与OCI库链接的用户进程软件则可以以C或C++语言编写。
2)配置外部过程服务时,我们可以选择键与SID名,甚至还可以指定要启动的进程。但是,我们必须使用IPC协议,并且TNS别名必须为EXTPROC_CONNECTION_DATA。
23、开始使用Recovery Manager
24、使用RMAN备份数据库
1)脱机备份在加载模式中完成,但是数据库必须首先被干净地关闭。如果数据库由于崩溃或使用SHUTDOWN ABORT命令而被关闭,那么脱机备份将会失败。
25、诊断Oracle数据库的问题
1)告警日志以及所有后台跟踪文件都会被写至BACKGROUND_DUMP_DEST参数所指定的目的地。
2)告警日志与服务器告警系统完全分离。
26、恢复非关键的损失
1)撤销数据的损失是至关重要的,虽然撤销数据是短暂存在的,但是并不意味着丢失这种数据无关紧要。
2)处理临时数据时不会生成撤销或重做。
3)动态性能视图V$TABLESPACE与数据字典视图DBA_TEMP_FILES都可以列出组成临时表空间的文件;动态性能视图V$DATAFILE与数据字典视图DBA_DATA_FILES都可以列出组成永久表空间的文件;动态性能视图V$TABLESPACE与数据字典视图DBA_TABLESPACES则可以同时列出临时表空间与永久表空间。
4)只有在启用ARCHIVELOGMODE时才会允许使用OFFLINE IMMEDIATE命令。
5)为什么可以从只读表空间内清除对象?这是因为DROP命令只更新数据字典,但是不更新对象本身,而数据字典当然不能位于只读表空间中。
6)如果REMOTE_LOGIN_PASSWORDFILE参数没有被设置为SHARED或EXCLUSIVE,那么口令文件就会被忽略。
27、数据库的不完全恢复
1)如果丢失了某个归档日志或者丢失了当前联机重做日志的所有副本,那么就需要进行不完全恢复。
2)我们无法在跳过错误事务恢复的前提下恢复其他所有工作。
3)执行不完全恢复时,必须作为SYSDBA用户进行连接。普通用户、甚至SYSOPER用户都不能执行不完全恢复。
4)在使用SQL*Plus或RMAN时,用于不完全恢复得语法是不同的。SQL*Plus使用UNTIL CANCEL与UNTIL CHANGE,而RMAN则使用UNTIL SEQUENCE与UNTIL SCN。不过,两种工具都会使用语法UNTIL TIME。
5)UNTIL CHANGE恢复会停止在指定SCN前的SCN。不会应用给定的SCN。
6)指定得日志序列号不能被应用;UNTIL SEQUENCE恢复将停止在前一个日志的结束处。
28、使用Oracle Flashback Database
1)Flashback Database不能返回物理讹误,而是只能返回由用户错误导致的逻辑讹误。
2)Flashback Query的所有变化形式都依赖于撤销段的使用。
3)我们无法闪回被截断的表,而是只能闪回被删除的表。
4)在出现介质损坏时(例如某个数据文件丢失),任何闪回方法都毫无用处。此时,我们只能执行标准的备份、还原和恢复过程。
5)与重做日志不同的是,闪回日志不能被复用和归档。闪回日志是自动创建和管理的。
6)Flashback Database要求数据库位于archivelog模式中,并且还需要使用ALTER DATABASE OPEN RESETLOGS命令创建数据库的一个新场景。
29、恢复用户错误
1)在SYSTEM表空间中存储的表无法启用Flashback Drop,因为这些表会被立即彻底地清除,所以它们不能使用如前所述的查询进行报告。
2)Flashback Query的所有形式都取决于撤销数据,从而能够重构早先时间点的数据。
3)我们可以查询早先时间点的数据库,但是不可能针对旧版本的数据执行DML命令。
30、检测与恢复数据库讹误
1)无论怎样设置上述参数,始终都会为SYSTEM表空间启用校验和计算以及数据块检查。
2)我们可以针对活动的或者备份的数据文件运行DBVERIFY,但是对其他文件则不能运行这个实用程序。
3)块介质恢复只使用与数据文件块,如果联机日志文件、归档日志文件或控制文件的一个数据块出现讹误,那么就必须存在恢复操作所需要的复用副本。
4)BMR操作可以应用于任何类型的数据块。与DBMS_REPAIR程序包不同的是,BMR并不局限于表和索引;LOB段与UNDO段也可以进行块级恢复。
5)在BMR上下文中,关键字UNTIL并非表示不完全恢复!这个关键字意味着必须从特定日期(序列号或者SCN)之前生成的备份中还原数据块。
31、用于调整Oracle Database 10g的工具
1)在默认情况下,快照由MMON进程收集,并且每隔一个小时被存储至AWR。因此,ADDM默认每隔一小时运行一次。
32、监视与管理存储结构
1)在DBA_FREE_SPACE视图中,回收站对象所占用的表空间被报告为“free(空闲)”。
2)85%与97%是针对所有表空间的默认告警阀值。我们既可以修改这个数据库范围内的默认设置,也可以为不同的表空间重写这些阀值。
3)一次完整的表扫描操作需要耗费数小时。如果删除所有记录,那么再次进行一次扫描需要多长时间呢?这个时间与先前的时间一样长。
4)除了说明索引是否被使用之外,索引监视工具并不会说明使用索引的时间、索引的使用频率或者使用索引的语句。
33、使用Automatic Storage Management管理存储结构
1)ASM磁盘必须是不具有文件系统的原始设备,但是不必是实际的磁盘。ASM磁盘可以是实际的磁盘,也可以是一个磁盘的分区,或者还可以是LVM管理的逻辑卷。
2)ASM不能用于Oracle主目录或其他文件,而是只能用于数据库文件。
3)普通的磁盘活动并不通过ASM实例完成。ASM是一种使文件可用的管理和控制工具,这种工具并不执行实际的I/O工作。
4)ASM并不管理Oracle二进制文件、告警日志文件、跟踪文件以及口令文件。
5)如果某个RDBMS实例失败,那么其所依赖的ASM实例不会受到影响。如果某个ASM实例失败,那么依赖于它的RDBMS实例将会终止。
6)V$ASM_DISK与V$ASM_DISKGROUP视图只在ASM实例中被填充。在RDBMS实例中,这两个实例总是为空。
7)RMAN是能够用于备份ASM文件的唯一工具。用户托管的备份操作则无法备份ASM文件。
34、监视与管理内存
1)许多人认为日志切换操作会触发检查点进程。这种认识是错误的。在引入增量检查点的8i版本之前,日志切换操作确实会触发检查点进程。在当前版本中,检查点位置根据前面所讲的算法不断地平稳前移,并且在日志切换时不会执行任何特殊的动作。
2)我们无法设置DB_nK_CACHE_SIZE参数(其中n为数据块的标准大小)。如果要设置这个参数,那么就会抛出错误。设置标准块大小高速缓存需要使用DB_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE与DB_KEEP_CACHE_SIZE参数。
3)只有标准块大小池才可以被分为默认池、保持池与回收池。非标准块大小池只能作为默认池。
4)Automatic Shared Memory Management要求STATISTICS_LEVEL实例参数被设置为TYPICAL(默认设置)或ALL,否则就无法收集MMAN进程所需的信息。
5)SGA_TARGET参数值是整个SGA的总大小,不仅包括4个自动管理组件的大小,而且还包括所有手动管理组件的大小。
35、管理ORACLE数据库资源
1)实例参数RESOURCE_LIMITS与Resource Manager毫无关系。这个城市是较早以前通过数据库配置文件控制资源的方法。
2)DBMS_RESOURCE_MANAGER_PRIVS程序包包含将用户置入某个用户组的过程,但是只有DBMS_SESSION与DBMS_RESOURCE_MANAGER程序包中的过程才能够改变某个用户的活动用户组。
3)在每个优先权级别上分配的总CPU资源不能超过百分之百。如果超过百分之百,那么未决区域中的验证将会失败,从而不会将计划保存至数据字典。虽然可以计划在某个优先权级别上不分配百分之百的CPU资源,但是这种做法毫无意义。
4)每个Rource Manager计划都必须包含一条针对用户组OTHER_GTOUPS的指令;否则,验证将会失败,并且无法将未决区域中的计划保存至数据字典。
5)如果某个会话进行了尚未提交的变化,那么这个实际上没有执行任何操作的会话仍然能够被计入用于指定用户组的活动会话池。
6)每个用户组的撤销池都与为每个用户指派的表空间配额毫无关系。我们甚至不能在撤销表空间上授予配额。
7)CREATE_SIMPLE_PLAN过程能够完成所有相关操作,我们甚至不需要创建、验证与提交一个未决区域。此时,我们只需要将用户置入用户组并激活这个计划。
36、自动化管理任务
1)JOB_QUEUE_PROCESSES实例参数的值必须大于零,否则Scheduler无法运行。这个参数默认值为零。
2)一个调度可以被应用于许多作业;一个程序也可以被许多作业调用。
3)除了借助于API的SET_ATTRIBUTE过程以外,我们无法为作业指派优先权次序。
4)即使某个作业在其作业类中具有优先权次序1,如果另一个在其作业类中优先权次序为5的作业所属的类位于具有更高Resource Manage优先权的用户组内,那么第二个作业仍然会先运行。
5)GATHER_STATS_JOB作 ...