CentOS 7静默安装oracle数据库

1,204 阅读3分钟

装完数据库先检查服务器的字符集是不是ZHS16GBK

建立Swap分区

dd if=/dev/zero of=/home/swap bs=1024 count=2097152
#bs为单位,count为设置的大小2048*1024
mkswap  /home/swap
#格式化交换文件
swapon  /home/swap
#立即启用交换分区文件, 要停止使用新创建的swap文件,只要执行swapoff/home/swap命令即可
vim /etc/fstab
#添加如下代码
/home/swap    swap    swap    defaults    0 0

创建用户和用户组

groupadd oinstall
#创建用户组oinstall
groupadd dba
#创建用户组dba
useradd -g oinstall -G dba -m oracle
#创建oracle用户,并加入到oinstall和dba用户组
groups oracle
#查询用户组是否授权成功
passwd oracle
#设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
id oracle
#查看新建的oracle用户

创建安装目录和权限

mkdir -p /home/oracle/app/oracle
#oracle数据库安装目录
mkdir -p /home/oracle/app/oraInventory
#oracle数据库配置文件目录
mkdir -p /home/oracle/app/database
#oracle数据库软件包解压目录
chown -R oracle:oinstall /home/oracle/*

修改OS系统标识

vim /etc/redhat-release
    #修改成redhat-7
    Red Hat Enterprise Linux 7

关闭防火墙和selinux(略)

修改内核参数

vim /etc/sysctl.conf
    #增加如下内容:
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.conf.all.rp_filter = 1
    #设置最大打开文件数
    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    #共享内存的总量,8G内存设置:2097152*4k/1024/1024
    kernel.shmall = 2097152
    #最大共享内存的段大小
    kernel.shmmax = 2147483648
    #整个系统共享内存端的最大数
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    #可使用的IPv4端口范围
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max= 4194304
    net.core.wmem_default= 262144
    net.core.wmem_max= 1048576

sysctl -p
#配置文件生效
vim /etc/security/limits.conf
    #增加如下内容:
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536

配置oracle用户的环境变量

vim /home/oracle/.bash_profile
    export ORACLE_BASE=/home/oracle/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    #oracle启动数据库实例名
    export ORACLE_SID=orcl
    #添加系统环境变量
    export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    export TNS_ADMIN=$ORACLE_HOME/network/admin

安装所需要的依赖环境

yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXtst sysstat ksh make libXi compat-libcap1

解压两个安装文件到对应的文件夹下(自行修改对应的目录)

unzip /opt/soft/linux.x64_11gR2_database_1of2.zip -d /home/oracle/app/
unzip /opt/soft/linux.x64_11gR2_database_2of2.zip -d /home/oracle/app/

修改安装配置信息

vim /home/oracle/app/database/response/db_install.rsp
    oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
    oracle.install.option=INSTALL_DB_SWONLY
    ORACLE_HOSTNAME=promote.cache-dns.local
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/home/oracle/app/oraInventory
    SELECTED_LANGUAGES=en,zh_CN
    ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1
    ORACLE_BASE=/home/oracle/app/oracle
    oracle.install.db.InstallEdition=EE
    oracle.install.db.isCustomInstall=false
    oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
    oracle.install.db.DBA_GROUP=dba
    oracle.install.db.OPER_GROUP=oinstall
    oracle.install.db.CLUSTER_NODES=
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
    oracle.install.db.config.starterdb.globalDBName=orcl
    oracle.install.db.config.starterdb.SID=orcl
    oracle.install.db.config.starterdb.characterSet=ZHS16GBK
    oracle.install.db.config.starterdb.memoryOption=true
    oracle.install.db.config.starterdb.memoryLimit=512
    oracle.install.db.config.starterdb.installExampleSchemas=false
    oracle.install.db.config.starterdb.enableSecuritySettings=true
    oracle.install.db.config.starterdb.password.ALL=******
    oracle.install.db.config.starterdb.password.SYS=
    oracle.install.db.config.starterdb.password.SYSTEM=
    oracle.install.db.config.starterdb.password.SYSMAN=
    oracle.install.db.config.starterdb.password.DBSNMP=
    oracle.install.db.config.starterdb.control=DB_CONTROL
    oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
    oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
    oracle.install.db.config.starterdb.dbcontrol.emailAddress=
    oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
    oracle.install.db.config.starterdb.automatedBackup.enable=false
    oracle.install.db.config.starterdb.automatedBackup.osuid=
    oracle.install.db.config.starterdb.automatedBackup.ospwd=
    oracle.install.db.config.starterdb.storageType=
    oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
    oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
    oracle.install.db.config.asm.diskGroup=
    oracle.install.db.config.asm.ASMSNMPPassword=
    MYORACLESUPPORT_USERNAME=
    MYORACLESUPPORT_PASSWORD=
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=
    DECLINE_SECURITY_UPDATES=true
    PROXY_HOST=
    PROXY_PORT=
    PROXY_USER=
    PROXY_PWD=

进行安装

su - oracle
cd /home/oracle/app/database
./runInstaller -silent -ignorePrereq -ignoreSysPrereqs -responseFile /home/oracle/app/database/response/db_install.rsp
su - root
#运行下面两个脚本
/home/oracle/app/oraInventory/orainstRoot.sh
/home/oracle/app/oracle/product/11.2.0/db_1/root.sh

配置tnsnames.ora

vim /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
    #新增如下内容:
    alioracle =
     (DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名称hostname)(PORT = 1521)))
      (CONNECT_DATA =(SERVICE_NAME = orcl))
        )

建库

vim /home/oracle/app/database/response/dbca.rsp
    #修改实例名
    GDBNAME = "orcl"
    SID = "orcl"

su - oracle
cd /home/oracle/app/oracle/product/11.2.0/db_1/bin
./dbca -silent -responseFile /home/oracle/app/database/response/dbca.rsp
#需要输入oracle用的 用户名和密码 orcl/orcl

配置listener.ora

vim /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
    #新增如下内容:
    LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=
          (ADDRESS=(PROTOCOL=TCP)(HOST=主机名称hostname)(PORT=1521))  
      )
    )
    SID_LIST_LISTENER=
        (SID_LIST=
            (SID_DESC=
                (GLOBAL_DBNAME=orcl)
                (SID_NAME=orcl)
                (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)
                (PRESPAWN_MAX=20)
                (PRESPAWN_LIST=
                    (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
                )
            )
        )

创建用户的id以及分配权限

#登录到数据库
sqlplus / as sysdba
create user 用户名 identified by 用户名;
grant connect, resource to 用户名;
grant select on V_$session to 用户名;
grant select on V_$sesstat to 用户名;
grant select on V_$statname to 用户名;
startup

启动监听服务

su - oracle
cd $ORACLE_HOME/bin
lsnrctl start

select name,dbid from v$database; #查询数据库名

select instance_name from v$instance; #查询实例名

alter user system identified by system; #修改密码

select file_Name from dba_data_files; #查询表空间地址

Oracle数据库设置开机自启动

vim /etc/oratab
    #修改
    testsid:/data/oracle/product/11.2.0/db_1:Y

vim /etc/rc.d/rc.local
    su oracle -lc "/home/oracle/app/oracle/product/11.2.0/db_1/bin/lsnrctl start"
    su oracle -lc /home/oracle/app/oracle/product/11.2.0/db_1/bin/dbstart

#如果是在以前的centos版本中,这样就可以了。但是centos7 的/etc/rc.local不会开机执行
chmod +x /etc/rc.d/rc.local
#查看监听状态
lsnrctl status
查看oracle服务状态
ps -ef |grep ora

完全删除Oracle数据库

#使用SQL*PLUS停止数据库
sqlplus / as sysdba
SQL> shutdown
SQL> exit
#停止Listener
[oracle@ora920 oracle]$ lsnrctl stop
#停止HTTP服务
[oracle@ora920 oracle]$ $ORACLE_HOME/Apache/Apache/bin/apachectl stop
#将安装目录删除
[root@ora920 /root]# rm -rf /opt/oracle/
#将/usr/bin下的文件删除
[root@ora920 /root]# rm /usr/bin/dbhome
[root@ora920 /root]# rm /usr/bin/oraenv
[root@ora920 /root]# rm /usr/bin/coraenv
#将/etc/oratab删除
[root@ora920 /root]# rm /etc/oratab
#将/etc/oraInst.loc删除
[root@ora920 /root]# rm /etc/oraInst.loc
#把$ORACLE_HOME下面的文件删掉
[root@centos213 /]# $ORACLE_HOME
-bash: /usr/oracle/product: Is a directory

rm -rf /opt/oracle/
#将oracle用户删除
[root@ora920 /root]# userdel oracle
#将用户组删除
[root@ora920 /root]# groupdel oinstall
[root@ora920 /root]# groupdel dba
#将启动服务删除
[root@ora920 /root]# chkconfig --del dbora

问题记录

ORACLE修改字符集修改为ZHS16GBK

参照链接

SQL> shutdown immediate; 
SQL> startup mount 
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> alter database openSQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 
SQL> shutdown immediate; 
SQL> startup

导入dmp文件时报错ORA-39006: internal error ORA-39213: Metadata processing is not available

SQL> execute sys.dbms_metadata_util.load_stylesheets;

创建dblink 时候出现us.oracle.com 而使数据库链连接不上

参照链接

问题:LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'

设置$oracle_home/.bash_profile 里面ORACLE_SID为安装实例名