仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1010|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL教程之UNIX 和 WINDOWS2000 上的 ORACLE 的差...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:38:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。oracle|unix|window




IanAdam,SAICLtd

DavidStien,SAICLtd

翻译:Fenng



择要

ORACLE是广为人知的Unix硬件平台上的抢先的数据库体系。ORACLE用户和办理员因而熟习Unix平台上的ORACLE架构和它下面的工具和技能,并从他们的数据库失掉最年夜的收益。相反,Windows上的ORACLE架构就不那末的被广为懂得。这篇文章从一个DBA的角度考查了两个操纵体系之间的关头的异同点。



简介

在看了几本使人扫兴的这方面的书以后,我们写了这篇文章。那些书的通病是试图做太多的事变--在细节上报告Windows和ORACLE。我们的这篇文章假定读者熟习Unix平台上的ORACLEDBA的事情。因而本文将剖析两个平台上的ORACLE的关头的差别而不是重新教你ORACLE的技能。我们不想把它作为你的一份细致的引导大概是手册的替换品,现实上它大概勉励你浏览一些手册。作为数据库服务器平台,它只会触及一些Unix和Windows上相干的长处,这就是本文的目标。



典范

这个例子利用linux上的ORACLE8i,实例名字叫作eighti。Windows2000下面的ORACLE8i的实例名字叫作atei。



客户端对ORACLE的会见

当客户端毗连到ORACLE时,一般的来讲ORACLE服务器的平台与客户真个使用有关。这实践上很难说清。ORACLEDBA和体系办理职员更体贴操纵体系平台,他们有的时分会基于需求(如运转工夫和可扩大性)选择平台。更一般的情形下,他们承受(或是接办)给定的平台并进修从中失掉最年夜受害。



关于WINDOWS2000

值得一提的是Windows2000是从WindowsNT晋级而来。在这两个操纵体系之间有良多的类似点,Windows2000也有些新的特征。微软从NT4.0的晋级路子见下表。



两个体系间有良多类似点:

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

NT4.0Windows2000

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

NT4.0WorkstationWindows2000Professional

NT4.0ServerWindows2000Server

NT4.0EnterpriseEditionWindows2000Advancedserver

UnixWindows2000Datacenterserver

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





ORACLE背景历程

上面这句话关于用过ORACLE的人来讲是会很熟习的:"每个运转着的ORACLE数据库都对应一个ORACLE实例,当一个数据库在数据库服务器(不思索呆板的范例)上启动的时分,ORACLE分派一块叫做SystemGlobalArea(SGA)的内存地区并启动一个大概多个ORACLE历程。SGA和ORACLE历程合起来称作ORACLE实例。"DD摘自ORACLE8iConcepts[4LLeverenz,1999]。处置背景历程是放在首位的,也是分歧的操纵体系之间最分明的差别。



ORACLE在UNIX上的背景历程

任何毗连到UNIX的用户都能够很简单的观察ORACLE的背景历程:



%ps-ef|grepeighti|grep-vgrep



oracle8184511016:37:18?0:00ora_pmon_eighti

oracle8184531016:37:19?0:00ora_dbw0_eighti

oracle8184571016:37:19?0:04ora_ckpt_eighti

oracle8184611016:37:19?0:00ora_reco_eighti

oracle8184551016:37:19?0:02ora_lgwr_eighti

oracle8184591016:37:19?0:01ora_smon_eighti

oracle81916819167016:43:46?0:00oracleeighti

(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))



最初一行的ORACLE历程与一个SQL*Plus会话相干,其他的历程都是背景历程。在ORACLE中我们能够经由过程输出SQL*Plus会话观察这些历程:



SELECTsid,spid,osuser,s.program

FROMv$processp,v$sessionsWHEREp.addr=s.paddr;



SIDSPIDOSUSERPROGRAM

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

118451oracle8oracle@saic02(PMON)

218453oracle8oracle@saic02(DBW0)

318455oracle8oracle@saic02(LGWR)

