仓酷云

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

[学习教程] MYSQL网页编程之启动Oracle罕见疑问成绩剖析

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

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

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

x
也许最好的策略是以不变应万变:给客户他们所需要的,不多也不少。如果MySQL学习教程适合他们,他们就不应该买别的工具。事实上,云计算产业一直推崇自助服务,但提供这些服务的公司已经开始认识到解决方案提供商推销他们商品的价值。oracle|成绩启动Oracle罕见疑问成绩剖析 (2003-10-1)

本文出自《网管员天下》2003年第10期“妨碍诊断”栏目

实例和数据库的启动与封闭是DBA的主要职责之一。只要翻开数据库,其他用户才干对数据库中的数据举行操纵。一旦数据库封闭,便不克不及对其操纵。关于DBA们来讲,封闭和从头启动数据库以便优化、调剂使用程序的运转是常常碰着的事变。假如用户已进进了数据库,利用SHUTDOWNIMMEDIATE或SHUTDOWNABORT命令来实行封闭数据库,则用户将得到毗连,直到数据库从头启动。常常封闭和启动会对数据库功能形成必定的影响,固然也会影响到用户对数据库的利用。本文从办理数据库的角度来剖析在Oracle启动和封闭时常常碰到的成绩,并总结了在启动和封闭Oracle数据库中应当注重的成绩和事项。

启动罕见成绩

(一)在一个把持文件被破坏情形下,怎样一般启动?
体系情况
操纵体系:Windows2000AdvancedServer
数据库: Oracle8iR2(8.1.6)forNT企业版
安装路径:C:ORACLE
毛病征象
因硬盘有坏道,一个把持文件破坏了,某人工误删一个把持文件,把持面板的Oracle相干服务能够启动乐成,但用SQL*Plus没法毗连。毛病提醒为“ORA-01034:ORACLEnotavailable”。
办理办法
(1)在入手下手菜单中间接运转命令,进进“svrmgrl>”提醒符形式。
(2)在“svrmgrl>”提醒符下键进“connectinternal”命令。
(3)在“svrmgrl>”提醒符下键进“shutdownabort”命令封闭数据库。
(4)找到init.ora文件,它一样平常位于“C:Oracleadminoradbpfile”目次下,然后修正init.ora文件,使没法利用的把持文件不在control_files参数中界说。如“C:Oracleoradataoradbcontrol03.ctl”,可在init.ora中将其删撤除,大概改换成别的可启动的把持文件。
修正前:
control_files=(“C:Oracleoradataoradbcontrol01.ctl”.C:Oracleoradataoradbcontrol02.ctl“,”“C:Oracleoradataoradbcontrol03.ctl”)
修正后:
control_files=(“C:Oracleoradataoradb
control01.ctl”,“C:Oracleoradataoradbcontrol02.ctl”)
(5)从头启动数据库实例,便可办理成绩。
注重:在把持文件中起码要有两个把持文件。

(二)联机热备份失利后,怎样翻开数据库?
体系情况:
操纵体系:Windows2000AdvancedServer
数据库: Oracle8iR2(8.1.6)forNT企业版
安装路径:C:ORACLE
毛病征象
举行联机热备份时,服务器产生妨碍(如失落电等)。从头启动服务器后,再启动数据库时,没法翻开数据库,Oracle请求举行介质恢复,由于表空间还处在热备份形态。
办理办法
(1)先将数据库设置为回档形式
C:>svrmgrl
svrmgrl>connectinternal
svrmgrl>altertablespace表空间名beginbackup;
申明:这是在表空间举行热备份形式没停止时,就强行封闭数据库所酿成的毛病。
svrmgrl>shutdownabort
svrmgrl>startupmount
(2)将此表空间的数据文件在没翻开数据库时,设置成“endbackup”形式
svrmgrl>alterdatabasedatafile表空间的数据文件名endbackup;
(3)实行表空间介质恢复
svrmgrl>recovertablespace表空间名;
svrmgrl>alterdatabaseopen;

