阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

关于 Oracle 实例管理

216次阅读
没有评论

共计 4807 个字符,预计需要花费 13 分钟才能阅读完成。

理解初始化参数文件
实例由内存中构建它的参数来定义。许多参数(但不是全部)可以在启动后更改。有些参数在启动时就固定了,只能在关闭实例并再次启动时更改。

静态和动态参数文件
参数文件由两类:静态参数文件(也称 pfile 或初始文件)和动态服务器参数文件(也称为 spfile)。无论哪种类型,初始化参数文件都在内存中存储了建立实例、启动后台进程所用参数的值。有 3 个默认的文件名。
在 UNIX 上,它们是:
$Oracle_HOME/dbs/spfile<SID>.ora
$ORACLE_HOME/dbs/spfile.ora
$ORACLE_HOME/dbs/init<SID>.ora
在 windows 上,它们是:
%ORACLE_HOME%\database\SPFILE<SID>.ORA
%ORACLE_HOME%\database\SPFILE.ORA
%ORACLE_HOME%\database\INIT<SID>.ORA
<SID> 是指参数文件启动的实例名。上述顺序非常重要。除非在启动命令中指定了 pfile,否则 Oracle 会按照上述列表的顺序执行,使用它找到的第一个文件,而忽略其他文件。如果它们都不存在(也没有指定非默认的 pfile),实例就不会启动。
spfile 是一个服务器段文件,不能重命名或重新定位。唯一的例外是使用 GI,在 GI 注册表中可以注册非默认的文件名和位置名。在启动实例时,SMON 后台进程会读取它。spfile 是一个二进制文件,不能手工编辑。
要修改 spfile 中的值,使用 ALTER SYSTEM SET 命令,或者 Database Express 的参数编辑功能。
要创建 spfile:CREATE SPFILE [= filename] FROM PFILE [= filename];
pfile 是一个客户端文件,它默认存在于 ORACLE_HOME 目录下,但实际上它由用户进程读取,该用户进程发出启动实例的命令。可以随意重命名或移动 pfile,但如果这么做,就不能在默认情况下找到它,必须在 STARTUP 命令上指定其名称和位置。pfile 是一个 ACII 文本文件,可编辑。
要创建 pfile:CREATE SPFILE [= filename] FROM SPFILE [= filename];
文件 SPFILE<SID>.ORA 最便于用作参数文件。一般情况下,仅在 RAC 环境中使用 spfile.ora,在这个环境中,可以使用一个文件启动几个实例。只有需要手工编辑,才使用 init<SID>.ora。

静态和动态参数以及初始化参数文件
要查看当前在运行的实例中生效的参数值:select name,value from v$parameter order by name;
显示磁盘上 spfile 中存储的值:select name,value from v$spparameter order by name;
有些参数可以在实例运行时更改,而其他参数(称为静态参数)是启动实例时就固定下来的。对于可更改参数的更改的效果是立竿见影的,并且会可选地写出到 spfile 中,下次停止或启动实例时,将从 spfile 中读取新值。
要更改静态参数,则必须将更改写入 spfile 中,但将在下次启动时生效。

基本参数
基本实例参数是应该为每个数据库使用的参数。要查看基本参数机器当前值:select name,value from v$parameter where isbasic=’TRUE’ order by name;

更改参数
语法:ALTER SYSTEM SET <name> = <value> SCOPE = MEMORY | SPFILE | BOTH
scope 子句的默认值是 BOTH,其含义是如果没有指定 SCOPE,更改就应用于运行着的实例,并写入 spfile,这是一个永久的更改。
如果不将 SCOPE 指定为 SPFILE,将无法更改静态参数。SCOPE 的默认值是 BOTH,即作用于运行中的实例和 spfile。如果使用 pfile 启动实例,那么设置 SCOPE=SPFILE 将失败。

启动和关闭 Oracle 数据库实例
启动数据库侦听器

数据库侦听器是一个进程,它监视一个端口的数据库连接请求。
lsnrctl start [<listener>]
lsnrctl status [<listener>]

启动和关闭数据库
1. 使用适当权限进行连接

普通用户无权启动或关闭数据库,必须使用某种外部身份认证方式来连接数据库:必须通过操作系统进行身份验证,以拥有 Oracle 软件的小组成员身份出现,或者给出外部口令文件中存在的用户名 / 口令组合。
SYSDBA 和 SYSOPR 并非用户,而是可以授予用户的权限。默认方式下,在未将这些权限专门授予其他用户之前,只有 SYS 用户才拥有这些权限。
如果拥有 SYSDBA 权限,就能以用户 SYS 的身份登录到实例,这是数据库中权力最大的用户,也是数据字典的所有者。使用 SYSOPR 权限可以作 PUBLIC 用户进行连接,PUBLIC 不是普通意义上的用户,而是具有管理权限的概念用户,但它无权查看或操作数据。

2. 启动:NOMOUNT、MOUNT 和 OPEN

实例和数据库时独立实体,可以独立存在,因此,启动过程分成多个阶段:
1. 在内存中构建实例
2. 用过加载控制文件启用到数据库的连接。
3. 打开数据库来使用它。

