当前位置:文档之家› 在RedHat Advance Server上安装Oracle 9204 RAC参考手册

在RedHat Advance Server上安装Oracle 9204 RAC参考手册

在RedHat Advance Server上安装Oracle 9204 RAC参考手册
在RedHat Advance Server上安装Oracle 9204 RAC参考手册

在RedHat Advance Server上安装Oracle 9204 RAC参考手册

前言

定位

本文定位在那些有了一定Linux与oracle基础的,而且对RAC也要有相关了解热人员作为参考手册,而不是所谓的安装向导。

所以本文没有详细的安装过程之类的步骤,却有详细的安装错误的解决办法。

覆盖范围

适合在Redhet AS 2.1与AS 3.0系统上

包括单节点、多节点安装

包括9201升级到9204和直接安装9204

包括文件系统(单机),OCFS文件系统,RAW设备与NFS网络文件系统的安装异同

目录结构

概述2

第一章. RAC的机制2

第二章. Linux上安装RAC的系统要求3

2.1 内核需求3

2.2 binutils需求3

2.3 共享磁盘需求3

第三章.安装前的准备工作3

3.1调整Linux核心参数3

3.2加载系统状态检查模块3

3.3确定与配置节点4

3.4创建oracle用户与组4

3.5设置节点环境变量4

3.6准备目录结构4

第四章. 确定共享磁盘设备 4

4.1 单机文件系统上安装RAC 4

4.2 Ocfs文件系统上单机模拟与多节点共享安装5

4.3 Raw裸设备6

4.4 其它,如nfs文件系统7

第五章. 安装OCM(Oracle Cluster Manager)7

5.1生成一个CM管理文件7

5.2 安装OCM管理软件7

5.3配置OCM文件8

5.4启动ocm 9

第六章. 安装Oracle软件9

6.1开启RSH 9

6.2安装软件10

6.3初试化共享文件10

第七章. 创建数据库10

7.1准备参数如下10

7.2 创建密码文件11

7.3创建数据库11

7.4 创建相应的数据字典12

第八章. 启动第二个节点实例12

8.1 准备第二个节点的日志与重做12

8.2 启动第二个实例12

8.3 验证RAC 13

第九章. 测试、使用RAC 13

9.1监听的配置13

9.2本地名称的配置14

9.3 负载均衡测试14

9.4失败切换(failover)测试15

9.5 rac环境下修改为归档模式15

第十章.从单节点数据库变为RAC 15

10.1修改参数文件15

10.2创建cluster视图16

10.3重新创建控制文件16

10.4创建第二个实例的redo与undo 16

小结16

概述

RAC的机制与运行原理

Linux上安装RAC的前提条件

各种磁盘共巷设备与文件系统

OCM软件及功能

数据库的安装过程及升级过程

数据库的创建过程与RAC的启动过程

RAC的常见功能及管理方法

第一章. RAC的机制

RAC起源于版本8的OPS(Oracle parallel Server),OPS/RAC 最原始的设计初衷就是系统与应用的高可用性。OPS/RAC通过不同的节点使用一个(一般是一个)或多个oracle instances 与一个database 连接。RAC对早期的OPS做了众多的改进,特别是在节点的通信与管理上。RAC在工作期间,每个节点可以单独的被使用并且被应用程序负载均衡。如果发生意外,如一个节点的失败,可以实现节点的失败切换(failover),保证数据库24*7的高可用性。

RAC的数据库要求建立在共享磁盘设备上,对于OPS,只支持RAW设备,RAC已经可以支持文件系统(单机模拟)、OCFS、RAW、与NFS等文件系统或者设备。因为RAC是多个实例对应一个数据库,每个节点都有自己的日志,因此在备份与恢复方面,将需要一些特殊的处理。但是,RAC并不提供容灾的功能,如共享磁盘设备的损坏,自然灾害等不可避免的损失,将导致RAC的不可使用,所以,RAC一般与其它的容灾组件配合使用,如RAC+DATA GUARD。取代以前版本的分布式锁管理(DLM),全局缓冲服务(GCS)与全局锁服务(GES)将负责RAC的

管理工作。GCS的同步层允许每个实例单独的访问数据库,通过数据库的核心层管理实例级别的一致性与锁资源。所有的以上任务将被一组特殊的后台进程来完成:

LMON (Lock Monitor Process),锁监控进程

负责监控整个RAC的全局资源,管理实例与进程的过期以及全局缓冲服务与全局锁服务的恢复工作,LMON提供一个众所周知的聚族组服务(CGS)。

LMSn(The Global Cache Service Processes),全局缓冲服务进程

LMSn可以处理远程节点的全局缓冲服务的信息,LMSn也负责控制到远程节点的信息流,RAC 可以提供10个这样的服务进程LMS0-LMS9,其进程的多少取决于实例之间的通信量。LMSn 负责处理远程节点的全局缓冲服务获得的中断请求,保证多个实例的读一致性请求。LMSn创建块的一致性的读信息并送到远程节点的实例。

LMD(The Global Enqueue Service Daemon),全局资源服务

LMD资源代理进程,负责管理全局缓冲服务资源的管理,可以负责远程节点资源的请求与死锁的检测。

第二章. Linux上安装RAC的系统要求

2.1 内核需求

如果是AS2.1,内核2.4.9 e16以上,如

[oracle@dbrac oracle]$ uname -a

Linux dbrac 2.4.9-e.37enterprise #1 SMP Mon Jan 26 11:20:59 EST 2004 i686 unknown

如果是3.0版本,则没有内核要求,内核信息一般如下

[root@ dbrac oracle]$ uname -a

Linux dbrac 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

2.2 binutils需求

binutils 要求binutils-2.11.90.0.8-12以上,如

如:2.1版本

[oracle@dbrac oracle]$ rpm -qa | grep -i binutils

binutils-2.11.90.0.8-12

3.0版本

[root@ dbrac oracle]$ rpm -qa | grep -i binutils

binutils-2.14.90.0.4-26

2.3 共享磁盘需求

如果是单节点安装,可以是本地硬盘,文件系统即可

如果是多节点安装,需要共享磁盘系统,可以是Raw设备,Ocfs文件系统,Nfs网络文件系统等。

第三章.安装前的准备工作

3.1调整Linux核心参数

在/etc/sysctl.conf中增加

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 262144

net.ipv4.tcp_sack=0

net.ipv4.tcp_timestamps=0

fs.file-max = 65535

kernel.sem = 500 64000 100 128

kernel.shmmax = 2147483648

以上值根据不同的环境可能有变化,不再描述每个值的具体意义

3.2加载系统状态检查模块

这个模块在AS2.1-E16以上的核心或者是3.0的核心中是自带的,不需要安装,它取代了数据库9201版本的watchdog,所以,我们可以不需要配置watchdog,如果OS核心不够,可以升级核心。

可以通过如下方法检测是否存在该模块

$ find /lib/modules -name "hangcheck-timer.o"

/lib/modules/2.4.9-e.37enterprise/kernel/drivers/char/hangcheck-timer.o

你可以运行该模块并检查日志信息

# su - root

# /sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

# grep Hangcheck /var/log/messages |tail -1

在/etc/rc.local下增加

#!/bin/sh

touch /var/lock/subsys/local

/sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

或者

# su - root

# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modules.conf

这样的话,在系统重新启动后,该模块可以自动加载

3.3确定与配置节点

如果确定在单个节点上模拟RAC,那么/etc/hosts文件内容可以类似如下

[root@dbrac root]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost

10.0.29.162 dbrac

其中dbrac是该机器的机器名称,与hostname或/etc/sysconfig/network的内容一致

如果是在多节点上安装RAC,那么/etc/hosts文件内容可以类似如下

[oracle@db205 oracle]$ more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost

192.168.168.205 dbrac1

192.168.168.206 dbrac2

192.168.0.205 dbrac1-eth1

192.168.0.206 dbrac2-eth1

其中分别代表公用节点名称与私有节点名称,公用节点是网卡1配置的IP地址,表示对外应用

程序连接通道;私有节点是网卡2配置的IP地址,用于多个节点之间的通信专用。

3.4创建oracle用户与组

#groupadd dba

#useradd oracle -g dba

#passwd oracle

3.5设置节点环境变量

如果是AS 3.0,注意设置如下参数

export LD_ASSUME_KERNEL=2.4.1

以下参数在两个平台下公用

export ORACLE_BASE=/u01/oracle

export ORACLE_HOME=/u01/oracle/ora920

export ORACLE_TERM=xterm

export NLS_LANG=AMERICAN_AMERICA.zhs16gbk

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export PATH

3.6准备目录结构

su - oracle

$cd $ORACLE_BASE

$ mkdir -p admin/rac/ ---存放配置文件

$ cd admin/rac/

