前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3_Oracle_Admin_SPFIL

3_Oracle_Admin_SPFIL

作者头像
py3study
发布2020-01-13 12:31:47
2670
发布2020-01-13 12:31:47
举报
文章被收录于专栏:python3python3
wKiom1QYT6TASHeLAAGXZEYCP4Q257.jpg
wKiom1QYT6TASHeLAAGXZEYCP4Q257.jpg

SPFILE储存在服务端,它不能自行修改(从而克服了PFILE的一些安全性隐患),如果使用文本编辑器查看SPFILE会发现这是个二进制文件,需要使用SQL命令,由Oracle Server进行管理,使用SQL命令修改的值会永久的保存起来。Oracle的备份恢复工具RMAN可以备份SPFILE。

wKioL1QYT8rRh4bCAAGmW3lk4q4412.png
wKioL1QYT8rRh4bCAAGmW3lk4q4412.png

[oracle@localhost ~]$ sqlplus/nolog

代码语言:javascript
复制
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 2710:40:15 2014
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba

代码语言:javascript
复制
Connected to an idle instance.

SQL> create spfile frompfile;

代码语言:javascript
复制
File created.

[oracle@localhost dbs]$ ll

代码语言:javascript
复制
total 3
-rw-r--r--. 1 oracle oinstall 2851 Aug 27 10:41 initorcl.ora
drwxr-xr-x. 3 oracle oinstall 4096 Aug 27 10:20 old
-rw-r-----. 1 oracle oinstall 1536 Aug 27 10:42spfileorcl.ora

SQL> startup

代码语言:javascript
复制
ORACLE instance started.
 
Total System Global Area 422670336 bytes
Fixed Size                 1336960 bytes
Variable Size            318769536 bytes
Database Buffers          96468992 bytes
Redo Buffers               6094848 bytes
Database mounted.
Database opened.
wKiom1QYT8KxBpFiAAGNXaHMeo8622.jpg
wKiom1QYT8KxBpFiAAGNXaHMeo8622.jpg

=============查看SPFILE=============

由于SPFILE是个二进制文件,故不能使用文本编辑器查看,因此在Linux的命令行中使用strings命令来查看这个文件:

[oracle@localhost dbs]$strings spfileorcl.ora | more

代码语言:javascript
复制
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/oracle'#ORACLE_BASE set fromenvironment
orcl.__pga_aggregate_target=146800640
orcl.__sga_target=276824064
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=159383552
orcl.__streams_pool_size=4194304
*.audit_file_dest='/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/flash_recove
ry_area/o
rcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=421527552
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
wKioL1QYT-nQYe3JAAIJKaGkCW8632.jpg
wKioL1QYT-nQYe3JAAIJKaGkCW8632.jpg

SPFILE不能使用文本编辑器手动修改,必须使用SQL命令来修改,其格式为:

        ALTER system set parameter=value <comment=’text’><deferred>    <scope=memory|spfile|both> <sid=’sid|*’>

<comment=’text’>表示给某个参数加注释,便于以后查看

<deferred>表示等下次启动实例再生效

手动修改了PFILE后,通常不能马上生效,必须等下次启动Instance才能生效;而SPFILE是Oracle内置的二进制文件,通过指定<SCOPE>,就能够明确现在修改的参数值是作用于内存中让其马上生效,还是将其保存到磁盘上的SPFILE文件上,亦或是二者同时修改,默认情况下是二者同时修改,既作用于内存中立刻生效,也保存到磁盘文件上。

通常情况下一个实例(Instance)对应一个数据库,但在RAC(大规模的集群数据库)环境中,通常是多个实例对应一个数据库,因此就需要指定<SID>的值来区分具体的实例。

使用strings命令查看SPFILE,会发现很多文件前面都有一个*,它表示这个参数适用于所有的Instance;而没有带*号的,就需要指定SID,如orcl.__db_cache_size=96468992中,orcl就是SID。

/*==========修改SPFILE实例演示============*/

[oracle@localhost dbs]$strings spfileorcl.ora | less

代码语言:javascript
复制
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
…
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=421527552

/*=== 现在来修改SPFILE的值 ===*/

SQL> show parameter fast_

代码语言:javascript
复制
NAME                                 TYPE        VALUE
------------------------------------ -----------------------------------------
fast_start_io_target                 integer    0
fast_start_mttr_target               integer     0
fast_start_parallel_rollback         string      LOW

SQL> alter system setfast_start_mttr_target=250;

代码语言:javascript
复制
-- 没有加任何scope,则该值会保存到内存和磁盘文件上
System altered.

SQL> show parameter fast_

代码语言:javascript
复制
NAME                                 TYPE        VALUE
------------------------------------ -----------------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     250
fast_start_parallel_rollback         string      LOW

[oracle@localhost dbs]$strings spfileorcl.ora | more

代码语言:javascript
复制
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
…
*.fast_start_mttr_target=250
*.memory_target=421527552

/*===========再来看加了scope的情况=============*/

SQL> alter system setfast_start_mttr_target=260 scope=memory;

代码语言:javascript
复制
System altered.

SQL> show parameter fast_

代码语言:javascript
复制
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     260
-- 内存中已经修改为260了
fast_start_parallel_rollback         string      LOW

[oracle@localhost dbs]$strings spfileorcl.ora | more

