下面是一个生成创建控制文件的脚本,要求数据库运行在MOUNT以上阶段,此脚本只在LINUX平台上面运行。
cat ./create_controlfile_sql.sh
echo "please input direcotry default /tmp:"
read dir
if [ ! -z "$dir" ];then
if [ ! -d "$dir" ];then
mkdir -p $dir
fi
else
dir=/tmp
fi
echo "please input file name default control.ctl:"
read file_name
if [ -z "$file_name" ];then
file_name=control.ctl
fi
if [ -f "$dir/$file_name" ];then
rm -rf $dir/$file_name
fi
sqlplus -s / as sysdba<<EOF
alter database backup controlfile to trace as '$dir/$file_name';
exit
EOF
num=`cat $dir/$file_name |grep -v '-'|grep -v ^$|sed 's/^ //'|sed 's/^ //'|wc -l`
num_1=`expr $(($num/2))`
cat $dir/$file_name |grep -v '-'|grep -v ^$|sed 's/^ //'|sed 's/^ //'|head -`echo $num_1`>$dir/$file_name
测试:
[oracle10g@rhel4 orcl10g]$ sh ~/rs/sql/create_controlfile_sql.sh please input direcotry default /tmp: /tmp/control please input file name default control.ctl: control.ctl Database altered. [oracle10g@rhel4 orcl10g]$ cat /tmp/control/control.ctl STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "ORCL10G" NORESETLOGS FORCE LOGGING ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/datafile/orcl10g/orcl10g/redo01.log' SIZE 50M, GROUP 2 '/datafile/orcl10g/orcl10g/redo02.log' SIZE 50M, GROUP 3 '/datafile/orcl10g/orcl10g/redo03.log' SIZE 50M DATAFILE '/datafile/orcl10g/orcl10g/system01.dbf', '/datafile/orcl10g/orcl10g/undotbs01.dbf', '/datafile/orcl10g/orcl10g/sysaux01.dbf', '/datafile/orcl10g/orcl10g/users01.dbf', '/datafile/orcl10g/orcl10g/htz01.dbf' CHARACTER SET ZHS16GBK ; RECOVER DATABASE ALTER SYSTEM ARCHIVE LOG ALL; ALTER DATABASE OPEN; ALTER TABLESPACE TEMP ADD TEMPFILE '/datafile/orcl10g/orcl10g/temp01.dbf' SIZE 10485760 REUSE AUTOEXTEND OFF; ALTER DATABASE ADD STANDBY LOGFILE '/datafile/orcl10g/orcl10g/standby_redo01.log' SIZE 50M REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/datafile/orcl10g/orcl10g/standby_redo02.log' SIZE 50M REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/datafile/orcl10g/orcl10g/standby_redo03.log' SIZE 50M REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/datafile/orcl10g/orcl10g/standby_redo04.log' SIZE 50M REUSE;
直接在sqlplus下面运行就可以了,创建完控制文件后,记得手动add临时数据文件信息
alter tablespace temp add tempfile ‘’ size … autoextend off reuse;
ORACLE 生成创建控制文件语句脚本:等您坐沙发呢!