Oracle中的參數文件是一個包含一系列參數以及參數對應值的操做系統文件。它們是在數據庫實例啓動時候加載的,決定了數據庫的物理 結構、內存、數據庫的限制及系統大量的默認值、數據庫的各類物理屬性、指定數據庫控制文件名和路徑等信息,是進行數據庫設計和性能調優的重要文件。java
這個是oracle9i以後映入的概念:sql
SPfile(Server Parameter File,服務器參數文件)是基於二進制格式的參數文件,含有數據庫及例程的參數和數值,但不能用文本編輯工具打開。能夠再sql命令裏面更改,或者二進制編寫.spfile 默認的名稱爲「spfile+例程名.ora」文件路徑:$ORACLE_HOME/dbs 以二進制文本形式存在.數據庫
動態修改參數的模式 緩存
alter system set parameter=Value scope={spfile|both|memory}
SPfile 三種模式:安全
scope=both 當即並永久生效,(默認模式)服務器
對參數的修改同時記錄在內存中和服務器端的初始化參數文件中。爲默認使用值。網絡
scope=spfile 下次啓動才能生效。多線程
對參數的修改僅記錄在服務器初始化參數文件中。該選項同時適用於動態與靜態的初始化參數。修改後的參數只有下一次啓動數據庫時更改纔會生效。oracle
scope=memory 當即生效但下次啓動時失效app
對參數的修改記錄在內存中,對於動態初始化參數,更改當即生效。修改並不會被記錄在服務器端的初始化參數中。下一次啓動數據庫時更改失效,不能用於靜態初始化參數。
初始化參數文件(Initialization Parameters Files),Oracle 9i以前,ORACLE一直採用pfile方式存儲初始化參數,pfile 默認的名稱爲「init+例程名.ora」文件路徑:$ORACLE_HOME/dbs,這是一個文本文件,可用查看內容
能夠用RMAN來備份spfile,可是不能備份pfile
減小了人爲的錯誤。spfile由服務器來管理,任何參數改變被接受前都會通過嚴格處理
消除了配置問題,若是遠程啓動oracle服務器,再也不須要一個本地的pfile
不能修改參數文件,二進制形式
裏面有動態參數,能夠在線修改,而不用重啓oracle;
能夠使用文本編輯器進行編輯
遠程拷貝,拖過來改配置就能繼續用
pfile文件能夠用文本編輯器打開手工配置、而spfile不行,只能經過SQL命令在線修改。
修改文件spfile支持在線修改,pfile只能從新啓動讀取
1、直接在默認路徑下查找spfileSID.ora --(spfile)
若是沒有再查找2
2、直接在默認路徑下查找spfile.ora
若是沒有再查找3
3、直接在默認路徑下查找initSID.ora --(pfile)
若是尚未 那就會報錯了
順序: spfileSID.ora----->spfile.ora------>initSID.ora
固然也有指定pfile啓動
startup pfile=$ORACLE_HOME/dbs/initSID.ora
查看spfile或者pfile的位置信息
1 SQL> SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile'; 2 3 NAME 4 -------------------------------------------------------------------------------- 5 VALUE 6 -------------------------------------------------------------------------------- 7 DISPLAY_VALUE 8 -------------------------------------------------------------------------------- 9 spfile 10 /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracle01.ora 11 /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracle01.ora
1 SQL> show parameter pfile 2 3 NAME TYPE VALUE 4 ------------------------------------ ----------- ------------------------------ 5 spfile string /u01/app/oracle/product/11.2.0 6 /db_1/dbs/spfileoracle01.ora
查看啓動數據庫的類型
1 select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE';
主庫: SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE'; DECODE ------ spfile 從庫: SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified ='TRUE'; DECODE ------ pfile
相互建立:
SQL> create pfile from spfile ; File created. SQL> 或者 SQL> create spfile from pfile ; File created. SQL>
格式:
CREATE SPFILE=’spfilename’ FROM PFILE=’pfilename’
scope=both: 當即生效
1 SQL> show parameter pga; 2 3 NAME TYPE VALUE 4 ------------------------------------ ----------- ------------------------------ 5 pga_aggregate_target big integer 798M 6 7 SQL> alter system set pga_aggregate_target = 900m scope=both; 8 System altered. 9 SQL> show parameter pga; 10 11 SQL> show parameter pga; 12 13 NAME TYPE VALUE 14 ------------------------------------ ----------- ------------------------------ 15 pga_aggregate_target big integer 900M
靜態文件的話就不行了:
報錯:
* ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
1 # Cache and I/O 高速緩存和 I/O 2 3 db_block_size=8192 指定數據塊大小爲8KB 4 db_cache_size=33554432 指定數據緩衝區爲32MB,該值越大,能夠減小對數據庫文件的I/O次數,提升效率 5 db_file_multiblock_read_count=16 6 7 8 # Cursors and Library Cache 遊標和庫高速緩存 9 10 open_cursors=300 指定一個會話一次能夠打開的遊標的最大數量爲300,應將該值設置得足夠高,這樣才能防止應用程序耗盡打開的遊標 11 12 13 # Database Identification 數據庫標識 14 15 db_domain="" 數據庫域名爲mynet,加上數據庫名稱db_name構成全局數據庫名稱 16 db_name=oracle01 數據庫名稱爲myoracle 17 18 19 # Diagnostics and Statistics 診斷和統計 20 21 background_dump_dest=/opt/oracle/admin/cicro/bdump 後臺進程跟蹤文件目錄 22 core_dump_dest=/opt/oracle/admin/cicro/cdump 核心轉儲跟蹤文件目錄 23 timed_statistics=TRUE 收集操做系統的計時信息,這些信息可被用來優化數據庫和 SQL 語句 24 user_dump_dest=/opt/oracle/admin/cicro/udump 用戶進程跟蹤文件目錄 25 26 27 # File Configuration 28 control_files=("/opt/oracle/oradata/cicro/control01.ctl", "/opt/oracle/oradata/cicro/control02.ctl", 29 30 "/opt/oracle/oradata/cicro/control03.ctl") 指定控制文件的路徑及文件名 31 32 33 # Instance Identification 網絡註冊 34 35 instance_name=test 例程名稱爲test 36 37 38 # Job Queues 39 job_queue_processes=10 40 41 42 # MTS 多線程服務器配置標識,在Oracle 9i裏稱爲共享服務器配置 43 44 dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)" 多線程服務器配置 45 46 # Miscellaneous 其餘 47 48 aq_tm_processes=1 49 compatible=9.2.0.0.0 兼容版本9.2.0 50 51 52 # Optimizer 53 54 hash_join_enabled=TRUE 55 query_rewrite_enabled=FALSE 56 star_transformation_enabled=FALSE 57 db_name=cicro 58 59 60 61 # Pools 池 62 63 java_pool_size=83886080 指定Java存儲池的大小爲32MB,用於存儲 Java 的方法、類定義和Java對象。 64 large_pool_size=16777216 指定大型池的大小爲1MB, 用於共享服務器的會話內存、並行執行的消息緩衝區以及RMAN備份和恢復的磁盤 I/O 緩衝區。 65 shared_pool_size=83886080 指定共享池的大小爲32MB,用於存儲共享遊標、存儲的過程、控制結構和並行執行消息緩衝區等對象。較大的值能改善多用戶系統的性能. 66 67 # Processes and Sessions 進程和會話 68 69 processes=150 指定可同時鏈接到一個Oracle Server上的操做系統用戶進程的最大數量爲150 70 71 # Redo Log and Recovery 重作日誌和恢復 72 73 fast_start_mttr_target=300 指定從單個數據庫例程崩潰中恢復所需的時間爲300秒 74 75 # Security and Auditing 安全與驗證 76 77 remote_login_passwordfile=EXCLUSIVE 指定操做系統或口令文件是否具備檢查用戶口令的權限。設置爲EXCLUSIVE, 將使用數據庫的口令文件對每一個具備權限的用戶進. 78 79 80 # Sort, Hash Joins, Bitmap Indexes 排序, 散列聯接, 位圖索引 81 82 pga_aggregate_target=25165824 83 sort_area_size=524288 指定排序區使用的最大內存量爲512KB。排序完成後, 各行將返回, 而且內存將釋放。增大該值能夠提升大型排序的效率。 84 85 86 # System Managed Undo and Rollback Segments 系統管理的撤消和回退段 87 88 undo_management=AUTO 指定系統使用的撤消空間管理方式爲SMU 方式,在SMU方式下, 撤消空間會像撤消表空間同樣在外部分配. 89 undo_retention=10800 90 undo_tablespace=UNDOTBS1 指定回滾表空間爲UNDOTBS