418457oracle8oracle@saic02(CKPT)

518459oracle8oracle@saic02(SMON)

618461oracle8oracle@saic02(RECO)

719168oracle8sqlplus@saic02(TNSV1-V3)

7rowsselected.



每个背景历程都有一行,另有一行信息是与SQL*Plus会话相干的,SPID对应响应的UNIX历程号。





在WINDOWS2000上的ORACLE背景历程

回到WINDOWS上,从操纵体系中观察背景历程有些坚苦。从义务办理器中大概会看到运转着的使用(义务办理器的观察办法:在义务栏点击右键选择"义务办理器")。在服务器上ORAC

LE能够是可用的,运转着的使用倒是不成见的。历程表切实其实显现一个历程叫做ORACLE.EXE,

观察alertlog显现ORACLE的一切背景历程都是启动的:



PMONstartedwithpid=2

DBW0startedwithpid=3

LGWRstartedwithpid=4

CKPTstartedwithpid=5

SMONstartedwithpid=6

RECOstartedwithpid=7



要看实践的背景历程,必要运转分外的软件,比方,历程观察器。该软件能够从Windows

2000CD中失掉(WindowsNT的话能够从资本包中失掉)。



在Windows2000上,ORACLE实例是作为一个单一的Windows2000历程(ORACLE.EXE)完成的。这个历程包含实例所必要完成的每一个义务的线程。

因而一个线程对应每一个ORACLE背景历程。ORACLE.EXE历程作为一个服务运转,能够从把持面板的服务中观察到ORACLEServiceSID。其他的服务也能够如许把持。



这同意ORACLE在没有效户登录服务器的时分也延续的运转。关于共享主处置器资本的一切的历程来讲,ORACLE可以到达高速、低负荷的高低文切换。



在Unix下显现ORACLE中的历程,我们也能够经由过程输出复杂的SQL语句来到达。为了显现PID列,SQL语句做了些稍微的修改。要注重PID婚配告诫日记中呈报的值。



SELECTs.sid,p.pid,p.spidsignaled,s.osuser,s.program

FROMv$processp,v$sessions

WHEREp.addr=s.paddr;



SIDPIDTHREADIDOSUSERPROGRAM

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

121088SYSTEMORACLE.EXE

231172SYSTEMORACLE.EXE

341180SYSTEMORACLE.EXE

451192SYSTEMORACLE.EXE

561212SYSTEMORACLE.EXE

671220SYSTEMORACLE.EXE

781200AdministratorSQLPLUSW.EXE

7rowsselected.



每个背景历程都有一行,另有一行信息是与SQL*Plus会话相干。程序名字并没有指明背景历程的名字,和在Unix中一样,这些名字能够经由过程和v$bgprocess毗连失掉。



SELECTs.sidSID,p.spidTHREADID,p.programPROCESSNAME,bg.nameNAME

FROMv$processp,v$sessions,v$bgprocessbg

WHEREp.addr=s.paddr

ANDp.addr=bg.paddr

ANDbg.paddr00;



SIDTHREADIDPROCESSNAMENAME

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

11088ORACLE.EXEPMON

21172ORACLE.EXEDBW0

31180ORACLE.EXELGWR

41192ORACLE.EXECKPT

51212ORACLE.EXESMON

61220ORACLE.EXERECO

6rowsselected.





断闭会话

提交SQL命令ALTERSYSTEMDISCONNECTSESSION能够断闭会话。有的时分必要在操纵体系级别断闭会话,在UNIX上,经由过程kill命令完成,后面例子中的SQL会话能够经由过程输出UNIX命令断开:



kill-919168



在Windows2000上能够用orakill断开一个会话。orakill是Windows平台上的ORACLE的一个特天命令,默许安装在$ORACLE_HOMEin下。在命令行下输出orakill能够观察它的用法。后面例子中的SQL*Plus会话能够经由过程输出以下的命令断开:



orakillatei1200

Killofthreadid1200ininstanceateisuccessfullysignaled.