$ mkdir bdump cdump udump createdblog

$cd $ORACLE_BASE

$ mkdir -p oradata/rac ----存放数据文件

注意:以上操作,如果是多个节点,需要在多个节点上完成,单个节点只需要在单节点上完成即可。

第四章. 确定共享磁盘设备

4.1 单机文件系统上安装RAC

文件系统如ext2,ext3等,可以在单机上模拟RAC。

假定我们划分/u01分区为ext3文件系统,首先,我们创建新的分区

#fdisk /dev/sda

假定化出的新分区是/dev/sda6,那我们格式化该分区,如果是As 2.1

#mkfs.ext2 -j /dev/sda6

其中的-j参数是以ext3格式化文件系统,如果是3.0系统,则直接可以调用mkfs.ext3命令。#mkfs.ext3 /dev/sda6

然后我们创建一个挂装点

#mkdir /u01;chmod 777 /u01

授予用户权限

#chown oracle:dba /u01

可以用mount挂装上

#mount -t ext3 /dev/sda6 /u01

如果想在启动的时候自动挂装,修改/etc/fstab

/dev/sda6 /u01 ext3 defaults 1 1

那么我们用df就可以发现类似如下的信息

/dev/sda6 17820972 2860164 14055548 17% /u01

4.2 Ocfs文件系统上单机模拟与多节点共享安装

OCFS是Oracle cluster file system,适合单节点与多节点的RAC安装。在安装前,我们需要从https://www.doczj.com/doc/b516906735.html,

下载最新的安装包,并注意安装包与当前核心是否匹配。如果是AS 2.1 enterprise核心下载的版本为。

ocfs-2.4.9-e-enterprise-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

所要求的核心版本为2.4.9-e.12或者以上

如果是AS3.0 smp核心下载的版本为

ocfs-2.4.21-EL-smp-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

我们可以用rpm来安装软件,如

#rpm -ivh ocfs*

可以用如下的命令查看安装是否成功

# rpm -qa | grep -i ocfs

检查服务是否安装成功

# chkconfig --list |grep ocfs

ocfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

配置/etc/ocfs.conf文件,结果大致如下

# Ensure this file exists in /etc directory #

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

然后运行ocfs_uid_gen -c获得gid,之后,文件变得如下所示

[root@dbrac root]# more /etc/ocfs.conf

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

guid = 7F2311E5DABE42FBCD86000D56BAC410

如果换过网卡之后,需要重新运行ocfs_uid_gen -c获得gid

最后,加载ocfs启动Oracle Cluster Manager,这个命令在一个节点上,安装后只需要运行一次,在以后系统启动的时候,将由ocfs服务自动从/etc/fstab中加载。

su - root

# /sbin/load_ocfs

注意:所有以上步骤,需要在所有节点上进行,如果是单节点,就在一个节点上运行即可。以下的操作,在一个节点上进行即可。

为了利用ocfs文件系统,我们先划分两个分区来,一个用于CM的检查文件(quorum file),一个用于存放共享的数据库包括控制文件,数据文件,日志文件,归档文件,服务器配置文件(srvm configuration file)等。

# fdisk /dev/sdb

划分一个/dev/sdb1与/dev/sdb5

然后创建一个挂装点

mkdir /shared;chmod 777 /shared

mkdir /ocfs01;chmod 777 /ocfs01

现在,我们格式化该分区。

# mkfs.ocfs -b 128 -C -g 500 -u 500 -L ocfs01 -m /ocfs01 -p 0775 /dev/sdb5

其中的-g -u分别是组与用户编号

各个参数意义如下

-F强制格式化现有的ocfs分区

-b 块的大小(KB),必须是多个ORACLE块大小,Oracle建议128K

-L 卷的标签

-m 挂装点(本文"/ocfs01")

-u根路径的所有者的UID (本文是"oracle")

-g 根路径所有者组的GID (本文是"dba")

-p 根路径的权限许可

现在,我们可以挂装该分区

#services ocfs start #如果已经启动,就不必了

#mount -t ocfs /dev/sdb1 /shared

#mount -t ocfs /dev/sdb5 /ocfs01

也可以在/etc/fstab中增加如下条目,在系统启动的时候,会自动加载

/dev/sda1 /shared ocfs _netdev 0 0

/dev/sda5 /cfs01 ocfs _netdev 0 0

我们用df就可以看到类似如下的信息

/dev/sdb1 1026144 24288 1001856 3% /shared

/dev/sdb5 34529760 1153120 33376640 4% /ocfs01

以上所有步骤做完,建议重新启动一次,让多个节点确认到共享设备。

4.3 Raw裸设备

首先需要划分一系列的分区,需要注意的是,每个设备不能多于15个分区,Linux总共不能超过255个裸设备。

裸设备一般用于共享磁盘系统。可以用如下的方法挂装

#su - root

raw /dev/raw/raw1 /dev/sda2 # Used for the Cluster Manager Quorum File

raw /dev/raw/raw2 /dev/sda3 # Used for the Shared Configuration file for srvctl # /dev/sda4: Used for creating the Extended Partition which starts as /dev/sda5. raw /dev/raw/raw3 /dev/sda5 # spfileorcl.ora

raw /dev/raw/raw4 /dev/sda6 # control01.ctl

raw /dev/raw/raw5 /dev/sda7 # control02.ctl

raw /dev/raw/raw6 /dev/sda8 # indx01.dbf

raw /dev/raw/raw7 /dev/sda9 # system01.dbf

raw /dev/raw/raw8 /dev/sda10 # temp01.dbf

raw /dev/raw/raw9 /dev/sda11 # tools01.dbf

raw /dev/raw/raw10 /dev/sda12 # undotbs01.dbf

raw /dev/raw/raw11 /dev/sda13 # undotbs02.dbf

raw /dev/raw/raw12 /dev/sda14 # undotbs03.dbf

raw /dev/raw/raw13 /dev/sda15 # users01.dbf

raw /dev/raw/raw14 /dev/sdb5 # redo01.log (Group# 1 Thread# 1)

raw /dev/raw/raw15 /dev/sdb6 # redo02.log (Group# 2 Thread# 1)

raw /dev/raw/raw16 /dev/sdb7 # redo03.log (Group# 3 Thread# 2)

raw /dev/raw/raw17 /dev/sdb8 # orcl_redo2_2.log (Group# 4 Thread# 2) raw /dev/raw/raw18 /dev/sdb9 # orcl_redo3_1.log (Group# 5 Thread# 3) raw /dev/raw/raw19 /dev/sdb10 # orcl_redo3_2.log (Group# 6 Thread# 3) 如果检查连接,用如下命令

su - root

raw -qa

或者

more /dev/raw/raw1类似的方法检查。

如果想在启动的时候,自动挂载,请把以上的命令写到/etc/rc.local中,或者编写

/etc/sysconfig下的rawdevices文件,如

# more rawdevices

/dev/raw/raw1 /dev/sda2

/dev/raw/raw2 /dev/sda3

……

如果需要对裸设备授权,可以运行如下脚本,其中n表示裸设备分区数目

su - root

for i in `seq 1 n`

do

chmod 660 /dev/raw/raw$i

chown oracle.dba /dev/raw/raw$i

done

再用如下的方法建立软联结,那么就可以和文件系统一样使用裸设备了。

su - oracle

ln -s /dev/raw/raw1 /var/opt/oracle/oradata/orcl/CMQuorumFile

ln -s /dev/raw/raw2 /var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile

ln -s /dev/raw/raw3 /var/opt/oracle/oradata/orcl/spfileorcl.ora

……

注意:以上操作除了分区外,需要在每个节点完成

4.4 其它,如nfs文件系统

注意启动nfs,nfslock服务

Mount该文件系统的方法如下

mount 10.0.29.152:/vol/vol1/fas250 /netapp nfs

rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768

也可以放到fstab中,与以上类似

其它的地方与ocfs类似,不再额外描述

第五章. 安装OCM(Oracle Cluster Manager)

5.1生成一个CM管理文件

如果是单节点文件系统,可以用如下命令模拟

su - oracle

$dd if=/dev/zero of=/u01/oracle/oradata/rac/RacQuorumDisk bs=1024

count=1024

如果是多节点ocfs或raw设备,可以同样用dd生成相应的文件,放到准备好的共享磁盘设备上,大小1M即可。

5.2 安装OCM管理软件

1、如果是9201 for linux,先安装9201 OCM,安装选项的最后一项,然后升级到9204

2、如果是9204 for linux,直接选中9204 OCM安装即可

3、如果在AS 3.0上安装,请在安装前进行如下操作

先链接gcc

su - root

mv /usr/bin/gcc /usr/bin/gcc323

ln -s /usr/bin/gcc296 /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++323 # if g++ doesn't exist, then gcc-c++ was not installed

