Oracle数据库中的控制文件管理以及常用参数设置
一、控制文件
作用:
- 二进制文件
- 记录了数据库当前实例的结构和行为,数据文件日志文件的信息,维护数据库一致性
- 参数文件中定义了控制文件的位置和大小
- 很小的二进制文件,一般不超过100m
- mount阶段open以后,一直在用
- 一套控制文件只能连接一个database
- 分散放置,至少一份,至多八份
相关视图:
- v$controlfile----列出实例的所有控制文件的名字和状态
- v$parameter----列出所有参数的位置和状态(wherename='control_files')
- v$controlfile_recode_section----提供控制文件的记录部分的信息
- showparametercontrol_files----列出控制文件的名字、状态和位置
查看控制文件内容:
strings$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl alterdatabasebackupcontrolfiletotraceas'<filepath&name>'
转储控制文件:
altersystemsetevents'immediatetracenamecontrolflevel10'
- level1 块头
- level2 文件内容
- level3 1+2
- level10 全部
管理控制文件:
spfile 修改spfile参数control_files(alter……)
- 一致性关闭数据库
- 增加或减少控制文件
- 启动数据库使用spfile
- 验证结果
pfile 一致性关闭数据库
- 修改pfile参数
- 增加或减少控制文件
- 启动数据库使用spfile
- 验证结果
状态查询:参数和具体文件是否对应、磁盘空间剩余、控制文件<100M
热备控制文件:
数据库归档模式下,
alterdatabasebackupcontrolfileto'<fpath&name>'
其他模式下:
alterdatabasebackupcontrolfiletotraceas'<fpath&name>'
得到建立控制文件脚本
数据库归档模式下rman备份:
rmantarget/ >backupcurrentcontrolfile;or >backupdatabaseincludecurrentcontrolfile;
rman自动备份控制文件:
>showall中的configurecontrolfileautobackup设置为on
>configurecontrolfileautobackupon
问题解决:
控制文件不一致:
(1).拷贝新版本的控制文件到旧版本文件
2.修改参数文件,只使用新版本的文件(altersystemset……),重启
控制文件丢失:
【mount阶段,使用archiveloglist可以查看数据库是否在归档模式下】
1.控制文件无备份
a.数据库非归档,数据文件联机日志文件存在---重建控制文件
>createcontrolfilereusedatabase<sid>noarchivelognoresetlogsdatafile<'datafiles'>logfile<groupX'logfiles'sizeY>
2.控制文件有备份
a.数据库归档,数据文件联机和归档日志文件存在---还原控制文件
先全备,再将控制文件拷贝到参数指定的路径,然后
>alterdatabaserecoverdatabaseusingbackupcontrolfileuntilchange;
二、参数设置
>showparameter<keyword>
查询参数
作用:记录了数据库的配置。内存分配、进程数、会话数等
分类:
pfile类型 ---文本文件
$ORACLE_HOME/dbs/init$ORACLE_SID.ora(9i,10g默认不使用)
$ORACLE_BASE/admin/$ORACLE_SID/pfile/init.ora.xxxx(10g初始化时使用一次)
spfile类型--- 二进制文件
$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora,服务器端(9i开始使用)
能够被rman备份(rman只能备份二进制文件)
oracle启动时,查找顺序为spfile<sid>.ora-----spfile.ora-----init<sid>.ora
转化:
createpfile[='fpath']fromspfile;默认在$ORACLE_HOME/dbs/init$ORACLE_SID.ora
createspfile[='fpath']frompfile;默认在$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
createspfile[='fpath']frommemory;从内存中重建spfile
10g指定用pfile启动:
>startuppfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora'; >createspfilefrompfile;
这样可以将刚修改的pfile生效
查看当前使用的参数文件:
>showparameterspfile;
如果value值为空,说明是使用pfile,否则使用的是value显示的spfile
>selectdistinctISSPECIFIEDfromv$spparameter;
值为true是spfile,false是pfile
spfile文件的修改:
altersystem|sessionsetparameter_name=valuesscope=memory|spfile|bothsid='<sid>'|'*';
system ----v$parameter中列isses_modifiable为非flase的项可以被altersession修改
session----v$parameter中列issys_modifiable为非flase的项可以被altersystem修改
【selectname,isses_modifiable,issys_modifiablefromv$parameter;】
查询出来的状态包括三种:
immdiate----动态参数,system直接修改到内存和参数文件,立即生效
false----静态参数,不能直接改,system加scope=spfile修改到参数文件
deferred----会话参数,可以使用session修改,只对当前实例有效
memory----只对当前启动的实例有效,下次启动无效
spfile----只对spfile修改,不影响当前实例,下次启动生效
both ----内存和spfile都修改,默认值
<sid> ----当前实例
* ----所有实例,用于集群环境有多个实例
10g中常见参数:
orcl.__db_cache_size=889192448 orcl.__java_pool_size=16777216 orcl.__large_pool_size=16777216 orcl.__shared_pool_size=285212672 orcl.__streams_pool_size=0 *.audit_file_dest='/u01/oracle/admin/orcl/adump'--->警告日志 *.background_dump_dest='/u01/oracle/admin/orcl/bdump'--->后台进程日志 *.compatible='10.2.0.1.0'--->版本向后兼容号 *.control_files='/u01/oracle/oradata/orcl/control01.ctl','/u01/oracle/oradata/orcl/control02.ctl','/u01/oracle/oradata/orcl/control03.ctl'--->控制文件 *.core_dump_dest='/u01/oracle/admin/orcl/cdump'--->服务器进程日志 *.db_block_size=8192--->oracle内存块大小 *.db_domain=''--->域名 *.db_file_multiblock_read_count=16--->单词IO可以读取多少块 *.db_name='orcl'--->和db_domain构成globename *.db_recovery_file_dest='/u01/oracle/flash_recovery_area'--->备份日志,OMF的管理文件存放路径 *.db_recovery_file_dest_size=2147483648--->flash_recovery_area目录大小 *.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'--->共享服务器的参数 *.job_queue_processes=10--->当前作业进程数 *.local_listener='LISTENER_ORCL'--->本地监听服务 *.open_cursors=300--->打开游标个数 *.pga_aggregate_target=407896064--->pga大小 *.processes=150--->当前可以运行多少进程 *.remote_login_passwordfile='EXCLUSIVE'--->远程登录是否需要密码文件,none|shared|exclusive *.sga_target=1223688192--->sga大小(10g) *.undo_management='AUTO'--->undo表空间的管理方式 *.undo_tablespace='UNDOTBS1'--->ndo表空间 *.user_dump_dest='/u01/oracle/admin/orcl/udump'--->用户进程日志
隐藏参数:
selectksppinm,ksppstvlfromx$ksppia,x$ksppcvbwherea.indx=b.indx
显示系统中的隐藏参数
spfile重置参数默认值:
altersystemreset参数scope=spfilesid='<sid>'|'*';