admin 管理员组

文章数量: 1086019


2024年2月7日发(作者:免费建站性价比)

OCP认证考试指南全册Oracle-Database-11g练习与知识点

OCP/OCA

认证考试指南全册

Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)

练习与知识点

Author:Deerfer@20140630

第一章 Oracle Database 11g体系结构概述

本章学习内容

 解释内存结构

 描述进程结构

 讲述存储结构

练习1-1 研究所在环境的DRMS

确定自己所在的环境使用的应用程序、应用服务器和数据库服务器。然后集中精力研究数据库,体验一下数据库的规模和忙碌程度。考虑用户数量、数据易失性以及数据量。最后考虑它们对组织的重要程度:就每个应用程序和数据库而言,允许多长的停机时间?允许损失多少数据?可以使用财务数字定量分析吗?

利用研究的结果,可以了解DBA角色的重要性。

应用程序:MDS计量生产调度平台

应用服务器:Oracle WebLogic Server 11g

数据库服务器:Oracle Database 11g

数据库规模:数据量大小、数据库对象多少、用户数、访问并发量、数据库节点格式(RAC环境)

平均无故障时间 MTBF Mean Time

Between Failure

平均故障修复时间 MTTR Mean Time To

Repair

练习1-2 确定数据库是单实例还是分布式系统的一部分

运行查询来确定数据库是独立系统,还是更大的分布式环境的一部分。

(1) 作为用户SYSTEM连接到数据库。

(2) 确定实例是否为RAC数据库的一部分:

SELECT * FROM v$instance;

(3) 确定数据库是否通过备用数据库的保SELECT parallel FROM v$instance; -- NO:单实例数据库 YES:RAC数据库护来防止数据丢失:

SELECT * FROM v$database;

SELECT protection_level FROM v$database; --UNPROTECTED数据库未受到保

(4) 确定是否数据库中配置了流:

护任何行SELECT * FROM dba_streams_administrator; --如果尚未配置流,那么将不返回

Tips 1:Oracle Stream

Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle

Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。

练习1-3 了解实例的内存结构

运行查询来确定构成实例的不同内存结构的当前大小。

(1) 作为用户SYSTEM连接到数据库。

(2) 显示可以动态重设大小的SGA组件的当前、最大和最小的容量:

SELECT component, current_size, min_size, max_size

FROM v$sga_dynamic_components;

查询结果如下:

显示的实例不包括流,因此流池的大小为零。自从启动实例后,大池和Java池都未发生变化,但共享池和数据库缓冲区缓存的大小发生了变化。仅配置了数据库缓冲区缓存的默认池,除进行大量调整的数据库外,通常都是这样的配置。

(3) 确定已经(以及当前为)程序全局区分配了多少内存:

SELECT NAME, VALUE FROM V$PGASTAT

WHERE NAME IN ('maximum PGA allocated', 'total PGA allocated');

练习1-4 了解在实例中运行的进程

将运行查询来查看在实例中运行的后台进程。

(1) 作为用户SYSTEM了解到数据库。

(2) 确定哪些进程正在运行,以及每个进程的数量有多少:

SELECT program FROM v$session ORDER BY program; --有哪些进程

这些查询将得到相似结果:每个进程必须有会SELECT program FROM v$process ORDER BY program; --每个进程的数量

话(即使后台进程,也同样如此),而每个会话必须有进程。可多次出现的进程将有个数据后缀,但支持用户会话的进程除外:它们都使用同一个名称。

查询结果如下:

(CJQ0)

(CKPT)

(DBW0)

(J000)

(LGWR)

(MMAN)

(MMNL)

(MMON)

(PMON)

(PSP0)

(QMNC)

(RECO)

(SMON)

(q000)

(q001)

Tips 2:Oracle进程简要说明

(1) CJQ:Job queue,oracle的JOB进程,停止后JOB会停止运行

(2) CKPT:checkpoint,检查点进程,CKPT和LGWR这两个进程与DBWn进程互相合作, 提供了既安全又高效的写脏数据块的解决方案。

(3) DBW:DBWR,database writer,就是写数据文件的进程。

(4) J000:ora_jxxx是系统job进程,可以用select * FROM

DBA_JOBS_RUNNING查询。

(5) LGWR:Log Writer,将日志缓冲区中的所有记录项写到日志文件中

(6) MMAN :Memory manager,内存管理进程,如果设定了SGA自动管理,MMAN用来协调SGA内各组件的大小设置和大小调整

