Linux云平台Oracle 12c安装与数据迁移
配置阿里云环境的操作系统参数
hosts 主机信息配置
sql
echo "172.18.33.214 iZwz9f32ql5nimsjsa4verZ" >> /etc/hosts
#这里的IP地址是云服务器的内外地址,可以使用ifconfig命令查看,不是你用ssh登录的公网IP。
配置英文环境变量
sql
echo "export LANG=en_US" >> ~/.bash_profile
创建 SWAP 交换页面空间
sql
#使用下面命名查看服务器有没有swap空间,没有的需要新建
free -m
sql
#安装oracle数据库必须要有swap空间,不然在后面安装检查过程中回报错。
#使用dd命令,划分出swap空间,一般生产环境配置8G即可。
dd if=/dev/zero of=/home/swap bs=1M count=4096
mkswap /home/swap
swapon /home/swap
#磁盘添加到fatab,开机自动挂载
vi /etc/fstab
/home/swap swap swap default 0 0
创建用户与目录
sql
/usr/sbin/groupadd -g 60001 oinstall
/usr/sbin/groupadd -g 60002 dba
/usr/sbin/groupadd -g 60003 oper
useradd -u 61001 -g oinstall -G dba,oper oracle
id oracle
passwd oracle
sql
#创建目录
mkdir /oracle
mkdir /oradata
mkdir -p /oracle/app/oracle/product/12.2.0/db_1
mkdir -p /oracle/app/oraInventory
chown -R oracle:oinstall /oracle
chown -R oracle:oinstall /oradata
chmod -R 775 /oracle
chmod -R 775 /oradata
安装相关 ORACLE 需要的依赖软件包
cd /etc/yum.repos.d
yum list |more
sql
yum -y install autoconf
yum -y install automake
yum -y install binutils
yum -y install binutils-devel
yum -y install bison
yum -y install cpp
yum -y install dos2unix
yum -y install ftp
yum -y install gcc
yum -y install gcc-c++
yum -y install lrzsz
yum -y install python-devel
yum -y install compat-db*
yum -y install compat-gcc-34
yum -y install compat-gcc-34-c++
yum -y install compat-libcap1
yum -y install compat-libstdc++-33
yum -y install compat-libstdc++-33.i686
yum -y install glibc-*
yum -y install glibc-*.i686
yum -y install libXpm-*.i686
yum -y install libXp.so.6
yum -y install libXt.so.6
yum -y install libXtst.so.6
yum -y install libXext
yum -y install libXext.i686
yum -y install libXtst
yum -y install libXtst.i686
yum -y install libX11
yum -y install libX11.i686
yum -y install libXau
yum -y install libXau.i686
yum -y install libxcb
yum -y install libxcb.i686
yum -y install libXi
yum -y install libXi.i686
yum -y install libgcc_s.so.1
yum -y install libstdc++.i686
yum -y install libstdc++-devel
yum -y install libstdc++-devel.i686
yum -y install libaio
yum -y install libaio.i686
yum -y install libaio-devel
yum -y install libaio-devel.i686
yum -y install ksh
yum -y install libXp
yum -y install libaio-devel
yum -y install numactl
yum -y install numactl-devel
yum -y install make -y
yum -y install sysstat -y
yum -y install unixODBC
yum -y install unixODBC-devel
yum -y install elfutils-libelf-devel-0.97
yum -y install elfutils-libelf-devel
yum -y install redhat-lsb-core
yum -y install unzip
修改操作系统相关参数
修改资源限制
vi /etc/security/limits.conf
sql
#ORACLE SETTING
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 16384
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
#oracle hard memlock 8192000
#oracle soft memlock 8192000 --[锁页,8G就给6G,16G给12G]
--重新登录检查
ulimit -a
控制为用户分配的资源
sql
echo "session required pam_limits.so" >> /etc/pam.d/login
cat /etc/pam.d/login
修改内核参数
vi /etc/sysctl.conf
sql
#ORACLE SETTING
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 1210612736
kernel.shmall = 295560
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048586
kernel.panic_on_oops = 1
#vm.nr_hugepages = 2500
sysctl -p
--如果设置了 hugepages,还需要关闭透明页
vi /etc/rc.d/rc.local
sql
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
chmod +x /etc/rc.d/rc.local
配置安全
防火墙
sql
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
SELINUX(阿里云默认关闭)
sql
vi /etc/selinux/config
SELINUX=disabled
setenforce 0
设置 ORACLE 用户的环境变量
su - oracle
vi .bash_profile
sql
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_UNQNAME=hefeidb
ORACLE_SID=hefeidb; export ORACLE_SID
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
PATH=.:$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin; export PATH
THREADS_FLAG=native; export THREADS_FLAG
umask=022
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
env |grep ORACLE
数据库软件安装与监听配置
安装数据库软件
su - oracle
cd /soft/database/
cp -r response /oracle/
oracle@iZwz9f32ql5nimsjsa4verZ:/oracle/response\]KaTeX parse error: Expected group after '\^' at position 31: ...rsp \|grep -Ev "\^̲#\|\^"
mv db_install.rsp db_install.rsp.bak
```sql
#vi db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/app/oraInventory
ORACLE_HOME=/oracle/app/oracle/product/12.2.0/db_1
ORACLE_BASE=/oracle/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
#chmod 775 db_install.rsp
```
```sql
su - root
vi /etc/oraInst.loc
inventory=/oracle/app/oraInventory
inst_group=oinstall
chown oracle:oinstall /etc/oraInst.loc
```
#### 运行安装
```sql
su - oracle
cd /soft/database
./runInstaller -silent -force -noconfig -responseFile /oracle/response/db_install.rsp
#-silent 静默安装不做任何提示
#--force 不是空目录不给安装,加这个就是安装
#-noconfig 不运行监听配置
#-responseFile 响应文件,绝对路径
```
#### 跑 sh 脚本 --用root用户执行

#### 配置监听
```sql
[oracle@iZwz9f32ql5nimsjsa4verZ:/oracle/response]$cat netca.rsp |grep -Ev "^#|^$"
[GENERAL]
RESPONSEFILE_VERSION="12.2"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
netca -silent -responsefile /oracle/response/netca.rsp
```
lsnrctl status 查看监听,正常。
### 数据库的创建
#### 静默创建 ORACLE 数据库
```sql
dbca
[oracle@iZwz9f32ql5nimsjsa4verZ:/oracle/response]$cat dbca.rsp |grep -Ev "^#|^$"
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=
sid=
databaseConfigType=
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=
numberOfPDBs=
pdbName=
useLocalUndoForPDBs=
pdbAdminPassword=
nodelist=
templateName=
sysPassword=
systemPassword=
oracleHomeUserPassword=
emConfiguration=
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation=
datafileDestination=
recoveryAreaDestination=
storageType=
diskGroupName=
asmsnmpPassword=
recoveryGroupName=
characterSet=
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=
variablesFile=
variables=
initParams=
sampleSchema=
memoryPercentage=
databaseType=
automaticMemoryManagement=
totalMemory=
```
##### 方式01.通过响应文件创建
```sql
dbca -silent -createDatabase -responseFile /oracle/response/dbca.rsp
```
##### 方式02.通过手工指定参数创建
```sql
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName hefeidb -sid hefeidb -databaseConfigType SI -responseFile NO_VALUE -sysPassword oracle -systemPassword oracle -characterSet ZHS16GBK -memoryPercentage 30 -emConfiguration LOCAL
```

```sql
oracle@iZwz9f32ql5nimsjsa4verZ:/oracle/response]$dbca -help
Usage: dbca [