一键安装ORACLE并建库脚本

最近学shell,练习而写,只贴了一部分,没法直接用,但是可以作为例子吧

#!/bin/bash

SETPASSWD(){
#set password
expect -c "
           set timeout 2;
           spawn passwd oracle
           expect {
               password { send \"oracle\r\"; exp_continue }
               *assword* { send \"oracle\r\" }
           };
           "
echo " The user oracle's password is set to oracle "
}

#create user and group
cat /etc/passwd|awk -F':' '{print $1}'|grep 'oracle\>' > /dev/null
result=$?
if [ "$result" == "1" ];then
    echo "user oracle does not exist,Starting to create user!"
    /usr/sbin/groupadd oinstall > /dev/null
    /usr/sbin/groupadd dba > /dev/null
    /usr/sbin/useradd -g oinstall -G dba -d /home/oracle oracle
    cat /etc/passwd|awk -F':' '{print $1}'|grep 'oracle\>' > /dev/null
    result1=$?
    if [ "$result1" == "0" ];then
        echo "user oracle has been created"
    else
        echo "we has a few problems during creating the user,please check!"
    fi
#set passwd
    SETPASSWD
#chown chmod for /oracle
    chown oracle:oinstall /oracle
    chmod 755 /oracle
    chown oracle:oinstall /oracle/711
    chmod 755 /oracle/711
elif [ "$result" == "0" ];then
    echo "user oracle have already been created"
fi



#Parsing the config file
errParam() {
  echo "[ERROR] \`$1' is empty, check configfile '$configfile'"
  echo ""
  exit
}

SOFTWARE_HOME=
ORACLE_SID=
INVENTORY_LOCATION=
ORACLE_BASE=
ORACLE_HOME=
DB_NAME=

configfile=config.conf
if [ -f $configfile ]; then
  param=$(cat $configfile | tr -d "\015" | grep -v "^#" | grep -v "^$")
else
  echo "[ERROR] $configfile not found!"
  exit
fi


while read i
do
   key=$(echo "$i" | awk -F'=' '{print $1}')
   value=$(echo "$i" | awk -F'=' '{print $2}')
   [ "$key" == "SOFTWARE_HOME" ] && SOFTWARE_HOME=$value
   [ "$key" == "ORACLE_SID" ] && ORACLE_SID=$value
   [ "$key" == "INVENTORY_LOCATION" ] && INVENTORY_LOCATION=$value
   [ "$key" == "ORACLE_HOME" ] && ORACLE_HOME=$value
   [ "$key" == "ORACLE_BASE" ] && ORACLE_BASE=$value
   [ "$key" == "DB_NAME" ] && DB_NAME=$value
done <<< "$param"

[ "x$SOFTWARE_HOME" == "x" ] && errParam SOFTWARE_HOME
[ "x$ORACLE_SID" == "x" ] && ORACLE_SID=orcl
[ "x$INVENTORY_LOCATION" == "x" ] && INVENTORY_LOCATION=/oracle/Inventory
[ "x$ORACLE_BASE" == "x" ] && ORACLE_BASE=/oracle
[ "x$ORACLE_HOME" == "x" ] && ORACLE_HOME=/oracle/db11g
[ "x$DB_NAME" == "x" ] && DB_NAME=orcl

echo "SOFTWARE_HOME is $SOFTWARE_HOME"
echo "ORACLE_SID is $ORACLE_SID"
echo "INVENTORY_LOCATION is $INVENTORY_LOCATION"
echo "ORACLE_BASE is $ORACLE_BASE"
echo "ORACLE_HOME is $ORACLE_HOME"
echo "DB_NAME is $DB_NAME"
echo 

# Set up the shell variables:
echo "EDITOR=vi" >> /home/oracle/.bash_profile
echo "export EDITOR" >> /home/oracle/.bash_profile
echo "umask 022" >> /home/oracle/.bash_profile
echo "export ORACLE_SID=$ORACLE_SID" >> /home/oracle/.bash_profile
echo "export ORACLE_BASE=$ORACLE_BASE" >> /home/oracle/.bash_profile
echo "export ORACLE_HOME=$ORACLE_HOME" >> /home/oracle/.bash_profile
echo "export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH" >> /home/oracle/.bash_profile
echo "export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib" >> /home/oracle/.bash_profile
echo "export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib" >> /home/oracle/.bash_profile

#preinstall 
echo "#add for database" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_max=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_max=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048576" >> /etc/sysctl.conf
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.shmmax = 957691904" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf

sysctl -p 

echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf

echo "session    required    pam_limits.so" >>/etc/pam.d/login

echo "if [ $USER = "oracle" ] || [ $USER = "grid" ]; then" >> /etc/profile
echo "if [ $SHELL = "/bin/ksh" ]; then" >> /etc/profile
echo "ulimit -p 16384" >> /etc/profile
echo "ulimit -n 65536" >> /etc/profile
echo "else" >> /etc/profile
echo "ulimit -u 16384 -n 65536" >> /etc/profile
echo "fi" >> /etc/profile
echo "umask 022" >> /etc/profile
echo "fi" >> /etc/profile

#make db_install.rsp
mk_db_install(){
    echo "oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0" >> db_install.rsp
    echo "oracle.install.option=INSTALL_DB_SWONLY" >> db_install.rsp
    echo "ORACLE_HOSTNAME=$HOSTNAME" >> db_install.rsp
    echo "UNIX_GROUP_NAME=oinstall" >> db_install.rsp
    echo "INVENTORY_LOCATION=$INVENTORY_LOCATION" >> db_install.rsp
    echo "SELECTED_LANGUAGES=zh_CN,en" >> db_install.rsp
    echo "ORACLE_HOME=$ORACLE_HOME" >> db_install.rsp
    echo "ORACLE_BASE=$ORACLE_BASE" >> db_install.rsp
    echo "oracle.install.db.InstallEdition=EE" >> db_install.rsp
    echo "oracle.install.db.EEOptionsSelection=false" >> db_install.rsp
    echo "oracle.install.db.optionalComponents=" >> db_install.rsp
    echo "oracle.install.db.DBA_GROUP=dba" >> db_install.rsp
    echo "oracle.install.db.OPER_GROUP=oinstall" >> db_install.rsp
    echo "oracle.install.db.CLUSTER_NODES=" >> db_install.rsp
    echo "oracle.install.db.isRACOneInstall=false" >> db_install.rsp
    echo "oracle.install.db.racOneServiceName=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.type=GENERAL_PURPOSE" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.globalDBName=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.SID=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.characterSet=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.memoryOption=false" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.memoryLimit=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.installExampleSchemas=false" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.enableSecuritySettings=true" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.password.ALL=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.password.SYS=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.password.SYSTEM=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.password.SYSMAN=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.password.DBSNMP=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.control=DB_CONTROL" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.automatedBackup.enable=false" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.automatedBackup.osuid=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.automatedBackup.ospwd=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.storageType=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=" >> db_install.rsp
    echo "oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=" >> db_install.rsp
    echo "oracle.install.db.config.asm.diskGroup=" >> db_install.rsp
    echo "oracle.install.db.config.asm.ASMSNMPPassword=" >> db_install.rsp
    echo "MYORACLESUPPORT_USERNAME=" >> db_install.rsp
    echo "MYORACLESUPPORT_PASSWORD=" >> db_install.rsp
    echo "SECURITY_UPDATES_VIA_MYORACLESUPPORT=false" >> db_install.rsp
    echo "DECLINE_SECURITY_UPDATES=true" >> db_install.rsp
    echo "PROXY_HOST=" >> db_install.rsp
    echo "PROXY_PORT=" >> db_install.rsp
    echo "PROXY_USER=" >> db_install.rsp
    echo "PROXY_PWD=" >> db_install.rsp
    echo "PROXY_REALM=" >> db_install.rsp
    echo "COLLECTOR_SUPPORTHUB_URL=" >> db_install.rsp
    echo "oracle.installer.autoupdates.option=SKIP_UPDATES" >> db_install.rsp
    echo "oracle.installer.autoupdates.downloadUpdatesLoc=" >> db_install.rsp
    echo "AUTOUPDATES_MYORACLESUPPORT_USERNAME=" >> db_install.rsp
    echo "AUTOUPDATES_MYORACLESUPPORT_PASSWORD=" >> db_install.rsp
}

#mk db_install.rsp
mk_db_install
echo "db_install.rsp has been created"
echo 
#chown chmod db_install.rsp
chown oracle:oinstall db_install.rsp
chmod 755 db_install.rsp


#mkdir ORACLE_HOME ORACLE_BASE INVENTORY_LOCATION
if [ ! -d "$ORACLE_BASE" ];then
    mkdir $ORACLE_BASE
fi

if [ ! -d "$ORACLE_HOME" ];then
    mkdir $ORACLE_HOME
fi

if [ ! -d "$INVENTORY_LOCATION" ];then
    mkdir $INVENTORY_LOCATION
fi
chown -R oracle:oinstall /oracle



#install oracle software
setupDatabase() {
  runStr="
  cd $SOFTWARE_HOME
  ./runInstaller -silent -force -responseFile /oracle/711/db_install.rsp >> /oracle/711/setupDatabase.out
  "
  su - oracle -c "$runStr"
  while true
  do
     echo -n "."
     sleep 3s
     grep "Successfully Setup Software" /oracle/711/nohup.out >> /dev/null
     if [ $? -eq 0 ]; then
       ${INVENTORY_LOCATION}/orainstRoot.sh
       ${ORACLE_HOME}/root.sh
       break
     fi 
   done
}

sleep 1s
echo "steup oracle database..."
setupDatabase
echo "steup succsed."

netcac(){
    cmd="
    netca -silent -responseFile /oracle/711/listen.rsp >> /oracle/711/netca.log
    "
    su - oracle -c "$cmd"
    while true
    do
        echo -n "."
        sleep 1s
        grep -E 'The exit code is 0|退出代码是0' /oracle/711/netca.log >> /dev/null
        if [ $? -eq 0 ]; then
            echo "Listener Successfully Created"
            break
        fi
    done
}

sleep 1s
echo "starting create listener..."
netcac
echo "Create Successfully"


mkdbcarsp(){
cat >> /oracle/711/dbca.rsp << EOF
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "$DB_NAME"
SID = "$ORACLE_SID"
TEMPLATENAME = "General_Purpose.dbc"
[createTemplateFromDB]
SOURCEDB = "myhost:1521:orcl"
SYSDBAUSERNAME = "system"
TEMPLATENAME = "My Copy TEMPLATE"
[createCloneTemplate]
SOURCEDB = "orcl"
TEMPLATENAME = "My Clone TEMPLATE"
[DELETEDATABASE]
SOURCEDB = "orcl"
[generateScripts]
TEMPLATENAME = "New Database"
GDBNAME = "orcl11.us.oracle.com"
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
NODELIST=
SYSDBAUSERNAME = "sys"
[DELETEINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
INSTANCENAME = "orcl11g"
SYSDBAUSERNAME = "sys"
EOF
}

mkdbcarsp

cp -p /oracle/711/orcl7.dbt ${ORACLE_HOME}/assistants/dbca/templates/orcl.dbt

create_db(){
    cmd1="
    dbca -silent -createDatabase -responseFile /oracle/711/dbca.rsp  -sysPassword "oracle" -systemPassword "oracle" >> /oracle/711/dbca.log
    "
    su - oracle -c "$cmd1"
    while true
    do
        echo -n "."
        sleep 1s
        grep  "100%" /oracle/711/dbca.log >> /dev/null
        if [ $? -eq 0 ]; then
            echo "instance create Successfully"
            break
        fi
    done
}

sleep 1s
echo "starting create instance..."
create_db
echo "Instance Create Successfully"
### 回答1: 安装 Oracle 数据需要先准备一些软件和配置,并且会涉及到一些系统设置,因此不能简单地写一个脚本一键安装。下面是一些基本步骤,但是请注意,这只是一个概述,安装过程可能比这更复杂。 1. 准备安装所需的软件和配置,包括 Oracle 数据软件安装包、Oracle 的环境变量配置文件、安装所需的系统文件等。 2. 在系统上创建一个Oracle用户和组,并设置相应的权限. 3. 配置系统内核参数,使其满足 Oracle 数据安装需求 4. 安装 Oracle 数据软件,并进行初始化配置 5. 创建数据并进行相应的配置。 6. 启动数据并进行测试 7. 根据实际情况添加相应的脚本,例如开机自启动,设置监控等 请注意,以上步骤只是大致的描述,还需要根据实际环境进行调整,并且实际安装过程中还需要考虑很多细节问题。 ### 回答2: 编写一个shell脚本一键安装Oracle数据的过程是比较复杂的,下面是一个简单的示例: ```bash #!/bin/bash # 检查是否为root用户 if [[ $EUID -ne 0 ]]; then echo "请使用root用户执行此脚本。" exit 1 fi # 设定Oracle安装相关参数 ORACLE_VERSION="XX.X.XX" ORACLE_EDITION="enterprise" ORACLE_INSTALL_DIR="/opt/oracle" ORACLE_SID="ORCL" # 下载Oracle安装文件 wget -P /tmp "http://www.oracle.com/xxx/xxx/xxx" # 解压缩安装文件 unzip /tmp/oracle_installer.zip -d /tmp # 运行Oracle自动安装脚本 /tmp/oracle_installer/install.sh -s RESPONSE_FILE=/tmp/oracle_installer/response_file.rsp # 运行Oracle配置助手 $ORACLE_INSTALL_DIR/oraInventory/orainstRoot.sh $ORACLE_INSTALL_DIR/product/$ORACLE_VERSION/dbhome_1/root.sh # 配置Oracle环境变量 echo "export ORACLE_HOME=$ORACLE_INSTALL_DIR/product/$ORACLE_VERSION/dbhome_1" >> /etc/profile echo "export ORACLE_SID=$ORACLE_SID" >> /etc/profile echo "export PATH=$ORACLE_HOME/bin:$PATH" >> /etc/profile source /etc/profile echo "Oracle数据安装完成。" ``` 请注意,以上脚本只是一个示例,实际使用时需要根据Oracle安装文件的不同版本进行相应的修改。此外,需要提供一个包含Oracle安装参数的响应文件(response_file.rsp),其中包括数据文件的位置、用户密码和其他安装选项。 ### 回答3: 编写一个Shell脚本实现一键安装Oracle数据的步骤如下: 1. 首先,脚本需要检测操作系统的类型和版本,以确定所需的Oracle数据安装程序和补丁; 2. 下载并解压数据安装程序和补丁文件,可以使用wget或curl命令从Oracle官方网站获取; 3. 创建一个安装响应文件(Response File),其中包含数据安装的配置选项; 4. 修改响应文件中的参数,根据实际需求配置数据安装路径、端口、数据名等信息; 5. 执行安装程序并使用安装响应文件作为配置的输入参数; 6. 等待安装程序完成数据安装和配置; 7. 配置Oracle环境变量,将ORACLE_HOME、PATH和LD_LIBRARY_PATH添加到系统环境变量中; 8. 启动Oracle数据实例,并检查是否成功启动; 9. 验证数据的连接,可以使用sqlplus命令连接数据并执行一些简单的查询语句; 10. 如果一切正常,则输出安装成功的提示信息; 11. 清理临时文件和安装程序。 编写这样一个一键安装脚本需要考虑到安装过程中的错误处理和异常情况处理,例如空间不足、权限不足、依赖软件未安装等。在脚本中可以加入合理的判断和处理逻辑,保证安装过程的稳定性和安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值