ln -s /usr/bin/g++296 /usr/bin/g++

然后打补丁3006854,可以去https://www.doczj.com/doc/b516906735.html,.下载补丁并参考补丁更多的信息su - root

# unzip p3006854_9204_LINUX.zip

Archive: p3006854_9204_LINUX.zip

creating: 3006854/

inflating: 3006854/rhel3_pre_install.sh

inflating: 3006854/README.txt

# cd 3006854

# sh rhel3_pre_install.sh

Applying patch...

Patch successfully applied

如果在本地X Win拒绝图形界面,注意设置

$xhost +本机名或IP

在公共节点与私有节点输入机器名称,与/etc/hosts的内容一致,如果不添写也可以,这个可以再配置

在需要我们输入这个磁盘分区的时候, 我们输入我们生成的文件名称,如果不输入也可以再配置/u01/oracle/oradata/rac/RacQuorumDisk

5.3配置OCM文件

1、cmcfg.ora配置文件

[oracle@appc2 admin]$ cp cmcfg.ora.tmp cmcfg.ora

查看配置文件的内容,可以发现有如下内容

[oracle@appc2 admin]$ more cmcfg.ora

HeartBeat=15000

ClusterName=Oracle Cluster Manager, version 9i

PollInterval=1000

MissCount=210

PrivateNodeNames=dbrac

PublicNodeNames=dbrac

ServicePort=9998

#WatchdogSafetyMargin=5000

#WatchdogTimerMargin=60000

HostName=dbrac

CmDiskFile=/home/oracle/oradata/rac/RacQuorumDisk

因为我们不再用watchdog去检测系统,而是用hangcheck-timer,所以,我们需要注释Watchdog的两行,增加如下一行

KernelModuleName=hangcheck-timer

以上的单节点RAC的一个例子,可以看到,在安装界面要求输入的节点名称,文件名称,都有对应的项目,这个因为是单节点,所有公用节点与私有节点都只有一个。

如果是多节点的RAC,公用节点与私有节点应当类似如下

PrivateNodeNames=dbrac1-eth1 dbrac2-eth1

PublicNodeNames=dbrac1 dbrac2

其中,私有节点是网卡2配置的地址,用于两台节点直接的通信

公用节点是网卡1配置的地址,用于外部访问数据库。

2、ocmargs.ora配置文件

注释$ORACLE_HOME/oracm/admin/ocmargs.ora中包含watchdogd的行

more $ORACLE_HOME/oracm/admin/ocmargs.ora

# Sample configuration file $ORACLE_HOME/oracm/admin/ocmargs.ora

#watchdogd

oracm

norestart 1800

3、ocmstart.sh启动文件

注释$ORACLE_HOME/oracm/bin/ocmstart.sh中的以下行

# watchdogd's default log file

# WATCHDOGD_LOG_FILE=$ORACLE_HOME/oracm/log/wdd.log

# watchdogd's default backup file

# WATCHDOGD_BAK_FILE=$ORACLE_HOME/oracm/log/wdd.log.bak

# Get arguments

# watchdogd_args=`grep '^watchdogd' $OCMARGS_FILE |\

# sed -e 's+^watchdogd *++'`

# Check watchdogd's existance

# if watchdogd status | grep 'Watchdog daemon active' >/dev/null

# then

# echo 'ocmstart.sh: Error: watchdogd is already running'

# exit 1

# fi

# Backup the old watchdogd log

# if test -r $WATCHDOGD_LOG_FILE

# then

# mv $WATCHDOGD_LOG_FILE $WATCHDOGD_BAK_FILE

# fi

# Startup watchdogd

# echo watchdogd $watchdogd_args

# watchdogd $watchdogd_args

5.4启动ocm

$ cd $ORACLE_HOME/oracm/bin

$ su

# ./ocmstart.sh

启动完用ps -ef|grep oracm看一下有没进程,如果没有到$ORACLE_HOME/oracm/log目录下查出错信息

第六章. 安装Oracle软件

6.1开启RSH

在多节点上需要,如果在单节点就无所谓了,用于节点之间的通信,只需要在一个节点上安装Oracle软件即可,开启RSH之后还要注意iptables防火墙是否打开,最好关闭该防火墙。su - root

chkconfig rsh on

chkconfig rlogin on

service xinetd reload

配置远程权限

$ more /etc/hosts.equiv

+dbrac1 oracle

+dbrac2 oracle

+dbrac1-eth1 oracle

+dbrac2-eth2 oracle

测试RSH是否能正常工作,在节点1上查看远程节点的文件内容

[oracle@dbrac1 admin]$ rsh dbrac2 cat /etc/hosts.equiv

dbrac1 oracle

dbrac2 oracle

dbrac1-eth1 oracle

dbrac2-eth1 oracle

如果有结果,证明正常,同样,在节点2上查看节点1的文件内容,可以检测节点2

6.2安装软件

如果rsh设置的没有问题,只安装一个节点即可,或者也可以安装后拷贝的第二个节点。

软件安装过程不再多叙,有几点需要注意

1、在安装开始,注意选择节点,并注意cluster组件是否被安装,可以去掉多余的组件,如OEM与HTTP SERVER

2、在AS2.1上的安装应当没有任何问题,在AS 3.0上安装9201,如果在编译阶段有

ins_oemagent.mk(补丁3119415固定),ins_ctx.mk(在9204的补丁中固定),都忽略,将在补丁中固定。

3、如果是先安装9201并升级到9204,注意在升级的时候,先升级OUI,并再运行$ORACLE_HOME/bin下的runInstaller,如果是直接安装9204的安装程序,只要安装即可。运行9204升级程序之前,注意进行如下操作(这个是RAC升级特有的)。

su - oracle

cd $ORACLE_BASE/oui/bin/linux

ln -s libclntsh.so.9.0 libclntsh.so

4、在AS3.0上从9201升级到9204,如果遇到ins_oemagent.mk,也忽略,将在以下的补丁中固定。

补丁3119415与2617419补丁,固定以上的ins_oemagent.mk错误

su - oracle

$ cp p2617419_220_GENERIC.zip /tmp

$ cd /tmp

$ unzip p2617419_220_GENERIC.zip

在打3119415之前,需要确保fuser是可以用的,现在开始打该补丁

su - oracle

$ unzip p3119415_9204_LINUX.zip

$ cd 3119415

$ export PATH=$PATH:/tmp/OPatch

$ export PATH=$PATH:/sbin # 因为fuser在/sbin下

$ which opatch

/tmp/OPatch/opatch

$ opatch apply

5、最后注意只安装,不创建数据库

6.3初试化共享文件

安装完毕后创建配置文件

su - root

# mkdir -p /var/opt/oracle

# touch /var/opt/oracle/srvConfig.loc

# chown oracle:dba /var/opt/oracle/srvConfig.loc

# chmod 755 /var/opt/oracle/srvConfig.loc

在srvConfig.loc中间添加srvconfig_loc参数如下:

srvconfig_loc=/u01/oracle/oradata/rac/srvConfig.dbf

创建srvConfig.dbf文件。如果是共享设备,需要创建到共享设备上,如ocfs文件系统或者是raw分区上,那么上面的文件名将有一些差异。

su - oracle

$ touch srvConfig.dbf

初始化配置文件

$ srvconfig -init

第七章. 创建数据库

7.1准备参数如下

*.log_buffer=626688

*.compatible='9.2.0.0.0'

*.control_files='/u01/oracle/oradata/rac/control01.ctl','/u01/oracle/oradata/rac/c ontrol02.ctl','/u01/oracle/oradata/rac/control03.ctl'

*.core_dump_dest='/u01/oracle/admin/rac/cdump'

*.user_dump_dest='/u01/oracle/admin/rac/udump'

*.background_dump_dest='/u01/oracle/admin/rac/bdump'

*.db_block_size=8192

*.db_cache_size=250549376

*.db_file_multiblock_read_count=16

*.db_name='rac'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

*.job_queue_processes=2

*.large_pool_size=3145728

*.pga_aggregate_target=51200000

*.processes=100

*.remote_login_passwordfile='exclusive'

*.sga_max_size=600000000

*.shared_pool_size=31457280

*.timed_statistics=TRUE

*.undo_management='AUTO'

*.undo_retention=10800

*.session_cached_cursors=200

#注意以下的参数,是Cluster需要的参数

*.cluster_database = TRUE

*.cluster_database_instances = 2

raca.instance_name='raca'

racb.instance_name='racb'

raca.instance_number=1

racb.instance_number=2

*.service_names='rac'

raca.thread=1

racb.thread=2

raca.local_listener='(address=(protocol=tcp)(host=dbrac)(port=1521)) '

raca.remote_listener='(address=(protocol=tcp)(host=dbrac)(port=1522)) ' racb.local_listener='(address=(protocol=tcp)(host=dbrac)(port=1522)) '

