oracle实例管理和启停、参数文件、pdb启停、参数级别

相关数据库文件

参数文件:记录Oracle参数信息

show parameter pfile|spfile;

控制文件:记录Oracle的物理结构信息等

show parameter control
alter database backup controlfile to trace as '/tmp/controlfile.sql';

数据文件:存储Oracle数据的数据文件

select file_name from dba_Data_files;  -数据文件
select file_name from dba_temp_files;  -临时表空间数据文件

日志文件:记录Oracle事务日志文件

col member format a50
select group#,status,member from v$logfile;

参数文件

作用:记录oracle参数信息,类似mysql的my.cnf

在启动阶段读取初始化参数文件(init parameter files)。该文件管理实例相关启动参数。

参数类型大致以下几种:

基本初始化参数 大约 10-20 个左右(见联机文档)
初始化参数 300 个左右
隐含参数 Oracle 不推荐使用

总的来说也就是普通参数和隐含参数

查看普通参数:

select * from v$parameter;
......
445 rows selected

查看隐含参数:

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ 
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.inst_id = USERENV ('Instance')
AND y.inst_id = USERENV ('Instance')
AND x.indx = y.indx
--AND x.ksppinm LIKE '%&par%'

动态参数和静态参数,及文件

动态参数:可以直接在内存中修改,并对当前 instance 立即生效

静态参数:必须修改参数文件,下次启动后生效

区分是静态参数还是动态参数:

根据 ISSYS_MODIFIABLE 的值判断

SQL>  select distinct issys_modifiable from v$parameter;

ISSYS_MOD
---------
IMMEDIATE		#动态参数
DEFERRED		#静态参数
FALSE			#延迟参数,下次session连接有效

#例子
SQL> select name,value,ISSYS_MODIFIABLE from v$parameter where name ='undo_retention';

NAME            VALUE            ISSYS_MODIFIABLE
--------------- -----------------------------------
undo_retention   900             IMMEDIATE

文件:

参数文件:参数文件可以分为文本参数文件(pfile)和 二进制参数文件(spfile)

静态参数文件:记录Oracle参数文本文件(默认已经不使用),默认的名称为“init+实例名.ora”,这是一个文本文件,可以用任何文本编辑工具打开。文件存放在$ORACLE_HOME/dbs目录下

动态参数文件:记录Oracle参数二进制文件(默认使用的参数文件)

spfile 默认的名称为“spfile+例程名.ora”这是一个二进制文本形式存在,不能用vi编辑器对其中参数进行修改。show parameter spfile --查看当前数据库使用的参数文件

两种参数文件:pfile和spfile

pfile(parameter file)

特点:

①必须通过文本编辑器修改参数,便于一次修改多个参数。

②缺省的路径及命名方式:$ORACLE_HOME/dbs/initSID.ora

spfile(system parameter file)

特点:

①二进制文件,不可以通过编辑器修改。通过 Linux 命令 strings 可以查看内容。

②路径及命名方式: $ORACLE_HOME/dbs/spfileSID.ora

参数的修改

修改spfile的方法:

alter system set 参数=值 [scope=memory|spfile|both]

①scope=memory 参数修改立刻生效,但不修改 spfile 文件。

②scope=spfile 修改了 spfile 文件,重启后生效。

③scope=both 前两种都要满足。要求 spfile 参数文件存在

④不写 scope 限定词,缺省③。但不如③严格,即 spfile 如果不存在,仅仅修改内存中参数。

如果不修改 spfile,将无法更改静态参数。

SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sql_trace';

NAME         ISSES_MODIFIABLE ISSYS_MODIFIABLE
------------ ---------------- ----------------
sql_trace    TRUE             IMMEDIATE

#这个结果表示 sql_trace 参数在 session 级别可以改,在 system 级也可以 both 修改(动态参数)。

alter system set sga_target=400M ; ---动态参数
alter system set memory_max_target=600M scope=spfile; --静态参数
alter system set sga_target=400M  scope=memory;    
ALTER SYSTEM SET parameter_name=parameter_value scope=[memory|spfile|both] 

参数文件的生成和相互转换

读取顺序:优先 spfile,其次 pfile

pfile 和 spfile 可以相互生成:

SQL>create pfile from spfile
SQL>create spfile from pfile
SQL>create pfile from memory;
SQL>create spfile from memory;

例子:

#动态参数文件生成静态参数文件:
create pfile='/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initweisi.ora' from spfile;
#静态参数文件生动态态参数文件:
create spfile from pfile ='/u01/app/oracle/product/12.2.0/dbhome_1/dbs/pfile.ora’;

注意:使用 spfile 启动后不能重写 spfile

尽可能使用 spfile,pfile 一般留做备用,特殊情况也可以使用 pfile 启动:

SQL> startup pfile=$ORACLE_HOME/dbs/initprod.ora
---如果 pfile 不是缺省命名或放在其他路径,则指定命令路径和文件名即可。
SQL> startup pfile=/home/oracle/mypfile

---怎样知道实例是 spfile 启动还是 pfile 启动的
SQL> show parameter spfile
NAME     TYPE     VALUE
------------------------------------ ----------- ------------------------------
spfile   string   /u01/oracle/dbs/spfile.ora
---如果 value 有值,说明数据库启动时读的是 spfile

---另一个办法是看 v$spparameter(spfile 参数视图)中的参数 memory_target 的 isspecified 字段值,如果是 TRUE 说明是 spfile 启动的
SQL> select name,value,isspecified from v$spparameter where name like 'memory_target';

NAME             VALUE         ISSPECIFIED
--------------- -----------------------------
memory_target    1528823808    TRUE

启动数据库实例

oracle数据库的启动总的来说分为三个步骤,启动实例、加载数据库、打开数据库。根据不同的需要,以不同的模式启动数据库。

常见模式:

startup [nomount|mount|open|force] [restrict] [pfile=filename]
模式 概要
nomount 启动实例但不加载数据库
mount 启动实例但,加载数据库,数据库保持关闭
open 启动实例但,加载并打开数据库(默认)
force 强行终止实例并重启数据库
restrict 指定以受限制的会话方式打开数据库,有 restrict session 权限才可登录,sys 不受限制
pfile 指定期启动实例所用的文本参数文件

一些启动时的特殊选项:

alter system enable restricted session;

open 后再限制

alter database open read only;

只读,scn 不会增长

参数加载顺序

oracle启动实例时必须读取一个初始化参数文件,从文件中获取启动实例的参数配置信息。

若startup没有指定,则按照以下顺序:

加载顺序从上到下

$ORACLE_HOME/dbs

1.spfileORACLE_SID.ora

2.spfile.ora

3.initORACLE_SID.ora

nomount模式:加载参数文件

startup nomount

nomount模式只会创建实例(即创建实例的各种内存结构后服务进程),不会加载数据库,也不会打开任何数据文件。

nomunt模式常常用于重建控制文件

mount模式:加载控制文件

Oracle 加载参数文件进入nomount阶段,然后加载控制文件进入Mount 阶段

mount模式将启动数据库,加载数据库并保持数据库的关闭状态

--启动到mount
    startup mount

--加载控制文件,从nomount 到 mount的手动命令
    alter database mount;	 
--查看数据库处在哪种模式 
	select open_mode from v$database;
--也可以查看实例状态
    select status from v$instance;

mount通常用于维护数据库,如对数据库进行完全恢复、更改归档设置等等

open模式:加载数据文件和重做日志文件

open模式启动实例,加载并打开数据库

open阶段:

1、检查所有的 datafile、redo log、 group 、password file 正常

2、检查数据库的一致性(controlfile、datafile、redo file 的检查点是否一致)

--从控制文件读出
SQL> select file#,checkpoint_change#,last_change# from v$datafile;
--从数据文件读出
SQL> select file#,checkpoint_change# from v$datafile_header; 从数据文件读出
--注意:启动时 last_change#不为空说明之前是干净的关闭数据库

数据库open 状态下才能对外提供服务,nomount,mount状态一般是在维护下的状态。

force模式

force模式将强制性的终止实例并重启数据库。

在其他模式失效时可以通过尝试这种模式来完成维护,一般不用。

关闭数据库实例

与启动实例的三个步骤,启动实例、加载数据库、打开数据库相同。

关闭数据库实例也分为三个步骤:关闭数据库、卸载数据库、关闭实例