(7) MMNL:Memory Monitor Light,用于填充自动工作负载存储库(Automatic

Workload Repository,AWR)MMNL进程会根据调度从SGA将统计结果刷新输

出至数据库表。

(8) MMON:Manageability Monitor,MMON从SGA定期捕获统计数据(默认是每小时一次),并将它们写入到数据字典中,在数据字典中,可以无限期地存储它们(不过,默认方式是只存储8天)。

(9) PMON:Process Monitor,进程监控器,主要负责连接非正常中断后的清除工作,PMON负责释放相应的资源。

(10) PSP0:启动其它的Oracle进程(10g新增加的后台进程)。

(11) QMNC:监视高级队列,并警告从队列中删除等待消息的出队进程

(12) RECO :Distributed Database

Recovery,负责在分布式数据库环境中自动恢复那些失败的分布式事务,保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;

(13) SMON:System Monitor,系统监控进程,负责在实例启动时执行实例恢复,并清理不再使用的临时段。

(3) 通过计算服务器进程数量(Linux或

Unix平台上)或Oracle线程数量(Windows上),演示会话生成后启动的服务器进程。

(a) 在Linux上,从操作系统提示符可以运行以下命令:

ps –ef|grep oracle|wc -1

该语句将计算出名称中包含“Oracle”字符串的运行进程的数量,将包括所有会话服务器进程(或许还包括其它进程)。

(b) 在Windows上,启动任务管理器。对其进行配置,以便显示每个进程中的线程数量。

练习1-5 了解数据库的存储结构

在本练习中,将创建一个表段,然后计算出它的物理位置。

(1) 创建一个未确定表空间的表—将在默认表空间中创建它,并包含一个区间:

CREATE TABLE tab24 (c1 VARCHAR2(10));

(2) 确定表所在的表空间、区间大小、区间所在的文件编号、以及作为区间开始位置的文件块:

SELECT TABLESPACE_NAME, EXTENT_ID, BYTES, FILE_ID, BLOCK_ID

FROM DBA_EXTENTS

WHERE OWNER = 'SYS'

AND SEGMENT_NAME = 'TAB24';

查询结果如下:

(3) 根据名称确定文件:在看到提示时,替代前面查询中的file_id:

SELECT NAME FROM v$datafile WHERE file# = &file_id;

查询结果如下:

(4) 精确计算出区间在文件中的位置(按它在文件中的开始字节数)。这要求找到表空间的块大小。在看到提示时输入(2)中查询返回的tablespace_name.

SELECT BLOCK_SIZE * &BLOCK_ID/1024/1024

FROM DBA_TABLESPACES

WHERE TABLESPACE_NAME = '&tablespace_name';

block_id和查询结果如下:

由此可见,表存放于一个64KB的区间中。此区间位于文件“D:ORACLEPRODUCT10.2.0ORADAT

”中,从文件的大约478MB处开始。

本章知识点回顾

单实例体系结构

 Oracle服务器是连接到数据库的实例。

 实例包括共享存储块以及一组后台进程。

 数据库是磁盘上的一组文件。

 用户会话是连接到数据库服务器进程的用户进程。

实例内存结构

 实例共享内存是系统全局区(SGA)

 会话的专用区域是程序全局区(PGA)

 SGA由一组子结构构成,其中一些是必须的(数据库缓冲区缓存、日志缓冲区和共享池),而另一些是可选的(大池、Java池和流池)。

 可以动态重调SGA结构的大小,也可对其进行自动化管理,但日志缓冲区除外。

实例进程结构

 当用户连接时,将根据需要启动会话服务器进

程。

 后台进程在启动实例时启动,在关闭实例前一直存在。

 服务器进程从数据库读取,后台进程对数据库执行写操作。

 某些后台进行始终存在(特别是SMON、PMON、DBWn、LGWR、CKPT和MMON),而其它进程则根据启动的选项进行。

数据库存储结构

 数据库中有三类必须的文件:控制文件、联机重做日志文件和数据文件。

 控制文件存储完整性信息以及指向数据库其它部分的指针。

 联机重做日志存储应用于数据库的最新变更向量。

 数据文件存储数据。

 外部文件包括:参数文件、口令文件、归档重做日志以及日志和跟踪文件。

 表空间将逻辑数据存储(段)从物理数据存储(数据文件)中抽象出来。

 表空间可有多个数据文件组成。

 一个段包含多个区间、一个区间包含多个Oracle块、一个Oracle块包含多个操作系统块。

 一个段可以包含位于多个数据文件的区间。