(三)Oracle启动时,监听器不启动或翻开堕落?
毛病征象:
ORACLE启动时,监听器不启动或翻开堕落;服务器端:用username/password登录一般,但用username/password@alias登录不乐成;客户端:用username/password@alias登录不乐成
办理办法
(1)假如是由于修正了NT的呆板名,则把listener.ora文件中的host参数全体改成新的NT呆板名,从头启动OracleTNSListener80服务便可。
比方:
LISTENER=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(Host=NT_Name)(Port=1521))
(ADDRESS=(PROTOCOL=TCP)(Host=NT_Name)(Port=1526))
  )
(2)利用监听器有用程序:LSNRCTL80.exe。
(3)反省监听器参数文件:c:orantNET80admin
listener.ora。
(4)反省监听器日记文件:c:orantNET80log
listener.log。
(5)Tnsnames.ora文件设置毛病,从头设置。
(6)反省client端Tnsnames.ora。

(四)OracleEnterpriseManager(OEM)工具中怎样以SYSOPER、SYSDBA体例登录?
软件情况:
WindowsNT4.0+ORACLE8.0.4
ORACLE安装路径为:C:ORANT
毛病征象
在以OracleEnterpriseManager(OEM)工具登录数据库时,不管是sys用户、system用户,仍是其他用户,在ConnectAs栏中以sysdba或sysoper脚色登录均遭回绝,报错:Ora-01017:invalidusername/password;logondenied,但以normal登录乐成。
堕落剖析
在Oracle数据库中有三种毗连体例:
(1)normal一般体例,基础毗连体例,级别较低。
(2)sysopr体系体例,体系毗连体例,高一级。
(3)sysdba办理员体例,是数据库办理员毗连体例,级别最高。
Oracle8中,sys、system已只是具有特权的一般用户,而internal才是DBA。以是在DBA举行办理数据时,只能利用具有特权的“internal”毗连体例才不会堕落。
办理办法
以internal/oracle体例毗连便可。

Oracle数据库的启动

启动实例
启动实例,以使OracleServer完成以下义务:
◆读参数文件init.ora文件,以决意怎样初始化该实例;
◆依据参数文件中供应的SGA巨细,来为SGA分派存贮空间;
◆启动背景历程;
◆翻开背景跟踪文件。
实例启动分一般启动和束缚启动。所谓束缚启动,就是当数据库翻开后,只能使具有RESTRICTEDSESSION体系特权的用户与其相毗连。而一般启动则同意一切用户与其相毗连。
实例启动有以下三种体例:
◆只启动实例;
◆启动实例并安装数据库,但不翻开数据库;
◆启动实例,并安装和翻开数据库。

数据库安装
数据库安装就是将指定的数据库与已启动的实例相接洽。被安装的数据库在翻开之前坚持封闭,此时只要DBA能存取。在安装数据库时,实例查找参数文件中的CONTROL-Files参数所指定的把持文件,并翻开它,从中获得数据库的数据文件名和日记文件名,然后确认这些文件是不是存在。假如但愿多个实例并发地安装统一个数据库,则DBA可选择并行体例安装该数据库。假如但愿只要一个实例可安装该数据库,则选择公用体例安装该数据库。假如ORACLE版本不撑持并行服务器选项,则只能按公用体例安装数据库。中选择并行体例安装数据库时,并发安装统一个数据库的实例个数受预界说最年夜值的限定,并且在参数文件中必需有定名的私用回滚段或可用的公用回滚段。

翻开数据库
在安装的数据库被翻开之前,一切正当的用户(除DBA)都不克不及对该数据库举行毗连和存取;只要被翻开今后才干举行毗连和存取。在翻开数据库的同时,实例也翻开在线的数据文件和在线日记文件。假如数据库是因为实例的非常而中断或电源妨碍而被封闭时,则下次翻开它时会主动实行实例恢复。在数据库被翻开时,实例试图猎取一个或多个回滚段。在散布事件中,若当—个数据库因电源妨碍等俄然被封闭,此时如有一个或多个散布式事件还没提交或回滚,则在该数据库被从头翻开时,持续完成实例恢复,RECO背景历程将主动、当即和分歧地办理还没有提交或回滚的任何散布事件。

