oracle 数据库基础
3. Oracle数据库的数据处理流程
Oracle数据处理流程,下面以简单的update操作为例加以说明。
先经过系统监视器(SMON)和过程监视器(PMON)检测数据库运行正常,Server进程和Clients进程运行在不同的机器上,彼此通过网络连接。
? 一个Oracle实例运行在数据库Server主机上,用户进程通过SQL*Net连接到
Server主机,Server根据User Process的请求启动一个Server Process。 ? 用户通过SQL语句向Server发出查询或者修改数据信息的请求,并且提交。 ? 数据库Server进程接到请求后检测SGA区中Share Pool中的共享SQL池是否有
相同的SQL语句。如果有,Server进程检验用户的合法性,然后执行共享池中的SQL语句;如果没有,Server进程在共享池中产生一个新的SQL语句,可以供以后任何进程使用,然后执行此SQL语句。
? Server进程检测所有操作的表是否在共享池,如果在,则直接执行下一步;如果
不在,从数据库文件中读取放到高速缓冲区中;此时如果需要擦除缓冲区中的脏数据块,则需要通过校验点CKPT进行校验,再执行下一步。
? 将原来共享池中的数据写入到回滚段 (Redo Log Buffer),通过LGWR在重演日
志中生成该事务的一个拷贝。
? 通过DBWR修改数据文件(Data Files),将执行成功的信号返回到SGA区。 ? 将完成的事务记录到重演日志中。 ? 清除回滚段的信息。 ? 完成本次操作。
说明:以上LCKn为lock(锁)情况,RECO 为RECOVER(恢复)过程,SNPn为snapshot Refresh Process(快照刷新进程),Qnnn为Parallel Query Processes(并行查询进程),ARCH为Archiver(物理热备份归档处理进程)
第二部分:Oracle数据库的安装与建立
一、Oracle数据库的安装
以ORACLE816在AIX操作系统上安装为例,下面介绍安装过程中的一些关键步骤和有关注意事项,详细安装请参考随机手册。
(1)需要运行oracle数据库的机器在安装系统时必须使swap区为为系统内存的2-3倍,建议为3倍。(如果物理内存超过1GB,则两倍就足够)
3
oracle 数据库基础
(2) 建立Oracle软件的安装点:建议将安装点统一放在oracle用户缺省主目录:/home/oracle下,不需要手工创建安装点目录
(3) 用SMIT建立:GROUP(oracle)和USER(oracle),并将oracle用户加入到这个组中,如果上面步骤已经建立了安装点,将ORACLE用户主目录设置成安装点目录,如果没有建立了安装点,则可以用缺省主目录:/home/oracle ,然后在用户主目录下建立orahome属主为orcle:oracle,将该目录作为ORACLE系统主目录,注意,ORACLE系统主目录应该与环境变量:ORACLE_HOME保持一致。
(4)在AIX操作系统上安装ORACLE数据库不需要调整内核参数。
(5)以oracle用户在X-WINDOWS界面登录(如果在PC上远程安装,需要用Reflection软件,记住,不管是在本机还是在客户端安装,均要用采用英文环境安装,否则,安装可能出问题!)然后修改两个文件:.profile和.dtprofile ,将profile文件修改成:
umask 022
export TERM=vt100
export DISPLAY=localhost:0.0 export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/orahome export ORACLE_SID=zxin
export PATH=$PATH:$ORACLE_HOME/bin:.
export CLASPATH=JRE_Location:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib export LIBPATH=$LIBPATH:$ORACLE_HOME/lib export LANG=Zh_CN
export LOCPATH=/usr/lib/nls/loc
export NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat set -o vi
PATH=$PATH:/usr/vac/bin export PATH
PS1='$PWD$ '; export PS1
然后将.dtprofile文件中最后一行:# DTSOURCEPROFILE=true前面的#号去掉 (6)在图形界面中开启终端窗口:然后用su命令以超级用户登录,运行以下命令:
mount /cdrom (由于已经制作/cdrom文件系统,所以可以直接mount,不需要 CDROM设备号)
(7)退出图形界面,右键选择【log out】,以oracle用户重新登录使环境变量生效 (8)cd /cdrom 然后在当前目录下运行/runInstaller开始oracle的安装 (9)安装选择注意事项:
? 选择需要安装的ORACLE产品:Oracle8i Enterprice Edition 8.1.6.0.0。
4
oracle 数据库基础
? 选择安装类型:custom。
? 产品语言中(product language)增加:Simplified Chinese 。 ? 安装过程提示是否要建缺省数据库,选择NO 。
? 安装最后阶段根据提示运行root.sh完成用超级用户权限的有关配置。
? 系统安装完毕后,生成缺省系统管理员用户:system和sys,默认密码分别为
manager和change_on_install。
(10)安装过程结束后,安装程序会利用Net8进行网络配置:在图形界面下按照要求添入本机IP地址,端口号和服务名,系统自动生成 $ORACLE_HOME/network/admin目录下的两个文件:listener.ora 和 tnsnames.ora。
(11) 以超级用户,修改侦听端口文件:#vi /etc/services,在文件的最后添加:
listener1 1521/tcp #oracle listener port1 listener2 1521/tcp #oracle listener port2
二、Oracle数据库启动和关闭 1. 启动数据库:
(1)可以利用写好的脚本文件自动启动?start或者依照以下步骤启动:
首先以oracle用户身份启动Server Manager,以数据库系统管理员用户连接到数据库,连接到internal.
? $ svrmgrl(命令格式进入数据库管理状态) ? SVRMGR>connect internal(以sysdba身份登录)
(2)启动Oracle实例(Instance)、Mount数据库(database)、打开数据库
SVRMGR>startup(默认方式为启动实例, mount数据库和打开数据库步骤打开数据库,即:Startup nomount ,alter database mount ,alter database open) 如果不以默认方式启动数据库,可以有以下几种方式:
? 启动实例,mount数据库,但不打开数据库。 ? 启动实例,mount数据库,打开数据库。 ? 带参数文件的方式启动数据库 SVRMGR>startup pfile=/path/pfilename。
? 打开数据库后,可以执行下述指令来限制只有拥有“Restricted Sesstion”系统特
权的用户才可以登录到数据库
SVRMGR>alter system enable restricted session。 用下述语句解除该限制:
5
oracle 数据库基础
SVRMGR>alter system dusable restricted session。
(3)授权SQLNET可以远程访问该数据库,启动Listener进程: $1snrctl start
启动ORCLE侦听后台进程,如果已经启动,可以先用: lsnrctl stop 关闭后再启 动,然后用:tnsping [servicename] 检测Listener后台进程是否启动
2. 关闭数据库
(1) 先关闭Oracle的Listener Server,以Oracle 用户执行$1snrctl stop。 (2)再关闭Oracle 数据库,进入数据库管理状态:SVRMGR> connect internal: ? SVRMGR> shutdown:(缺省为normal方式,停止接受新的数据库联机请求,等
待当前所有联机请求处理完正执行的联机程序,等待数据所有的Commit和rollback 执行完成以后关闭数据库。)
? SVRWGR> shtudown immediate:(停止接受新的数据库联机请求,立即中断目前
所有联机用户正执行的SQL指令,回滚所有用户尚未承诺的交易后立即关闭数据 库)
? SVRMGR> shutdown abort:(立即终止一切 对数据库的所有会话,关闭数据库
实例。此种方式立即关闭数据库以后,当下一次启动数据库时,Oracle需要做很多修复数据库 工作,所以启动会花较长时间。)
三、 建立数据库 1、创建数据库
安装完数据库以后,需要根据应用程序的需求建立一个相应能满足要求的数据库。 创建数据库的主要步骤如下:
(1) 通过应用情况设计和决定数据库的内容
(2) 设计数据库的结构使得数据库内容紧凑和减少碎片(初步创建时可以使用默认设置)
(3)安装时事先定好ORACLE用户的环境变量
主要有:ORACLE_SID 、ORACLE_HOME和相关的路径设置。 (4) 从标准例子的init.ora文件中拷贝和编辑参数文件
必须配置的参数有db_name(数据库名称)、 control_files (控制文件名称和位置,可以有多个)和重做日志文件个数等等,其它各项可以在安装数据库时设置成默认参数。具
6
oracle 数据库基础
体有以下参数值得重视:
? Db_block_size :该参数设置ORACLE数据库Database Block的大小,它代表
ORACLE数据库数据存取的最小单位,最好是操作系统块大小的整数倍为宜,较大的设置值可以减少大量存取数据的时间,但会浪费磁盘空间,该参数在创库时一旦设置,便不能更改,除非重新创建数据库,一般设置大小:4096或8192。 ? Db_block_buffers :该参数设置ORACLE数据库内存缓冲区块的个数,该参数和
Db_block_size的乘积即为整个数据高速缓冲区Database Buffer Cache的大小,该值要根据系统物理内存情况设置成一个比较大的数。
? Log_checkpoint_timeout :该参数设置距上次触发checkpoint事件过多少秒后触发
下一次checkpoint事件,该值设大可以减少磁盘I/O的频繁程度,推荐设置(缺省设置):1800[秒]。
? Log_buffer :该参数设置Redo Log Buffer的大小,设大该值,可以减少Redo日志
文件磁盘I/O。
? nls_language :该参数设置国家语言有关的各种NLS数据显示格式参数,推荐设
置:“SIMPLIFIED CHINESE”。
? nls_territory :该参数设置国家惯例有关的各种NLS数据显示格式参数,推荐设
置:“CHINA”。
? shared_pool_size :该参数主要包含共享SQL池、字典高速缓冲区,设大该值可以
增加运行SQL语句和数据字典在内存中的占有率,以此增加数据库SQL语句的执行效率,推荐设置较大的值。
(5) 连接到数据库的Server端启动svrmgrl,连接成internal状态。以nomount方式启动数据库:
SVRMGR>startup nomount
(6)使用create database的sql命令创建数据库
? 主要格式:
sql> create database databasename[controlfile1 [ controlfile2 ]] 2>[logfile [group n] filespec] [datafile filespec] [maxdatafiles n] 3>[archivelog (noarchivelog)]
注意:filespec包括文件的位置、名称、大小。 ? 举例:
SVRMGR>create database test
2>datafile '/data1/oracle/dbfile/test.dbf' size 100M reuse autoextend on 3> next 5M maxsize 200M
4>logfile group 1 '/data1/oracle/dbfile/redo01.log' size 30M, 5>group 2 '/data1/oracle/dbfile/redo02.log' size 30M
7