第二章 安装和创建数据库

本章学习内容

 了解Oracle数据库管理工具

 规划Oracle数据库的安装

 使用OUI安装Oracle软件

 使用DBCA创建数据库

练习2-1 在Windows计算机上安装SQL Developer

在本练习中,将在Windows计算机上安装SQL

Developer。

(1) 下载安装SQL Developer

(2) 从命令行提示窗口运行

可执行文件,确定完成安装。

练习2-2 确认可用的硬件资源

在本练习中,将先后针对Windows和Linux检查哪些可用的资源。

Windows:

(1) 右键My Computer图标,打开Properties对话框。查看RAM容量。RAM至少为512MB,首选容量是1GB。

(2) 选择Advanced选项卡,此后,在Performance部分单击Settings按钮。

(3) 在Performance Options对话框中,选择Advanced选型卡。查看虚拟内存设置。这至少应为步骤(1)中报告的内存量的1.5倍。

(4) 打开命令窗口,使用以下命令找到临时数据目录的位置:

C:> echo %TEMP%

这将返回与下面类似的位置:

C: Temp

确认返回的文件系统(在本例中是驱动器C:)至少具有400MB的可用空间。

(5) 确定文件系统具有用于Oracle主目录和数据库的5GB空间。这必须是本地磁盘,不能是文件服务器。如果要复杂媒介安装程序(你很可能这样做吧),还需要另外1.5GB(可以在文件服务器上)。

Linux:

(1) 在操作系统提示符下,运行free命令来显示主存和交换空间(理想情况下,至少为1GB)。这些都是total列的值。

(2) 运行df –h,显示每个已安装文件系统的

可用空间。确认具有用于Oracle主目录和数据库的5GB可用空间的文件系统。确认/tmp中有400MB的可用空间(如果它作为独立文件系统存在)

(3) 使用rmp来检查是否已经安装了所有需要的包(正确版本和更新版本)。

rpm –qa|grep sysstat

(4) 使用sysctl来检查是否已经安装了所有需要的内核设置,要执行此操作,必须拥有root用户权限。

sysctl –a|grep ip_loca_port_range

练习2-3 安装Oracle主目录

使用OUI在Linux上安装Oracle主目录。

(1) 以dba成员组的身份登录到Linux。在下面的练习中,用户是db11g。使用id命令确认用户名和组成员,如图所示:

(2) 使用su切换到root用户,并使用mkdir命令为Oracle Base创建一个符合OFA的目录。在本例中,这是/u02/app/db11g。使用chown和chmod命令。更改目录的所有权和访问模式,使Oracle用户对其拥有完全控

制权利,然后退回到Oracle用户。

(3) 如果使用的不是控制台计算机,请将DISPLAY变量设置为指向正在使用的计算机上的

(4) …

练习2-4 使用DBCA创建一个数据库

在本练习中,将创建数据库监听器(如果还没有的话),然后在Windows或Linux上使用DBCA创建名为ocp11g的数据库。平台组件没有明显差别。

Tips 3:Oracle几个默认的用户

(1) SYS用户,拥有数据字典

(2) SYSTEM,用于大多数DBA工作

(3) DBSNMP,用于外部监视

(4) SYSMAN,供Enterprise Manager使用

本章知识点回顾

了解Oracle数据库管理工具

 安装:OUI

 数据库创建和升级:DBCA、DBUA

 发送即席SQL:SQL*Plus、SQL Developer

 备份:RMAN、Oracle Secure Backup

 网络管理:Oracle Net Manager、Oracle Net

Configuration Assistant

 加载和卸载数据的实用程序: Data Pump、SQL*Loader

 管理:Oracle Enterprise Manager、Database

Control、Grid Control

规划Oracle数据库的安装

硬件要求

 磁盘空间

 主存

✓ 交换空间

✓ 临时空间

✓ 图形终端

操作系统要求

 认证的版本

 必须的包

 内核设置

OFA:适当的Oracle Base目录

使用OUI安装Oracle软件

 使用适当的操作系统用户

 设置必须的环境变量(Linux、Unix)

 提供对root用户账户的访问(Linux、Unix)

 执行交换式或无提示安装

