Oracle实例简述

数据库实例

数据库参数分为两种类型:
动态参数:显示当前内存的一些参数,是可以修改的,
并且动态参数可以在线修改,立即生效。
静态参数:显示硬盘参数文件的参数,是不可以直接修改的,
而且静态参数只能通过修改配置文件,然后重启实例下次生效。
V P A R A M E T E R V PARAMETER 该表保存的为数据库的一些动态参数,当前内存当中的一些参数。 V SPPARAMETER 该表保存硬盘参数文件的参数。
SHOW PARAMETER 这个可以查看静态/动态的所有数据库参数设置。

ALTER SYSTEM SET 参数名=值 SCOPE=[MEMORY|SPFILE|BOTH]
SCOPE=范围。
如果SCOPE=MEMORY,代表只修改内存当中的参数值,不会修改配置文件中的参数值,立即生效,下次重启不生效。
如果SCOPE=SPFILE,代表只修改配置文件中的参数值,不会修改内存中的参数值,重启后生效下次生效。
如果SCOPE=BOTH,或者是不指定SCOPE的范围,数据库默认就会修改MEMORY和SPFILE两块的值,但静态参数
不能直接通过此方法修改,会报错,只能通过手动编辑静态参数文件修改或者直接指定SCOPE=SPFILE。

STARTUP FORCE 重启实例。

参数文件分成:静态参数文件,动态参数文件
像上面有提到的动态参数和静态参数,我们通过ALTER SYSTEM去修改并且不指定SCOPE的情况下,
我们都是写入到动态参数文件中里面,区别在于我们是用SQL就可以实现这个参数的修改,并没有打开对应
的参数文件进行VIM编辑修改,所以不管是动态参数还是静态参数,都是写入到动态参数文件里面,再粗俗点
描述就是所谓动态参数文件,就是不需要手工去修改文件里面的内容,数据库自己就能自动改(通过SQL)。
静态参数文件就是必须要通过手工修改(VIM编辑)。
动态参数,静态参数 通过ALTER SYSTEM修改都是写入到动态参数文件中,
但是静态参数并不等于静态参数文件,这个别弄混了。

修改参数的几种方法:
1.直接通过ALTER修改
2.VIM编辑静态参数文件,然后命令重新生成动态参数文件。

在CD $ORACLE_HOME/DBS 路径下面存放着保存我们静态参数/动态参数的参数文件,其中SPFILE+实例名
是数据库的动态参数文件,我们通过ALTER SYSTEM修改后的不管是静态参数还是动态参数都会放在
SPFILE+实例名的参数文件中,但是这次目录下是没有静态参数文件的,静态参数文件是通过动态参数文件去创建的

CREATE PFILE FROM SPFILE;–通过动态参数文件生成静态参数文件,生成出来的文件默认保存位置是在
$ORACLE_HOME/DBS下面,当然也可以指定保存的路径,CREATE PFILE =’/U01/INIT+实例名 'FROM SPFILE;
创建出来的静态文件就是属于文本文件是可以通过VIM修改的。

CREATE SPFILE FROM PFILE;–通过静态参数文件生成动态参数文件,生成
出来的文件默认保存位置是在$ORACLE_HOME/DBS下面,但是我们原先在这个路径下已经有一份动态参数文件了,
所以必须指定其他目录生成否则会报错,CREATE SPFILE =’/U01/SPFILE.ORA’ FROM PFILE;,在这里
生成完后的动态参数文件我们是不建议去手工修改的,因为是DATA文件(数据库二进制文件),所以我们都是通过ALTER SYSYTEM
的SQL语句将我们对动态参数/静态参数的修改自动更新到此文件中,该文件会一直处于更新的状态。
要是动态参数文件不在默认目录下,CREATE SPFILE FROM PFILE=‘目录/INIT+实例名.ORA’;进行一个动态参数文件的恢复。

动态参数文件和静态参数文件和实例之前有什么关联呢?
1.首先数据库实例启动的时候,会第一时间找到 O R A C L E H O M E / D B S / S P F I L E . O R A + ORACLE_HOME/DBS/SPFILE.ORA+实例名的动态参数文件, 如果发现没有此文件的情况下,会再去寻找 ORACLE_HOME/DBS/SPFILE.ORA的不带实例名称的动态参数文件,因为我们本来就没有
这份文件所以是找不到,最后再去找$ORACLE_HOME/DBS/INIT+实例名.ORA+实例名的静态参数文件,
如果在这里三个步骤都没找到任何一份对应的参数文件的时候,数据库实例就启动不了啦,以上就是三者之间的关系。
SPFILE+实例名.ORA----->SPFILE.ORA---->INIT+实例名.ORA---->实例启动不起来

