Oracle 通过ALTER SYSTEM语句修改数据库参数,其语法:

ALTER SYSTEM SET <parameter_name>=<value> scope=[ memory | spfile | both ] [sid=<sid_name>]

SCOPE表示应用的范围,分成三种

memeory:只在当前实例中修改生效,重启后失效(内存中)

spfile:只在服务参数文件中修改,不重启不生效(物理文件中)

both:在内存和物理文件中同时修改,立即生效且永久保存修改之。

在RAC环境中需要指定SID来指明需要修改的实例名称。

修改某个系统参数并查看该语句实际的执行效果

范例:

SQL> alter system set sql_trace=true;
System altered.
SQL> alter database open;
Database altered.
SQL> alter system set db_cache_advice=off scope=memory;
System altered.
SQL> show parameter db_cache_advice
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_cache_advice                      string                            OFF

Warning: Switching off db_cache_advice with sga_target on is not recommended
ALTER SYSTEM SET db_cache_advice='OFF' SCOPE=MEMORY;

SQL ID: aqnw1wvv45uud
Plan Hash: 0
alter system set db_cache_advice=off scope=memory
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0
Misses in library cache during parse: 0
Parsing user id: SYS

重启数据库后观察该参数被自动还原

SQL> show parameter db_cache_advice
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_cache_advice                      string                            ON

继续修改该参数,并且应用范围修改为spfile,观察发现当前实例下并未生效。

SQL> alter system set db_cache_advice=off scope=spfile;
System altered.
SQL> show parameter db_cache_advice
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_cache_advice                      string                            ON
SQL> startup force
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size                  2213936 bytes
Variable Size            3758098384 bytes
Database Buffers         2885681152 bytes
Redo Buffers               34922496 bytes
Database mounted.
Database opened.
SQL> show parameter db_cache_advice
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_cache_advice                      string                            OFF

可以看到该参数值重启后发生改变,另上面出现一个ORA报错,说死过期和被弃用的参数,日志提示

No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)

SQL> alter system set replication_dependency_tracking=false scope=spfile;
System altered.
SQL> col name for a35
SQL> col value for a15
SQL> set line 300
SQL> select name,value from v$spparameter where name='replication_dependency_tracking';
NAME                                VALUE
----------------------------------- ---------------
replication_dependency_tracking     FALSE

视乎不是这个参数导致的,查看网上说是log_archive_start参数,在10G以后数据库通过alter database archivelog自动开启归档进程,而弃用该参数。

SQL> col name for a30
SQL> col value for a30
SQL> select name,value,isdeprecated from v$parameter where name like '%log_archive_start';
NAME                           VALUE                          ISDEPRECATED
------------------------------ ------------------------------ ---------------
log_archive_start              FALSE                          TRUE
SQL> startup force
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
SQL> alter system reset log_archive_start scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.SQL> alter database archivelog;

修改后发现不对,思考了下该错误是我在开始SQL_TRACE后发生的。那么我们先看看当前有哪些参数是被弃用的

SQL> select name, value from v$parameter where isdeprecated='TRUE';
NAME                                VALUE
----------------------------------- ---------------
......
commit_write
sql_trace                           TRUE
SQL> alter system set sql_trace=false scope=both;
System altered.
SQL> startup force
SQL> alter system reset sql_trace scope=spfile;
SQL> shutdown immediate
SQL> startup

好了报错问题解决了。同时实验结束。

另外如果错误的修改了spfile,可以在关闭服务的情况下,可以修改pfile中的参数,在通过pfile生成spfile文件:

SQL> startup nomount pfile='/DBBK/oracle/product/11.2.0.1.0/dbs/initorcl.ora'
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size                  2213936 bytes
Variable Size            3758098384 bytes
Database Buffers         2885681152 bytes
Redo Buffers               34922496 bytes
SQL> show parameter pfile
NAME                            TYPE                               VALUE
------------------------------- -------------------------------- ------------------------------
spfile                               string
SQL> create spfile from pfile;
File created.
SQL> create pfile from spfile;
File created.

spfile之前的博客中也提到过时一个二进制文件,因此尽量不要用工具直接编辑该文件,以免照成破坏导致无法启用数据库的状况。

上面范例中我还提到一个重置系统参数值得命令:

alter system reset <parameter> scope=[ memory | spfile | both ] sid=< sid_name | * >
该命令通常用于修改RAC环境中,也可以在单实例中使用,其目的是从spfile中去除某个参数值
SQL> startup mount pfile='/DBBK/oracle/product/11.2.0.1.0/dbs/initorcl.ora'
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size                  2213936 bytes
Variable Size            3758098384 bytes
Database Buffers         2885681152 bytes
Redo Buffers               34922496 bytes
Database mounted.

启动后有两种方式确认是否读取的pfile文件参数,查询v$spparameter视图确认服务参数值,或者用show parameter命令。实际上show parameter命令也是在查该视图。之前的博客已展示过show parameter 实际调用的语句