在任意时刻,数据库将处于以下 4 中状态之一:
SHUTDOWN:关闭与数据库相关的所有文件,同时实例并不存在
NOMOUNT:实例已构建在内存中(已根据参数文件中指定的参数创建了 SGA 并启动某些后台进程),但是并没有连接任何 数据库,这种情况在数据库不存在时确实可能出现。
MOUNT:实例定位并读取数据库控制文件。
OPEN:将定位和打开所有数据库文件,并且终端用户能够使用数据库。
执行 startup 命令时,Oracle 会尝试按前述的命名约定,定位参数文件。
实例一旦在 NOMOUNT 模式中启动成功,就可以通过读取控制文件转换到 MOUNT 模式。它适用 CONTROL_FILE 参数(在 NOMOUNT 模式中启动实例时,读取所适用的参数文件就可以知道这个参数)定位控制文件。如果控制文件(或者控制文件的任何多路复用副本)被损坏或丢失,就不会加载数据库,因此还需要在继续启动进程之前执行适当的动作。如果数据库的加载成功,那么控制文件的所有副本都可用并且相同。
在数据库加载阶段,所有数据文件和连接重做日志文件的名称和位置都从控制文件中读取,但是 Oracle 仍然没有试图查找这些文件,这些文件的查找在转换至 OPEN 模式时进行。如果任何文件丢失或损坏,数据库就会停留在 MOUNT 模式,并且只有在执行适当的动作之后才能打开。
此外,即使所有文件都存在,这些文件在数据库打开之前也必须同步。如果数据库的最近一次关闭是有序的(也就是说数据库缓冲区缓存内的所有数据库缓冲区首先通过 DBWn 进程被转储至硬盘),那么所有数据文件和联机重做日志文件都将同步:Oracle 会知道所有已提交的事务都被安全地存储在数据文件中,并且没有任何未提交的事务被挂起等待回滚。然而,如果数据库的最近一次关闭不是有序的(如断电或服务器重启),那么 Oracle 必须修复损坏的文件,而且,数据库会被看做处于不一致状态。
加载和代开数据库的进程为 SMON。只有在成功打开数据库之后,Oracle 才允许用正常的数据字典验证方式,建立用户会话。
数据库的关闭顺序应当与数据库的启动顺序相反。在有序关闭数据期间首先关闭数据库,然后卸载,最后停止实例。在数据库关闭阶段,将终止所有会话:回滚活动的事务,通过 DBWn 进程将已完成的事务转储至磁盘,同时关闭数据文件和重做日志文件。在数据库卸载阶段,关闭控制文件。随后,通过解除分配 SGA 和终止后台进程,停止实例。

3 关闭:NORMAL、TRANSACTIONAL IMMEDIATE 和 ABORT

shutdown [normal | transactional | immediate | abort]
normal: 这是默认选项。使用该选项时,不许可任何新的用户连接,但是允许继续当前的所有连接。只有所有用户(自愿地)退出登录时,数据库才能真正关闭。
transactional: 不许可任何新的用户连接,不存在于某个事物中的现有会话将被种猪,允许当前位于某个事物中的会话在完成该事务之后终止。一旦所有会话终止,就会关闭数据库。
immediate: 不许可任何新的用户连接,当前所有连接的会话都被终止。任何活动的事务都将回滚,随后数据库会关闭。
abort: 就 Oracle 而言,使用这个选项相当于断电。实例立即终止。此时,不会讲任何数据写入磁盘,也不会采用任何有序的方式终止正在进行的事务。

查看警报日志,访问动态性能视图
警报日志
警报日志是应用于实例和数据库的关键操作的连续记录。其位置由实例参数 DIAGNOSTIC_DEST 确定,它默认为 ORACLE_BASE 目录。警报日志的位置和命名如下:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/trace/alter_<instance_name>.log
对于数据库和实例 oracl,该值通常如下;
c:\app\oracle\diag\rdbms\orcl\orcl\trace\alter_orcl.log
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alter_orcl.log
XML 格式的警报日志副本在另一个目录下维护:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/alter
警报中记录的关键操作包括;
所有启动和关闭命令,包括中间命令,如 ALTER DATABASE MOUNT。
实例的所有内部错误(如 ORA-600 错误,DBA 只能使用 My Oracle Support 查看它们,如果它们是新问题,就报告给 Oracle Support)。
任何检测到的数据文件块损坏情况。
任何已经发生的记录锁定死锁。
影响数据库物理结构的所有操作,如创建或重命名数据文件和联机重做日志。
调整初始化参数值的 ALTER SYSTEM 命令。
所有日志开关和日志归档。
启动的警报日志项显示参数文件中指定的所有初始化参数。此信息以及随后使用 ALTER SYSTEM 更改实例的连续记录,以及使用 ALTER DATABASE 更改数据库物理结构的连续记录,允许用户重新构建对数据库和实例的更改历史。
跟踪文件由各个后台进程生成,一般在遇到错误时生成。这些文件与警报日志一起放在跟踪目录中。
DDL 日志
如果 DBA 选择启用 DDL 日志,就可以在日志文件中记录 DDL 命令。所适用的语句就记录在如下目录的文本文件 ddl_<instance_name> 中,并记录与 XML 文件 log.xml 相同的信息:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/log
要启用 DDL 日志,实例参数 ENABLE_DDL_LOGGING 必须设置为 TRUE(默认为 FALSE)。
动态性能视图
动态性能视图有 600 多个,名称前缀是“V$”,事实上,它们根本不是视图,而是带有“V_$”前缀的视图上的同义词。动态性能视图填充了来自实例或控制文件的信息,前缀为 DBA_、ALL_或 USER_的视图则填充了来自数据字典的信息。此差异决定了可以在不同启动阶段查询哪些视图。
动态性能视图在数据库启动阶段创建,在实例的生存期内进行更新,在数据库关闭阶段被删除。这意味着动态性能视图包含了从数据库启动开始积累的值。如果数据库连续打开半年时间,那么动态性能视图具有这一段时间内建立的所有数据。

更多 Oracle 相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4807字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中