目录
1.依赖环境部署用户组
执行创建用户组oinstall命令:
groupadd oinstall
执行创建用户组dba命令:
groupadd dba
执行创建用户Oracle,并将Oracle用户加入到oinstall和dba用户组中命令:
useradd -g oinstall -G dba oracle
设置Oracle用户的密码,根据提示输入2次密码:
passwd oracle
查看创建结果命令:
id oracle
2.安装oracle
2.1.路径说明
oracle安装目录:/app/database/oracle
oracle安装文件目录:/app/tools/database
拷贝出解压之后的三个文建存放路径:/app/oracle/etc
2.2.在root下新建目录
是为了将安装文件上传到此处,并把新建的目录分配到oinstall组下的oracle用户。并授权
创建目录文件夹/app/tools/database:
mkdir -p /app/tools/database
给/app/tools/database文件夹授权:
chown -R oracle:oinstall /app/tools/database/
给/app/tools/database文件夹授权可以修改文件或目录的访问权限:
chmod -R 775 /app/tools/database/
2.3.上传oracle安装包
(1)在oracle用户下上传oracle的安装程序压缩包,上传文件时,使用oracle用户上传
(2)关闭防火墙
执行关闭防火墙命令:
systemctl stop firewalld.service
执行禁止防火墙开机启动命令:
systemctl disable firewalld.service
(3)关闭selinux
执行命令:
/usr/sbin/sestatus -v
如果SELinux status参数为enabled即为开启状态,不需要执行下面操作,如果不是需要执行下面命令
执行临时关闭selinux(不用重启机器)命令:
setenforce 0
永久关闭selinux:
执行编辑config配置文件命令:
vim /etc/selinux/config
将文件中设置为SELINUX=disabled
2.4.修改host
执行编辑命令:
vim /etc/hosts
添加IP地址和域名的映射关系,进入hosts文件,在文件末尾加上本机实际IP和主机用户名
ip oracle
查看主机名命令:
hostname
修改主机名称
vim /etc/hostname
设置设置静态主机名命令:
语法:hostnamectl set-hostname 主机名
示例:
hostnamectl set-hostname oracle
2.5.安装必要的依赖包
检查是否安装命令:
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
执行安装命令(如出现错误,则多执行几次):
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
安装之后查看
2.6.修改内核参数(根据需要修改)
(1)执行编辑sysctl.conf命令:
vim /etc/sysctl.conf
(2)在sysctl.conf文件中加上下面内容:
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=524288
kernel.shmmax=2147483647
kernel.sem=250 32000 100 128
kernel.shmmni=4096
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
net.ipv4.ip_local_port_range=9000 65500
(3)上面添加的参数有重复,需要把文件中重复参数注释
(4)使配置文件生效,执行以下命令:
sysctl -p
2.7.修改配置
2.7.1.配置用户资源限制
(1)编辑limits.conf文件命令:
vim /etc/security/limits.conf
(2)在文件末尾加上下面内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
2.7.2.编辑login文件
(1)执行编辑login文件命令:
vim /etc/pam.d/login
(2)将下面内容添加到文件末尾:
session required pam_limits.so
2.7.3.编辑profile文件
(1)打开并编辑文件/etc/profile命令:
vim /etc/profile
(2)在文件末尾添加下面内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384 ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
(3)使配置文件生效
source /etc/profile
2.7.4.创建数据库目录
在root用户下创建,因为oracel用户没有权限创建文件夹
创建文件夹:
mkdir -p /app/database/oracle
给文件夹授予权限:
chown -R oracle:oinstall /app/database/oracle/
给文件夹授予775权限:
chmod -R 775 /app/database/oracle/
2.7.5.配置Oracle用户
切换到oracle用户下:
su - oracle
oracle 默认使用的密码都是orcl123456
2.7.5.1配置Oracle环境变量
(1)编辑.bash_profile文件
打开并编辑环境变量文件,配置oracle用户环境变量
vim ~/.bash_profile
(2)在末尾添加下面内容:
export ORACLE_BASE=/data/server/oracle
export ORACLE_SID=orcl
注释:
orcl:数据库实例名称,建库时指定
(3)使配置生效
source ~/.bash_profile
2.7.5.2.sqlplus改进
在默认的sqlplus的使用过程中发现是比较难用的,最好的例子就是不能用退格键以及掉出历史命令的上下键,这里介绍退格键的改进。
(1)切换至oracle用户:
su - oracle
(2)打开并编辑用户环境变量配置文件:
vim ~/.bash_profile
(3)在文件末尾加上下面内容并保存退出
stty erase ^h
(4)使配置文件生效
source ~/.bash_profile
使用echo命令查看单个环境变量
echo $PATH
2.8.开始安装
2.8.1.解压安装包
进入压缩包存放目录下:
cd /app/tools/database
解压文件:
unzip linuxx64_12201_database.zip
2.8.2.新建etc目录
(1)切换到root用户下:
su
(2)新建一个etc文件夹
mkdir etc
可以使用安装部署备份的文件进行上传,里面的参数是已经改好的
以下拷贝过程适用于第一次安装部署实施
(3)将解压之后/app/tools/database/database/response/*下的三个文件拷贝到etc目录
cp /app/tools/database/database/response/* /app/etc/
(4) 设置权限
给文件夹和文件授权:
chown -R oracle /app/etc
chmod 775 -R /app/etc/*.rsp
(5)查看文件权限
ls -la etc/
2.8.3.配置环境变量
(1)切换到oracle用户:
su - oracle
(2)配置环境变量:
vim ~/.bash_profile
(3)将下面内容添加文件末尾
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_HOME=$ORACLE_BASE/product
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
(4)使配置生效
source ~/.bash_profile
2.8.4. 编辑文件内容
(1)修改db_install.rsp文件
vim /app/etc db_install.rsp
(2)将下面参数添加到下面
oracle.install.option=INSTALL_DB_SWONLY // 安装类型
UNIX_GROUP_NAME=oinstall // 安装组
INVENTORY_LOCATION=/app/database/oracle/oraInventory //INVENTORY目录(不填就是默认值)
ORACLE_HOME=/app/database/oracle/product //主目录
ORACLE_BASE=/app/database/oracle //基目录
oracle.install.db.InstallEdition=EE // 企业版本
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
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 = AL32UTF8 //指定入门数据库字符集
oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M)
#oracle.install.db.config.starterdb.password.ALL=oracle//设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false //是否允许用户设置密码
DECLINE_SECURITY_UPDATES=true
2.8.4.1.文件上传方式替换配置文件
(1)将源文件删除
rm -f db_install.rsp
(2)上传db_install.rsp文件
rz
(3)由于删除在上传需要再次对文件进行赋予权限
chmod 775 -R /app/etc/*.rsp
2.8.5.安装
(1)进入到oracle的解压目录:
cd /app/tools/database/database
(2)执行安装命令:
./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile /app/etc/db_install.rsp
(3)出现以上结果后,根据操作,以root身份执行这两个文件。
/app/database/oracle/oraInventory/orainstRoot.sh
/app/database/oracle/product/root.sh
(4)安装完成
3.配置监听
(1)切换到oracle用户下:
su oracle
(2)执行配置监听命令:
netca -silent -responseFile /app/etc/netca.rsp
(3) 查看监听服务的状态、开启、关闭
查看监听状态命令:
/app/database/oracle/product/bin/lsnrctl status
启动监听命令:
/app/database/oracle/product/bin/lsnrctl start
关闭监听命令:
/app/database/oracle/product/bin/lsnrctl stop
(4)查看状态,启动若显示下图:
监听程序不支持服务
则需在监听文件listener.ora中添加代码
执行编辑listener.ora文件命令:
vim /app/database/oracle/product/network/admin/listener.ora
在listener.ora文件中添加以下内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /app/database/oracle/product)
(SID_NAME = orcl)
)
)
(5)如果以上配置都没有问题,将监听关闭,重新启动
关闭监听命令:
/app/database/oracle/product/bin/lsnrctl stop
启动监听命令:
/app/database/oracle/product/bin/lsnrctl start
4.创建表空间及用户
指定是否将数据库配置为容器数据库
oracle.install.db.ConfigureAsContainerDB = true
在Container数据库中指定可插拔数据库的名称
oracle.install.db.config.PDBName = pdborcl
如果在安装文件里加了上面两个这个配置,则建表空间时需要在建额外的一组表空间、临时表空间。
4.1.修改建库文件
(1)输入编辑dbca.rsp文件:
vim /app/etc/dbca.rsp
(2)添加以下内容:
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=orcl #指定全局数据库名称
sid=orcl #数据库的实例名
databaseConfigType=SI
createAsContainerDatabase=true #如果是作为容器数据库此项需要设置为true
numberOfPDBs=1 #指定要创建的pdb数量 {该参数影响创建表空间}
pdbName=orclpdb
templateName=/app/database/oracle/product/assistants/dbca/templates/General_Purpose.dbc #使用模板文件General_Purpose.dbc来创建数据库
emExpressPort=5500 //企业管理器配置类型
omsPort=0 //EM管理器端口号
characterSet=AL32UTF8 #指定数据库的字符集
listeners=LISTENER #指定要注册数据库的监听器列表。多个列表用逗号分隔
memoryPercentage=40 #用于Oracle的物理内存百分比
automaticMemoryManagement=false #指定使用自动内存管理
totalMemory=0 #分配给Oracle的内存总量(以MB为单位)
4.2.建库
执行命令:
dbca -silent -createDatabase -responseFile /app/etc/dbca.rsp
设置口令 (123456)
4.3.登进数据库开启实例
登录:
sqlplus / as sysdba
启动实例:
startup
已启动
查询临时表空间文件sql:
select name from v$tempfile;
查询用户表空间文件sql:
select name from v$datafile;
查看当前数据库中的表空间sql:
select TABLESPACE_NAME from dba_tablespaces;
因为oracle12c涉及到cdb和pdb,所以创建表空间和临时表空间时要注意当前容器,默认进来时cdb,执行完cdb的两个创建语句后切换到pdb容器,再次执行pdb创建语句。
转换容器到CDB:
alter session set container=CDB$ROOT;
转换容器到PDB:
alter session set container=ORCLPDB;
查看当前容器:
show con_name
4.3.1.创建临时表空间
CREATE TEMPORARY TABLESPACE C##AK_DQH_COLLEGETEMP
TEMPFILE '/app/database/oracle/oradata/orcl/ak_dqh_collegetemp.dbf'
SIZE 132M REUSE
AUTOEXTEND ON
NEXT 32M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL;
4.3.2.创建表空间
CREATE TABLESPACE C##AK_DQH_COLLEGE
DATAFILE '/app/database/oracle/oradata/orcl/ak_dqh_college.dbf'
SIZE 132M REUSE
AUTOEXTEND ON
NEXT 32M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL;
转换容器到PDB
alter session set container=ORCLPDB;
切换用户后执行
CREATE TEMPORARY TABLESPACE C##AK_DQH_COLLEGETEMP
TEMPFILE '/app/database/oracle/oradata/orcl/orclpdb/ak_dqh_collegetemp.dbf'
SIZE 132M REUSE
AUTOEXTEND ON
NEXT 32M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL;
切换用户后执行
CREATE TABLESPACE C##AK_DQH_COLLEGE
DATAFILE '/app/database/oracle/oradata/orcl/orclpdb/ak_dqh_college.dbf'
SIZE 132M REUSE
AUTOEXTEND ON
NEXT 32M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL;
使用可插拔数据库,先查看当前有那些可用的关系数据库
show pdbs;
查看当前连接的数据库名称
show con_name;
4.3.3.创建用户并指定表空间
一定要
转换容器到CDB
alter session set container=CDB$ROOT;
创建用户并指定表空间
CREATE USER c##ak_dqh_college IDENTIFIED BY ak_dqh_college
DEFAULT TABLESPACE C##AK_DQH_COLLEGE
TEMPORARY TABLESPACE C##AK_DQH_COLLEGETEMP;
用户赋权
grant connect,resource,dba to c##ak_dqh_college;
修改用户密码
alter user C##AK_DQH_COLLEGE identified by 123456;
删除用户(不用执行)
drop user C##AK_DQH_COLLEGE cascade;
select * from all_users;
5.自启动配置
5.1.在oracle用户下编辑
(1)打开文件,编辑dbstart
vim /app/database/oracle/product/bin/dbstart
(2)将ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
vim /app/database/oracle/product/bin/dbshut #编辑监听,自动启动监听路径
(3)将ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOM
(4) 编辑oratab文件
vim /etc/oratab
(5)找到文件中这行(orcl:/opt/oracle/app/product/12.1.0/dbhome_1:N)并把N替换成Y
5.2.在root下编辑
(1)编辑rc.local文件
vim /etc/rc.d/rc.local
将下面内容加入到rc.local 文件末尾,注意每行前面不能有空格,注意路径位置
su oracle -lc "/app/database/oracle/product/bin/lsnrctl start"
su oracle -lc /app/database/oracle/product/bin/dbstart
(注意这里千万不能将路径写成环境变量,注意:第一个命令有空格,所以要用引号的 )
6.恢复dmp文件
Oracle用户下执行
进入存放备份文件的目录
cd /app/database/oracle/
创建文件夹
mkdir dbbak
进入文件夹
cd dbbak/
创建文件夹
mkdir data
进入文件夹
cd data
上传dmp文件
rz
导入dmp文件
imp c##ak_dqh_college/123456@localhost/ORCL file=/app/database/oracle/dbbak/data/orcl20200909210001.dmp ignore=y full=y ;
注释:
c##ak_dqh_colleg:用户名
123456:密码
Localhost:ip
ORCL:数据库实例名
/app/database/oracle/dbbak/data/orcl20200909210001.dmp:文件路径
ignore=y : 忽略错误信息
full=y:全部导入
7.定时备份并恢复
oracle用户下执行
7.1.方式1:直接上传编辑好的.sh文件
(1)文件上传,将自己编辑好的dbbak.sh直接上传
进入备份文件夹
cd dbbak
创建文件夹
mkdir shell
创建文件夹
mkdir log
cd shell
上传dbbak.sh文件(编写好的备份脚本)
rz
给 dbbak.sh 授权
chmod 775 -R dbbak.sh
7.2.方式2:创建dbbak.sh文件
(1)新建一个dbbak.sh文件
vim dbbak.sh
(2)以下是文件内容:
#[plain]view plaincopy
#!/bin/sh
export ORACLE_BASE=/app/database/oracle
export ORACLE_HOME=$ORACLE_BASE/product
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/app/database/oracle/dbbak/data
export LOGS_DIR=/app/database/oracle/dbbak/log
export DELTIME=`date -d "7 days ago" +%Y%m%d`
export BAKUPTIME=`date +%Y%m%d%H%M%S`
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
mkdir -p $DATA_DIR
mkdir -p $LOGS_DIR
echo "Starting bakup..."
echo "Bakup filepath$DATA_DIR/$BAKUPTIME.dmp"
exp c##ak_dqh_college/123456@orcl file=$DATA_DIR/orcl$BAKUPTIME.dmp log=$LOGS_DIR/orcl$BAKUPTIME.log
echo "Delete the file bakup before 30days...filepath: $DATA_DIR/orcl$DELTIME*.dmp "
rm -rf $DATA_DIR/orcl$DELTIME*.dmp
rm -rf $LOGS_DIR/orcl$DELTIME*.log
echo "Delete the file bakup successfully."
echo "Bakup completed."
(3)编辑定时文件
cd 到 shell目录下 ls 可以看到dbbak,sh文件
执行编辑定时任务文件命令:
crontab -e
设置同步系统时间:
*/1 * * * * /sbin/nepdate -u cn.pool.ntp.org
*/1 * * * * /app/database/oracle/dbbak/shell/dbbak.sh
定时备份
设置每天晚上9点备份:
0 21 * * * /app/database/oracle/dbbak/shell/dbbak.sh