racb.remote_listener='(address=(protocol=tcp)(host=dbrac)(port=1521)) ' raca.undo_tablespace=UNDOTBS1

racb.undo_tablespace=UNDOTBS2

注意这里的local_listener与remote_listener,因为这里是单节点模拟RAC的参数,如果是多节点,将配置远程的名称与端口,主要用于load_balance与failover。如果是多节点,可能的形式如下。

raca.local_listener='(address=(protocol=tcp)(host=dbrac1)(port=1521)) ' raca.remote_listener='(address=(protocol=tcp)(host=dbrac2)(port=1521)) ' racb.local_listener='(address=(protocol=tcp)(host=dbrac2)(port=1521)) ' racb.remote_listener='(address=(protocol=tcp)(host=dbrac1)(port=1521)) '

以上参数文件可以放在共享设备上让多个节点实例共享,也可以在自己的节点的默认参数文件中加入指向该共巷参数文件的指针,如

ifile=/u01/oracle/ora920/dbs/init.ora

7.2 创建密码文件

如果不是单节点,每个节点都完成

$export ORACLE_SID=rac1

$ orapwd file=orapwrac1 password=piner entries=5

7.3创建数据库

在一个节点上完成即可

运行root.sh。

启动数据库到nomount下

Sqlplus /nolog

SQL>connect / as sysdba

SQL>startup nomount pfile=file name

SQL>CREATE DATABASE rac

MAXINSTANCES 3

MAXLOGHISTORY 1

MAXLOGFILES 10

MAXLOGMEMBERS 3

MAXDATAFILES 100

DATAFILE '/u01/oracle/oradata/rac/system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE

'/u01/oracle/oradata/rac/temp01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED

UNDO TABLESPACE "UNDOTBS1" DATAFILE

'/u01/oracle/oradata/rac/undotbs1_01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

CHARACTER SET ZHS16GBK

NATIONAL CHARACTER SET AL16UTF16

LOGFILE GROUP 1 ('/u01/oracle/oradata/rac/redo01.log') SIZE 102400K, GROUP 2 ('/u01/oracle/oradata/rac/redo02.log') SIZE 102400K,

GROUP 3 ('/u01/oracle/oradata/rac/redo03.log') SIZE 102400K;

注意以上的文件路径,可能因为不同的共享设备将有不同的路径。如果是Raw设备,请指定好文件大小,不要设置AUTOEXTEND。

7.4 创建相应的数据字典

SQL>@?/rdbms/admin/catalog

SQL>@?/rdbms/admin/catproc

创建Cluster特有的视图

SQL> @?/rdbms/admin/catclust.sql

以上操作,都在一个节点上完成。

可选如下组件

@?/rdbms/admin/catexp7.sql;

@?/rdbms/admin/catblock.sql;

@?/rdbms/admin/catoctk.sql;

@?/rdbms/admin/owminst.plb;

第八章. 启动第二个节点实例

8.1 准备第二个节点的日志与重做

在第一个节点上

SQL>shutdown immediate

SQL>startup mount pfile=file name

SQL> alter database add logfile thread 2

2 group 4 ('/u01/oracle/oradata/rac/redo04.log') size 10240K,

3 group 5 ('/u01/oracle/oradata/rac/redo05.log') size 10240K,

4 group 6 ('/u01/oracle/oradata/rac/redo06.log') size 10240k;

SQL>alter database open;

SQL> alter database enable public thread 2;

SQL> create undo tablespace undotbs2 datafile

2 '/u01/oracle/oradata/rac/undotbs2_01.dbf' size 200m;

Tablespace created.

8.2 启动第二个实例

如果是单节点,再开启一个连接终端

su - oracle

$export ORACLE_SID=rac2

$ sqlplus "/ as sysdba"

SQL>startup pfile=file name

这里的pfile就是共享的那个pfile

如果是多节点,到另外一个节点,执行以上同样的操作

8.3 验证RAC

SQL> select THREAD#,STATUS,ENABLED from gv$thread;

THREAD# STATUS ENABLED

---------- ------ --------

1 OPEN PUBLIC

2 OPEN PUBLIC

1 OPEN PUBLIC

2 OPEN PUBLIC

SQL> select INSTANCE_NUMBER,INSTANCE_NUMBER,STATUS,HOST_NAME from gv$instance;

INSTANCE_NUMBER INSTANCE_NUMBER STATUS HOST_NAME

--------------- --------------- ------------ -------------------- ---------------------

1 1 OPEN dbrac1

2 2 OPEN dbrac2

第九章. 测试、使用RAC

9.1监听的配置

LISTENER1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = dbrac)(PORT = 1521))

)

)

)

LISTENER2 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = dbrac)(PORT = 1522))

)

)

)

以上是单节点模拟RAC的配置,两个实例采用不同的端口来模拟,如果是多节点的RAC,每个节点只要配置自己相应的监听即可。

启动监听,当看到状态类似如下时,表示正确,否则,需要检查每个实例的local_listener与remote_listener参数。

$ lsnrctl status

LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 29-MAY-2004 10:38:08 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