经常使用翻开数据库和实例命令体例
(1)startupnomount
非安装启动,这类启动体例下可实行:重修把持文件、重修数据库和启动instance,即启动SGA和背景历程,这类启动只必要init.ora文件。
(2)startupmountdbname
安装启动,这类启动体例下可实行:数据库日记回档、数据库恢复和从头定名一些数据库文件。
(3)startupopendbname
先实行“nomount”,然后实行“mount”,再翻开包含Redolog文件在内的一切数据库文件,这类体例下可会见数据库中的数据。
(4)startup即是以下三个命令
startupnomount
alterdatabasemount
alterdatabaseopen
(5)startuprestrict
束缚体例启动,这类体例可以启动数据库,但只同意具有必定特权的用户会见,非特权用户会见时,会呈现以下提醒:
ERROR:
ORA-01035:Oracle只同意具有RESTRICTEDSESSION权限的用户利用。
(6)startupforce
强迫启动体例,当不克不及封闭数据库时,能够用startupforce来完成数据库的封闭,先封闭数据库,再实行一般启动数据库命令。
(7)startuppfile=参数文件名
带初始化参数文件的启动体例,先读取参数文件,再按参数文件中的设置启动数据库。例:startuppfile=E:Oracleadminoradbpfileinit.ora
(8)startupexclusive
SQL>conectinternal
作为internal毗连时,connect命令不必要口令,由于其受权是由操纵体系隐式供应的。Internal毗连等价于sys毗连,它们都是具有Oracle数据字典的用户。

使用
在Unix下启动Oracle8i,其全部历程步骤以下:
(1)telnet主机IP大概是主机名
user:*****password:*****
(2)lsnrctlstart
(3)svrmgrl
(4)svrmgrl>connectinternal
(5)svrmgrl>startup

实例和数据库的封闭

封闭实例的步骤
封闭实例后,SGA从内存取消,背景历程被中断。封闭实例的步骤以下:
(1)启动SQL*DBA
(2)作为INTERNAL用户与数据库相毗连
(3)封闭实例
◆封闭数据库
◆卸下数据库
◆封闭实例

封闭数据库
数据库封闭时,起首将SGA中的一切数据库数据和日记项数据写进响应的数据文件和日记文件。然后封闭一切联机数据文件和日记文件。在数据库封闭后和卸下之前,把持文件仍坚持翻开,此时假如必要翻开时,还可从头翻开数据库。

卸下数据库
卸下数据库就是割断实例与数据库的接洽,封闭数据库把持文件,使内存仅保存实例。

经常使用封闭数据库和实例命令
(1)shutdownnormal(一般封闭数据库)
在一般封闭情形下,Oracle在封闭数据库前,守候一切与之相毗连的用户一般停止其对话。因而鄙人次启动数据库时,就不必要恢复实例。
(2)shutdownimmediate(当即体例封闭数据库)
中选择Immediate封闭体例时,即完成间接封闭。在SVRMGRL中实行shutdownimmediate,数据库其实不当即封闭,而是在Oracle实行某些扫除事情后才封闭(停止会话、开释会话资本),当利用shutdown不克不及封闭数据库时,shutdownimmediate能够完成数据库封闭的操纵。
该封闭体例次要用于以下情形:
①即刻停电;
②Oracle正在非正轨的运转数据库或一个数据库使用。
该体例封闭数据库历程以下:
①Oracle停止以后正在处置的SQL语句;
②回滚未提交的事件;
③Oracle不守候与之相毗连的用户加入毗连,就间接中止他们,利用这类封闭体例,下次启动数据库时,Oracle应主动实行实例恢复。
(3)shutdownabort(取消实例体例封闭数据库)
这是一种最快的封闭体例,它次要用于以下情形:
①一分钟后就要停电;
②Oracle正在非正轨的运转数据库或一个数据库使用,而且别的的封闭体例生效;
③启动一个数据库实例时碰着成绩。
该体例封闭数据库的历程以下:
①Oracle不守候挪用完成,间接中止正在处置的SQL语句;
②回滚未提交事物。
利用这类封闭体例,下次启动数据库时,Oracle应主动实行实例恢复。启动和封闭实例和数据库的操纵必要connectinternal体系特权,安装和翻开数据库的操纵还要有alterdatabase体系特权。间接封闭数据库,正在会见数据库的会话会被俄然停止,假如数据库中有大批操纵正在实行,这时候实行shutdownabort后,从头启动数据库必要很长工夫。