使用Database Configuration Assistant 创建数据库

 可用使用DBCA或SQL*Plus命令行创建数据库

 DBCA可以基于保存的模板创建数据库

 DBCA和SQL*Plus命令可以删除数据库

 在创建数据库之前,必须首先创建实例

 对于在创建时未选中的任何选项,可以再以后予以添加

第三章 实例管理

本章学习内容

 设置数据库初始化参数

 描述启动和关闭数据库时的多个阶段

 使用警报日志和跟踪文件

 使用数据字典和动态性能视图

练习3-1 查询和设置初始化参数

本练习将使用SQL*Plus或SQL Developer来管理初始化参数。

(1) 以用户SYS的身份(具有SYSDBA权限)连接到数据库(必须处于打开状态)。使用操作系统身份验证或口令文件身份验证。

(2) 显示所有基础参数,检查它们已被设置了适当的值,还是使用默认值。

SELECT name,value,isdefault FROM v$parameter WHERE isbasic='TRUE' ORDER

BY name;

(3) 读者应该对具有默认值的基本参数研究一番,看默认值是否合适。实际上,应该考虑所有的基本参数。

(4) 将PROCESSES参数更改为200。这是

一个静态参数,意味着其值不能在内存中更改并立即生效。必须在静态pfile中设置它,或者如果使用spfile,可以通过指定“scope=spfile”然后重启数据库进行设置。

ALTER SYSTEM SET processes=200; --静态参数 执行报错

(5) 重新运行步骤(3)的查询。注意ALTER SYSTEM SET processes=200 scope=SPFILE; --需要重启数据库使其生效PROCESSES和SESSIONS的新值。PROCESSES限制允许连接到实例的的操作系统进程数量,SESSION限制会话数量。这些数字是相关的,因为每个会话后需要进程。SESSION的默认值从PROCESSES派生出来,因此,如果SESSIONS采用默认值,那么此时将有一个新值。

(6) 为会话更改NLS_LANGUAGE参数的值。选择需要的主流语言(Oracle支持多种语言:截止到目前,支持67种语言),当必须使用英文单词指定语言(例如,使用German,而非Deutsch)。

ALTER SESSION SET nls_language=German;

(7) 通过查询系统日期确认更改已经生效。

SELECT to_char(SYSDATE,'day') FROM dual;

查询结果如下:

用户可能需要使用另一个ALTER SESSION 命令,将会话语言改回以前的语言,否则在要准备处理的会话正使用的语言的错误信息。

(8) 更改OPTIMIZER_MODE参数,当仅将作用域限制为运行中的实例,不要更新参数文件。本练习启用了被启用的基于规则的优化器(可用于测试一些旧代码)

ALTER SYSTEM SET optimizer_mode = RULE SCOPE=MEMORY;

(9) 确认更改已经生效,但没有写到参数文件中

SELECT VALUE FROM V$PARAMETER WHERE NAME = 'optimizer_mode'

UNION

SELECT VALUE FROM V$SPPARAMETER WHERE NAME = 'optimizer_mode';

查询结果如下:

(10) 在运行的实例中,将OPTIMIZER_MODE恢复为标准值

ALTER SYSTEM SET optimizer_mode = ALL_ROWS SCOPE = MEMORY;

练习3-2 启动和关闭数据库

这个练习使用SQL*Plus启动一个实例并打开一个数据库,然后使用Database Control将其关闭。如果数据库已经处于打开状态,则以其它顺序执行,注意,在windows系统中,需要确认运行了数据库对应的Windows服务。其名称的格式为OracleServiceSID,其中的SID为实例名称。

(1) 以拥有ORACLE_HOME的操作系统组成员的身份登录计算机,并为ORACLE_HOME、PATH和ORACLE_SID合理设置环境变量。

(2) 检查数据库侦听器的状态,如有必要,将其启动。在操作系统命令指示窗口中输入如下命令:

lsnrctl status

lsnrctl start

(3) 检查Database Control控制台的状态。如有必要,将其启动。在操作系统命令提示窗口中输入如下命令:

emctl status dbconsole

emctl start dbconsole

(4) 使用/nolog 开关启动SQL*Plus,已阻止将立即出现的登录提示。

sqlplus /nolog

(5) 使用操作系统身份验证,以SYS的身份连接数据库。

connect / as sysdba

(6) 只启动实例。然后查询V$INSTANCE视图并检查其STATUS列。注意实例的状态是启动“STARTED”

startup nomount;

select status from v$instance;

