官术网_书友最值得收藏!

3.1 設置初始化參數

初始化參數用于設置實例和數據庫的特征。通過設置初始化參數,不僅可以定義例程和數據庫特征,還可以定義許多其他特征和限制。例如,通過使用初始化參數,可以定義SGA尺寸、設置數據庫名稱、定義用戶和進程限制、定義控制文件、跟蹤文件和警告日志的位置等。在Oracle數據庫中,初始化參數是存儲在參數文件中的,啟動實例和打開數據庫時都必須提供相應的參數文件。

3.1.1 常用的初始化參數

Oracle提供了200多個初始化參數,并且多數初始化參數都具有默認值。使用Oracle數據庫時,只需要根據特定需求設置相應的參數即可,并且多數參數都可以保留默認值。其中,Oracle數據庫的一些常用初始化參數的具體描述,如下表所示。

3.1.2 初始化參數文件

傳統上,Oracle在啟動實例時將讀取本地的一個文本文件,并利用從中獲取的初始化參數對實例和數據庫進行設置,這個文本文件稱為“初始化參數文件”(簡稱為PFILE)。如果要對初始化參數進行修改,必須先關閉數據庫,然后在初始化參數文件中進行編輯,并重新啟動數據庫使修改生效。

從Oracle 8i開始,許多初始化參數都成了動態參數,也就是說可以在數據庫運行期間利用ALTER SYSTEM(或ALTER SESSION)語句來修改初始化參數,并且不需要重新啟動數據庫,修改后即可立即生效。但是使用ALTER SYSTEM語句對初始化參數進行的修改并不能保存在初始化參數文件中。因此,在下一次啟動數據庫時,Oracle依然會使用初始化參數文件中的參數對實例進行設置。如果要永久性地修改某個初始化參數,數據庫管理員必須通過手動方式對初始化參數文件進行編輯,這就為初始化參數的管理帶來了困難。

因此,從Oracle 9i開始提供了服務器端初始化參數文件(簡稱SPFILE)。服務器端初始化參數文件是一個二進制格式的文件,它始終存放在數據庫服務器端。這樣如果在數據庫的任何一個實例中使用ALTER SYSTEM語句對初始化參數進行修改,在默認情況下都會被永久地記錄在服務器端初始化參數文件中。這樣,當下一次啟動數據庫時,這些修改會自動繼續生效。因此,不必對初始化參數文件進行手動編輯,就能保證在數據庫運行過程中對初始化參數的修改不會丟失。

提示:

服務器端初始化參數文件是一個二進制格式文件,盡管能打開它并查看其中的內容,但是任何用戶都不應當手工對其中的內容進行編輯,否則實例將無法啟動。

在啟動數據庫時必須提供一個初始化參數文件,因為在啟動數據庫時,它將按照如下順序尋找初始化參數文件。

① 首先檢查是否使用SPFILE參數,指定了服務器端初始化參數文件。

② 然后再檢查是否使用了PFILE參數,指定了文本初始化參數文件。

③ 如果沒有使用SPFILE參數和PFILE參數,則在默認位置尋找默認名稱的服務器端初始化參數文件。

④ 如果沒有找到默認服務器端初始化參數文件,則在默認位置尋找默認名稱的文本初始化參數文件。

3.1.3 創建初始化參數文件

如果當前實例正在使用SPFILE,那么使用ALTER SYSTEM命令將無法修改某些初始化參數,如DB_NAME。為了修改這些初始化參數,必須建立PFILE,并且手工修改該PFILE文件的相應參數。可以使用CREATE PFILE命令建立文本參數文件,其語法如下:

     create pfile [='pfile_name'] from spfile [='spfile_name']

其中,PFILE_NAME用于指定PFILE的文件全名;SPFILE_NAME用于指定SPFILE的文件全名,如果不指定PFILE文件名,則會在默認路徑下建立默認的PFILE;如果不指定SPFILE文件,則會使用當前實例正在使用的SPFILE文件。需要注意,只有特權用戶才能執行CREATE PFILE命令。

因為SPFILE易于管理,并且可以對其進行備份,所以Oracle建議使用SPFILE。使用PFILE修改了某些初始化參數后,為了將PFILE轉換為SPFILE,可以使用CREATE SPFILE命令建立服務器參數文件,語法如下。

     create spfile [='spfile_name'] from pfile [='pfile_name']

其中,SPFILE_NAME用于指定SPFILE文件全名;PFILE_NAME用于指定PFILE文件全名,如果不指定SPFILE文件名,則會在默認路徑下建立SPFILE;如果不指定PFILE文件名,則使用默認的PFILE文件。需要注意,只有特權用戶才能執行CREATE SPFILE命令。

提示:

在執行CREATE SPFILE命令時不需要啟動實例,如果已經啟動了實例,并且實例已經使用了一個服務器端初始化參數文件,則新建的服務器端初始化參數文件不能覆蓋正在使用的那個文件。