使用
在Unix中封闭Oracle8i,其详细步骤以下:
svrmgrl>connectinternal
svrmgrl>shutdown
svrmgrl>exit

在封闭Oracle数据库时需注重成绩

不要提早封闭SQL*NET。
当必要SHUTDOWN数据库,不要提早封闭SQL*NET,直到确认封闭了SERVER上的一切数据库后再封闭SQL*NET。假如封闭了SQL*NET,用户将得到和数据库的会话。

存档或删除旧的tracefiles和logs
当启动Oracle的一个实例时,Oracle把关于该实例的诊断信息写进指定的trace和log文件。每一个背景历程都增添一个TRACE文件,它被存储在指定的目次,该路径由INIT.ORA或CONFIG.ORA文件中的BACKGROUND_DUMP_DEST参数指定。用户在数据库中碰到一个外部毛病时也增添用户的TRACE文件,该文件的地位由INIT.ORA或CONFIG.ORA文件中的USER_DUMP_DEST参数指定。TRACE文件的个数和称号情势由利用数据库的操纵体系决意。
在每次启动和封闭数据库时,Oracle不会主动删除TRACE文件。假如临时不删除这些无用文件,它们将占有数据库中大批的自在空间。数据库办理员应当很好的办理这些文件,能够接纳删除大概存档的战略来制止无用文件占用大批自在空间。
SQL*NET也发生LOG文件,一样平常叫LISTENER.LOG,LISTENER.LOG文件巨细也跟着启动的次数不休的变年夜,以是经由过程妥帖办理它也能无效的使用空间。检察该文件能够键进命令:
lsnrctlstatus
在Oracle8i中利用该命令,其显现了局为:
o2005%lsnrctlstatus
LSNRCTLforSGIIRIX64:Version8.1.6.0.0-Productionon09-APR-200309:16:26
(c)Copyright1998,1999,OracleCorporation.Allrightsreserved.
Connectingto(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
STATUSoftheLISTENER
AliasLISTENER
VersionTNSLSNRforSGIIRIX64:Version8.1.6.0.0-Production
StartDate19-MAR-200314:43:53
Uptime20days18hr.4607182418800017439min.56sec
TraceLeveloff
SecurityOFF
SNMPOFF
ListenerLogFile/data/ora8i/OraHome/network/log/listener.log
Thelistenersupportsnoservices
Thecommandcompletedsuccessfully

更名ALERTLOG文件
ALERTLOG文件也是用来纪录INSTANCE的诊断信息的。它的寄存目次也经由过程BACKGROUND_DUMP_DEST参数来指定。一样平常情形下ALERTLOG文件定名体例为:ALERT_.LOG。ALTERLOG文件包含了一些数据库次要事务信息,比方:startup和shutdown及redolog的利用、表空间的改动、文件的改动、外部毛病信息和数据库备份形态的改动等。
ALTERLOG在后续数据库的利用中,其增加速率十分快。假如一段工夫后,再检察它时,其文件已变得十分年夜,以是检察它长短常的费力。一样平常来说,为了既能留下这些有效的信息,同时不至于华侈很年夜的空间,最好的办理举措就是给它更名。能够在任什么时候候变动ALTERLOG文件名,倡议在SHUTDOWN/STARTUP数据库时变动名字。
为维持生产环境和非生产环境需要不断地投入管理支持费用MySQL学习教程,最终导致客户为数据库资源投入巨额成本。
admin 该用户已被删除
沙发
发表于 2015-1-19 21:16:24 来自手机 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
小女巫 该用户已被删除
板凳
发表于 2015-1-25 10:00:36 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
变相怪杰 该用户已被删除
地板
发表于 2015-2-8 06:09:30 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
若天明 该用户已被删除
5#
发表于 2015-2-24 11:37:26 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
兰色精灵 该用户已被删除
6#
发表于 2015-3-7 12:04:01 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-15 03:46:05 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
若相依 该用户已被删除
8#
发表于 2015-3-21 17:49:15 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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