Oracle 參數修改小結

來源:互聯網
上載者:User

v$parameter

Oracle參數的修改比較複雜,有些參數是可以在session層級修改,有些則必須在system層級修改,有些參數修改後馬上生效(不需要重啟),有些參數則必須重啟才會生效,那麼我們如何知道這些資訊呢?可以查詢動態視圖v$parameter中的兩列(如下所示)得知:

1. ISSES_MODIFIABLE

指示參數是否可以在session層級( Alter session set )修改(True or False)

2. ISSYS_MODIFIABLE

指示參數是否可以在system層級(Alter system set)修改,有如下3個取值:

1)IMMEDIATE - 立即生效

2)DEFERRED - 下個session生效

3)False - 必須得重啟才會生效(必須指定Scope=spfile)

我們來看下面的例子:

SYS@TEST16>select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name in ('workarea_size_policy','audit_file_dest','sga_target','sga_max_size');

NAME                                                                            ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
sga_max_size                                                                    FALSE          FALSE
sga_target                                                                      FALSE          IMMEDIATE
audit_file_dest                                                                  FALSE          DEFERRED
workarea_size_policy                                                            TRUE            IMMEDIATE

其中只有workarea_size_policy可以在session層級修改,其它3個都只能在system層級修改。 

sga_target修改後立即生效,audit_file_dest修改後下一個session生效,sga_max_size修改後必須重啟才會生效(spfile)。 

ALTER SESSION/SYSTEM SET 

alter session set的文法如下:

alter session set parameter_name = parameter_value;

如上所述,並不是所有的參數都可以在session層級修改,只有isses_modifiable為true才可以。

alter system set的文法如下:

 

其中:

Comment(可選):修改時可附加說明;

Deferred(可選):如果v$parameter的issys_modifiable為deferred,修改時必須加上deferred選項,表示下個session才生效。

Scope(預設:both):有如下3個取值:

-- memory 表示只在記憶體中修改,執行個體重啟後失效;

-- spfile表示只在spfile中修改,只有當重啟重新讀取spfile之後才生效;

-- both表示同時在memory和spfile中修改(推薦)

Sid (預設:*):該選項針對RAC,預設為*,表示RAC的所有執行個體同時修改,如果不想全部修改,用Sid指定Oracle執行個體即可。

一個例子

今天,開發人員抱怨Oracle資料庫時常串連不上,報如下錯誤:

ORA-12519, TNS:no appropriate service handler found該錯誤是因為Oracle參數processes設定過小,需要調整它,processes當前的值為:

SYS@TEST16>show parameter processes;
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
processes                            integer    100

通過查詢v$parameter(如下所示)可知,該參數是系統層級的,且必須重啟才會生效:

select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='process';
NAME                                                                            ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
processes                                                                        FALSE          FALSE

通過alter system set修改:

SYS@TEST16>alter system set processes=1500 comment='change from 100 to 1500' scope=spfile;

System altered.

注意:這裡一定要加上scope=spfile,否則會報如下錯誤,因為issys_modifiable=false

ORA-02095: specified initialization parameter cannot be modified

推薦閱讀:

Oracle基礎教程之通過RMAN複製資料庫

RMAN備份策略制定參考內容

RMAN備份學習筆記

OracleDatabase Backup加密 RMAN加密

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.