Connecting to

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.168.205)(PORT= 1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 9.2.0.4.0 - Production

Start Date 25-MAY-2004 01:27:14

Uptime 4 days 9 hr. 10 min. 54 sec

Trace Level off

Security OFF

SNMP OFF

Listener Parameter File /u01/oracle//ora920/network/admin/listener.ora Listener Log File /u01/oracle//ora920/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.168.205)(PORT=1 521)))

Services Summary...

Service "rac" has 2 instance(s).

Instance "rac1", status READY, has 1 handler(s) for this service...

Instance "rac2", status READY, has 1 handler(s) for this service...

The command completed successfully

9.2本地名称的配置

rac=

(description=

(load_balance=on)

(failover=on)

(address_list=

(address=(protocol=tcp)(host=dbrac)(port=1521))

(address=(protocol=tcp)(host=dbrac)(port=1522)))

(connect_data=

(service_name=rac)))

rac1=

(description=

(address=(protocol=tcp)(host=dbrac)(port=1521))

(connect_data=

(service_name=rac)

(instance_name=rac1)))

rac2=

(description=

(address=(protocol=tcp)(host=dbrac)(port=1522))

(connect_data=

(service_name=rac)

(instance_name=rac2)))

以上是对一个节点的RAC的配置,如果是多个节点,只需要修改主机名与端口即可

9.3 负载均衡测试

[oracle@dbtest admin]$ more test.sh

#!/bin/sh

sqlplus "test/test@rac" <

select instance_name from v\$instance;

exit

EOF

[oracle@dbtest admin]$ ./test.sh

SQL*Plus: Release 9.2.0.4.0 - Production on Sat May 29 10:50:08 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL>

INSTANCE_NAME

----------------

rac2

[oracle@dbtest admin]$ ./test.sh

SQL*Plus: Release 9.2.0.4.0 - Production on Sat May 29 10:50:08 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL>

INSTANCE_NAME

----------------

rac1

9.4失败切换(failover)测试

需要修改tnsnames.ora为如下形式

rac=

(description=

# (enable=broken)

(load_balance=on)

(failover=on)

(address_list=

(address=(protocol=tcp)(host=dbtest)(port=1521))

(address=(protocol=tcp)(host=dbtest)(port=1522)))

(connect_data=

(service_name=rac)

(failover_mode=(type=select)(method=basic))

))

注意其中的failover_mode

SQL> connect test/test@rac

SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance; INSTANCE_NUMBER INSTANCE_NAME

--------------- ----------------

2 rac2

如果现在关闭实例rac2,再执行如上语句,可以发现

SQL> select INSTANCE_NUMBER,INSTANCE_NAME from v$instance; INSTANCE_NUMBER INSTANCE_NAME

--------------- ----------------

1 rac1

已经变为rac1

9.5 rac环境下修改为归档模式

1.停止所有node

2.修改init文件*.cluster_database=false

3.在一个node做修改

startup mount;

alter database archivelog ;

SQL> archive log list;

SQL>alter database open;

4.还原*.cluster_database=true

5.启动所有node

第十章.从单节点数据库变为RAC

首先假定数据库软件的Cluster已经安装,OCM已经安装配置。

10.1修改参数文件

增加如类似如下的内容

*.cluster_database = TRUE

*.cluster_database_instances = 2

*.undo_management=AUTO

.undo_tablespace=undotbs

.instance_name=RAC1

.instance_number=1

.thread=1

.local_listener=LISTENER_RAC1

.remote_listener=LISTENER_RAC2

10.2创建cluster视图

利用$ORACLE_HOME/rdbms/admin/catclust.sql

10.3重新创建控制文件

把maxinstances 从1变为定义的节点数目

$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup mount

SQL> alter database backup controlfile to trace;

10.4创建第二个实例的redo与undo

启动第一个实例

SQL>alter database

add logfile thread 2

group 3 ('/dev/RAC/redo2_01_100.dbf') size 100M, group 4 ('/dev/RAC/redo2_02_100.dbf') size 100M; alter database enable public thread 2;

SQL>CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/dev/RAC/undotbs_02_210.dbf' SIZE 200M ;

最后,在第二个节点上安装软件、设置环境变量、启动实例

小结

1、描述了RAC的运行原理与运行机制

2、描述了RAC for Linux的必要条件,如内核要求如软件要求

3、描述各种存储设备的与多种文件系统,如Raw,ocfs等

4、描述了Cluster管理软件在不同平台上的安装方法

5、描述了数据库软件在不同平台上的安装方法

6、描述了手工创建RAC数据库并启动多个数据库的方法

7、介绍了RAC的一些特征与管理方法

2个节点的RAC示意图

ORACLE 执行计划介绍与测试

ORACLE 执行计划介绍与测试 (沈克勤) 2005-3-3

1.目的: 本文档的目的是通过介绍常用的HINT来了解ORACLE的优化器的工作原理及执行计划,以期望起到抛砖引玉的作用。在实际开发中有意识地控制SQL的执行计划,以达到SQL 执行性能的最优以及执行计划稳定。 为了减少枯燥的文档描述,使用了较多的图示。 2.如何查看执行计划 首先创建EXPLAIN_PLAN表 不同版本的ORACLE,该表结构可能会不同。请使用的ORACLE中 $ORACLE_HOME/rdbms/admin/utlxplan.sql去创建该表。 方法1:使用SQL*PLUS 的SET AUTOTRACE : SQL>SET AUTOTRACE ON EXPLAIN 执行SQL,且仅显示执行计划 SQL>SET AUTOTRACE ON STATISTICS 执行SQL,且仅显示执行统计信息 SQL>SET AUTOTRACE ON 执行SQL,且显示执行计划与执行统计信息SQL>SET AUTOTRACE TRACEONLY 仅显示执行计划与统计信息,无执行结果SQL>SET AUTOTRACE OFF 关闭跟踪显示计划与统计

方法2:使用PL/SQL Developer工具

方法3:使用DBMS_XPLAN.DISPLAY() 方法4:直接查看表:EXPLAIN_TABLE SELECT lpad(' ',level-1)||operation||' '||options||' '|| object_name "Plan" FROM plan_table CONNECT BY prior id = parent_id AND prior statement_id = statement_id START WITH id = 0AND statement_id = '&1' ORDER BY id; 3.如何控制与改变执行计划 我并没有见过单独介绍ORACLE SQL优化器原理方面的资料。但可以从ORACLE的HINT这个侧面来了解ORACLE的优化器的原理,从而最有效地书写SQL。

oracle的sqlplus学习笔记

使用SQLPLUS 可以用它运行SQL查询和PL/SQL代码块并接收结果信息 可以发布DBA命令并自动工作 可以启动和关闭数据库 一种创建数据库管理报告的便利方法 设置环境变量 在调用SQLplus前,必须正确设置oracle环境变量, 包括设置ORACLE_SID,ORACLE_HOME和LD_LIBBARY_PATH,有时还须设置NLS_LANG和ORA_NLS11 用CONNECT(conn)命令连接 CONNECT(conn)命令可以以一个不同的用户身份进行连接 例: SQL> conn scott/tiger 已连接。 SQL> connect scott/tiger 已连接。 SQL*Plus登录模式 C:\>sqlplus -h SQL*Plus: Release 10.2.0.1.0 - Production Copyright (c) 1982, 2005, Oracle. All rights reserved. 用法1: sqlplus -H | -V -H 显示SQL*Plus 版本和用法帮助。 -V 显示SQL*Plus 版本。 为: ([/][@] | /) [AS SYSDBA | AS SYSOPER] | /NOLOG 指定数据库帐户用户名, 口令和数据库连接 的连接标识符。如果没有连接 标识符, SQL*Plus 将连接到默认数据库。 AS SYSDBA 和AS SYSOPER 选项是数据库管理 权限。

/NOLOG 选项可启动SQL*Plus 而不连接到 数据库。 为: @|[.] [ ...] 使用将分配给脚本中的替代变量的指定参数 从Web 服务器(URL) 或本地文件系统(filename.ext) 运行指定的SQL*Plus 脚本。 在启动SQL*Plus 并且执行CONNECT 命令后, 将运行站点概要 文件(例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件 (例如, 工作目录中的login.sql)。这些文件 可包含SQL*Plus 命令。 SQLPLUS的执行操作 一条SQL语句由一个分号(;)或一个反斜杠(/)结束 一个PL/SQL块由一个反斜杠(/)结束 可以使用连字符(-)作为语句行的继续字符 例: SQL> select 200 - <==此时sqlplus自动将'-'字符解释成继续字符并发布一条错误信息 > 100 from dual; select 200 100 from dual * 第 1 行出现错误: ORA-00923: 未找到要求的FROM 关键字 SQL> select 200 - - > 100 from dual; 200-100 ---------- 100 退出SQLPlus 在SQL*Plus输入exit(quit)命令正常退出会话,则事务立即被提交.如果不打算提交事务,必须在退出前执行rollback命令,就算autocommit设置值为off也是如此.在使用exit/quit时,会出现以下情况 ?所有未决的更改被回滚或提交; ?用户退出oraclesqlplus会话终止 ?控制权返回到操作系统

监控系统安装调试计划报告

监控系统安装调试计划报告

保安监控系统具体调试方案 1安装调试过程及步骤 1.1安装步骤 1.1.1前端设备安装步骤 本系统中,前端设备主要指摄像机探头、读卡器、双鉴探测器等。 在本工程中,建筑的吊顶上分布空调系统的出风口、强电系统的各类照明灯具、安保报警系统的摄像机探头、双鉴探测器及各类检修孔等等。这些空洞的预留和开凿应统一规划、统一布局,由装修单位统一负责,以免伤害吊顶龙骨而影响吊顶强度。 因此在吊顶上安装的摄像机探头、检修孔等孔洞应由技术人员确定位置后,协调装修单位共同完成。但这部分前端设备,需等到大楼完全封闭后方能进行安装,否则成品保护问题很难解决。对于需在网架上安装的这类设备,一定要遵循高空作业的规定,注意高空作业安全。 前端设备的安装,应根据施工图纸设计要求的坐标点及其高度、角度等,预埋膨胀螺栓或预埋吊挂件。要求定位准确、安装牢固、造型美观。 前端设备在正式安装前,要进行技术复核,再次对照设备定货单及施工图纸核定所用设备是否正确。能够单机通电试验的设备一定要通电测试调整后再进行安装,尤其是高架安装的设备。确保质量无误后方可进行安装。 若线缆敷设工序与设备安装工序相隔时间较长,在设备安装前重新复测线缆的性能。以保证系统的一次开通率和可靠性。 前端设备的电源,为保障其可靠的工作,一般均采用稳压电源集中供电。远离集中供电的部分前端设备可能会采用就地取电。采用就地取电的设备,其电源线:单相电源应选用三芯线,三相电源应选用五芯线,除线截面积必须符合容量要求外,其中黄绿双色线必须与接地体可靠连接。 安装完毕后,应收集好前端设备的有关资料,如开箱单、产品合格证、使用说明书等。并应做好相应的调试和安装记录,以备检查或复核。

lab1 SQLPlus使用及简单Select语句

实验1 SQL*Plus使用及简单Select语句 实验人:_________ 学号_____ 班级____________ 实验目的: 1.掌握SQL*Plus常用功能的使用。 2.掌握简单查询的语法。 实验平台: 1.Windows 2000/XP。 2.Oracle 10g 实验过程记录及分析: 1.SQL*Plus的使用: 1) 2) 3)如果某个用户连接数据库时,发生了“协议适配器错误”,分析其原因,并给出解决错 4)

5) 6) 7) 2. SQL 1) 2)3

4)查询emp表中,工资额大于2000的员工的姓名及其工资额。 5) 6) 7)查询emp表中,ename列含有字母A的员工的姓名。

8) 9) 10

11)使用to_date函数查询1981年入职的员工姓名。 SQL> select * from emp 2 where to_char(hiredate,'yyyy')='1981'; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ----------

SQLPLUS常用命令列表