SQL> select count(*) from v$spparameter where value is not null;COUNT(*)
----------0
SQL> show parameter spfile
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
spfile                               string
其他方法,通过ISSPECIFIED(表示是否被SPFILE引用的参数)字段判断
SQL> select decode(count(*),1,'spfile','pfile') USE from v$spparameter where isspecified='TRUE';
--下面的语句,如果查询TRUE为空也表明使用的是pfile文件
select isspecified,count(*) from v$spparameter group by isspecified;

如果使用的是默认spfile启动的结果

SQL> select count(*) from v$spparameter where value is not null;COUNT(*)
----------27
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/oracle/product/11.2.0.3.0/dbs/spfilesss.ora

转载于:https://blog.51cto.com/onlinekof2001/1608268

Oracle 修改数据库基本参数相关推荐

  1. 修改数据库参数oracle,Oracle 修改数据库基本参数

    Oracle 通过ALTER SYSTEM语句修改数据库参数,其语法: ALTER SYSTEM SET = scope=[ memory | spfile | both ] [sid=] SCOPE ...

  2. 如何修改数据库名字oracle,Oracle修改数据库名字详细解释

    Oracle 修改数据库名字详细解释,一步一步教你改oracle数据库的数据库名. 这两天一朋友问如何更改数据库名,于是做个测试,简单 Oracle 修改数据库名字详细解释,一步一步教你改oracle ...

  3. oracle修改数据文件存储位置,oracle 修改数据库文件位置

    Oracle 体系结构 Oracle 服务器 如图所示:由oracle实例(INSTANCE)和数据库(database)组成. 1) Instance 实例用于管理和调用数据库,是由oracle系统 ...

  4. Oracle修改数据库为非归档模式

    操作步骤如下: 步骤 1 以oracle用户登录服务器,执行以下命令进入SQLPLUS. oracle@smgwrpt:~> sqlplus "/as sysdba" 步骤 ...

  5. oracle修改数据库字符集

    1.修改数据库字符集,如果登录的客户端与服务器不在同一服务器,则建议两边字符集保持一致. 查看客户端字符集: select * from v$nls_parameters NLS_LANGUAGE # ...

  6. Oracle修改表存储参数,Oracle存储结构之参数文件

    Oracle的参数文件非常之多,但最重要的当属数据库参数文件.而数据库参数文件有pfile和spfile两类.pfile需手动修改,是文本文件 Oracle的参数文件非常之多,但最重要的当属数据库参数 ...

  7. Oracle修改数据库db_name

    1 记录当前数据库dbid和name select dbid,name from v$database; 2 修改dbname shutdown immediate; startup mount; - ...

  8. oracle修改数据库国际字符集,Oracle修改数据库字符集

    1.(Window:)cmd下输入set ORACLE_SID=你想进入的数据库的那个sid (Linux:)切换到oracle用户:export  ORACLE_SID=你想进入的数据库的那个sid ...

  9. 修改数据库单参数对应的值 前端+php

    扣扣技术交流群:581478349 修改前的数据库 修改时的值 修改后 前端代码: <!DOCTYPE html> <html lang="en">< ...

最新文章

  1. 手动删除EXCHANGE2010
  2. 二十四、深入Python多进程multiprocessing模块
  3. Python2 常见问题
  4. 服务器主板北桥芯片组有哪些,主板芯片组_目前的主板芯片组都有哪些?
  5. Android - Glide4.4.0使用
  6. 使用NGINX Plus API动态配置upstream
  7. 10右键闪退到桌面_windows7多用户远程桌面如何设置
  8. linux timerfd系列函数总结:timerfd.h
  9. linux c++ utf8 gbk,Linux C++ gbk转为utf-8
  10. Git/mercurial...版本控制分支曲线图解析
  11. 黑马程序员-java学习第一天
  12. linux安装pcre错误,安装PCRE时出错
  13. 小型软件企业组织结构
  14. 小白程序员应避免的错误
  15. 「九章」刷屏的背后:万字长文解析,量子计算机和电子计算机各有何优劣?
  16. 计算机junit测试类,复利计算器4.0之再遇JUnit
  17. arch Linux 作妖记录(U盘启动)
  18. 我的读书笔记 - 《暗时间》
  19. Ubuntu系统下安装SQLite Browser教程
  20. 数学课本上的9大变态!

热门文章

  1. C/C++:Windows编程—代码实现IE保护模式的关闭和开启
  2. Wycieczki 线性代数
  3. Python-体育竞技模拟
  4. php中的Register Globals
  5. 使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
  6. ComponentOne FlexGrid for WinForms 中文版快速入门(4)--设置单元格格式
  7. LwIP之套接字接口
  8. linux主机添加discuz伪静态规则,(总结)Nginx下Discuz 7.2伪静态规则设置
  9. 查看网页HTML源代码违法,属于“黑客”行为?
  10. 花了一个月时间梳理了一下公司的微服务核心架构,原来也不是太难...