PFILE与SPFILE
1、 含义:PFILE是parameterfile的缩写,SPFILE是server parameter file的缩写,通过全称的字面含义,我们可以得到pfile和spfile都是oracle提供的参数文件,里面写着各种参数的初始值,比如Database Buffer的值为196M等,文件后缀名都是.ora;
2、 区别:spfile是oracle9i release2引进的新事物,在这之前oracle中只有pfile的概念。Pfile是一种静态参数文件,可以通过任何文本编辑器进行打开、编辑和保存。而spfile是一种二进制文件,只能通过ALTER SYSTEM SET …… SCOPE=SPFILE语句修改,修改后需要重启数据库实例后才能生效。相比pfile而言,spfile具有安全的优势;
3、 启动方式:oracle9i以后,数据库实例启动时如果不明确指定使用pfile启动数据库实例,则会去默认路径寻找spfile文件,这里需要补充的是pfile与spfile的默认路径是$oracle_home/database,在我的数据库本机上,我的路径就是:E:\app\neusoft\product\11.2.0\dbhome_1\database;
4、 默认pfile与spfile文件名:正常默认情况下,pfile文件的文件名应该为INIT+数据库实例名+.ORA后缀名,比如我本机数据库的实例名是orcl,则默认pfile的文件名应该为INITorcl.ORA;而spfile的默认文件名SPFILE+数据库实例名+.ORA的后缀名,例如我本机的spfile的文件名是SPFILEorcl.ORA;
5、 创建方式:如果需要创建pfile文件,我们可以根据本机数据库的spfile来创建,创建语法是:CREATE PFILE FROM SPFILE;也可以对于即将生成的pfile文件指定生成目录和自定义名称,例如:CREATE PFILE=’F:\PFILE123.ORA’ FROM SPFILE;但是我们无法在当前数据库实例正在使用的spfile默认路径重新生成默认名称的spfile文件,即我们无法使用下面语句:CREATE SPFILE FROM PFILE;因为这句话代表在默认路径即database路径下生成默认名称SPFILEorcl.ORA的spfile文件,而这个文件已经被当前数据库实例使用。
6、 创建权限要求:创建pfile或spfile文件需要用户拥有sysdba权限,默认sys用户具备sysdba权限,如果使用其他用户(如system),请先对system用户赋予sysdba权限,授权语句是:GRANTSYSDBA TO system;
7、 查看当前数据库实例是否使用spfile启动:sqlplus窗口执行showspfile,如果spfile有值(spfile路径),则代表当前数据库实例是通过spfile方式启动的;
V$PARAMETER动态视图
1、 我们可以通过v$parameter动态视图查看指定参数的值、修改情况;
2、 查询语句:
select name, value, ismodified, issys_modifiable from v$parameter
where name like 'db_create_file_dest%';
3、 关于字段ismodified的说明:
字段含义是表示参数在实例启动后是否被修改,值有3个:MODIFIED\SYSTEM_MOD\FALSE
MODIFIED表示实例启动后使用alter session修改过;
SYSTEM_MOD表示实例启动后使用alter system修改过;
FALSE表示实例启动后从未修改过;
4、 关于字段issys_modifiable的说明:
字段含义是表示参数是否可以被altersystem修改并且修改后产生影响的时间,值有3个:
IMMEDIATE:表示可以使用alter system修改并且修改后立即生效;
DEFERRED:表示可以使用alter system修改并在下一个会话中生效;
FALSE:除对于启动实例有影响的参数外其他都不可以修改并且需要重启实例;
selectnameas参数名称,
valueas当前参数值,
decode(ismodified,
'MODIFIED',
'使用altersession修改过',
'SYSTEM_MOD',
'使用altersystem修改过',
'未被修改过') as实例启动后修改方式,
decode(ISSYS_MODIFIABLE,
'IMMEDIATE',
'当前会话立即生效',
'DEFERRED',
'延迟下个会话生效',
'重启实例生效') as生效时间
fromv$parameter
OMF技术
1、 OMF是ORACLE MANAGED FILES的简写,翻译过来即oracle管理文件,是从oracle 10g新推出的概念,已在指定默认路径信息后,简化日常操作命令书写;
2、 查看是否启用OMF,可以在sqlplus窗口界面输入:showparameter db_create_file_dest,如果该参数有值(路径信息),则代表启用了OMF管理;
3、 可以使用altersystem或alter session启用db_create_file_dest参数,参数的路径默认应该为数据库实例的数据库文件所在目录,示例如下:
ALTER SYSTEM SET db_create_file_dest=’ E:\app\neusoft\oradata\orcl’;
4、 按照上述第3个步骤操作完毕后,就可以启用OMF技术特性了。
5、 下面我们举个例子进行说明,如果我们没有开启OMF技术特性,比如我们需要创建一个表空间test,我们至少应该这么写语句:CREATE TABLESPACE test DATAFILE ‘E:\app\neusoft\oradata\orcl\TEST.DBF’;语句中包含数据表空间的存放路径,不指明的话,oracle会提示错误并创建失败。如果我们指定了db_create_file_dest的默认路径即代表开启了OMF技术特性,那么我们在以后创建表空间、日志文件、控制文件的时候,就可以省略表空间创建的路径信息、大小,新创建的表空间会在默认路径下生成。但是在实际生产环境中酌情使用。
6、 Windows操作系统正常情况下,oracle数据文件、日志文件、控制文件的所属路径都应该是在oradata目录下,例如我本机数据库的目录是:E:\app\neusoft\oradata\orcl
如果我们将参数db_create_file_dest的值设定为E:\app\neusoft\oradata
我们可以这样实现:
Alter system setdb_create_file_dest=’ E:\app\neusoft\oradata’;
然后我们来创建一个表空间test01,我们可以直接这样写
Create tablespace test01;
然后我们就会发现oracle在E:\app\neusoft\oradata\orcl目录下自动创建了一个datafile的新目录,里面存放着我们刚创建的表空间,表空间的大小默认是100M,名称默认是:O1_MF_DUSHUAI_BBQ2GWSK_.DBF,名称中包含我们指定的表空间名称;
我们可以通过内置的函数包查看我们新建的表空间的属性信息,语句如下:
selectdbms_metadata.get_ddl('TABLESPACE','DUSHUAI') from dual;
得到的大文本CLOB结果如下:
CREATE TABLESPACE"DUSHUAI" DATAFILE
SIZE 104857600
AUTOEXTEND ON NEXT 104857600MAXSIZE 32767M
LOGGING ONLINE PERMANENTBLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULTNOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO
数据库实例启动层次
1、 Nomount:基于参数文件读取初始参数,划分内存,指定后台进程,开启数据库实例;
2、 Mount:读取控制文件;
3、 Open:默认数据库实例启动startup的缺省项目,表示正常启动数据库实例;
附:数据库异常关闭后启动的顺序
1.前滚所有未写入数据文件的REDO
2.打开数据库
3.回滚所有未提交的数据
--数据库实例在nomount时候时,我们看见下面几个视图
v$parameter
v$spparameter--查看spfile启动时关联的参数信息
v$controlfile―此时不能查看内容,因为数据库没有开启一致性检查
使oracle数据库进入受限模式:
1、 在数据库实例关闭的时候,我们可以使用startup restrict 命令进入受限模式;
2、 或者使用altersystem enable restricted session;
进入受限模式后,普通用户无法登陆,会提示:
ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式
取消受限模式:
Alter system disable restricted session;