SQL*PLUS常用命令列表 ?软件环境: 1、Windows 98 第二版 2、Oracle数据库版本为:Personal Oracle7 Release 7.3.4.0.0 3、Oracle安装路径为:C:\ORAWIN95 ?命令列表: ?假设当前执行命令为:select * from tab; ? ?(a)ppend 添加文本到缓冲区当前行尾 a order by tname 结果:select * from tab order by tname; ? (注:a后面跟2个空格) ?(c)hange/old/new 在当前行用新的文本替换旧的文本c/*/tname 结果:select tname from tab; ?(c)hange/text 从当前行删除文本c/tab 结果:select tname from ; ?del 删除当前行 ?del n 删除第n行 ?(i)nput 文本在当前行之后添加一行 ?(l)ist 显示缓冲区中所有行 ?(l)ist n 显示缓冲区中第 n 行 ?(l)ist m n 显示缓冲区中 m 到 n 行 ?run 执行当前缓冲区的命令 ?/ 执行当前缓冲区的命令 ?r 执行当前缓冲区的命令 ?@文件名运行调入内存的sql文件,如: ? ?SQL> edit s<回车> ?如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件, ?在其中输入“select * from tab;”,存盘退出。 ? ?SQL> @s<回车> ?系统会自动查询当前用户下的所有表、视图、同义词。 ? ?@@文件名在.sql文件中调用令一个.sql文件时使用 ? ?save 文件名将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql ?get 文件名调入存盘的sql文件 ?start 文件名运行调入内存的sql文件 ? ?spool 文件名把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,

利用Oracle执行计划机制提高查询性能

利用Oracle执行计划机制提高查询性能消耗在准备利用Oracle执行计划机制提高查询性能新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分。但是通过理解Oracle内部产生执行计划的机制,你能够控制Oracle花费在评估连接顺序的时间数量,并且能在大体上提高查询性能。 准备执行SQL语句 当SQL语句进入Oracle的库缓存后,在该语句准备执行之前,将执行下列步骤: 1) 语法检查:检查SQL语句拼写是否正确和词序。 2) 语义分析:核实所有的与数据字典不一致的表和列的名字。 3) 轮廓存储检查:检查数据字典,以确定该SQL语句的轮廓是否已经存在。 4) 生成执行计划:使用基于成本的优化规则和数据字典中的统计表来决定最佳执行计划。 5) 建立二进制代码:基于执行计划,Oracle生成二进制执行代码。 一旦为执行准备好了SQL语句,以后的执行将很快发生,因为Oracle认可同一个SQL语句,并且重用那些语句的执行。然而,对于生成特殊的SQL语句,或嵌入了文字变量的SQL语句的系统,SQL执行计划的生成时间就很重要了,并

且前一个执行计划通常不能够被重用。对那些连接了很多表的查询,Oracle需要花费大量的时间来检测连接这些表的适当顺序。 评估表的连接顺序 在SQL语句的准备过程中,花费最多的步骤是生成执行计划,特别是处理有多个表连接的查询。当Oracle评估表的连接顺序时,它必须考虑到表之间所有可能的连接。例如:六个表的之间连接有720(6的阶乘,或6 * 5 * 4 * 3 * 2 * 1 = 720)种可能的连接线路。当一个查询中含有超过10个表的连接时,排列的问题将变得更为显著。对于15个表之间的连接,需要评估的可能查询排列将超过1万亿(准确的数字是1,307,674,368,000)种。 使用optimizer_search_limit参数来设定限制 通过使用optimizer_search_limit参数,你能够指定被优化器用来评估的最大的连接组合数量。使用这个参数,我们将能够防止优化器消耗不定数量的时间来评估所有可能的连接组合。如果在查询中表的数目小于optimizer_search_limit的值,优化器将检查所有可能的连接组合。 例如:有五个表连接的查询将有120(5! = 5 * 4 * 3 * 2 * 1 = 120)种可能的连接组合,因此如果optimizer_search_limit等于5(默认值),则优化器将评

设备安装工程质量评估报告.pdf

中阳鑫隆煤源有限公司 主斜井空气加热室设备安装 质 量 评 估 报 告 山西宇通建设工程项目管理有限公司 二零一一年一月三十一日 .

2一、工程概况: 1、有限公司主斜井空气加热器设备安装工程于 2011年 01 月 05日开工,于 2011 年 01 月 19 日竣工。由有限公司投资筹建,设计有限公司设计,山西管理有限公司监理,建设集团进行施工;矿井设计年产量 90 万吨。 2、完成主斜井安装耗热量为 191.72 × 104W ,空气加热室内设二台 KRFZ5.7-25/40 型矿用热风器, Q=1476KW 台/ ,余压为 50-150Pa ,N=15KW 台/ ,电机型号为 YT132S-4型; 以及配套供电开关设备、动力电缆敷设、热力管路敷设。 二、自评依据: 根据国家有关的法律、 法规、条例、规范以及本项目的设计文件、施工承包合同约定的工期。 施工前对项目的设计图纸进行了会审, 编制了施工组织设计、 作业规程、 安全技术措施并通过了上级部门的审批。针对本项目的施工特点编制了施工规划、施工实施细则。由于煤矿安装工程施工条件差, 难度较大, 我们单位建立健全了质量保证体系,完善了管理制度,严格按照《矿山安装工程施工及验收规范》 、《煤矿安装工程质量检验评定标准》 《煤矿安全规程》中的有关规定进行质量检验评定。 施工工程质量控制方法采用以指定分项、 分部工程为重点。 三、质量控制: 以工程质量为中心, 严格执行工序检查报验制度。 坚持并做到了上道工序未经检查验收, 不得进行下道工序施工。 在施工全工程中没有发生质量事故,作为一般质量问题(包括常见质量通病)在施工过.

Oracle SQLPlus 常用命令及解释

Oracle SQLPlus 常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

设备安装个人总结

设备安装个人总结 S u m m a r y o f w o r k f o r r e f e r e n c e o n l y 撰写人:XXX 职务:XXX 时间:20XX年XX月XX日

2 设备安装个人总结 转眼间,xx年就快结束,充满希望的XX就伴随着新年伊始即将的临近。回首xx年的工作,有硕果累累的喜悦,也有遇到困难和挫折的惆怅。现将一年的工作总结如下: 榨油二厂的试车成功后,今年我被领导派去天津佳悦,参加佳悦粮油4000t项目安装调试,在工作中,经历了很多酸甜苦辣,认识了很多良师益友,获得了很多工作经验和教训,感谢领导给了我成长的空间、勇气和信心。 过去的一年也是学习和成长的一年,在这个工程中,很多工作是一起完成的,大家互相提醒和补充,大大提高了工作效率,所有的工作中沟通是最重要的,一定要把出现的问题处理的及时、有效和清晰。在平时的工作中,发现因为工程及设备安装的问题而不知道如何下手的情况很多,包括错误与缺漏还有当时设计考虑不到位的地方,由于平时总是在操作,对于这块的控制力度显然不够。经过这近一年的工作学习,我也发现了自己离一个全面化的人才还有很大的差距,主要体现在工作技能、工作习惯和工作思维的不成熟,也是我以后要在工作中不断磨练和提高自己的地方。 xx年,我严格要求自已办好每一件事,经过这样紧张有序的一年,我感觉自己工作技能上了一个新台阶,做每一项工作都有了明确的计划和步骤,行动有了方向,工作有了目标,心中真正有了底,基本做到了忙而不乱,紧而不散,条理清楚,事事分明!还有在工作的同时,我还明白了为人处事的道理,也明白了,一个良好的心态、一份对工作的热诚及其相形之下的责任心是如 第2 页共4 页

SQLPLUS用法大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus 命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer 中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 @与@@的区别是什么? @等于start命令,用来运行一个sql脚本文件。 @命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。 如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql 则我们在sql*plus中,这样执行: SQL> @ c:\temp\start.sql 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。

硬盘安装win7系统过程详细图解

硬盘安装win7系统过程详细图解 2011-9-7 16:58 husquan_KM 摘要: 看到很多同学使用比较旧的方法来使用硬盘安装WIN7都没有成功了,其实是硬盘安装WIN7方法改了,今天做了个图解硬盘安装WIN7的文章,其实也很简单。 1、下载解压WIN7的安装包用winrar、winzip、7Z等等都可以解压, ... 看到很多同学使用比较旧的方法来使用硬盘安装WIN7都没有成功了,其实是硬盘安装WIN7方法改了,今天做了个图解硬盘安装WIN7的文章,其实也很简单。 1、下载解压WIN7的安装包 用winrar、winzip、7Z等等都可以解压,一般情况下,你下载的都是ISO格式的镜像,你可以将后缀名ISO改为RAR,解压出来后会有下面这样的文件: 2、复制Win7文件到根目录 将这些文件复制到一个非系统盘的根目录下,系统盘大多数都是C盘,而根目录就是某个磁盘,比如F盘双击后进去的界面,注意:一定不要放到文件夹里。 3、下载nt6_hdd软件 下载nt6_hdd_installer:https://www.doczj.com/doc/b516906735.html,/portal.php?mod=attachment&id=2359 下载nt6_hdd_installer:https://www.doczj.com/doc/b516906735.html,/portal.php?mod=attachment&id=2360 下载nt6_hdd软件,下载后放到之前存放win7安装文件的盘符的根目录,也就是和win7的安装文件放到一起。如图:

4、选择自己当前的系统版本 运行nt6_hdd,会出现下面的窗口,如果您现在的系统是XP可以选择1,如果是vista或者win7选择2,选择后按回车开始安装,1秒钟左右结束,之后就是重启系统了。 5、开始安装Win 7系统 在启动过程中会出现如下界面,这时选择新出来的nt6 hdd Installer mode 1选项,下面就开始安装了,按照安装步骤一步一步就行了,其中需要设置的地方,自己看着办。

oracle执行计划解释

oracle执行计划解释 一.相关概念 1·rowid,伪列:就是系统自己给加上的,每个表都有一个伪列,并不是物理存在。它不能被修改,删除,和添加,rowid在该行的生命周期是唯一的,如果向数据库插入一列,只会引起行的变化,但是rowid并不会变。 2·recursive sql概念:当用户执行一些SQL语句时,会自动执行一些额外的语句,我们把这些额外的SQL语句称为“recursive calls” 或者是“recursive sql statement”,当在执行一个DDL语句时,Oracle总会隐含的发出一些Recursiv sql语句,用于修改数据字典,如果数据字典没有在共享内存中,则就执行“resursive calls”,它会把数据字典从物理读取到共享内存。当然DML和select语句都可能引起recursive SQL。 3·row source 行源:在查询中,由上一操作返回的符合条件的数据集,它可能是整个表,也可能是部分,当然也可以对2个表进行连接操作(join)最后得到的数据集4·predicate:一个查询中的where限制条件 5·driving table 驱动表:该表又成为外层表,这个感念用于内嵌和HASH连接中,如果返回数据较大,会有负面影响,返回行数据较小的适合做驱动表 6·probed table 被探查表:该表又称为内层表,我们在外层表中取得一条数据,在该表中寻找符合连接的条件的行。 7·组合索引(concatenated index)由多个列组成的索引,在组合索引中有一个重要的概念,就是引导索引, create index idx_tab on tab(col1,col2,col3), indx_tab则称为组合索引, col1则称为引导列 在查询条件where后,必须使用引导索引,才会使用该组合索引 8.可选择性(selectivity)比较一下列中唯一键的数量和表中的行数,就可以判断该列的可选择性。如果该列的“唯一键的数量/表中的行数”的比值越接近1,则该列的可选择性越高,该列就越适合创建索引,同样索引的可选择性也越高。在可选择性高的列上进行查询时,返回的数据就较少,比较适合使用索引查询。 二.Oracle访问数据的存取方法 1.全表扫描(Full tabel scans,FTS) 为了实现全表扫描,Oracle读取数据库中的每一行,并检查每一行是否满足语句的where 限制条件一个多块读操作,可以使io能读取多块数据块。减少了IO次数,提高了系统的吞吐量。在多块读的方法的使用下,可以高效的实现数据库全表扫描,而且,中有在全表扫描的情况下,在可以使用多块读的方法。在这个种访问模式下,数据块只读一次。 【注意】 使用FTS的前提是,在较大的表中,不建议使用FTS,除非取出的数据较多,超过总量的5%-10%,或者使用并行查询时 2.通过rowid的表存取 行的ROWID指向了该行的数据文件,数据块,以及在数据块中的位置,使用rowid能快速的定位到要取得数据的行上,在Oracle中,这是取得单行最快的方式。 【注意】 该存取方法,不会用到多块读操作,一次IO只能读取一个数据块。 3.索引扫描(index scan 和index lookup) 索引扫描时通过index查找到对应行的rowid,然后通过rowid从数据库中得到具体的数据。该方法分为两个步骤,

设备安装进度跟踪报告

固废处理项目设备安装跟踪 安 装 质 量 报 告 设备工程师:冯宜鹏 2019/04/08

在上海灿州安装单位协作配合下,确保了安装工程质量和施工安全。目前已完成设备安装、框架的近2/3的任务。现将固废处理一期车间设备安装工程质量和进度跟踪汇报如下: 一、概况 (一) 车间占地面积为32.8m×14m,共四层。其各层楼顶板标高分别为:+17.90、+14.30、+8.70、+3.10m,车间主体结构为钢框架结构。 设备(回转窑、锅炉)最大重量为16T,安装高度位置处于+4.30m和+17.90m之间。 在机械设备安装工程中,力争对全过程控制、跟踪,现场旁站、监督控制服务。控制的方法采取各工段和各工序的施工,从人员的资质,机械设备的性能,吊装就位、找正、调平的操作,自检自验实行严格的现场监督控制,并及时纠偏整改,确保机械设备安装工程质量;跟踪监控更重要的就是关键设备的起吊和就位及垫铁的铺垫;同时还对各相互联接的机械设备的安装基准线与车间的有关轴线进行及时校对,确保按图纸设计施工,按规范要求操作。 按照国家《设备安装工程施工及验收适用规范》(GB50231—98)、《大型设备吊装工程施工工艺标准》(SHJ515—90)等有关

标准、规范对完成的设备基础,机械设备、管道防腐、线缆敷设、桥架安装、等等分项分部工程进行验收,严格把关。对不合格的分项工程,坚决要求返工,坚决不允许不合格分项带入下道工序。比如对安装中密封面变形就地进行返工重装,从而保证了质量合格和美观。 四、设备安装照片及问题暴漏 结合面略有翘曲变形水泵扇叶外壳漆面脱落变形,待修整 封口舱门把手损坏回转窑筒体缺防尘袋包裹,现场有土建滴落泥浆

sqlplus登录数据库

sqlplus登录数据库. 常用: sqlplus username/password 如:普通用户登录sqlplus scott/tiger sqlplus username/password@net_service_name 如: sqlplus scott/tiger@orcl sqlplus username/password as sysdba 如:sqlplus sys/admin as sysdba sqlplus username/password@//host:port/sid 注意:sys和system需要以sysdba登录 在进入sql*plus之后,可以使用conn连接到其他用户,如:conn sys/admin as sysdba 在DOS环境下,输入“sqlplus /?”,如下: C:\Documents and Settings\HH>sqlplus /? SQL*Plus: Release 11.2.0.1.0 Production on 星期六8月13 16:56:46 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL*Plus: Release 11.2.0.1.0 Production Copyright (c) 1982, 2010, Oracle. All rights reserved. 使用SQL*Plus 执行SQL, PL/SQL 和SQL*Plus 语句。 用法1: sqlplus -H | -V -H 显示SQL*Plus 版本和用法帮助。 -V 显示SQL*Plus 版本。 用法2: sqlplus [ [

重装系统Win7步骤和详细教程(2014版_附系统映像)

本贴针对那些不会重装系统的用户,虽然重装系统很简单,但是还是有一些小白是不会重装的,本教程现在就详细的讲一下重装系统的具体步骤,本帖以重装Windows7系统为例,讲述一下重装系统的详细步骤。 首先,重装系统之前需要将电脑中的重要资料备份和转移,这是非常重要的,备份完成后,下面我们开始重装系统 第一步 下载Onekey ghost下载地址 https://www.doczj.com/doc/b516906735.html,/soft/detail/23409.html 下载Windows7映像下载地址 https://www.doczj.com/doc/b516906735.html,/s/15wrIA 注意:以上两个都不要保存在C盘 第二步 打开Onekey ghost,选择还原分区,在GHO WIM ISO映像路径选择刚下载的Windows7.GHO。如下图

接下来, 在底下选择还原到C盘(点击C盘,然后那C盘一条会变蓝)。如下图,然后点击确定。 点击确定后,会弹出一个提示框(如下图),询问是否重启,点击是。接下来计算机会重启。 计算机重启后,会出现下图的情况,什么都不需要做,等进度条走完即可

进度条走完后,计算机会再次重启,Windows会自动安装,什么都不需要做,等计算机进入桌面后,重装系统就算完成了。 重装完成后需要做的 1.检查系统是否经过正版激活 方法:控制面板--系统,拉到最下面看看是否激活(如果显示状态不可用,需要等一会) 如果未激活,下载小马激活工具激活https://www.doczj.com/doc/b516906735.html,/s/1gdBUUGF 2.根据自己的使用习惯调整系统设置 3.将备份的数据导入回去 4.下载安全软件,个人推荐卡巴斯基,AVG,nod32,诺顿,小红伞,这些杀软都进入国内了,杀毒能力明显是比国产强的,这几个有的有免费版,收费的其实在淘宝几块钱就能买到一年的激活码,国产的诸如电脑管家之类的可以当做系统辅助类软件用,因为国外的杀软基本都不带清理垃圾,系统优化这之类的功能,可以两者结合使用。 5.根据自己使用习惯下载软件等等

Oracle安装与配置、SQLPlus(一)

1.1、O racle简介 Oracle是一个生产中间件和数据库的较大的生产商,Oracle原本的含义:“神喻”,指的是神说的话。中国在商朝的时代,把一些刻在龟壳上的文字当成是上天的指示,所以在中国将Oracle也翻译成“甲骨文”。 Oracle公司的发展实际还是依靠IBM公司。 Oracle的创始人:Larry Ellison,创办了Oracle公司。 他一生的最大目标,“财富榜超过比尔·盖茨” Bruce Scott现在已经离开了Oracle公司,开发出了一套新的数据库-------PointBase 1.2、O racle安装 现在使用的Oracle是10g的版本,Oracle中的版本主要分为以下几个: ●Oracle 8 ●Oracle 8i i表示Internet,表示此时Oracle公司正式开始进军互联网 ●Oracle 9i Oracle9i与8i相比是非常相似的 ●Oracle 10g g表示网格技术 例如,以baidu搜索为准,现在想使用一款软件,但是此软件在离自己非常近的地方就存在了下载地址,但是与自己非常远的地方也同样存在一个下载地址,那么有没有可能现在通过搜索引擎没有搜索到离自己近的下载,而使用了更远的下载,那么这样一来肯定会造成

资源的浪费。 所以新的网络概念就是将网络划分成一个个网格,通过网格表示一个区域 选择Oracle 10g下的install目录中的setup.exe就可以执行Oracle的安装指令了如果不能安装有可能是防火墙造成的,此时可以将防火墙暂时禁用 安装步骤

此时将Oracle安装在D盘之中

选择企业版进行安装

oracle执行计划学习文档

oracle执行计划学习文档 一、O racl e 执行SQL的步骤 1.1、SQL 语句的两种类型 DDL语句,不共享,每次执行硬解析; DML语句,会共享,硬解析或者软解析。 1.2、SQL执行步骤 1、语法检测。判断一条SQL语句的语法是否符合SQL的规范; 2、语义检查。语法正确的SQL语句在解析的第二个步骤就是判断该SQL语句所访问的表及列是否准确?用户是否有权限访问或更改相应的表或列? 3、检查共享池中是否有相同的语句存在。假如执行的SQL语句已经在共享池中存在同样的副本,那么该SQL语句将会被软解析,也就是可以重用已解析过的语句的执行计划和优化方案,可以忽略语句解析过程中最耗费资源的步骤,这也是我们为什么一直强调避免硬解析的原因。这个步骤又可以分为两个步骤: (1)验证SQL语句是否完全一致。 (2)验证SQL语句执行环境是否相同。比如同样一条SQL语句,一个查询会话加了/*+ first_rows */的HINT,另外一个用户加/*+ all_rows */的HINT,他们就会产生不同的执行计划,尽管他们是查询同样的数据。 通过如上三个步骤检查以后,如果SQL语句是一致的,那么就会重用原有SQL语句的执行计划和优化方案,也就是我们通常所说的软解析。如果SQL语句没有找到同样的副本,那么就需要进行硬解析了。 4、Oracle根据提交的SQL语句再查询相应的数据对象是否有统计信息。如果有统计信息的话,那么CBO将会使用这些统计信息产生所有可能的执行计划(可能多达成千上万个)和相应的Cost,最终选择Cost最低的那个执行计划。如果查询的数据对象无统计信息,则按RBO的默认规则选择相应的执行计划。这个步骤也是解析中最耗费资源的,因此我们应该极力避免硬解析的产生。至此,解析的步骤已经全部完成,Oracle将会根据解析产生的执行计划执行SQL语句和提取相应的数据。

