Oracle初始参数文件

实例是由在内存中构建它的参数来定义的

初始化参数文件,有2类:
1、(spfile是二进制文件,不能手工编辑,在服务端的文件不能重新命名和其它位置)
SQL> show parameter spfile
NAME TYPE VALUE
spfile string /u01/app/oracle/product/18c/dbs/spfileorcl.ora

2、需要关闭后再次启动前更改(pfile,可以改名后但需在startup中指定位置名称,pfile是文本文件,客户端文件)
SMON(系统监控器)

[oracle@host01 ~]$ cd $ORACLE_HOME
[oracle@host01 18c]$ pwd
/u01/app/oracle/product/18c
[oracle@host01 18c]$ cd dbs
[oracle@host01 dbs]$ ls *.ora
spfileorcl.ora spfile.ora initorcl.ora  init.ora  

如果在启动的时候没有指定pfile,则会按spfile的先后顺序来执行

在初始参数文件后
有些参数可以在启动后运行时可更改
有些部分未写到spfile持续到实例停止为止,部分写到spfile会永久性更改待下次启动会被读取–静态参数

select name,value from v s p p a r a m e t e r o r d e r b y n a m e ; 因 为 s p f i l e 为 二 进 制 , s p f i l e 可 以 如 上 方 法 查 看 内 容 。 共 437 行 , s e l e c t n a m e , v a l u e f r o m v spparameter order by name; 因为spfile为二进制,spfile可以如上方法查看内容。 共437行, select name,value from v spparameterorderbyname;spfilespfile437selectname,valuefromvspparameter where value is not NULL order by name
非NULL是21行
SELECT isspecified, COUNT(*) FROM v$spparameter GROUP BY isspecified;
TRUE 21
FALSE 416

select name,value from v$parameter order by name;
当前实例中生效的参数值
共433行,
SELECT name,value from v$parameter where isbasic='TRUE' and value is not null order by name
共23行
SELECT isbasic, COUNT(*) FROM v$parameter where value is not null GROUP BY isbasic
TRUE	23
FALSE	300

v p a r a m e t e r 是 当 前 生 效 的 参 数 值 23 和 上 面 的 v parameter是当前生效的参数值23和上面的v parameter23vspparameter默认只spfile.ora文件不同21,因为可能被修改过

看哪些参数被实例调整过
select s.name,s.value
from v s p p a r a m e t e r s j o i n v spparameter s join v spparametersjoinvparameter p on s.name=p.name
where upper(s.value)<>upper(p.value) order by name
control_files /u01/app/oracle/oradata/ORCL/control01.ctl
control_files /u01/app/oracle/fast_recovery_area/ORCL/control02.ctl

除了初始二进制文件是一行行的
select name,value from v$spparameter where name='control_files'
control_files	/u01/app/oracle/oradata/ORCL/control01.ctl
control_files	/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl
而当前实例所用参数是只有一行
select name,value from v$parameter where name='control_files'
control_files	/u01/app/oracle/oradata/ORCL/control01.ctl, /u01/app/oracle/fast_recovery_area/ORCL/control02.ctl

目前只有
sga_max_size 8589934592
sga_max_size 570425344
说明sga_max_size在启动后有被调整过变小了。。。

show sga
Total System Global Area 570422456 bytes

怎么看哪些参数能在启动后能被修改呢,可用DB EM Express看是否是dynamic是就可以。
alter system set sga_max_size=570425344 scope=spfile;(静态参数,修改后需重启服务来生效)
shutdown immediate
startup
这个过程不需要再次做lsnrctl start listener服务,sql developer可以重新连接下即可。
再次看spfile
select name,value from v$spparameter where name=‘sga_max_size’;
sga_max_size 570425344

ALTER SYSTEM SET = SCOPE=MEMORY(动态即刻生效) | SPFILE(静态重启生效) | BOTH(即刻重启都生效)
不能用MEMORY的就不是动态参数

ALTER DATABASE对数据文件,控制文件,以及日志文件等文件的指向修改
ALTER SYSTEM 对所有的session都生效
ALTER SESSION 用户自己的session

把初始动态参数文件转换为静态参数文件,并用静态参数文件启动
SQL> create pfile=’/tmp/pfile’ from spfile;
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile=’/tmp/pfile’;
ORACLE instance started.

Total System Global Area 570422456 bytes
Fixed Size 8660152 bytes
Variable Size 297795584 bytes
Database Buffers 260046848 bytes
Redo Buffers 3919872 bytes
Database mounted.
Database opened.

SQL> show parameter spfile;

NAME TYPE VALUE
spfile string 没值说明不是spfile启动而是pfile启动

SQL> !cat /tmp/pfile
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=327155712
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base=’/u01/app/oracle’#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=192937984
orcl.__sga_target=570425344
orcl.__shared_io_pool_size=25165824
orcl.__shared_pool_size=192937984
orcl.__streams_pool_size=0
*.audit_file_dest=’/u01/app/oracle/admin/orcl/adump’
*.audit_trail=‘db’
*.compatible=‘18.0.0’
*.control_files=’/u01/app/oracle/oradata/ORCL/control01.ctl’,’/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl’
*.db_block_size=8192
*.db_name=‘orcl’
*.db_recovery_file_dest=’/u01/app/oracle/fast_recovery_area/ORCL’
*.db_recovery_file_dest_size=8106m
*.diagnostic_dest=’/u01/app/oracle’
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=orclXDB)’
*.nls_language=‘SIMPLIFIED CHINESE’
*.nls_territory=‘CHINA’
*.open_cursors=300
*.pga_aggregate_target=182m
*.processes=300
*.remote_login_passwordfile=‘EXCLUSIVE’
*.sga_max_size=570425344
*.sga_target=544m
*.undo_management=‘AUTO’
*.undo_tablespace=‘UNDOTBS1’

因为log_buffer不是在线调整的参数
只能用Alter system set log_buffer=32M scope=spfile
或者我们静态的init.ora,文本文件后面加一行如log_buffer=32m
然后用startup pfile=init.ora,后启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值