Oracle Linux 7 (centos7) 上安装 Oracle Database 19c

自动设置

执行自动设置或手动设置以完成基本先决条件。所有安装都需要附加设置。

yum install -y oracle-database-preinstall-19c    --执行这个就不用手动设置

修改主机名在“/etc/hostname”文件中设置正确的主机名。

hostnamectl set-hostname  oracle19c.10
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
192.168.2.10 oracle19c.10

手动设置

如果您尚未使用“oracle-database-preinstall-19c”软件包来执行所有先决条件,则需要手动执行以下设置任务。
将以下行添加到“/etc/sysctl.conf”文件或名为“/etc/sysctl.d/98-oracle.conf”的文件中。

fs.file-max = 6815744 
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 419 .core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

运行以下命令之一以更改当前内核参数,具体取决于您编辑的文件。

/sbin/sysctl -p 
# 或者
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf

将以下行添加到名为“/etc/security/limits.d/oracle-database-preinstall-19c.conf”的文件中。

oracle soft nofile 1024 
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728

评论中有人建议您可能需要将前面的行添加到 CentOS7 的“/etc/security/limits.conf”文件中。OL7 绝对不需要这样做,但如果安装程序为这些设置提供先决条件失败,则值得考虑。
根据需要列出以下软件包。许多软件包应该已经安装。

yum install -y bc     
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33
#yum install -y dtrace-modules
#yum install -y dtrace-modules-headers
#yum install -y dtrace -modules-provider-headers
yum install -y dtrace-utils
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y fontconfig-devel
yum install -y glibc
yum install -y glibc-devel
yum install -y ksh
yum install -y libaio
yum install -y libaio-devel
yum install -y libdtrace-ctf-devel
yum install -y libXrender
yum install -y libXrender-devel
yum install -y libX11
yum install -y libXau
yum install -y libXi
yum install -y libXtst
yum install -y libgcc
yum install -y librdmacm-devel
yum install -y libstdc++
yum install -y libstdc++-devel
yum install -y libxcb
yum install -y make
yum install -y net-tools # 集群件
yum install -y nfs-utils # ACFS
yum install -y python # ACFS
yum install -y python-configshell # ACFS
yum install -y python-rtslib # ACFS
yum install -y python-6 # ACFS
yum install -y targetcli # ACFS
yum install -y smartmontools
yum install -y sysstat

# 由我添加。
yum install -y unixODBC

创建新组和用户。

groupadd -g 54321 oinstall 
groupadd -g 54322 dba
groupadd -g 54323 oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba

useradd -u 54321 -g oinstall -G dba,oper oracle

取消注释您需要的额外组。

附加设置

无论您是进行手动设置还是自动设置,都必须执行以下步骤。
设置“oracle”用户的密码。

passwd oracle

创建将安装 Oracle 软件的目录。

mkdir -p /oracle/product/19.0.0/dbhome_1 
mkdir -p /oracle/oradata
chown -R oracle:oinstall /oracle
chmod -R 775 /oracle

创建一个“脚本”目录。

mkdir /home/oracle/scripts

创建一个名为“setEnv.sh”的环境文件。“$”字符使用“\”转义。如果您不使用​​cat​​命令创建文件,则需要删除转义字符。

cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=\$TMP

export ORACLE_HOSTNAME=oracle19c.10
export ORACLE_UNQNAME=assets
export ORACLE_BASE=/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/oracle/oraInventory
export ORACLE_SID=assets
export PDB_NAME=assets
export DATA_DIR=/oracle/oradata

export PATH=/usr/sbin:/usr/local/bin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH

export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF

在“/home/oracle/.bash_profile”文件的末尾添加对“setEnv.sh”文件的引用。

echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile

安装

切换到该目录,将软件直接解压缩到该路径中,并通过在该目录​​ORACLE_HOME​​中发出以下命令之一来启动 Oracle Universal Installer (OUI) 。​​ORACLE_HOME​​交互模式将显示 GUI 安装程序屏幕以允许用户输入,而静默模式将安装软件而不显示任何屏幕,因为所有必需的选项都已在命令行中指定。

# 解压软件。
cd $ORACLE_HOME
unzip -oq /LINUX.X64_193000_db_home.zip


# 静默模式。
./runInstaller -ignorePrereq -waitforcompletion -silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
SELECTED_LANGUAGES=en,zh_CN \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true

出现提示时运行根脚本。

作为 root 用户,执行以下脚本:
1. /oracle/oraInventory/orainstRoot.sh
2. /oracle/product/19.0.0/dbhome_1/root.sh

​您可以在此处​​阅读有关静默安装的更多信息。
您现在已准备好创建数据库。

数据库创建

