上海网站建设报价方案,2022年新项目加盟代理,网站如何做聚合页面,sem推广优化1、参数文件的作用
参数文件用于存放实例所需要的初始化参数#xff0c;因为多数初始化参数都具有默认值#xff0c;所以参数文件实际存放了非默认的初始化参数。
2、参数文件类型
1#xff09;服务端参数文件#xff0c;又称为 spfile 二进制的文件#xff0c;命名规则…1、参数文件的作用
参数文件用于存放实例所需要的初始化参数因为多数初始化参数都具有默认值所以参数文件实际存放了非默认的初始化参数。
2、参数文件类型
1服务端参数文件又称为 spfile 二进制的文件命名规则为spfilesid.ora 如 spfileorcl.ora
2静态参数文件又称为 pfile 文本文件命名规则为initsid.ora 如 Iinitorcl.ora
注意事项 由于服务端参数文件是二进制的文件使用vim打开看到的是乱乱的内容此时切记不可使用:wq保存退出否则服务端参数文件会损坏。
3、参数文件的位置
SQL show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/19.3.0/db_1/dbs/spfileorcl.ora进入 /u01/app/oracle/product/19.3.0/db_1/dbs/路径查看当前有哪些参数文件
# cd /u01/app/oracle/product/19.3.0/db_1/dbs/
# ls
hc_mydb.dat hc_orcl.dat init.ora lkORCL orapworcl spfileorcl.ora
hc_oradb.dat hc_prod.dat lkMYDB lkPROD orapwprod spfileprod.ora有两个服务端参数文件该服务器安装了两个数据库spfileorcl.ora spfileprod.ora没有静态参数文件
4.创建参数文件
4.1 创建静态参数文件 1orcl数据库在默认路径下创建静态参数文件
SYSorcl(CDB$ROOT) create pfile from spfile;File created.或
SYSorcl(CDB$ROOT) create pfile from memory;File created.执行上述命令之一后再次查看可看到新建的静态参数文件 initorcl.ora
# cd /u01/app/oracle/product/19.3.0/db_1/dbs/
# ls
hc_mydb.dat hc_orcl.dat init.ora lkMYDB lkPROD orapwprod spfileprod.ora
hc_oradb.dat hc_prod.dat initorcl.ora lkORCL orapworcl spfileorcl.ora--查看服务端参数文件格式二进制
# file spfileorcl.ora
spfileorcl.ora: data--查看静态参数文件格式文本文件
# file initorcl.ora
initorcl.ora: ASCII text2在指定路径下创建静态参数文件
SQL create pfile/home/oracle/init.ora from spfile;
或
SQL create pfile/home/oracle/init.ora from memory;4.2 创建服务端参数文件 1在默认路径下创建服务端参数文件
SYSorcl(CDB$ROOT) create spfile from pfile;File created.注意事项 若当前数据库正在使用服务端参数文件则无法在默认路径创建服务端参数文件。
SYSorcl(CDB$ROOT) create spfile from pfile;
create spfile from pfile
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance2在指定路径下创建服务端参数文件
SQL create spfile/home/oracle/spfile.ora from pfile;
SQL create spfile/home/oracle/spfile_memory.ora from memory;5、参数文件使用顺序
优先使用 spfile当 spfile 不存在或出错使用 pfile当 pfile 也不存在或出错数据库不能正常启动。
6、如何判断数据库使用的是 SPFILE 还是 PFILE 呢
SYSorcl(CDB$ROOT) show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/19.3.0/db_1/dbs/spfileorcl.ora这里通过VALUE的值可以知道使用的是服务器参数文件spfileorcl.ora若VALUE值为空说明使用的是静态参数文件。
7、参数查看
1方法一使用show命令
--查看所有参数
SQL show parameter --查询含有特定关键字的参数
----如查看含有undo关键字的参数
SQL show parameter undoNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1--查看指定参数
SQL show parameter 参数名
----如查看参数undo_tablespace
SQL show parameter undo_tablespaceNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
2方法二查询数据字典v$parameter
--查看所有参数
SQL select NAME,VALUE from v$parameter;--查看含有特定关键字的参数
----如查看含有undo关键字的参数
SQL select NAME,VALUE from v$parameter where NAME like %undo%;--查看指定参数
----如查看参数undo_tablespace
SQL select NAME,VALUE from v$parameter where NAME undo_tablespace;8、参数修改
1alter session 当前会话生效新开的会话或重启数据库参数值不生效。 例
SQL alter session set sql_tracetrue;2alter system 当前会话生效新开的会话或重启数据库会参数值都生效。 例
SQL alter system set sql_tracetrue;3ALTER SYSTEM ……… deferred 当前会话不生效新开的会话或重启数据库会参数值生效。 例:
SQL alter system set sort_area_size75536 deferred;注:当前窗口的参数值不生效另外打开一个窗口后参数值生效。
4重置参数值 例:
SQL alter system reset optimizer_mode;5加选项 scopespfile|memory|both 例
SQL alter system set optimizer_modeall_rows scopespfile;
SQL alter system set optimizer_modeall_rows scopememory;
SQL alter system set optimizer_modeall_rows scopeboth;
SQL alter system set optimizer_modeall_rows;注
对静态参数的修改需要指定 scopespfile 选项, 需要重启数据库才生效 。默认选项为both
关于参数修改的更多内容可参看文章《Oracle 参数文件 参数详解》
9、CDB参数 PDB参数
CDB 参数文件使用 12c 以前的 SPIFLEpdb 参数文件不出现在 SPFILE 中而是从CDB 中继承。
SYSorcl(CDB$ROOT) show con_nameCON_NAME
------------------------------
CDB$ROOTSYSorcl(CDB$ROOT) select pdb_uid,name,value$ from PDB_SPFILE$;no rows selectedSYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300SYSorcl(CDB$ROOT) show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 PDB READ WRITE NOSYSorcl(CDB$ROOT) alter session set containerpdb;Session altered.SYSorcl(CDB$ROOT) show con_nameCON_NAME
------------------------------
PDBSYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300
如果 PDB 中有私有本地参数则会保存在 CDB 的 PDB_SPFILE$字典表中并以 con_id 区别。
SYSorcl(CDB$ROOT) alter system set open_cursors400;System altered.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 400SYSorcl(CDB$ROOT) conn / as sysdba
Connected.
SYSorcl(CDB$ROOT) show con_nameCON_NAME
------------------------------
CDB$ROOT
SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300SYSorcl(CDB$ROOT) select pdb_uid,name,value$ from PDB_SPFILE$;PDB_UID NAME VALUE$
--------------------------------------------------------------------------------
1767828969 open_cursors 400
当 PDB UN-Plug 时PDB 参数写入 PDB 的 XML 文件中:
SYSorcl(CDB$ROOT) alter pluggable database pdb close immediate;Pluggable database altered.SYSorcl(CDB$ROOT) alter pluggable database pdb unplug into /home/oracle/pdb.xml;Pluggable database altered.
# cat /home/oracle/pdb.xml会看到PDB 修改的参数已写入 PDB 的 XML 文件中。 当 droppluggable database 后pdb 和 PDB_SPFILE$信息记录会被清除。
SYSorcl(CDB$ROOT) drop pluggable database pdb keep datafiles;Pluggable database dropped.SYSorcl(CDB$ROOT) select pdb_uid,name,value$ from PDB_SPFILE$;no rows selected
当PDB重新 Plug-in到CDB时会重新加载回PDB, 但是由于一些PDB参数特殊原因在plug-in时会被遗弃。这里因为没有特殊参数所以没有丢失参数。
SYSorcl(CDB$ROOT) create pluggable database pdb using /home/oracle/pdb.xml nocopy;Pluggable database created.SYSorcl(CDB$ROOT) select pdb_uid,name,value$ from PDB_SPFILE$;PDB_UID NAME VALUE$
--------------------------------------------------------------------------------
2365777561 open_cursors 400
SYSorcl(CDB$ROOT) show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO4 PDB MOUNTEDSYSorcl(CDB$ROOT) alter pluggable database pdb open;Pluggable database altered.SYSorcl(CDB$ROOT) show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO4 PDB READ WRITE NO
删除 PDB_SPFILE$中相关记录,pdb 的参数值会自动继续继承 cdb 中参数值(重启生效)。
SYSorcl(CDB$ROOT) alter system set open_cursors500;System altered.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 500
SYSorcl(CDB$ROOT) alter session set containerpdb;Session altered.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 400SYSorcl(CDB$ROOT) shutdown immediate
Pluggable Database closed.SYSorcl(CDB$ROOT) startup
Pluggable Database opened.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 400SYSorcl(CDB$ROOT) delete from PDB_SPFILE$;1 row deleted.SYSorcl(CDB$ROOT) alter session set containerpdb;Session altered.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 400SYSorcl(CDB$ROOT) shutdown immediate
Pluggable Database closed.SYSorcl(CDB$ROOT) startup
Pluggable Database opened.SYSorcl(CDB$ROOT) show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 500