啟動實例時,既可以使用PFILE,也可以使用SPFILE。當實例處于運行狀態時,如果要確定實例使用的參數文件類型,首先應以特權用戶登錄,然后顯示初始化參數SPFILE的值。例如:

如果VALUE存在返回值,則表示實例正在使用SPFILE;如果VALUE沒有任何返回結果,則表示實例正在使用PFILE。

3.1.4 顯示和設置初始化參數文件

為了在SQL*Plus中顯示初始化參數,可以使用SHOW PARAMETER命令。該命令會顯示初始化參數的名稱、類型和參數值。

為了顯示所有初始化參數的位置,可以直接執行SHOW PARAMETER命令。例如:

SHOW PARAMETER命令也可以顯示特定的初始化參數。為了顯示特定初始化參數的名稱、類型和參數值,可以在SHOW PARAMETER命令后指定參數名。例如:

當使用SHOW PARAMETER命令顯示初始化參數信息時,只能顯示參數名、類型和參數值,為了取得初始化參數的詳細信息,應該查詢動態性能視圖V$PARAMETER。例如:

ISSES_MODIFIABLE用于標識初始化參數是否可以使用ALTER SESSION命令進行修改,當取值為TRUE時表示可以修改;取值為FALSE則表示不可以修改。iSSYS_MODIFIABLE用于標識初始化參數是否可以使用ALTER SYSTEM命令進行修改,取值IMMEDIATE時表示可以直接修改;取值為DEFERRED時表示需要使用帶有DEFERRED的選項進行修改;取值為FALSE時表示不能進行修改。ISMODIFIED用于標識該初始化參數是否已經被修改,取值為MODIFIED時表示使用ALTER SESSION進行了修改;SYSTEM_MOD表示使用ALTER SYSTEM命令進行了修改;FALSE表示未進行修改。

靜態參數是指只能通過修改參數文件而改變的初始化參數:動態參數是指在數據庫運行時可以使用ALTER SESSION或ALTER SYSTEM命令動態改變的初始化參數。下面的命令將顯示系統的靜態參數。

動態參數是指在數據庫運行過程中,可以動態修改的初始化參數。修改動態參數可以使用ALTER SESSION命令,也可以使用ALTER SYSTEM命令。這兩者之間的區別:ALTER SESSION是對會話的設置,會話結束后就失效了;ALTER SYSTEM修改的是數據庫系統的配置,是全局性質。

在使用ALTER SYSTEM語句時,可以在SET子句中通過SCOPE選項來設置ALTER SYSTEM語句的影響范圍。所謂“影響范圍”,也就是ALTER SYSTEM語句對參數的修改是僅對當前實例有效的,還是永久有效的。

SCOPE選項的取值如下:

※ scope=memory:對參數的修改僅記錄在內存中。對于動態初始化參數,更改將立即生效,并且由于修改不會記錄在服務器端初始化參數文件中,在下次啟動數據庫時,仍然會使用修改前的參數設置。對于靜態參數,則不能使用該選項。

※ scope=spfile:對參數的修改僅記錄在服務器端初始化參數文件中。該選項同時適用于動態參數與靜態參數。修改后的參數只有在下一次啟動數據庫時,更改后才會生效。

※ scope=both:對參數的修改將同時記錄在內存和服務器端初始化參數文件中。對于動態初始化參數,在更改后將立即生效,并且在下一次啟動數據庫時,將使用修改后的參數設置。對于靜態參數,則不能使用這個選項值。在執行ALTER SYSTEM命令時,Oracle默認將SCOPE選項設置為BOTH。

提示:

在修改靜態初始化參數時,只能將SCOPE選項設置為SPFILE。

在修改動態初始化參數時,還可以指定DEFERRED關鍵字,這樣對參數所做的修改將延遲到新的會話產生時才生效。如果數據庫沒有使用服務器端初始化參數文件,在ALTER SYSTEM語句中將SCOPE選項設置為SPFILE或BOTH將會產生錯誤。

例如,利用下面的語句,對動態初始化參數LOG_CHECKPOINT_INTERVAL進行修改,修改結果不僅在當前實例中有效,而且還將記錄在服務器端初始化參數文件中。

      SQL> alter system set log_checkpoint_interval=50;
      系統已更改。

如果要修改靜態參數,則必須將SCOPE選項設置為SPFILE。例如,修改靜態初始化參數DB_FILES。

主站蜘蛛池模板: 峡江县| 龙海市| 五常市| 吉林省| 抚松县| 陇川县| 舞阳县| 高碑店市| 宁陕县| 正阳县| 福泉市| 卢湾区| 确山县| 子长县| 民乐县| 正蓝旗| 临湘市| 贵南县| 横峰县| 新兴县| 南丹县| 大冶市| 蛟河市| 紫云| 平乡县| 东丽区| 海林市| 阿尔山市| 梨树县| 福贡县| 商河县| 历史| 宣化县| 蓝田县| 贵德县| 淮南市| 柳林县| 都江堰市| 兴国县| 班戈县| 萝北县|