正版Windows7系统安装方法

随着Windows7的普及,想使用WIN7操作系统的人确实不在少数,但多部分人都不懂得如何安装,看别人使用,而自己却不能使用!去电脑城买个盗版的系统盘吧,总是被强制安装很多软件,有时还有毒,很不安全!那就只能用XP,总感觉心理挺难受的吧。 好了废话不多说了,现在我就教大家如何使用虚拟光驱安装官方正版的WIN7系统吧。(注意:这里教安装的是单系统的WIN7,想装双系统只须将WIN7系统安装在原系统以外的分区即可,这里不进行详细讲述。) 虽然微软并没有免费发布出WIN7旗舰版提供下载,但是只要你想要。一切还是有的,嘿嘿 Windows 7 x86版下载地址:https://www.doczj.com/doc/b516906735.html,/ghostxp/966.htm Windows 7 x64版下载地址:https://www.doczj.com/doc/b516906735.html,/ghostxp/965.htm x64 是指CPU是64位版本的。x86 是指CPU是32位版本的。如果你的CPU是64位的。可以安装64位的,也可以安装32位的,反过来只能安装32位的。又普及了一个知识,这时 候可以有掌声了 下面我们正式开始: 1.我们将下载好的WIN7镜像用虚拟光驱载入,如果电脑开启了自动播放功能就会弹出如下图所示对话框