可以理解为静态文件是动态文件的备份,可以在搭建完实例后进行一次静态文件的创建,可以查看数据库的参数设置是否符合,以备不时之需。

当服务器重启后,正确启动数据库实例的步骤:
OEM---->监听---->SQLPLUS 启动数据库
这是ORACLE官方推荐的数据库启动方式,当然也可以不选择此方式启动也可以。

扫描二维码关注公众号,回复: 11410282 查看本文章

以下三段为ORACLE官方推荐启动的方式:
OEM:
OEM作用:通过WEB界面管理数据库,属于一个客户端工具。

EMCTL STATUS DBCONSOLE --查看OEM当前状态

EMCTL START DBCONSOLE  --启动OEM

EMCTL STOP DBCONSOLE   --启动OEM

EMCA -H --获取OEM帮助

EMCA  --可以修改OEM的信息,进行一个管理

NETCA --安装监听

DBCA  --创建数据库实例
监听:
LSNRCTL STATUS --查看当前监听状态

LSNRCTL START  --启动监听

LSNRCTL STOP   --关闭监听

NETSTAT -NTULP | GREP :1521 --查看是否启动监听的端口,1521代表端口号,根据实际端口查询。

启动数据库实例有两种方法:
1.通过SQLPLUS启动,输入STARTUP即可启动实例,输入SHUTDOWN即可关闭实例。
2.通过操作系统命令启动,首先在ORACLE用户下编辑/ETC/ORATAB 文件里面没有被注释的一句话
PAS:/U01/APP/ORACLE/PRODUCT/11.2.0/DBHOME_1:N <–将N改成Y 保存退出
然后在ORACLE用户下执行
DBSTART O R A C L E H O M E ORACLE_HOME 启动数据库
DBSHUT O R A C L E H O M E ORACLE_HOME 关闭数据库
如果启动或者关闭数据库时,出现FAILED TO AUTO-STOP ORACLE NET LISTENER USING /U01/APP/ORACLE/PRODUCT/11.2.0/DBHOME_1$/BIN/TNSLSNR这个错误,证明监听没有指定ORACLE目录所示,找到以下这两份文件
VI $ORACLE_HOME/BIN/DBSTART
VI $ORACLE_HOME/BIN/DBSHUT
将文件里的ORACLE_HOME_LISTNER= 1 , O R A C L E H O M E L I S T N E R = 1,修改为 ORACLE_HOME_LISTNER= ORACLE_HOME
保存退出,问题解决。

ORACLE数据库后台启动执行步骤:
启动实例–>服务器分配内存—>读取参数文件(参数文件中记载了控制文件的存放目录,可以手动打开静态参数文件查看该路径)
–>读取控制文件(控制文件中记载了数据文件,重做日志等文件的存放目录,控制文件手动打不开,因为属于数据库二进制文件)
–>实例正式启动

查看数据库控制文件内容的方法:
1.在SQLPLUS上输入

ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 8';--生成追踪文件

2.在SQLPLUS上输入

SELECT VALUE FROM V$DIAG_INFO WHERE NAME='DEFAULT TRACE FILE';   --追踪文件目录

3.在对应路径下会有一份类似于改实例名的/PAS_ORA_1933.TRC(追踪文件),里面记载了数据库的各种文件存放的目录,
之前手动打开控制文件查看不了里面信息的情况,在跟踪文件里面全部都有,跟踪文件涵盖了控制文件的所有信息,包括DATA文件的存放目录,REDO日志的目录,操作系统是LINUX,还有就是LINUX哪个版本各种系统信息都会有保存在里面。
4.可以通过跟踪文件内的内容来恢复控制文件,里面有对应的创建语句,如果数据库的数据文件被意外删除,可以通过此方法
在控制文件中找到那个数据文件的路径,然后删除,重新创建控制文件即可,注意的是只能在NOMOUNT状态下创建控制文件。

