參數文件:
·記錄非默認值的初始化參數(又稱特徵參數),約束實例的行爲
初始化參數:控制實例的屬性行爲的開關
sys@ORCL>desc v$parameter
Name Null? Type
------------------ -------------------
NUM #參數ID NUMBER
NAME #參數名字 VARCHAR2(80) TYPE #參數數據類型 NUMBER
VALUE #參數狀態值 VARCHAR2(4000)
DISPLAY_VALUE #顯示參數值是否是一個友好格式,如1024B顯示1K VARCHAR2(4000)
ISDEFAULT #是否是默認值 VARCHAR2(9)
ISSES_MODIFIABLE #顯示參數是否可以改變,使用alter session VARCHAR2(5)
ISSYS_MODIFIABLE #顯示參數是否可以改變,使用alter system VARCHAR2(90)
IMMEDIATE——參數可以改變了ALTER SYSTEM無論使用何種類型的參數文件啓動實例。 更改立即生效。
DEFERRED——參數可以改變了ALTER SYSTEM無論使用何種類型的參數文件啓動實例。 在以後的會議更改生效。
FALSE——參數不能改變ALTER SYSTEM除非服務器參數文件是用來啓動實例。 更改生效在隨後的實例。
ISINSTANCE_MODIFIABLE #集羣參數 VARCHAR2(5)
ISMODIFIED #表示實列啓動後,參數是否被修改 VARCHAR2(10)
MODIFIED——參數已經被修改ALTER SESSION
SYSTEM_MOD——參數已經被修改ALTER SYSTEM(這導致所有當前登錄會話的值被修改)
FALSE——參數實例啓動後沒有被修改
ISADJUSTED #oracle調整輸入的值是否更合適的值 VARCHAR2(5)
ISDEPRECATED #參數是否已經棄用 VARCHAR2(5)
ISBASIC #參數是否爲基本參數 VARCHAR2(5)
DESCRIPTION #參數的描述 VARCHAR2(255)
UPDATE_COMMENT #參數的評論和最近更新 VARCHAR2(255)
#參數的散列值名稱 NUMBER
查看所有初始化參數
select name,value from v$parameter;
查看非默認值的初始化參數
select NAME,VALUE from v$parameter where ISDEFAULT<>'TRUE';
動態參數:內存值可以被修改
select NAME,ISSYS_MODIFIABLE from v$parameter where ISSYS_MODIFIABLE<>'FALSE' order by 2 desc;
ISSYS_MODIFIABLE<>'FALSE' --> alter system set 參數=值 scope(範圍)=memory/spfile
IMMEDIATE:修改之後全局生效
DEFERRED:修改之後對已持續連接無效,對新啓動的連接生效!
靜態參數:內存值中的當前值不可以修改
select NAME,ISSYS_MODIFIABLE from v$parameter where ISSYS_MODIFIABLE='FALSE';
*參數當前在內存中的值纔是有效的值!
====================================================================
參數文件的種類:
pfile :parameter file
·是ascii格式
·可以放在服務器端也可以放在客戶端
·只能使用文本編輯器修改
·只能放在文件系統下
·副本多,一致性不好
spfile:server parameter file
·是二進制文件
·只能放在服務器端
·只能使用alter system set ... 命令來直接修改
·不受存儲格式限制
·修改方便,一致性好
spfile命名規則:
spfile<$ORACLE_SID>.ora $ORACLE_SID值相同能使用
spfile.ora 任何實例都能使用
pfile命名規則:
init<$ORACLE_SID>.ora 只用$ORACLE_SID值相同才能使用
參數文件存放的默認路徑:
$ORACLE_HOME/dbs/
基本查看
查看參數內存值
show parameter open_cursors
查看參數在spfile中的值
show spparameter open_cursors
查看丟棄的參數
select NAME from v$parameter where ISDEPRECATED='TRUE';
基本修改
*使用spfile啓動的實例,如何修改動態參數的內存值
alter system set open_cursors=400 scope=memory;
*使用spfile啓動的實例,如何修改靜態參數在參數文件中的值
alter system set open_cursors=500 scope=spfile;
*使用spfile啓動的實例,如何同時修改動態參數的內存值和參數文件中的值
alter system set open_cursors=300 scope=both;
alter system set open_cursors=300;
*使用spfile啓動的實例,如何修改靜態參數在參數文件中的值,需要重新啓動實例,
參數文件中的新值纔會被讀取
alter system set memory_max_target=900m scope=spfile;
*從spfile中挖掉一個參數
alter system reset db_writer_processes scope=spfile sid='*';
創建pfile:
create pfile from spfile;
create pfile from memory;
create spfile from pfile;
思考問題
*使用pfile啓動的實例,如何修改動態參數的內存值
*如果使用pfile啓動實例,alter system set命令沒有scope選項!只能修改內存!
*使用pfile啓動的實例,如何修改動態參數在參數文件中的值
使用vi直接修改參數文件!
*使用pfile啓動的實例,如何同時修改動態參數的內存值和參數文件中的值
需要分兩步實現:先使用alter system set修改內存值,再使用vi修改參數文件!
*使用pfile啓動的實例,如何修改靜態參數在參數文件中的值,需要重新啓動實例,
參數文件中的新值纔會被讀取
使用vi直接修改參數文件!
修改pfile的路徑:
startup pfile='/home/oracle/orcl.ora'spfileorcl.ora
修改spfile的路徑:
create spfile='/u01/app/oracle/1.ora' from pfile='/home/oracle/orcl.ora';
vi /home/oracle/orcl.ora
---------------------------------
spfile='/u01/app/oracle/1.ora'
---------------------------------
startup pfile='/home/oracle/orcl.ora'
========================================================================================
查看數據庫啓動順序
lsof | grep control01.ctl/system01.dbf/redo01.log
shut immediate
startup nomount
alter database mount
alter database open
查看警告日誌,查找parameter參數修改記錄。
show parameter background 中background_dump_dest的值
cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace
vi alert_orcl.log
Parameter 非default值的(又可稱爲特徵參數)
Select name,value from v$parameter where isdefault <>’TRUE’;
NAME VALUE
------------------------------ ------------------------------
所有進程的數量最大值
processes 150
內存指標
memory_target 780140544
控制文件的位置
control_files /u01/app/oracle/oradata/sales/
control01.ctl, /u01/app/oracle
/fast_recovery_area/sales/cont
rol02.ctl
數據塊的大小
db_block_size 8192
兼容版本
compatible 11.2.0.4.0
數據庫恢復(閃回)區
db_recovery_file_dest /u01/app/oracle/fast_recovery_
area
數據庫恢復(閃回)區空間大小
db_recovery_file_dest_size 4039114752
Undo表空間位置
undo_tablespace UNDOTBS1
遠端登錄password文件
remote_login_passwordfile EXCLUSIVE
數據庫域名
db_domain
網絡服務
dispatchers (PROTOCOL=TCP) (SERVICE=salesX
DB)
審計信息
audit_file_dest /u01/app/oracle/admin/sales/ad
ump
登錄審計記錄
audit_trail DB
數據庫的名稱
db_name sales
打開遊標的數量
open_cursors 300
跟蹤文件的位置
diagnostic_dest /u01/app/oracle
創建pfile:
create pfile from memory;
創建pfile啓動一個新實例demo:
export ORACLE_SID=demo
vi $ORACLE_HOME/dbs/initdemo.ora
--------------------------------
db_name=demo
--------------------------------
sqlplus / as sysdba
SYS> create spfile from pfile;
SYS> startup
將參數文件寫入字符設備:
製作二進制文件
dd if=/dev/zero of=/u01/app/oracle/disk bs=1M count=20
二進制文件變塊設備
losetup /dev/loop1 /u01/app/oracle/disk
塊設備變字符設備
raw /dev/raw/raw1 /dev/loop1
修改屬組
chown oracle. /dev/raw/raw1
將spfile寫入字符設備
create spfile='/dev/raw/raw1' from pfile;
將spfile參數指向字符設備
vi $ORACLE_HOME/dbs/initdemo.ora
--------------------------------
spfile='/dev/raw/raw1'
--------------------------------
啓動數據庫
startup
查看spfile
SYS> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- --------------------------
spfile string /dev/raw/raw1
使用ifile集中管理公用參數
vi initdemo.ora
----------------------
#私有參數
db_name='demo'
#公有參數
ifile='/u01/app/oracle/product/11.2.0/db_1/dbs/1.ora'
----------------------
vi inittest.ora
----------------------
#私有參數
db_name='test'
#公有參數
ifile='/u01/app/oracle/product/11.2.0/db_1/dbs/1.ora'
----------------------
vi 1.ora
----------------------
sga_target=800m
open_cursors=500
----------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用spfile.ora啓動多個實例,通過ORACLE_SID選擇參數值
vi /home/oracle/2.ora
-----------------------
demo.db_name='demo'
demo.memory_target=800m
test.db_name='test'
test.memory_target=700m
*.open_cursors=500
-----------------------
create spfile='/u01/app/oracle/product/11.2.0/db_1/dbs/spfile.ora' from pfile='/home/oracle/2.ora';
alter system set memory_target=700m scope=spfile sid='test';
alter system set memory_target=800m scope=spfile sid='demo';
###########################################################################
=========================================================================================
由於本人能力有限,文章若有書寫,表達錯誤請指正...