如果没有这个对话框的用户不要着急,我们可以进到虚拟光驱将这个程序打开就可以实现相同的效果。

在上图中,我们看到的这些文件就是用虚拟光驱载入的WIN7镜像文件所产生的,此时我们只需要运行“setup.exe”程序就会出现如下图所示的对话框

我们点击“现在安装(I)”按扭开始安装。等会就会出现如下图窗口

oracle-SQL语句执行原理和完整过程详解

SQL语句执行过程详解 一条sql,plsql的执行到底是怎样执行的呢? 一、SQL语句执行原理: 第一步:客户端把语句发给服务器端执行 当我们在客户端执行select 语句时,客户端会把这条SQL 语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些SQL 语句发送给服务器端。虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用事不相同的。服务器上的数据库进程才会对SQL 语句进行相关的处理。不过,有个问题需要说明,就是客户端的进程跟服务器的进程是一一对应的。也就是说,在客户端连接上服务器后,在客户端与服务器端都会形成一个进程,客户端上的我们叫做客户端进程;而服务器上的我们叫做服务器进程。 第二步:语句解析 当客户端把SQL 语句传送到服务器后,服务器进程会对该语句进行解析。同理,这个解析的工作, 其会做很多小动作。 也是在服务器端所进行的。虽然这只是一个解析的动作,但是,“” 1. 查询高速缓存(library cache)。服务器进程在接到客户端传送过来的SQL 语句时,不 会直接去数据库查询。而是会先在数据库的高速缓存中去查找,是否存在相同语句的执行计划。如果在数据高速缓存中,则服务器进程就会直接执行这个SQL 语句,省去后续的工作。所以,采用高速数据缓存的话,可以提高SQL 语句的查询效率。一方面是从内存中读取数据要比从硬盘中的数据文件中读取数据效率要高,另一方面,也是因为这个语句解析的原因。 不过这里要注意一点,这个数据缓存跟有些客户端软件的数据缓存是两码事。有些客户端软件为了提高查询效率,会在应用软件的客户端设置数据缓存。由于这些数据缓存的存在,可以提高客户端应用软件的查询效率。但是,若其他人在服务器进行了相关的修改,由于应用软件数据缓存的存在,导致修改的数据不能及时反映到客户端上。从这也可以看出,应用软件的数据缓存跟数据库服务器的高速数据缓存不是一码事。 2. 语句合法性检查(data dict cache)。当在高速缓存中找不到对应的SQL 语句时,则服 务器进程就会开始检查这条语句的合法性。这里主要是对SQL 语句的语法进行检查,看看其是否合乎语法规则。如果服务器进程认为这条SQL 语句不符合语法规则的时候,就会把这个错误信息,反馈给客户端。在这个语法检查的过程中,不会对SQL 语句中所包含的表名、列名等等进行SQL 他只是语法上的检查。 3. 语言含义检查(data dict cache)。若SQL 语句符合语法上的定义的话,则服务器进程 接下去会对语句中的字段、表等内容进行检查。看看这些字段、表是否在数据库中。如果表名与列名不准确的话,则数据库会就会反馈错误信息给客户端。所以,有时候我们写select 语句的时候,若语法与表名或者列名同时写错的话,则系统是先提示说语法错误,等到语法完全正确后,再提示说列名或表名错误。 4. 获得对象解析锁(control structer)。当语法、语义都正确后,系统就会对我们需要查询的对象加锁。这主要是为了保障数据的一致性,防止我们在查询的过程中,其他用户对这个对象的结构发生改变。 5. 数据访问权限的核对(data dict cache)。当语法、语义通过检查之后,客户端还不一定 能够取得数据。服务器进程还会检查,你所连接的用户是否有这个数据访问的权限。若你连接上服务器

相关主题
文本预览
相关文档 最新文档