代码语言:javascript
复制
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fast_start_mttr_target=250
# 磁盘上的值仍然是250
*.memory_target=421527552

/*=================修改SPFILE时加注解==================*/

SQL> alter system set fast_start_mttr_target=260comment='hello Mickey!';

代码语言:javascript
复制
System altered.

SQL> desc v$parameter;

代码语言:javascript
复制
Name                                     Null?    Type
 ------------------------------------------------- ----------------------------
 NUM                                                NUMBER
 NAME                                              VARCHAR2(80)
 TYPE                                              NUMBER
 VALUE                                             VARCHAR2(4000)
 DISPLAY_VALUE                                      VARCHAR2(4000)
 ISDEFAULT                                         VARCHAR2(9)
 ISSES_MODIFIABLE                                   VARCHAR2(5)
 ISSYS_MODIFIABLE                                   VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                             VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(10)
 ISADJUSTED                                                    VARCHAR2(5)
 ISDEPRECATED                                                VARCHAR2(5)
 ISBASIC                                                     VARCHAR2(5)
 DESCRIPTION                                                 VARCHAR2(255)
 UPDATE_COMMENT                                    VARCHAR2(255)
 HASH                                                 NUMBER

SQL> select name, value,update_comment

代码语言:javascript
复制
  2  from v$parameter
  3  where name = 'fast_start_mttr_target';
 
NAME                         VALUE                       UPDATE_COMMENT
-------------------------------- ---------------  ------------------------
fast_start_mttr_target               260                   hello Mickey!

[oracle@localhost dbs]$strings spfileorcl.ora | more

代码语言:javascript
复制
orcl.__db_cache_size=96468992
orcl.__java_pool_size=4194304
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fast_start_mttr_target=260#hello Mickey!
# 已经加上注解了
*.memory_target=421527552

有些参数必须延迟生效,这就需要在修改时加上deferred选项,在参数表v$parameter中ISINSTANCE_MODIFIABLE项中如果标注为deferred,就需要延迟生效

SQL> col name format a20

SQL> col issys_modifiableformat a20

SQL> select name,issys_modifiable

代码语言:javascript
复制
2  from v$parameter
  3  where issys_modifiable = 'DEFERRED';
 
NAME                           ISSYS_MODIFIABLE
------------------------------ --------------------
backup_tape_io_slaves          DEFERRED
recyclebin                     DEFERRED
audit_file_dest                DEFERRED
object_cache_optimal_size      DEFERRED
object_cache_max_size_percent  DEFERRED
sort_area_size                 DEFERRED
sort_area_retained_size        DEFERRED
olap_page_pool_size            DEFERRED
 
8 rows selected.

更多ALERT 的使用细节,可以查看联机文档reference中有关ALTER SYSTEM的相关章节。

wKiom1QYT_WTcgwXAADtcF2cAm0906.jpg
wKiom1QYT_WTcgwXAADtcF2cAm0906.jpg
wKioL1QYUBvge4KWAAC7VGI4438768.jpg
wKioL1QYUBvge4KWAAC7VGI4438768.jpg
wKiom1QYUBOTQ5u6AAGwmOPwJO8133.jpg
wKiom1QYUBOTQ5u6AAGwmOPwJO8133.jpg

如果不想要修改后的值,可以使用reset命令来恢复为缺省值

SQL> show parameter undo

代码语言:javascript
复制
NAME                                 TYPE        VALUE
------------------------------------ -----------------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

SQL> alter system setundo_retention=800;

代码语言:javascript
复制
System altered.

SQL> show parameter undo

代码语言:javascript
复制
NAME                                 TYPE        VALUE
------------------------------------ -------------------------------------
undo_management                      string      AUTO
undo_retention                       integer     800
undo_tablespace                      string      UNDOTBS1

SQL> alter system resetundo_retention sid='*';

System altered.

wKioL1QYUDqhwScaAAC0FFm5snM666.jpg
wKioL1QYUDqhwScaAAC0FFm5snM666.jpg

更多关于reset的细节,可以查询联机文档reference。

wKioL1QYUFKwQkKAAALEcip_y_A536.jpg
wKioL1QYUFKwQkKAAALEcip_y_A536.jpg

可以用spfile来创建pfile:

SQL> create pfile fromspfile;

代码语言:javascript
复制
File created.

[oracle@localhost dbs]$ ll

代码语言:javascript
复制
total 36
-rw-r-----. 1 oracle oinstall 1544 Aug 27 10:47 hc_orcl.dat
-rw-r--r--. 1 oracle oinstall 2851 Aug 27 13:36 init.ora
-rw-r--r--. 1 oracle oinstall  904 Aug 27 13:34 initorcl.ora
# 根据spfile创建出来的pfile文件
-rw-r-----. 1 oracle oinstall   24 Aug 27 10:45 lkORCL
drwxr-xr-x. 3 oracle oinstall 4096 Aug 27 10:20 old
-rw-r-----. 1 oracle oinstall 1536 Aug 27 10:45 orapworcl
drwx------. 2 oracle oinstall 4096 Aug 27 10:47 peshm_orcl_0
drwx------. 2 oracle oinstall 4096 Aug 27 09:31 peshm_ORCL_0
-rw-r-----. 1 oracle oinstall 2560 Aug 27 13:27spfileorcl.ora
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档