(一) 操作系统相关参数的设置
配置YUM源
(1) 实体机直接放入操作系统安装光盘(VMware Workstation 虚拟机:虚拟机–>可移动设备–>CD/DVD–>连接)
–创建目录
#mkdir /mnt/cdrom
–用下面的命令直接挂载ISO镜像文件
#mount /dev/cdrom /mnt/cdrom
#卸载
umount /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
(2) 本地YUM源的配置
# vim /etc/yum.repos.d/CentOS-Local.repo
写入以下内容
[Local]
name=Local Yum
baseurl=file:///mnt/cdrom
gpgcheck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-8
enabled=1
如果使用网络YUM源,主机能上网,则无需特殊配置。可直接执行下一步测试yum
(3) 安装一些必要的工具软件
yum clean all
yum -y install net-tools vim wget unzip zip
(4) 安装操作系统的图形界面(图形化安装oracle是需要图形界面的)
# yum groupinstall 'X Window System' -y
# yum groupinstall "GNOME Desktop"
(5) 设置操作系统运行级别
# systemctl get-default
# systemctl set-default graphical.target
(6) 主机名设置
# hostnamectl set-hostname --static yktDB
(7) 网卡配置
以现场环境的网卡名称为准
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络服务
CentOS8下重启网络服务的命令如下:
–重启网络服务
#nmcli c reload / nmcli d reapply ens33
(8) /etc/hosts文件的配置
# vim /etc/hosts
(9) 防火墙配置
NOTE:22为SSH登录端口,注意仅指定的IP地址可以登录;
NOTE:1521为Oracle监听端口;
NOTE:在安装oracle软件与配置数据库阶段建议先关闭防火墙,数据库完全配置好后再开启防火墙。
–关闭防火墙
# systemctl disable firewalld
--操作系统启动时不运行防火墙
# systemctl disable firewalld.service
(10) 关闭SELinux
# vim /etc/selinux/config
SELINUX=disabled
NOTE:重启一次Linux主机。
(二) 配置内核参数
(1) 编辑/etc/sysctl.conf文件
# cp /etc/sysctl.d/99-sysctl.conf /etc/sysctl.d/99-sysctl.conf.bak
# vim /etc/sysctl.d/99-sysctl.conf
–增加如下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 17179869183
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
保存之后运行命令: # sysctl -p
//启用上述对操作系统内核参数的更改
(2) 编辑/etc/security/limits.conf文件
# vim /etc/security/limits.conf --增加如下内容
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
(3) 编辑/etc/pam.d/login文件
# vim /etc/pam.d/login --增加如下内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
(4) 编辑/etc/profile文件
# vim /etc/profile --增加如下内容
if [ $USER = "oracle" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
保存文件后运行命令:# source /etc/profile
(三) 创建oracle数据库属组、用户及环境变量
(1) 利用YUM安装oracle数据库需要的依赖包
在默认安装带GUI操作系统情况下,发现安装以下依赖包能安装通过。具体哪些需要哪些不需要,不详。本文安装时,在这一步没有多安装依赖包,一步一步安装中需要的时候才安装。最终暂确认Oracle19c版本要通过安装需要以下依赖包:
yum -y install make
yum -y install libnsl
yum -y install compat-libcap1
yum -y install libstdc++-devel
yum -y install gcc-c++
yum -y install ksh
yum -y install glibc-devel
yum -y install libaio-devel
(2) 创建组(oinstall,dba)、用户(oracle) 以及用户密码
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba -p 'oracle' -d /home/oracle oracle
# echo 'oracle:oracle' | chpasswd
(3) 创建Oracle数据库相关的目录并赋予相对应的权限
# mkdir -p /u01/app/oracle/product/19.3.0
# mkdir -p /home/{OracleData,OracleArch/ArchiveLog,OracleBackup/{rmanbak,expdpbak,ArchiveLogBak}}
# chown -R oracle:oinstall /u01/app/ /home/Oracle*
# chmod -R 775 /u01/app/ /home/Oracle*
(4) 配置oracle用户的环境变量
# su - oracle
$ vim ~/.bash_profile --增加如下内容
#alias sqlplus='rlwrap sqlplus'
#alias rman='rlwrap rman'
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0
export EDITOR=/usr/bin/vim
export ORACLE_SID=easytongDB
export PATH=$ORACLE_HOME/bin:/usr/bin:$PATH
export PATH=$PATH:/usr/bin/:/bin:/usr/bin/X11:/usr/local/bin
export PATH=$PATH:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:$ORACLE_HOME/lib
export LIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/lib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JRE
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='yyyy-MM-dd hh24:mi:ss'
保存文件后运行命令: # source ~/.bash_profile
(四) 上传Oracle介质并解压
NOTE:oracle安装软件版本为19.3.0,文件名为:LINUX.X64_193000_db_home.zip
解压oralce安装软件
19c安装要注意:
解压安装包的时候就已经指定了其数据目录,否则安装时候会发现主目录不是你环境变量指定的目录。
$ unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/
或者
$ mv LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.3.0/
之后
$ unzip LINUX.X64_193000_db_home.zip
(五) 安装Oracle软件
NOTE:建议在操作系统上安装VNC软件进行oracle软件的安装
[root@yktdatabase ~]# xhost +
access control disabled, clients can connect from any host
[root@yktdatabase ~]# su – oracle
[oracle@yktdatabase ~]$ export LANG=en_us --建议使用英文安装
如果想看到中文界面的话请设置 $ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
并且要下载一种中文字体,如仿宋: zysong.ttf,进行如下操作:
# mkdir -p /usr/share/fonts/zh_CN/TrueType
# mv zysong.ttf /usr/share/fonts/zh_CN/TrueType/
如果出现中文是方框,进行如下操作:
# vi /etc/sysconfig/i18n
LANG="zh_cn.UTF-8"
以下为安装图示:
./runInstaller
/u01/app/oracle/product/19.3.0/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
可能是缺少库文件,尝试# yum -y install libnsl
如果之前执行过yum安装,应该不会出现
之后可以出现安装界面,提示操作系统兼容性问题:
配置环境变量,设置操作系统兼容。重新运行安装,就不再出现。
本文的过程主要是记录图形化安装时,Oracle安装过程中每一步的配置。理论上在RHEL系类似版本操作系统均可参考。
所以此处操作系统兼容配置,也可以配置其他,例如RHEL7
、OL7
export CV_ASSUME_DISTID=CentOS7
选择 仅设置软件 下一步
选择“单实例数据库安装”,点击“下一步”;
选择“企业版”,点击“下一步”;
设定oracle软件的安装位置,点击“下一步”;
设定产品清单目录位置,我们设置为 /u01/app /oraInventory ,点击“下一步”:
之后选择按需要的配置要求选择,设置密码。之后先决条件检查。
出现这个 yum -y install make能通过
出现这个,yum安装(三)(1)步骤中记录的依赖包,不过未确定具体是哪个。
全部通过后,点击“安装”,进入安装页面中,等待,直到安装完成。
(六) 创建oracle数据库
安装数据库之前要考虑数据文件、日志文件、备份文件的位置:
本文依次为先前步骤中创建的/home下
OracleData,OracleArch/ArchiveLog,OracleBackup
进行数据库创建操作:
[root@yktbakdatabase ~]# xhost +
access control disabled, clients can connect from any host
[root@yktbakdatabase ~]# su – oracle
[oracle@ yktbakdatabase database]$ dbca
创建数据库,点击“下一步”:
选择“高级配置”,点击“下一步”:
选择“Oracle单实例数据库”、“一般用途或事务处理”,点击“下一步”:
本文要测试、尝试Oracle的pdb容器数据库,所以勾选创建为容器数据库。输入全局数据库名,如easytongDB,点击“下一步”:
设定数据文件存放位置,我们选择“/home/OracleData”,点击“下一步”:
设定快速恢复区位置,我们选择“/home/OracleArch/ArchiveLog”,设置快速恢复区的大小是自动默认选择的,没有修改。(实际要视现场环境的磁盘大小而定),(可能后面会报建议值,所以设置时建议为3倍数据库大小)
创建一个监听,默认端口为1521,点击“下一步”:
NOTE:这里是和11gR2区别明显的一个地方,监听无需再单独创建。
无需配置Data Vault,点击“下一步”:
NOTE:内存小于4GB以下用自动内存管理,4GB以上使用自动共享内存管理。
确认数据库字符集,我需要使用ZHS16GBK,点击“下一步”;
是否启用“EM”管理,我选择不启用,点击“下一步”:
输入sys 用户和system用户的管理密码,点击“下一步”:
点击“下一步”;
最后的确认,点击“完成”:
创建数据库进行中……
完成数据库实例的安装。
(七) 设置数据库软件开机自启动
# su - oracle
$ vim /etc/oratab
easytongDB:/u01/app/oracle/product/19.3.0:Y
$ su - root
# chmod +x /etc/rc.d/rc.local
# vim /etc/rc.d/rc.local --增加如下内容
su - oracle <<EOF
lsnrctl start LISTENER
sqlplus /nolog<<EOS
connect / as sysdba
startup
alter system register;
EOS
EOF
(八) 防止11g客户端接入时提示ORA-28040错误
修改 $ORACLE_HOME/network/admin/sqlnet.ora文件:
增加如下内容:
--login as oracle
$ vim $ORACLE_HOME/network/admin/sqlnet.ora --增加如下内容
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
SQLNET.AUTHENTICATION_SERVICES= (BEQ,NONE)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
(九) 修改数据库用户密码的生命周期
Oracle数据库用户密码的默认生命周期为180天,现将其改为无限制:
SQL> alter profile "DEFAULT" limit PASSWORD_GRACE_TIME UNLIMITED;
SQL> alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED;
SQL> alter profile "DEFAULT" limit PASSWORD_LOCK_TIME UNLIMITED;
SQL> alter profile "DEFAULT" limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
Profile altered.
发现用户有锁定时候,解锁用户和修改密码:
SQL> alter user easytong account unlock;
SQL> alter user easytong identified by easytong;
NOTE:CDN公共用户名必须用户名前加 C##
我们是要使用PDB,所以先登录pdb会话,再建用户,再登录pdb建表
(十) PDB使用的记录
PDB重命名
SQL> select name,open_mode from v$pdbs;
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY
PDB
READ WRITE
SQL> alter session set container=PDB;
Session altered.
SQL> shutdown immediate;
Pluggable Database closed.
#以restrict模式打开
SQL> startup open restrict;
Pluggable Database opened.
SQL> alter pluggable database PDB rename global_name to etDB;
Pluggable database altered.
SQL> show con_name;
CON_NAME
------------------------------
ETDB
SQL>
之后就可以使用ETDB
使得PDB随CDB 开机启动:
sqlplus / as sysdba
SQL> CREATE TRIGGER open_all_pdbs
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/
Trigger created.
方式二:
sqlplus / as sysdba
alter pluggable database mypdb open;
alter pluggable database mypdb save state;
创建一个PDB的数据库:
SQL> create pluggable database zytk admin user zytk identified by hzsun310012 ROLES = (dba) file_name_convert=('/home/OracleData/EASYTONGDB/pdbseed','/home/OracleData/ZYTK');
alter pluggable database ZYTK open;
expdp出现ora-12170,tnsping发现不通,需要把每个PDB加入tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
EASYTONGDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yktDB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = easytongDB)
)
)
LISTENER_EASYTONGDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = yktDB)(PORT = 1521))
ETDB=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yktDB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ETDB)
)
)
ZYTK=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yktDB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = yktDB)