转自:http://blog.csdn.net/onebigday/article/details/6108348,http://www.linuxidc.com/Linux/2012-11/73715.htmjava
你们都知道,spfile是oracle 9i以后引入的,目的是提升系统安全性。在Oracle8i下初始化参数文件为文本文件,能够使用文本编辑器进行编辑,当须要修改初始化参数时,须要在init.ora文件中修改,再从新启动数据库实例。linux
在Oracle10g,引入了服务器参数文件(SPFILE),能够简化初始参数的管理。spfile文件是一个二进制文件,不能使用文件编辑器编辑(虽然经过文本编辑器打开后,可以看到参数内容),不然可能形成Oracle没法识别SPFILE文件。数据库
我下面以我本身系统安装的ORACLE与你们讨论这二者的用法,E盘是oracle10G的主安装目录,那么分别在缓存
1) E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642 // pfile文件安全
2) E:/oracle/product/10.2.0/db_1/database/initorcl.ora // 储存spfile文件路径服务器
3) E:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORA // spfile文件多线程
1.若是spfile被损坏了,那么重启数据库就会报找不到spfile的错误,这时须要经过pfile建立spfile:oracle
create spfile from pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642';dom
而且重启数据库时用:编辑器
startup pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642'。
2. 若是2被修改了路径,那么3的位置要作相应的调整,否则数据库重启会报一样的错误。3. 若是1被损坏或删除了,没有关系,数据库能够照常启动,但为了保险,咱们仍是从新
建立一个pfile:
create pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642' from spfile;
问题:
1)建立spfile后,该文件方到哪了?
答:使用create spfile from pfile=’..’ , 生成的spfile文件(文件名仍是SPFILEORCL.ORA),但存放目录发生变化,存放在2的那个目录下,但是initorcl.ora内容却没有发生变化???
为了使spfile恢复的原来的目录下,指定目录,使用以下命令:
Create spfile=’ E:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORA’
From pfile=' E:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.2192009203642'
show parameter spfile; // 查看spfile位置
2)如何查看oracle是以spfile仍是pfile启动?
答:Select isspecified,count(*) from v$spparameter group by isspecified;
若是isspecified里有true,代表用spfile进行了指定配置
若是全为false,则代表用pfile启动
3)spfile和pfile启动oracle 有何区别?
附:
从spfile获取pfile
Create pfile='d:pfileSID.ora' from spfile;
Create pfile='d:pfileSID.ora' from spfile='spfile_location';
从pfile获取spfile
Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'
动态修改参数
alter system set parameter=Value scope=spfile|both|memory
SCOPE参数有三个可选值:
MEMORY:只改变当前实例运行;
SPFILE:只改变SPFILE的设置(若是修改的是静态参数,则必须指定SCOPE=SPFILE,不然将会报ORA-02095错。);
BOTH:改变实例及SPFILE(使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句)。
Startup nomount的时候须要读去spfile或pfile,二者共存,spfile优先
用startup(默认)启动的顺序
一、直接在默认路径下查找spfileSID.ora --(spfile)
若是没有再查找2
二、直接在默认路径下查找spfile.ora
若是没有再查找3
三、直接在默认路径下查找initSID.ora --(pfile)
若是尚未 就会报错……
强制用pfile启动
SQL>startup pfile='Your_Pfile.ora'
startup spfile='/data/oracle/product/10.2.0/db_1/dbs/dbs/spfile_mqq.ora' force
经过pfile链接到spfile启动
修改pfile文件
数据库的初始化参数文件分析
内容 说明
MTS 多线程服务器配置标识,Oracle 9i 里称为共享服务器配置
dispatchers="(PROTOCOL=TCP) (SERVICE=testXDB)" 多线程服务器配置
Optimizer 最优化
hash_join_enabled=TRUE 优化程序选择散列链接
query_rewrite_enabled=FALSE 启动或禁用对实体化视图的查询重写
star_transformation_enabled=FALSE 肯定基于成本的查询转换是否应用到星型查询中
# Job Queues 做业列队
job_queue_processes=10 做业列队进程数
# Instance Identification 实例标识
instance_name=test 实例名
# Miscellaneous 其余
aq_tm_processes=1
compatible=9.2.0.0.0 兼容性
# Security and Auditing 安全审核
remote_login_passwordfile=EXCLUSIVE 指定操做系统或口令文件是否有检查用户口令的权限。
# Sort, Hash Joins, Bitmap Indexes 排序, 散列联接, 位图索引
pga_aggregate_target=25165824 指定PGA的最大内存量
sort_area_size=524288 指定排序区使用的最大内存量
# Database Identification 数据库标识SID
db_domain=domin
db_name=test
# File Configuration 文件配置
control_files=("C:oracleoradatatestCONTROL01.CTL", "C:oracleoradatatestCONTROL02.CTL",
"C:oracleoradatatestCONTROL03.CTL") # Pools 池
java_pool_size=33554432 java池用于存储 Java 的方法、类定义和 Java 对象。
large_pool_size=8388608 大型池用于共享服务器的会话内存、并行执行的消息缓冲区以及RMAN 备份和恢复的磁盘 I/O 缓冲区。
shared_pool_size=50331648 共享池用于存储共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象。
# Cursors and Library Cache 游标和库高速缓存
open_cursors=300 指定一次会话可打开的游标量
# System Managed Undo and Rollback Segments 系统管理的撤消和回退段
undo_management=AUTO 指定系统使用的撤消空间管理方式为SUM(外部分配)
undo_retention=10800
undo_tablespace=UNDOTBS1 指定回滚表空间
# Diagnostics and Statistics 诊断和统计
background_dump_dest=C:oracleadmintestbdump 后台进程跟踪文件
core_dump_dest=C:oracleadmintestcdump 核心转储跟踪文件
timed_statistics=TRUE 收集操做系统的计时信息(优化)
user_dump_dest=C:oracleadmintestudump 用户进程跟踪文件
# Processes and Sessions 进程和会话
processes=150 同时链接到数据库的用户进程数量
# Redo Log and Recovery 重作日志和恢复
fast_start_mttr_target=300 指定从单个 fast_start_mttr_target=300 指定从单个数据库例程数据库例程崩溃中恢复所需的时间
# Cache and I/O 高速缓存和I/O
db_block_size=8192 指定数据块大小(数值不能改变)
db_cache_size=25165824 指定数据缓冲区的大小
db_file_multiblock_read_count=16 涉及一个彻底连续扫描的一次I/O操做中读取块的最大数量