数据库的启动状态:
NOMOUNT:实例已经启动(STARTED),上面一句有说当数据库读取到了参数文件后,会在参数文件中找到读取控制文件的目录,但是在这种情况下数据库只是知道了文件的存放位置,并不知道文件是否真的存在于该目录下,此时的这种状态就名为NOMOUNT,如果控制文件丢失了,实例是启动不起来的,数据库就会停留在STARTED的状态也称为NOMOUNT状态。

MOUNT:结合上面系统已经通过控制文件路径找到了控制文件,已经通过了NOMOUNT状态,下一步数据库就会读取控制文件中的数据文件和重做日志等数据库文件的目录,但是此刻也和NOMOUNT有一样的情况,数据库只是通过控制文件知道数据文件和重做日志文件等等文件的存放位置,并不清楚该路径下面是否真的存在对应此文件,此时的这种状态就名为MOUNT状态,如果数据库发现控制文件里面的文件存放路径是不完整的,此刻数据库就会停留在MOUNT状态。

OPEN:如果NOMOUNT和MOUNT的检测都是已经通过后,数据库就会正式启动,当前状态就会变为OPEN状态。

数据库STARTUP三种启动模式,在数据库关闭的情况下输入以下命令可以进入对应数据库的启动环境中:
STARTUP NOMOUNT --进入NOMOUNT状态,遇到遇到控制文件缺失的情况,可以用此命令进入到NOMOUNT状态来恢复数据库。

STARTUP MOUNT --进入MOUNT状态,遇到遇到控制文件记载的某些文件缺失导致数据库启动不了的情况,可以用此命令进入到MOUNT状态来检测数据库文件的可用性。

STARTUP --直接启动数据库实例

以上三种方法不能直接用STARTUP在当前环境下切换到另外一个环境,必须通过ALTER DATABASE (MOUNT,NOMOUNT,OPEN)的方式进行切换,也可以通过SHUTDOWN再STARTUP重新进入该环境,默认STATUP什么都不输入情况下是OPEN方式。

数据库SHUTDOWN四种关闭模式,在数据库启动的情况下输入以下命令可以指定数据库的关闭方式:
SHUTDOWN NORMAL --不会马上终止当前数据库已有的会话,不管当前的会话模式是否有数据传输或者正在工作或者是闲置的情况,ORACLE是不会去关闭这类型已经存在于关闭系统之前的会话,只会拒绝在输入关闭命令后再发起连接的会话,ORACLE会
等待已有的会话或者连接自动关闭了,才会真正关闭数据库,如果不指定对应关闭命令情况下是都是以NORMAL状态去关闭数据库。

SHUTDOWN IMMEDIATE --不会马上终止当前数据库已有的会话,但是和NORMAL相同的点在于当前会话如果是正在工作或者是当前连接正在进行数据传输的情况下,ORACLE不会终止正在执行数据交互的连接或者会话,会等待执行完毕后再关闭数据库,但是和NORMAL不相同的点在于会将空连接或者闲置会话的情况立即关闭并不会等待其自动关闭的情况。

SHUTDOWN TRANSACTIONAL --关闭当前数据库所有的会话(对正在工作的事物进行ROALBACK操作),结合上述的两个关闭模式,此关闭模式会将空闲的或者是正在工作的又或者是新发起连接的,全部关闭,但是要说的是如果有某一个连接在发起命令的时候正在执行数据传输的操作,那ORACLE会将当前正在执行的操作回滚到整个操作的最开始发生的时候进行一个还原举动并断开当前连接以及关闭数据库。

SHUTDOWN ABORT --立马关闭当前数据库,不管任何情况,此操作容易对正在执行的事物造成数据丢失的影响(不会进行ROALBACK操作),会断开所有连接以及新发起的连接来关闭数据库。

数据库密码文件存放在:/ORACLE_HOME/DBS/ORAPW+实例名(文件类型属于数据库文件)
在SQLPLUS输入SHOW PARAMETER BACKGR --返回结果/U01/APP/ORACLE/DIAG/RDBMS/PAS/PAS/TRACE
此路径下保存了所有的参数文件,里面的参数文件有警告文件和日志文件,数据库日常出现系统问题需要进行追踪和排查的情况时就可以找到此路径下的文件进行查阅并排查问题,ALERT_PAS.LOG(警告文件),其他的都是日志文件,其实警告文件也属于日志文件啦。#

猜你喜欢

转载自blog.csdn.net/m0_38036502/article/details/106351658