一些参数文件参数设置及参数文件、控制文件、数据文件、redo文件损坏或丢失处理办法。
一、参数文件
一些数据库参数设置指南
sga_max_size:shared_pool_size=4:1
sga_max_size 大于 shared_pool_size、db_cache_size、java_pool_size、large_pool_size、stream_pool_size 之和 至少空出1G
sga_max_size:pga_aggregate_target=4:1
db_cache_size:shared_pool_size=3:1
java_pool_size、large_pool_size、stream_pool_size 一般给1G
sga_max_size、pga_aggregate_target 之和一般为总内存的60%~70%
vm.nr_hugepages=(sga+200M)/2M 不能比算出来的值小,一页为2m 略大于sga(sga为内存的40%)
kernel.sem =SEMMSL、SEMMNS、SEMOPM、SEMMNI
--信号量相关,第一个值和第三个值=process+10,第二个值=第一个值*第四个值
参数文件损坏或丢失:
①通过rman恢复
RMAN> list backup of spfile;
RMAN> restore spfile to '/oradata/test/spfiletest.ora'
SQL> shutdown immediate
SQL> startup
②从pfile文件中cp到dbs文件中
cp $ORACLE_BASE/admin/test/pfile/init.ora.862021171747 /oracle/app/oracle/product/11.2.0/db/dbs/inittest.ora
用这个文件启动数据库
startup nomount pfile='/oracle/app/oracle/product/11.2.0/db/dbs/inittest.ora';
③新建一个参数文件
create spfile='/home/oracle/spfileorcltest.ora' from memory;
或者建一个文件
vi inittest.ora
填写主要内容db_name和SGA可以初起数据库
db_name=test;
sga_max_size=8G;
二、控制文件
控制文件损坏或丢失:
①会有两个控制文件,一个坏了还能利用另一个恢复。
/oradata/test/control01.ctl
/u01/app/oracle/fast_recovery_area/test/control02.ctl
②使用RMAN恢复
rman target /
RMAN> startup nomount
RMAN> restore controlfile from '/oracle/app/oracle/fast_recovery_area/TEST/autobackup/o1_mf_s_1079221638_jj78q166_.bkp';
RMAN> alter database mount;
RMAN> recover database;
RMAN> alter database open resetlogs;
③重建控制文件
备份创建控制文件的脚本到TRC文件
alter database backup controlfile to trace;
备份到指定位置
alter database backup controlfile to trace as '/home/oracle/backup/control1.trc';
查看cat control1.trc
startup nomount
执行下列语句,是文件中的复制过来执行:
CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/test/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/oradata/test/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/oradata/test/redo03.log' SIZE 50M BLOCKSIZE 512
DATAFILE
'/oradata/test/system01.dbf',
'/oradata/test/sysaux01.dbf',
'/oradata/test/undotbs01.dbf',
'/oradata/test/users01.dbf',
'/oradata/test/undo3.dbf'
CHARACTER SET ZHS16GBK;
alter database open resetlogs;
三、数据文件
①RMAN备份恢复
SQL> shutdown abort
SQL> startup mount
RMAN> restore datafile filename;
RMAN> recover datafile ;
SQL> alter database open;
②使用工具恢复,数据可能会丢失
③删除数据文件,数据丢失
四、redo日志文件
①单个 INACTIVE 成员丢失(redo02.log丢失)
$ cp /oradata/test/redo01.log /data/test/Redo/redo02.log
②日志组丢失(redo03.log日志组丢失)
初始化重建日志组
SQL> alter database clear unarchived logfile group 3;
③CURRENT 日志组损坏
加入隐参
vi inittest.ora
_allow_resetlogs_corruption=TRUE
pfile用mount启动
SQL> startup mount pfile='/u01/oracle/product/11.2.0/db/dbs/inittest.ora
使用alter database open resetlogs;
SQL> alter database open resetlogs ;
可能会报错:
解决:用语句恢复,因为没有归档,做一个假的恢复语句,欺骗数据库。
SQL> recover database until cancel;
再次使用alter database open resetlogs;
SQL> alter database open resetlogs ;
最后建议删除隐参
vi initest.ora
_allow_resetlogs_corruption=TRUE 删除
所有redo恢复后,切换日志去触动它
SQL> alter system switch logfile;