(7) 加载数据库并查询实例状态。现在数据库

已被实例进行了“加载 mount”。

alter database mount;

select status from v$instance;

(8) 打开数据库

alter database open;

(9) 通过查询V$INSTANCE确认已经打开了数据库。数据库现在的状态应该为“OPEN”

select status from v$instance;

(10) 通过浏览器了解到Database Control控制台。主机名和端口将显示在步骤(3)中emctl status dbconsole命令的输出结果中。URL将类似于localhost:port/em,端口号一般为1158.

(11) 以SYS身份,使用创建数据库时选择的口令登录,并从Connect AS下拉框中选择SYSDBA。

(12) 在数据库主页中单击Shutdown按钮。

练习3-3 使用警报日志

在本练习中,将定位警报日志,并找到练习3-1中的参数更改条目和练习3-2中的启动和关闭条目。

(1) 使用SQL*Plus或SQL Developer连接到数据库,找到BACKGROUND_DUMP_DEST参数的值。

SELECT VALUE FROM v$parameter WHERE NAME = 'background_dump_dest';--告

查询结果如下:

警日志存储路径

注意,也可以在Database Control 中找到此值。

(2) 定位到上面的目录

(3) 打开警报日志。此文件称为alert_,其中SID是实例名。

(4) 在文件结尾处,看到练习3-1中的ALTER

SYSTEM命令以及启动和关闭结果。

练习3-4 查询数据字典和动态性能视图

在本练习中,通过查询视图来了解数据库的物理结构。

(1) 使用SQL*Plus或SQL Developer连接到数据库

(2) 使用动态性能视图来确定哪些数据文件和表空间构成了数据库以及数据文件的大

小。

SELECT , , FROM V$TABLESPACE T

JOIN V$DATAFILE D ON # = #

ORDER BY ;

查询结果如下:

(3) 从数据字典视图中获取同一信息。

SELECT tablespace_name, file_name, BYTES FROM dba_data_files ORDER BY

tablespace_name;

查询结果如下:

(4) 确定所有controlfile副本的位置。使用两

种技术:

SELECT * FROM v$controlfile;

查询结果:

SELECT VALUE FROM v$parameter WHERE NAME = 'control_files';

查询结果:

(5) 确定联机重做日志文件成员的位置及大小。由于大小是组的特性,并非成员的特性,需要将两个视图连接在一起。

SELECT #, , /1024/1024

FROM v$log g

JOIN v$logfile m

ON # = #

ORDER BY #, ;

查询结果:

本章知识点回顾

描述启动和关闭数据库时的多个阶段

 包括三个阶段:NOMOUNT、MOUNT和OPEN

 NOMOUNT模式需要参数文件

 MOUNT模式需要控制文件

 OPEN模式需要数据文件和联机重做日志文件

设置数据库初始化参数

 不结果关闭/启动过程,就不能更改静态参数文件

 可以针对实例或会话,以动态方式更改其它参数

 可以在动态性能视图V$PARAMETER和V$SPPARAMETER中查看参数

使用警报日志和跟踪文件

 警报日志是有关关键操作的连续消息流

 跟踪文件通常是由于在后台进程中遇到错误生成的

使用数据字典和动态性能视图

 动态性能视图使用实例或控制文件的信息填充

 数据字典视图使用数据字典的信息填充

 动态性能视图汇聚实例整个生命周期的值,在启动时重新初始化

 数据字典视图显示关闭和启动期一直持久保存的信息

 数据字典视图和动态性能视图都通过同义词来发布

第四章 配置Oracle网络环境

本章学习内容

 配置和管理Oracle网络

 使用Oracle共享服务器体系结构

练习4-1 配置Oracle Net

在本练习中,将使用图形化工具和命令行工具来创建一个完整的Oracle Net环境。由此,读者可以看出在Windows和Linux系统中的区别。

(1) 创建Oracle Net配置文件使用的目录,并设置指向此位置的TNS_ADMIN变量。目录的位置无关紧要,只要Oracle用户有权执行创建、读取和写入即可。

在Linux系统中:

mkdir

--创建文件路径

export

--设置环境变量

确保从现在开始,都从设置了变量的会话中执行所有工作。

TNS_ADMIN=/u01/oracle/net

/01/oracle/net

在Windows系统中:

mkdir d:oraclenet

创建注册表项TNS_ADMIN,并将其设置为Oracle Home分支的注册表中的字符串变量。这通常是:

HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb11g_home1

(2) 通过从操作系统提示符中运行TNSPING命令来检查是否读取了变量:

tnsping orcl

(3) 启动Net Manager。

在Linux系统中,从操作系统提示符中运行

netmgr。在Windows系统中,从“开始”菜单启动它。Net Manager 窗口最上面的行将显示Oracle Net 文件的位置。如果这不是新目录,则TNS_ADMIN变量设置的不正确。

(4) 创建新侦听器:展开导航树的Local分支,突出显示Listeners项,然后点击“+”图标。

(5) 输入侦听器名“NEWLIST”,然后单击OK按钮。

(6) 单击Add Address按钮。

(7) 对于Address1,选择“TCP/IP”作为协议,并输入“127.0.0.1”作为主机,“1521”作为端口。

(8) 创建新服务名:突出显示导航树的Service Naming项,然后单击“+”图标。

(9) 输入“NEW”作为新服务名,然后单击Next按钮。

(10) 选择“TCP/IP”作为协议。然后单击Next按钮。

(11) 输入“127.0.0.1”作为主机名,“1521”作为端口,然后单击Next按钮

(12) 输入“SERV1”作为服务名,然后单击Next按钮

(13) 单击Finish按钮。如果尝试进行尝试,将显示失败

(14) 通过单击File和Save Network

Configuration菜单项保存配置。这将在TNS_ADMIN目录中创建文件盒文件。

(15) 使用编辑器检查这两个文件。

文件如下:

# Network Configuration File:

D:oracleproduct10.2.0db_

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST

= ChuPengfei-PC)(PORT = 1521))

)

文件如下:

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST

= ChuPengfei-PC)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

(16) 从操作系统提示符中使用lsnrctl start

listener 启动监听器。

(17) 在操作系统提示符中使用tnsping orcl尝试连接字符串。

(18) 使用sqlplus / as sysdba,经操作系统省份验证连接到数据库,忽略任何监听器。

(19) 为正在运行的实例设置service_names参数和local_listener参数(仅限于内存,不在参数文件中设置),并向新侦听器注册新服务名:

ALTER SYSTEM SET service_names=sercvl SCOPE=MEMORY;

ALTER SYSTEM SET local_listener=NEW SCOPE=MEMORY;

ALTER SYSTEM REGISTER;

(20) 在操作系统提示符下,使用lsnrctl

services newlist,确认已向新侦听器注册了新服务。

(21) 通过使用以下代码登录,确认新网络环境已生效:

sqlplus system/oracle@new

练习4-2 设置共享的服务器环境

本练习是【练习4-1】中步骤(21)的延续,用户需要配置共享服务器。并证实其可以运行。

(1) 设置dispatchers参数和share_servers参数,并注册到侦听器,命令如下:

ALTER SYSTEM SET dispatchers=’(protocol=tcp)(dispatchers=2)’

SCOPE=MEMORY;

ALTER SYSTEM SET shared_servers=4 SCOPE=MEMORY;

ALTER SYSTEM REGISTER;

(2) 通过查询视图V$PROCESS,确认调度程序和共享服务器已经启动、查找名为S000、S001、S003、D000、D001的进程

SELECT program FROM v$process ORDER BY program;

(3) 在操作系统提示窗口,确认调度程序已经注册到侦听器。

lsnrctl services listener

(4) 通过侦听器进行了解,并确认通过共享服务器机制执行了连接。

SELECT ,

FROM v$dispatcher d, v$shared_server s, v$circuit c

WHERE = cher

AND = ;

(5) 还原到最初的配置以清理环境。

ALTER SYSTEM SET local_listener='' SCOPE=MEMORY;

ALTER SYSTEM SET service_names='' SCOPE=MEMORY;

ALTER SYSTEM SET dispatchers='' SCOPE=MEMORY;

ALTER SYSTEM SET shared_servers=0 SCOPE=MEMORY;

ALTER SYSTEM REGISTER;

(6) 在操作系统提示窗口,使用命令停止侦听器

lsnrctl stop listener

(7) 取消设置TNS_ADMIN变量。在linux

系统中,采用export TNS_ADMIN=’’;在Windows系统中,删除TNS_ADMIN注册表项。

本章知识点回顾