您可以使用数据库配置助手 (DBCA) 创建数据库。交互模式将显示 GUI 屏幕以允许用户输入,而静默模式将创建数据库而不显示任何屏幕,因为所有必需的选项都已在命令行中指定。
安装的时候看一下服务器内存是不是大于2G

# 启动监听器。
su - oracle
lsnrctl start

# 1.静默模式创建容器cdb数据库用户只能是C##开头 (执行的时候删除后面的注释)
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \ sid
-characterSet ZHS16GBK \ 字符集
-sysPassword SysPassword1 \ sys密码
-systemPassword SysPassword1 \ system密码
-createAsContainerDatabase TRUE \ 创建容器数据库
-numberOfPDBs 1 \ pdb数量
-pdbName ${PDB_NAME} \ pdb名字
-pdbAdminPassword PdbPassword1 \ pdb密码
-databaseType MULTIPURPOSE \ 数据库类型
-memoryMgmtType auto_sga \ 内存分配
-totalMemory 2000 \ 内存大小
-storageType FS \ 存储类型
-datafileDestination "${DATA_DIR}" \ 表空间存放位置
-redoLogFileSize 50 \ 日志文件大小
-emConfiguration NONE \
-ignorePreReqs

# 2.静默模式不创建容器cdb数据库 (我们公司用的这个)
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \
-characterSet ZHS16GBK \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-createAsContainerDatabase FALSE \
-recoveryAreaDestination '/oracle/flash_recovery_area' \
-sampleSchema true \
-databaseType MULTIPURPOSE \
-memoryMgmtType auto_sga \
-totalMemory 2000 \
-storageType FS \
-datafileDestination "${DATA_DIR}" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs

控制台会输出以下内容

复制数据库文件
1% 完成
2% 完成
8% 完成
13% 完成
19% 完成
完成 27%
创建和启动 Oracle 实例
完成 29%
完成 32%
完成 33%
完成 34%
完成 38%
42% 完成
完成 43%
45% 完成
完成数据库创建
48% 完成
51% 完成
53% 完成
62% 完成
70% 完成
72% 完成
创建可插拔数据库
78% 完成
100% 完成

​您可以在此处​​阅读有关静默数据库创建的更多信息。

安装后

编辑“vi /etc/oratab”文件,将每个实例的重启标志设置为“Y”。 监听会自动启动

cdb1:/u01/app/oracle/product/19.0.0/dbhome_1:Y

启用 Oracle 托管文件 (OMF) 并确保 PDB 在实例启动时启动。

sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;
EOF

打开防火墙

systemctl start firewalld
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --reload

如果要改监听端口直接要添加 listener.ora tnsnames.ora 这2个文件

vi  listener.ora 
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =localhost )(PORT = 1521))
)
)

vi tnsnames.ora
ASSETS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = assets)
)
)

然后重启监听

su - oracle  
lsnrctl stop
lsnrctl start

创建表空间

create tablespace COLLEGEINFO datafile '/oracle/oradata/ASSETS/COLLEGEINFO.dbf' size 500M;

ALTER DATABASE
DATAFILE '/oracle/oradata/ASSETS/COLLEGEINFO.dbf'
AUTOEXTEND
ON NEXT 1024M; --设置自动扩展

创建用户

create user sec_import identified by yunweibu; 
grant connect,resource,dba to sec_import;

如果服务器上面报错乱码就修改这个文件 /home/oracle/.bash_profile

export NLS_LANG=AMERICAN_AMERICA.UTF8   --加上这一行

设置expdp导出路径

create or replace directory EXPDP_DIR as '/backup/expdp_dir';

创建备份用户

create user DB_BACKUP  identified by "SpeedIt_db_backup123"
default tablespace COLLEGEINFO
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant exp_full_database to DB_BACKUP;
grant resource to DB_BACKUP;
-- Grant/Revoke system privileges
grant unlimited tablespace to DB_BACKUP;
grant create any directory to DB_BACKUP;

创建备份脚本
mkdir /oracle/sh
vi /oracle/sh/db_backup.sh

UNIVERSITY="speed_demo"
DBUSER="db_backup"
DBPWD="SpeedIt_db_backup123"
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export NLS_LANG
PATH=/oracle/product/19.0.0/dbhome_1/bin:/usr/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin
export PATH
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/product/19.0.0/dbhome_1
ORACLE_SID=assets
LD_LIBRARY_PATH=/oracle/product/19.0.0/dbhome_1/lib:/lib:/usr/lib:/usr/lib64
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH
DM=`date +%Y%m%d%H%M%S`