语法:

shutdown [normal|transactional|immediate|abort]

作用:

normal 正常方式关闭(默认)
transactional 当前所有活动事务被提交后关闭数据库
immediate 尽可能短的时间内关闭数据库
abort 强行关闭数据库(数据库无法正常关闭时使用,慎用)

特点:

①shutdown normal 拒绝新的连接,等待当前会话结束,生成检查点

②shutdown transactional 拒绝新的连接,等待当前事务结束,生成检查点

③shutdown immediate 拒绝新的连接,未提交的事务回滚,生成检查点

④shutdown abort 不生成检查点,下次启动需要做 instance recovery

shutdown

normal方式

normal方式被称为正常关闭,如果对数据库关闭没有时间限制,通常会用这种方式。

shutdown
shutdown normal

normal方式的动作:

阻止任何用户建立新的连接

等待连接的用户主动断开连接

等待事务的主动提交和回滚

所有用户都断开连接后,才关闭数据库(如果有一个用户没有断开连接,那么数据库无法关闭)

transactional方式

transactional方式被称为基于事务关闭的方式,它保证当前所有的活动事务都可以被提交或回滚,并在尽可能短的时间内关闭数据库

shutdown transactional

transactional方式的动作:

阻止用户建立新的连接和开始新的事务

等待所有活动事务结束后(提交或回滚),强行断开用户连接

清空缓存

所有活动事务结束,所有用户断开连接后,关闭数据库

如果有事务一直没有提交或者回滚,实例无法关闭

immediate方式

immediate方式被称为立即关闭方式,这种方式将在尽可能短的时间内关闭数据库

经常在维护时使用

shutdown immediate

这种方式不但会立即中断所有连接,而且会强制中断正在运行的事务,并回滚他们

immediate方式的动作:

阻止建立新连接和开启新事务

强制中断当前正在运行的所有事务,回滚这些事务

回滚完毕,强制中断所有的连接

将实例中的所有数据写入数据文件

关闭数据库

abort方式

abort方式被称为终止关闭方式,他是有一定强制性和破坏性的。这种方式会强制中断数据库的操作,可能会丢失一部分数据信息(可能内存数据没有来得及持久化),影响数据库完整性。要尽量避免使用这种方式。有点类似于机器掉电的感觉。

shutdown abort

abort方式的一些动作:

阻止建立新连接和开启新事务

取消未提交的活动事务,而不是回滚

立即终止任何正在执行的sql

就想断电一样,内存被清空,内存的数据没有写入数据文件,事务立即中断,不提交也不回滚

立即关闭数据库

PDB的启动和关闭(12c和19c)

PDD正常情况有的两种状态:mounted (关闭状态), read write(启动状态)

CDB下启动PDB

alter pluggable database my_pdb_name open;

CDB下关闭PDB

alter pluggable database my_pdb_name close;

PDB会话下的启动和关闭兼容之前的命令

alter session set container=my_pdb_name;

--启动pdb
startup
--关闭pdb
shutown immediate

打开所有PDB

alter pluggable database all open;

保持PDB状态

保存状态后,下次启动将直接到对应的状态

--保存pdb 状态
alter pluggable database my_pdb save state;
select  con_name, state from dba_pdb_saved_states;

--取消pdb的保存state
alter pluggable database my_pdb discard state;
select  con_name, state from dba_pdb_saved_states;

PDB的参数

参数级别:

  • 1)实例级别:实例生效,即全局生效

    alter system set max_memory_target=100G scope=spfile;

  • 2) 会话级别:当前会话生效,其他会话无效

    select sysdate from dual;

    Alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

    select sysdate from dual;

  • 3)PDB级别

    Alter session set container=my_pdb;

    alter system set sga_target=10M ;

11g传统架构只有12级别,CDB架构有三个级别,12级别都是一样的

实例参数是保存在spfile中, PDB的参数保存在CDB,可以用 pdb_spfile$查询

--修改所有的PDB,不是所有的参数都支持
alter system set statistics_level=typical container=all; 
select * from V$PARAMETEr t where t.ISPDB_MODIFIABLE='TRUE'; 
posted @ 2022-05-02 22:00  EverEternity  阅读(425)  评论(0编辑  收藏  举报