创建Oracle 11G数据库脚本

Usage: ./create_ora11g.sh <ORACLE_SID>
create_ora11g.sh

#!/bin/bash

# check SID
if [ "$#" -ne "3" ]; then
    echo "USAGE: $0 <ORACLE_SID> <ORADATA> <PASSWORD>"
    exit 1
fi

SID=$1
ORADATA=`mkdir -p $2 && cd $2 && pwd`
PASSWD=$3
export ORACLE_SID=$SID

# check ORACLE_BASE
if [ -z "$ORACLE_BASE" ]; then
    echo "ERROR: please set ORACLE_BASE"
    exit 1
fi

# check ORACLE_HOME
if [ -z "$ORACLE_HOME" ]; then
    echo "ERROR: please set ORACLE_HOME"
    exit 1
fi

# check sqlplus
if [ -z "`which sqlplus`" ]; then
    export PATH=$ORACLE_HOME/bin:$PATH
    if [ -z "`which sqlplus`" ]; then
        echo "ERROR: no sqlplus found in $ORACLE_HOME/bin"
        exit 1
    fi  
fi

# create dir
echo creating directories ...
mkdir -p -m 750 $ORADATA/$SID
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/adump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/bdump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/cdump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/udump
mkdir -p -m 750 $ORACLE_BASE/flash_recovery_area

# create password file
echo creating password file ...
rm -f $ORACLE_HOME/dbs/orapw$SID
orapwd file=$ORACLE_HOME/dbs/orapw$SID password=$PASSWD entries=9

# create pfile
echo creating pfile ...
PFILE=/tmp/init$SID.ora
cat > $PFILE << EOD
*.audit_file_dest='$ORACLE_BASE/admin/$SID/adump'
*.compatible='11.2.0.4.0'
*.control_files='$ORADATA/$SID/control01.ctl','$ORADATA/$SID/control02.ctl','$ORADATA/$SID/control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='$SID'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=${SID}XDB)'
*.open_cursors=300
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=838860800 # 800M
*.sga_target=838860800  # 800M
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='$ORACLE_BASE/admin/$SID/udump'
EOD

# startup sqlplus and create db
echo creating database ...
sqlplus / as sysdba > /dev/null 2>&1 <<EOD
set echo on
spool create_$SID.log

startup nomount pfile='$PFILE';
create spfile from pfile='$PFILE';

CREATE DATABASE "$SID"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE '$ORADATA/$SID/system01.dbf'
    SIZE 325M
    AUTOEXTEND ON NEXT 10M
    EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '$ORADATA/$SID/sysaux01.dbf'
    SIZE 325M
    AUTOEXTEND ON NEXT 10M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '$ORADATA/$SID/temp01.dbf'
    SIZE 20M
UNDO TABLESPACE "UNDOTBS1" DATAFILE '$ORADATA/$SID/undotbs01.dbf'
    SIZE 50M
LOGFILE
    GROUP 1 ('$ORADATA/$SID/redo01.log') SIZE 58M,
    GROUP 2 ('$ORADATA/$SID/redo02.log') SIZE 58M,
    GROUP 3 ('$ORADATA/$SID/redo03.log') SIZE 58M
ARCHIVELOG
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY "$PASSWD"
USER SYSTEM IDENTIFIED BY "$PASSWD";

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql

startup force

spool off
EOD

echo DONE! Please view create_$SID.log!
发布了23 篇原创文章 · 获赞 2 · 访问量 1237

猜你喜欢

转载自blog.csdn.net/weixin_43424368/article/details/104534768