|
Listing 1
#!/bin/sh
# Create a database and configuration files for the
# oracle listener and client programs
# This script depends on several environment variables set in
# ~oracle/.bashrc.oracle, including
#
# ORACLE_HOME
# ORACLE_SID
# HOST_NAME
# DOMAIN_NAME
#
WORK_DIR=$ORACLE_HOME/dbs
# If you want data and tablespace files to be elsewhere, change DATA_DIR below
DATA_DIR=$WORK_DIR
# If you want log files to be elsewhere, change LOG_DIR below
LOG_DIR=$WORK_DIR
if [ ! -d $WORK_DIR ]; then
echo "Unable to find ${WORK_DIR}"
echo "Make sure environment is correctly configured" 1>&2
exit 2
fi
# Set up your INIT.ORA file
cat <<__EOF__ >${WORK_DIR}/init${ORACLE_SID}.ora
db_name = ${ORACLE_SID}
db_domain = ${DOMAIN_NAME}
instance_name = ${ORACLE_SID}
service_names = ${ORACLE_SID}.${DOMAIN_NAME}
control_files = (${WORK_DIR}/ctl1.dbf,
${WORK_DIR}/ctl2.dbf,
${WORK_DIR}/ctl3.dbf)
rollback_segments = (system, rback1)
processes = 50
open_cursors = 1000
__EOF__
# Set up your LISTENER.ORA file
cat <<__EOF__ >${ORACLE_HOME}/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = ipc)
(KEY = ${ORACLE_SID})
)
# Uncomment this section to listen for TCP requests,
# but be aware of the security implications
#(ADDRESS =
# (PROTOCOL = TCP)
# (HOST = ${HOST_NAME})
# (PORT = 1521)
#)
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ${ORACLE_SID})
(GLOBAL_DBNAME = ${ORACLE_SID}.${DOMAIN_NAME})
(ORACLE_HOME = ${ORACLE_HOME})
)
)
__EOF__
# Setup our TNSNAMES.ORA file
cat <<__EOF__ >${ORACLE_HOME}/network/admin/tnsnames.ora
# IPC service
# Should be the most efficient and secure way to communicate with
# Oracle for processes running on the same machine.
${ORACLE_SID} =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = ipc)
(KEY = ${ORACLE_SID})
)
(CONNECT_DATA =
(SERVICE_NAME = ${ORACLE_SID}.${DOMAIN_NAME})
)
)
# TCP service
# Uncomment this section to listen for TCP requests, but be aware of
# the security implications.
# Be sure to use 'user/pass@YOURSIDTCP' in SQLPlus or use YOURSIDTCP
# for the third argument to PHP's OCILogon functions if you need
# to connect via TCP.
#${ORACLE_SID}TCP =
# (DESCRIPTION =
# (ADDRESS =
# (PROTOCOL = TCP)
# (HOST = ${HOST_NAME})
# (PORT = 1521)
# )
# (CONNECT_DATA =
# (SERVICE_NAME = ${ORACLE_SID}.${DOMAIN_NAME})
# )
# )
# You can add other service names below to connect to remote databases
__EOF__
ID="$WORK_DIR/${0}$$.log"
echo "Attempting to create database, logging to ${ID}.stdout"
# Make sure the db is down
sqlplus /nolog <<__EOF__ >/dev/null 2>&1
connect / as sysdba
shutdown abort
__EOF__
# We need to be here to find .sql files below
pushd $ORACLE_HOME > /dev/null 2>&1
# Actually create the db
sqlplus /nolog <<__EOF__ >${ID}.stdout
connect / as sysdba
set echo on
set termout off
spool $ID
!date
startup force nomount pfile=${WORK_DIR}/init${ORACLE_SID}.ora
create database controlfile reuse
datafile '${DATA_DIR}/data.dbf' size 500M reuse
logfile '${LOG_DIR}/log1.dbf' size 100M reuse,
'${LOG_DIR}/log2.dbf' size 100M reuse
maxinstances 1
maxdatafiles 32
maxlogfiles 32
maxlogmembers 2
maxarchlogs 0
character set "us7ascii";
create rollback segment rback1 tablespace system
storage(initial 1M next 1M MAXEXTENTS UNLIMITED);
alter rollback segment rback1 online;
create tablespace tmeda
datafile '${DATA_DIR}/tmeda01.dbf' size 1000M
extent management local uniform size 160k;
create tablespace imeda
datafile '${DATA_DIR}/imeda01.dbf' size 1000M
extent management local uniform size 160k;
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
!date
!date
connect system/manager
@?/rdbms/admin/dbmspipe.sql
@?/rdbms/admin/dbmslock.sql
@?/rdbms/admin/dbmsalrt.sql
@?/rdbms/admin/dbmsdesc.sql
@?/rdbms/admin/dbmsjob.sql
@?/rdbms/admin/dbmssql.sql
@?/rdbms/admin/dbmsutil.sql
@?/sqlplus/admin/pupbld.sql
@?/rdbms/admin/utlsampl.sql
@?/sqlplus/admin/help/helpbld.sql
!date
shutdown
connect / as sysdba
startup pfile=${WORK_DIR}/init${ORACLE_SID}.ora
__EOF__
popd >/dev/null 2>&1
lsnrctl start
echo "Database created and running, check log file for details"
exit 0
|