在Windows2000中,假如一个断开的会话标志为"markedforkill"可是没被删除,orakill会停止它。要记着杀失落一个背景历程总不是个好主张,特别是Windows上,会招致历程溃散,乃至招致数据库不成用。



Windows2000注册表

和其他的Windows2000中的使用那样,ORACLE的年夜多半的设建都在注册表中。应当看看HKEY_LOCAL_MACHINEOFTWAREORACLE上面都有甚么。这些参数中的一些在前面会具体会商。和ORACLE服务相干的参数和其他的服务一样存贮在一样的地位:

HKEY_LOCAL_MACHINEYSTEMCurrentControlSetervices。





情况变量

在Unix中两个最主要的变量是ORACLE_HOME和ORACLE_SID。一旦这些变量设定的话,使用就能够运转并连接到当地数据库。一般也把$ORACLE_HOME/bin包括在$PATH

中以便在利用ORACLE工具(如:sqlplus)的时分免除输出全路径的贫苦。



Windows2000中能够翻开命令行设定ORACLE_SID变量再连接到当地数据库。其他的值能够从注册表中失掉。



MULTIPLEORACLEHOMES

Windows2000周全撑持多个ORACLEhome。之前在WindowsNT上这是个次要的成绩,一向到ORACLE8.0.4今后才入手下手撑持。最后得对这一点的撑持很低劣。ORACLEHomeSelector,ORACLE8i的一个新的使用工具,改动情况路径,使选择的ORACLEhome路径作为主的home。只是复杂的改动体系路径,把ORACLE选择的BIN目次放在启动路径中。



每个BIN目次都有一个ORACLE.KEY文件,指明在注册表中ORACLE程序在那里能够找ORACLE_HOME和其他的情况变量。假如在服务器下面只要一个数据库,一般在注册表中设定ORACLE_SID。不外,不要设定ORACLE_HOME,关于ORACLE产物来讲基本不必要,大概会招致成绩。



文件体系

多ORACLEhome的撑持同意在Windows下面完成Unix的OFA尺度。这极年夜的简化了从Unix的过渡。OFA目次树的顶层的名字有差别,不外次要的子目次和文件名字在两种操纵体系中都是分歧的。





Unix

NT

ORACLE_BASE

/oracle/app/oracle

D:Oracle

ORACLE_HOME

/oracle/app/oracle/product/8.1.7

D:OracleOra817

Admindirectories

/oracle/app/oracle/admin

D:OracleAdmin

Databasefiles

/db01/oradata/SID

D:OracleOradataID



/db02/oradata/SID

F:OracleOradataID



/db03/oradata/SID

G:OracleOradataID





服务办理器

从ORACLE8i入手下手,服务办理器的名字在分歧的平台上都分歧了,都叫做svrmgrl。之前在

WindowsNT上ORACLE的实行文件名字跟着版本变化而改动,关于那些在多平台上事情的人来讲这很使人厌恶,特别是在利用一些命令(imp、exp等)的时分。



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

ORACLE服务器版本Windows服务器办理器可实行文件

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

7.3svrmgr23

8.0svrmgr30

8.1svrmgrl

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



要注重servermanager正在慢慢被减少(译者注:9i中完全减少了svrmgrl),一些分外的功效被加到了SQL*Plus中。



PartI.ToBeContinued…..


到2009年,甲骨文的数据库Oracle已经诞生了30周年,而MySQL却连它的一半时间都没有。微软的SQLServer仅仅比MySQL大两年,但是SQLServer的发布是建立在Sybase的基础上。
海妖 该用户已被删除
沙发
发表于 2015-1-19 20:13:47 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-25 22:34:41 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
简单生活 该用户已被删除
地板
发表于 2015-2-4 09:56:18 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
不帅 该用户已被删除
5#
发表于 2015-2-9 21:59:15 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
谁可相欹 该用户已被删除
6#
发表于 2015-2-27 22:50:12 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-9 15:01:06 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
只想知道 该用户已被删除
8#
发表于 2015-3-23 07:59:15 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表