ORACLE中的pfile和spfile

2024-05-07 08:58
文章标签 oracle spfile pfile

本文主要是介绍ORACLE中的pfile和spfile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.spfile是Oracle9i之后引入的,目的是提高系统安全性。在Oracle8i下初始化参数文件为文本文件,可以使用文本编辑器进行编辑,当需要修改初始化参数时,需要在init.ora文件中修改,再重新启动数据库实例。在Oracle10g,引入了服务器参数文件(spfile),可以简化初始化参数的管理。spfile文件时一个二进制文件,不能使用文本编辑器(虽然文本编辑器打开后,能够看到参数内容),否则可能造成Oracle无法识别spfile文件。
  以下以我自己系统安装的Oracle与大叫讨论这二者的用法:
  D盘是Oracle10G的主安装目录,分别在1D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.31420101014242D:\oracle\product\10.2.0\db_1\database\initorcl.ora3D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA3个位置可以找到pfile、spfile的位置和spfile,其中1就是那个文本文件pfile,2指的是3的位置(路径),3就是哪个二进制文件spfile,如果spfile被损坏了,那么重新启动数据库就会报找不到spfile的错误,这事需要通过pfile创建spfile:
 create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424';
  并且重新启动数据库时用startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424'。
  如果2被修改了路径,那么3的位置要做相应的调整,不然数据库重启启动会暴同样的错误。
  如果1被损坏或删除,数据库可以照常启动,但为了保险,我们还是重新创建一个新的pfile:
  create pfile='
D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.3142010101424' from spfile;
  2.查看系统是以pfile还是spfile 启动
  Select isspecified,count(*) from v$spparameter group by isspecified;
 如果 isspecified里有true,表明用spfile进行了指定配置
 如果全为false,则表明用pfile启动

  3.使用SPfile的好处:
 Spfile 改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image
    启动时候需要跟踪最新的image。这是个烦琐的过程。
 用spfile以后,所有参数改变都写到spfile里面(只要定义 scope=spfile或both),参数配置有个权威的来源。

4.从spfile获取pfile
 Create pfile='d:pfileSID.ora' from spfile;
 Create pfile='d:pfileSID.ora' from spfile='spfile_location';

5.从pfile获取spfile
 Create spfile from pfile='Your_pfile_location'
 Create spfile='spfile_location' from pfile='Your_pfile_location'
 
6.动态修改参数
 alter system set parameter=Value scope=spfile|both|memory
 
7.Startup nomount的时候需要读去spfile或pfile,两者共存,spfile优先

8.试验心得:

 环境:window2003  Oracle10g

 问题描述一个数据库实例,包含二个数据库(test,orcl),因为设置错误的参数造成orcl数据库spfile文件损坏。通过create spfile生成文件后,一次一只能启动一个数据库。

解决过程:

C:\Documents and Settings\hsx>set oracle_sid=orcl

C:\Documents and Settings\hsx>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 15 17:37:34 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn sys/sys as sysdba
已连接到空闲例程。
SQL> create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.or
a.3142010101424';

文件已创建。

SQL> startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.314201010
1424'
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             167775108 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             184552324 bytes
Database Buffers          419430400 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> Select isspecified,count(*) from v$spparameter group by isspecified;

ISSPEC   COUNT(*)
------ ----------
TRUE           23
FALSE         236


备注:假如有多个数据库的话,可以通过设置set oracle_sid, 然后pfile单独启动

场景:当你因为修改系统参数的原因,造成数据库没有办法正常启动,可以利用一下方式,通过重建spfile,快速解决该故障。
1.SQL>conn /as sysdba
连接到空闲例程
2.SQL> create spfile from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.or
a.052011184726';
重建spfile
3.SQL>shutdown abort
关闭数据库
4.SQL>startup
重启数据库
至此问题解决。

这篇关于ORACLE中的pfile和spfile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966903

相关文章

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1:MSSQL SQL语法篇: BULK INSERT      [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]         FROM 'data_file'        [ WITH       (      [ [ , ] BATCHSIZE = batch_siz