配置和管理Oracle网络

 服务器段文件是和(可选)

 客户端文件是和(可选)

 Oracle Net文件位于ORACLE_HOME/network/admin,或位于TNS_ADMIN变量指向的目录。

 名称解析可以本地执行(使用文件),也可以在中心位置执行(使用LDAP

目录)

 Easy Connect不需要任何名称解析

 一个侦听器可以侦听多个数据库

 多个侦听器可以连接一个数据库

 可以使用静态(通过在文件详细编写代码)或动态(由PMON进程更新侦听器)方法,向侦听器注册实例

 每个用户进程都存在到专用服务器进程的持久连接

使用Oracle共享服务器体系结构

 用户进程连接到调度程序,这些连接是持久的

 所有调度程序在一个公共队列上放入请求

 共享服务器进程从公共队列中取走请求

 每个调度程序都有自己的响应队列

 共享服务器进程将结果放在适当调度程序的响应队列上

 调度程序取出结果,将结果返回给适当的用户进程

 共享服务器至少配置两个实例参数:dispatchers和shared_servers。

第五章 Oracle存储结构

本章学习内容

 了解表空间和数据文件

 创建和管理表空间

 管理表空间中的空间

练习5-1 了解数据库的数据存储结构

在本练习中,将运行查询来了解数据库的物理结构。可以从SQL*Plus或Database Control,交互方式运行这些命令。但最好将它们保存为一个脚本(针对显示格式做适当的完善,并执行特定站点的自定义),可针对任何数据库运行此脚本,这将作为普通空间使用报告的一部分。

(1) 以用户SYSTEM的身份连接到数据库

(2) 确定控制文件的名称和大小:

SELECT NAME, block_size*file_size_blks bytes FROM v$controlfile;

(3) 确定联机重做日志文件成员的名称和大小:

SELECT MEMBER,bytes FROM v$log JOIN v$logfile USING(group#);

(4) 确定数据文件和临时文件的名称和大小:

SELECT 'v$datafile', NAME, BYTES FROM V$DATAFILE

UNION ALL

SELECT 'v$tempfile', NAME, BYTES FROM V$TEMPFILE;

练习5-2 创建、更改和删除表空间

在本练习中,将创建表空间并更改其特性。此后将启用和使用OMF。可以通过Database

Control完成本练习,若如此,请在所有阶段单击Show SQL按钮以观察生成的SQL语句。

(1) 以用户SYSTEM的身份连接到数据库

(2) 在适当目录(Oracle所有者拥有写权限的任何目录)中创建表空间

CREATE TABLESPACE mpac_lc DATAFILE

'D:oracleproduct10.2.0oradataorclmpac_' SIZE 10m

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

SEGMENT SPACE MANAGEMENT AUTO;

此命令指定默认选项。这是一项良好的实践,使语句可以自我记录。

(3) 在新的表空间创建表,并确定第一个区间

的大小:

CREATE TABLE lc_test(c1 DATE) TABLESPACE mpac_lc;

SELECT owner, extent_id, bytes FROM dba_extents WHERE segment_name =

'LC_TEST'; --创建表初始为1个段大小64k,8个块

(4) 手动添加区间,并通过重复执行以下命令来观察每个新区间的大小,并重复执行区间大小的查询。注意区间大小的增长点。(手动添加区间,每次增加一个区间)

ALTER TABLE lc_test ALLOCATE EXTENT;

SELECT owner, extent_id, bytes FROM dba_extents WHERE segment_name =

'LC_TEST';

(5) 使表空间脱机,观察效果,再使其重新联机。

ALTER TABLESPACE mpac_lc OFFLINE;

SELECT * FROM lc_test;

ORA-00376: file 7 cannot be read at this time

ORA-01110: data file 7:

'D:ORACLEPRODUCT10.2.0ORADATAORCLMPAC_'

ALTER TABLESPACE mpac_lc ONLINE;

SELECT * FROM lc_test;

(6) 将表空间设置为只读表空间,观察效果,

再将其设置为读写。

ALTER TABLESPACE mpac_lc READ ONLY;

SELECT * FROM lc_test;

INSERT INTO lc_test VALUES(SYSDATE);

ORA-00372: file 7 cannot be modified at this

time

ORA-01110: data file 7:

'D:ORACLEPRODUCT10.2.0ORADATAORCLMPAC_'

DROP TABLE lc_test;

ALTER TABLESPACE mpac_lc READ WRITE;

CREATE TABLE lc_test (c1 DATE) TABLESPACE mpac_lc;

INSERT INTO lc_test VALUES(SYSDATE);

(7) 启动OMF来创建数据库文件:

ALTER SYSTEM SET

db_create_file_dest='D:oracleproduct10.2.0oradata';

(8) 使用最少的语法创建表空间

CREATE TABLESPACE mpac_lc_idx;

(9) 确定OMF文件的特性

SELECT FILE_NAME,

BYTES / 1024 / 1024,

AUTOEXTENSIBLE,

MAXBYTES / 1024 / 1024,

INCREMENT_BY / 1024 / 1024

FROM DBA_DATA_FILES

WHERE TABLESPACE_NAME = 'MPAC_LC_IDX';

文件名:D:ORACLEPRODUCT10.2.0ORADATAORCLDATAFILEO1_MF_MPAC_LC__9V83O8D0_.DBF

数据文件默认的初始化大小为100MB、文件大

小自动扩展、没有扩展上限(这里最大为32GB,与32位操作系统有关)、空间大小增长的步长为12.5KB

(10) 调整OMF条件,使特性更趋于合理。使用步骤(9)返回的系统生成的任何文件名:

ALTER DATABASE DATAFILE

'D:ORACLEPRODUCT10.2.0ORADATAORCLDATAFILEO1_MF_MPAC_LC__9V83O8D0_.DBF' RESIZE 200m;

ALTER DATABASE DATAFILE

'D:ORACLEPRODUCT10.2.0ORADATAORCLDATAFILEO1_MF_MPAC_LC__9V83O8D0_.DBF' AUTOEXTEND ON NEXT 100m MAXSIZE 2g;

(11) 删除表空间,并使用操作系统命令予以确认:

DROP TABLESPACE mpac_lc_idx INCLUDING CONTENTS AND DATAFILES;

DROP TABLESPACE mpac_lc_idx ;

在表空间中没有对象时,两者效果相同,否则第二条执行将报错。

练习5-3 更改表空间特性

本练习将使用非默认的手动空间管理来创建表空间,以便在升级后模拟到自动段空间管理的转换:

(1) 以用户SYSTEM的身份连接到数据库。

(2) 使用手动段空间管理创建表空间。由于【练习5-2】中启用了OMF,所以不需要任何数据文件子句:

(3) 使用手动技术确认新表空间的存在:

CREATE TABLESPACE manualsegs SEGMENT SPACE MANAGEMENT MANUAL;SELECT segment_space_management

tablespace_name = 'MANUALSEGS'

FROM dba_tablespaces WHERE

(4) 在表空间中创建表和索引:

CREATE TABLE mantab (c1 NUMBER) TABLESPACE manualsegs ;

将使用空闲列表(而非位图)来创建这些段。

CREATE INDEX mantabidx ON mantab(c1) TABLESPACE manualsegs ;(5) 新建将使用自动段空间管理(默认方式)

(6) 将对象移入新表空间:

CREATE TABLESPACE autosegs;ALTER TABLE mantab MOVE TABLESPACE autosegs;

的表空间:

(7) 确认对象位于正确的表空间中:

ALTER INDEX mantabidx REBUILD ONLINE TABLESPACE autosegs;SELECT segment_name,tablespace_name FROM dba_segments WHERE segment_name

(8) 删除原先的表空:

LIKE 'MANTAB%'

(9) 将新的表空间重命名为原来的名称。通常DROP TABLESPACE manualsegs INCLUDING CONTENTS AND DATAFILES;这是必需的,因为某些应用程序软件将检查

(10) 通过删除表空间进行清理,首先使用以下ALTER TABLESPACE autosegs RENAME TO manualsegs;表空间名称:

命令:

DROP TABLESPACE manualsegs;

ORA-01549: tablespace not empty, use

INCLUDING CONTENTS option

由于表空间非空,将引发错误,应对此进行修正:

DROP TABLESPACE manualsegs INCLUDING CONTENTS AND DATAFILES;

TIPS 自动段管理和手动段管理的区别

TIPS 本地区间管理和xxx 的区别

本章知识点回顾

了解表空间和数据文件

 一个表空间可能是多个数据文件

 一个表空间可包含多个段

 一个段是一个或多个区间

 一个区间是位于一个数据文件的多个连续的块

 Oracle块是数据库的基本I/O单元

创建和管理表空间

 SMALLFILE表空间可以有多个数据文件,但BIGFILE表空间只能有一个数据文件


本文标签: 数据库 使用 空间