TAR_FILE="/backup/oracle/$UNIVERSITY-db-$DM.tar"
#expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_base COMPRESSION=ALL DUMPFILE=sec_base.dmp logfile=sec_base.log EXCLUDE=TABLE:\"IN \(\'SYSTEM_LOG\',\'SYSTEM_EXCEPTION\'\)\"
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_base COMPRESSION=ALL DUMPFILE=sec_base.dmp logfile=sec_base.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_psms COMPRESSION=ALL DUMPFILE=sec_psms.dmp logfile=sec_psms.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_mall COMPRESSION=ALL DUMPFILE=sec_mall.dmp logfile=sec_mall.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_bl_assets COMPRESSION=ALL DUMPFILE=sec_bl_assets.dmp logfile=sec_bl_assets.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_assets COMPRESSION=ALL DUMPFILE=sec_assets.dmp logfile=sec_assets.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_contract COMPRESSION=ALL DUMPFILE=sec_contract.dmp logfile=sec_contract.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_budget COMPRESSION=ALL DUMPFILE=sec_budget.dmp logfile=sec_budget.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_acceptance COMPRESSION=ALL DUMPFILE=sec_acceptance.dmp logfile=sec_acceptance.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_purpose COMPRESSION=ALL DUMPFILE=sec_purpose.dmp logfile=sec_purpose.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_argument COMPRESSION=ALL DUMPFILE=sec_argument.dmp logfile=sec_argument.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_fine_report COMPRESSION=ALL DUMPFILE=sec_fine_report.dmp logfile=sec_fine_report.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_report_metadata COMPRESSION=ALL DUMPFILE=sec_report_metadata.dmp logfile=sec_report_metadata.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_dsf_finance COMPRESSION=ALL DUMPFILE=sec_dsf_finance.dmp logfile=sec_dsf_finance.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_assets7 COMPRESSION=ALL DUMPFILE=sec_assets7.dmp logfile=sec_assets7.log
expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_assets_business COMPRESSION=ALL DUMPFILE=sec_assets_business.dmp logfile=sec_assets_business.log
#expdp $DBUSER/$DBPWD DIRECTORY=expdp_dir SCHEMAS=sec_import COMPRESSION=ALL DUMPFILE=sec_import.dmp logfile=sec_import.log

tar zcvf $TAR_FILE /backup/expdp_dir/*
rm -f /backup/expdp_dir/*

find /backup/oracle -type f -mtime +30 -exec rm -f {} \;

安全加固,密码规则一系列配置,漏洞修复。。。。。

如果要修改成解压执行脚本就能安装的oracle 需要进行以下步骤

1.在oracle 下面创建 install 目录

cd  /oracle/install
#这些配置文件脚本里面都要用到
cp -rf /home/oracle/.bash_profile bash_profile

cp -rf /etc/rc.d/init.d/oracle-database-preinstall-19c-firstboot .

cp -rf /etc/oratab .

vi exp_oracle --创建定时任务文件

0 1 * * * /oracle/sh/db_backup.sh

2.编写vi /oracle/install/install_all.sh

cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF

###
/sbin/sysctl -p
###
cat >> /etc/security/limits.d/oracle-database-preinstall-19c.conf <<EOF
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
EOF
###
cat >> /etc/profile <<EOF
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
###
cat >> /etc/csh.login <<EOF
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
###

groupadd -g 6001 oinstall
groupadd -g 6002 dba
groupadd -g 6003 oper
useradd -u 6001 -g oinstall -G dba,oper oracle

passwd oracle

chown -R oracle.oinstall /oracle

cat bash_profile >> /home/oracle/.bash_profile

#make backup directory
mkdir -p /backup/oracle
mkdir -p /backup/expdp_dir
chown -R oracle.oinstall /backup/oracle
chown -R oracle.oinstall /backup/expdp_dir

chown -R oracle.oinstall /oracle/sh/db_backup.sh

#install crond for oracle
cp -Rf exp_oracle /var/spool/cron/oracle
chown -R oracle.root /var/spool/cron/oracle

/oracle/oraInventory/orainstRoot.sh
/oracle/product/19.0.0/dbhome_1/root.sh



cp -Rf oracle-database-preinstall-19c-firstboot /etc/rc.d/init.d
chmod 755 /etc/rc.d/init.d/oracle-database-preinstall-19c-firstboot
chown root.root /etc/rc.d/init.d/oracle-database-preinstall-19c-firstboot
cp -Rf oratab /etc/oratab
chown oracle.root /etc/oratab

cat >> /etc/sudoers <<EOF
oracle ALL=(ALL) NOPASSWD: /bin/cp,/bin/rm
EOF

3.压缩oracle
tar -zcvf /oracle.19c.tar.gz /oracle
这样一个可迁移的oracle 就打包好了