初始化参数文件与控制文件管理
1. 采用不同的方法查询Oracle数据库当前使用的初始化参数文件和控制文件。
show parameter spfile//通过初始化参数查询
select value from v$parameter where name='spfile';//通过动态性能视图v$parameter查询
show parameter control_files//通过初始化参数查询
select value from v$parameter where name='control_files';//通过动态性能视图v$parameter查询
2. 练习从spfile创建pfile,以及pfile创建spfile。
create pfile='d:\orclpfileA.ora' from spfile;//从spfile创建pfile
此时是从spfile启动,关闭数据库,修改orclpfileA.ora文件的*.open_cursors=300为500,以pfile启动,查询open_cursors发现已更改为500
查询此时的spfileorcl.ora文件,其中的*.open_cursors=300
create spfile from pfile='d:\orclpfileA.ora';//从pfile创建spfile
执行上述sql语句后,此spfile为从pfile创建的,*.open_cursors=500
create pfile='d:\orclpfileA.ora' from memory;//从当前实例创建pfile
create spfile from memory;//从当前实例创建spfile
3. 以open_cursors初始化参数为例,学习修改当前实例、spfile,以及pfile中的这一参数值。
alter system set open_cursors=300 scope=memory|spfile|both;
该语句中的scope选项说明初始化参数修改何时生效,是修改当前实例的初始化参数还是spfile,或者对二者同时修改。
1.MEMORY:修改只影响当前实例,当实例重新启动后,该语句所做修改不复存在。实例使用pfile启动时,该选项是默认设置。
2.SPFILE:只有在当前实例使用服务器参数文件启动时才能使用该选项。对初始化参数的修改被写入服务器参数文件,但不影响当前实例,因此此修改只有在实例重新启动后才生效。
3.BOTH:修改当前实例的初始化参数值,如果当前实例使用spfile启动,该选项是默认设置,它还会修改服务器参数文件中的参数值。
4. 在现有控制文件基础上,为数据库再添加一个控制文件。给出具体实现和验证步骤。
(1)查看数据库当前控制文件设置
show parameter control_files
此时只有两个控制文件
(2)修改初始化参数control_files
如果使用pfile,使用文本编辑器直接编辑。如果使用spfile,则执行alter system语句,增加新的控制文件。
alter system set control_files=
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\CONTROL01.CTL',
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\CONTROL02.CTL',
'C:\ORACLE\APP\WYZ\ORADATA\ORCL\CONTROL03.CTL'
scope =spfile;
(3)关闭数据库,把现有控制文件拷贝到指定位置
‘C:\ORACLE\APP\WYZ\ORADATA\ORCL\CONTROL03.CTL’
(4)启动数据库,让修改的初始化参数生效。此时有三个控制文件。
5. 备份控制文件,并查看所备份的文件。
(1)把控制文件备份到跟踪文件
alter database backup controlfile to trace;
(2)打开alert_orcl.log查找orcl_ora_10452.trc并打开
show parameter control_files
shutdown immediate
将三个控制文件移到oradata下面
startup
(3)把实例启动到nomount状态
select status from v$instance;
此时为nomount
(4)创建控制文件
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\APP\WYZ\ORADATA\ORCL\REDO01.LOG' SIZE 200M BLOCKSIZE 4096,
GROUP 2 'D:\ORACLE\APP\WYZ\ORADATA\ORCL\REDO02.LOG' SIZE 200M BLOCKSIZE 4096,
GROUP 3 'D:\ORACLE\APP\WYZ\ORADATA\ORCL\REDO03.LOG' SIZE 200M BLOCKSIZE 4096
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\SYSTEM01.DBF',
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\SYSAUX01.DBF',
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\ORACLE\APP\WYZ\ORADATA\ORCL\USERS01.DBF'
CHARACTER SET AL32UTF8
;
select status from v$instance;
成功创建控制文件之后,自动进入到mount状态。
(5)打开数据库
ALTER DATABASE OPEN RESETLOGS;
select status from v$instance;
此时为open
(6)查询数据文件
desc dba_data_files
select FILE_NAME from dba_data_files;
select FILE_NAME from dba_temp_files;
发现此时没有临时文件
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\APP\WYZ\ORADATA\ORCL\TEMP01.DBF'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
执行此语句将临时文件添加到临时表空间中,再查询临时文件则存在。