Linux安装Oracle数据库好复杂?不用慌、一篇文章帮你搞定!
1.4.1.2 选择 ‘文件’ -》 ‘打开’选项,找到需要制作的系统。
1.4.1.3 选择指定的U盘,作为启动盘,此处选择H 盘。
1.4.4.4 设置Oracle Linux Server, with Linux 3.10.0-123.el7.x86_64作为默认的启动项
1.5.2 选择语言为“English(United States)”
1.5.4 设置系统分区“INSTALL DESTINATION”,
1.5.7 选择需要安装的软件(SOFTWARE SELECTION)
1.5.8 设置主机名与IP地址(NETWORK&HOST NAME)
1.5.11 设置“LICENSE INFORMATION”
1.11.4 创建FTP用户及对应目录(sharedata 共享文档)
1.11.5 创建FTP用户及对应目录(imglist 超声图像)
2.1.2 检查网络环境,确保网络畅通(能够连接Internet)
2.1.4.2 方法二:使用yum安装oracle-rdbms-server-11gR2-preinstall包
2.2.4 配置oracle用户环境变量(/home/oracle/.bash_profile)
2.2.5 编辑内核参数(/etc/sysctl.conf)
2.2.6 编辑Oracle用户限制(/etc/security/limits.conf)
2.3.2.5 图形化安装过程(netca安装Listener)
2.3.3.1 编辑/u01/app/db_install.rsp
2.7.1 将用户口令有效期默认值180天修改成“无限制”(使用PL/SQL)
2.7.2 Oralce数据库最大连接与最大并发数配置(使用PL/SQL)
3.1 开机提示(License information)处理
3.4 Oracle安装完成后shutdown报(ORA-01507)
5.4 登录Oracle创建逻辑目录qdhiip_path指向/u01/databack
5.7 删除备份文件目录/u01/databack下所有文件
6.2.1.11 管理选项-字符集(简体中文ZHS16GBK)
6.2.1.14 指定方案口令(通过qdpassword.exe获得System口令)
7.5 使用rman清理归档日志(解决归档日志存满后Oracle挂起)
8.4.1 停止Oracle监听器(详见4.1.3停止监听器操作)
8.4.2 关闭Oracle数据库(详见4.2.3关闭数据库)
8.6.2 测试Oracle数据库(详见2.4.1.10.10测试Oracle数据库)
8.8 服务器非正常关机,开机后连接数据库提示错误(ORA-01033)
8.12.1 配置Windows时间服务器(TimeServer.exe)
8.12.2 配置Windows时间服务器(NtpServer)
8.12.2.2 修改注册表AnnounceFlags值设置为5
8.12.2.3 修改注册表NtpServer\Enabled值设置为1
8.12.2.4 修改注册表Ntpclient\Enabled值设置为0
1 Oracle Linux 7.2安装与配置
1.1 软件
(1)系统:OracleLinux-R7-U2-Server-x86_64-dvd-ForDB.iso
(2)远程工具:SecureCRT+FX+keygen_x86+x64_v8.0
1.2 磁盘分区规划
l Swap = 3072M(一般设置为内存的1.5 - 2倍)
l Boot = 1024M(一般设置为Swap的0.5倍)
l Home = 2048M(一般设置为 Swap的1倍)
l / = 余下所有
1.3 虚拟机环境配置
VMware 11.0.0 build-2305329
1.3.1 VMWare Tools (默认已安装)
步骤 1 以Root用户登录系统,进入系统桌面
步骤 2 选择VM虚拟机菜单:虚拟机 - 重新安装VMWare Tools,会自动在系统桌面追加文件“WMwareTools”,双击进入。

步骤 3 拷贝文件“VMwareTools-9.9.0-2304977.tar.gz”至系统桌面。
步骤 4 系统桌面右键,选择“Open in Terminal”打开控制台窗口,执行命令如下 :
tar -xzvf VMwareTools-9.9.0-2304977.tar.gz
步骤 5 进入解压后的目录,执行如下命令后,一直回车直至安装完成。
cd vmware-tools-distrib
sudo ./wmware-install.pl
步骤 6 重启系统Reboot 后,即可由Windows下向系统内复制文件了。
1.3.2 VMWare网络设置
步骤 1 网络适配器模式设置
选中虚拟机,右键 -> 设置 -> 网络适配器 -> 自定义为VMnet8(NAT模式)

步骤 2 获取MAC地址
点击右下角高级设置,进去查看MAC地址,因为如果是克隆或者复制过来的,这里的MAC地址会改变,而Linux内部配置文件不会变,记住这里的MAC地址,将来ifcfg-eth0的MAC地址配置要与这里的一致

步骤 3 设置子网IP

这里的子网IP 地址,子网掩码地址配置ifcfg-eth0 时要用到,点击NAT设置,获取网关192.168.223.2 配置ifcfg-eth0也要用到。这里的子网IP 地址。

步骤 4 宿主机的VMnet8 IP信息与1.6.1.2是否匹配
采用NAT模式,需要 ifcfg-eth0 配置信息需要与宿主机保持一致,虚拟机选择NAT模式之后,我们会发现宿主机除了原来的网卡以外,又多出两个网卡:

① VMnet1 是hostonly接口,VMnet8 就是我们要使用的NAT 的网络接口。然后我们需要获取VMnet8 的IP 地址配置信息,确保VMnet8使用静态IP地址:

②VMnet8 的IP地址为192.268.223.1,这个地址前三段(192.268.223)与虚拟机子网IP前三段一致,这样才能保证虚拟机与宿主机通信。
1.4 服务器环境安装
1.4.1 UltralSO制作Linux启动盘
1.4.1.1 启动软件,软件界面如下:

1.4.1.2 选择 ‘文件’ -》 ‘打开’选项,找到需要制作的系统。



1.4.1.3 选择指定的U盘,作为启动盘,此处选择H 盘。

1.4.1.4 启动制作即可

1.4.2 修改启动文件(grub.cfg)
注意:如果启动配置文件不进行修改,则会报” /dev/root does not exits”错误
进入U盘打开EFI/boot,用记事本打开grub.cfg文件,把里面所有的CentOS\x207\x20x86_64改为刚刚修改的U盘的名字
1.4.3 安装系统时配置
注意:使用U盘安装系统时,可能会出现如下错误,原因是Linux系统安装时找不到U盘。

解决方案如下:在如上界面输入如下命令:
Dracut:/# cd /dev
Dracut: dev:# ls

所以sdb就是U盘对应的文件名了,可以看到是sdb4。至此我们重启一下,回到第一个图片所示的界面处,然后按下Tab键,将vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet 改为:vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quite

1.4.4 修改默认启动内核(安装完成后)
1.4.4.1 自动生成GRUB2配置文件
[root@dbserver ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
1.4.4.2 验证默认启动项
[root@dbserver ~]# grub2-editenv list
saved_entry=Oracle Linux Server, with Linux 3.10.0-123.el7.x86_64
1.4.4.3 首先找到各菜单项 menuentry
[root@dbserver ~]# cat /boot/grub2/grub.cfg
menuentry开头的为系统启动项
menuentry 'Oracle Linux Server, with Linux 3.10.0-123.el7.x86_64'
menuentry 'Oracle Linux Server, with Linux 0-rescue-171210b6f8734bbe81074e4c0306c0f3'
1.4.4.4 设置Oracle Linux Server, with Linux 3.10.0-123.el7.x86_64作为默认的启动项
[root@dbserver ~]# grub2-set-default "Oracle Linux Server, with Linux 3.10.0-123.el7.x86_64"
1.5 系统安装过程
1.5.1 进入安装起始界面
选择第一行“Install Oracle Linux 7.2”

1.5.2 选择语言为“English(United States)”
选择安装过程中使用的语言“English(United States)”,点击“Continue”。

1.5.3 设置日期时间“DATE&TIME”
时区“Asia”,城市“shanghai”,设置日期和时间,点击“Done”。

1.5.4 设置系统分区“INSTALL DESTINATION”,

1.5.5 选择磁盘与分区方式
由Local Standard Disks 选中磁盘,Other Storage Options中选择“I Will Configure partitioning”后,点击“Done”。

1.5.6 根据(1.2磁盘分区规划)执行分区操作
l 例:内存 = 2048M,即2G
l Swap = 3072M(物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可)
以下是设置合适的交换分区大小的规则:
小于等于4G物理内存的系统,至少设置2GB的交换分区
4G~16G物理内存的系统,至少设置4GB的交换分区
16G~64G物理内存的系统,至少设置8GB的交换分区
16G~256G物理内存的系统,至少设置16GB的交换分区
l Boot = 1024M(主要用于存储启动信息,官方建议分配 200M)
l Home = 2048M(存放普通用户的数据,是普通用户的宿主目录,一般设置为 Swap的1倍,如果磁盘足够大时 >=1T时 建议大小为100G)
l / = (Linux 系统的根目录,所有的目录都挂在这个目录下面,如果只有多块硬盘,则设置为当前磁盘下所有)
l /data 挂载指定磁盘
l 点击“+”进行分区设置





1.5.7 选择需要安装的软件(SOFTWARE SELECTION)
点击“SOFTWARE SELECTION”后,由Base Environment中选择“Server With GUI”带图形界面的服务器后,点击“Done”。

1.5.8 设置主机名与IP地址(NETWORK&HOST NAME)
注意:主机名设置为小写的(oradbsv1),如同时有多台服务器,则主机名最后的数字+1即可。
IP地址,可以在此设置,也可在安装完成后由系统内设置。操作如下图所示:


1.5.9 设置安全策略(SECURITY POLICY)
将“Apply security policy”设置为“OFF”后,点击“Done”。

1.5.10 设置root超级用户密码
等待大约10分钟左右,安装完成后点击“Reboot”重启

1.5.11 设置“LICENSE INFORMATION”
选中“I accept The license agreement”后点击“Done”


1.5.12 选择时区(Beijing China)

1.5.13 创建普通用户(oracle11gr2)
说明:临时创建临时用户,后期直接删除即可,不创建没法进入下一步


1.5.14 切换登录用户至root用户下
如登录用户为oracle11gr2,则进行桌面后,直接点击右上角的按钮,选择用户后点击Logout至登录界面,点击用户名下“Not Listed?”后,输入用户名与密码

1.6 网络配置
1.6.1 查看系统网卡列表
ifconfig

1.6.2 设置网络地址与开机启动
[root@oradbsv1~]$ vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
#系统启动此配置就生效
ONBOOT=yes
#网卡获取IP的方式(默认为dchp,表示自动获取;需要改为static,手动设置)
BOOTPROTO=static
# IP地址的前三位必须与z子网IP一致,与宿主机的VMnet8 的IP一致
IPADDR=192.168.109.132
#使用子网IP掩码
NETMASK=255.255.255.0
#使用子网IP的网关
GATEWAY=192.168.109.2
#根据实际情况进行配置
DNS1=192.168.109.2
#根据实际情况进行配置
DNS2=8.8.8.8
注意:如果无需连外网且DNS为空时,需要在配置文件中追加如下内容后保存,否则会造成Oracle运行速度非掌中慢。
PEERDNS=no
参照如上配置根据实际网络环境进行配置。
● 按“i”键进入 Insert 模式后进行编辑
● 编辑完成后,按Esc退出编辑状态
● 输入:wq 进行存盘退出
说明:“:wq”保存并退出或者 ”:q”退出或者 ”:q! ”强制退出
(1) 重启网络配置
[root@oradbsv1~]$ service network restart
(2) 测试网络连接
[root@oradbsv1~]$ Ping 内网下指定ip
1.6.3 如系统不连接外网则禁用DNS
#注释掉 /etc/resolv.conf中所有行,所有行前加 #
[root@oradbsv1~]$ vi /etc/resolv.conf
1.7 设置主机名(/etc/hosts )
[root@oradbsv1~]$ vi /etc/hosts

1.8 关闭防火墙
#查看防火墙状态,运行中
[root@oradbsv1 ~]$ systemctl status firewalld.service
#返回信息如下所示
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 六 2019-06-01 14:19:40 CST; 57min ago
Main PID: 632 (firewalld)
CGroup: /system.slice/firewalld.service
└─632 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
6月 01 22:12:24 orclserver systemd[1]: Starting firewalld - dynamic firewall daemon...
6月 01 14:19:40 orclserver systemd[1]: Started firewalld - dynamic firewall daemon.
#关闭防火墙
[root@oradbsv1 ~]$ systemctl stop firewalld.service
[root@oradbsv1 ~]$ systemctl status firewalld.service
Active: inactive (dead) since 六 2019-06-01 15:19:03 CST; 12s ago
#禁止使用防火墙(重启也是禁止的)
[root@oradbsv1 ~]$ systemctl disable firewalld.service
1.9 关闭selinux(需重启生效)
[root@oradbsv1 ~]$ vi /etc/selinux/config
#将参数SELINUX值调整为disabled
SELINUX=disabled
#查看修改后配置信息
[root@oradbsv1 ~]$ cat /etc/selinux/config
#重启系统
[root@oradbsv1 ~]$ reboot
1.10 安装管理工具(SecureCRT)
1.10.1 安装SecureCrt
在Windows下安装Linux控制程序< SecureCRT+FX+keygen_x86+x64_v8.0>
安装过程见:https://www.cnblogs.com/yjd_hycf_space/p/7729796.html
1.10.2 配置SecureCrt
(1) 添加连接

(2) 配置连接
HostName:主机ip地址
UserName:root

(3) 调整界面与字体颜色
Options – Session Options – Appearance

1.11 配置FTP服务器
1.11.1 检查并安装vsftpd软件
#检查vsftpd软件是否安装
[root@oradbsv1 ~]$ rpm -qa |grep vsftpd
#安装vsftpd软件
[root@oradbsv1 ~]$ yum install vsftpd –y
1.11.2 配置FTP服务(vsftpd.conf)
[root@oradbsv1 ~]$ rm -f /etc/vsftpd/vsftpd.conf
[root@oradbsv1 ~]$ vi /etc/vsftpd/vsftpd.conf
#配置文件内容替换为如下:
write_enable=YES
local_enable=YES
local_umask=000
anonymous_enable=NO
anon_mkdir_write_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd
allow_writeable_chroot=YES
1.11.3 创建FTP主目录并赋权
#创建ftp的主目录
[root@oradbsv1 ~]$ mkdir /data/ftpfile
#给该目录赋权。可以根据需求自定义该文件夹权限。
[root@oradbsv1 ~]$ chmod 777 /data/ftpfile
[root@oradbsv1 ~]$ chmod a-w /data/ftpfile
[root@oradbsv1 ~]$ chmod -R 755 /data/ftpfile
1.11.4 创建FTP用户及对应目录(sharedata 共享文档)
# 创建Fft用户 qdsoft 指向目录 /data/ftpfile
[root@oradbsv1 ~]$ useradd -d /data/ftpfile -m qdsoft
# 配置Ftp用户 qdsoft 密码,根据提示输入密码即可
[root@oradbsv1 ~]$ passwd qdsoft
# 配置Ftp用户有指向目录的修改权限
[root@oradbsv1 ~]$ chown -R qdsoft:qdsoft /data/ftpfile
1.11.5 创建FTP用户及对应目录(imglist 超声图像)
# 创建Fft用户 qdsoft 指向目录 /data/ftpfile
[root@oradbsv1 ~]$ useradd -d /data/ imglist -m qdus
# 配置Ftp用户 qdsoft 密码,根据提示输入密码即可
[root@oradbsv1 ~]$ passwd qdus
# 配置Ftp用户有指向目录的修改权限
[root@oradbsv1 ~]$ chown -R qdus:qdus /data/ imglist
1.11.6 创建chroot_list文件
注意:chroot_list 文件用于记录所有新建的ftp用户,目的是列出“不会被限制在主目录下”的用户列表。
#创建chroot_list文件
[root@oradbsv1 ~]$ vi /etc/vsftpd/chroot_list
#添加新增加的ftp用户后
qdsoft
qdus
:wq 保存
1.11.7 重启Ftp服务并设定开机自动运行
#重启Ftp服务
[root@oradbsv1 ~]$ service vsftpd restart
#查看Ftp服务运行是否正常
[root@oradbsv1 ~]$ service vsftpd status
#FTP设置开机自动运行:
[root@oradbsv1 ~]$ chkconfig vsftpd on
#查看本地是否含有包含ftp的进程开启:
[root@oradbsv1 ~]$ ps -ef | grep ftp
----------------------------------------------------------------------------------------------
#【辅助】关闭FTP开机自动运行:
[root@oradbsv1 ~]$ chkconfig vsftpd off
#【辅助】查看所有服务开启自动运行的情况:
[root@oradbsv1 ~]$ chkconfig --list
2 Oracle安装与配置
2.1 安装RPM软件包
2.1.1 查看系统版本
[root@oradbsv1 ~]$ cat /etc/issue
Oracle Linux Server release 7.2
Kernel \r on an \m
[root@oradbsv1 ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
2.1.2 检查网络环境,确保网络畅通(能够连接Internet)
[root@oradbsv1 ~]$ ping www.baidu.com
PING www.a.shifen.com (115.239.211.110) 56(84) bytes of data.
64 bytes from 115.239.211.110: icmp_seq=1 ttl=54 time=39.2 ms
64 bytes from 115.239.211.110: icmp_seq=2 ttl=54 time=42.2 ms
2.1.3 检查yum是否已安装
[root@oradbsv1 ~]$ rpm -qa | grep yum
yum-metadata-parser-1.1.4-10.el7.x86_64
PackageKit-yum-1.0.7-5.0.1.el7.x86_64
yum-utils-1.1.31-34.0.1.el7.noarch
yum-langpacks-0.4.2-4.el7.noarch
yum-rhn-plugin-2.0.1-5.0.3.el7.noarch
yum-plugin-ulninfo-0.2-13.el7.noarch
yum-3.4.3-132.0.1.el7.noarch
2.1.4 安装RPM软件包
2.1.4.1 方法一:使用yum安装指定RPM包
(1) 采用yum批量安装
注意:(1)如中途断网或出现错误,二次执行即可。无错误信息,则会提示完成,Complete!(2)由于Word文件有时会自动追加空格,执行前先放到记事本中,核对下 *与前面的字符之间是否存在空格,如存在则删除空格后执行
[root@oradbsv1 ~]$
yum install -y binutils* compat-libcap1* compat-libstdc* elfutils-* gcc* glibc* glibc-kernheaders ksh* libaio* libgcc* libstdc* libXi* libXtst* make* sysstat* unixODBC*
执行结果如下图所示:

(2) 采用yum单个文件安装
yum install -y binutils*
yum install -y compat-libcap1*
yum install -y compat-libstdc*
yum install -y elfutils- *
yum install -y gcc*
yum install -y glibc*
yum install -y glibc-kernheaders
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y libXi*
yum install -y libXtst*
yum install -y make*
yum install -y sysstat*
yum install -y unixODBC*
yum install –y pdksh-*
2.1.4.2 方法二:使用yum安装oracle-rdbms-server-11gR2-preinstall包
注意:建议使用方法一
在Linux上安装oracle数据库,在环境准备方面,例如该安装的RPM包,该调整的内核参数等,不仅较为复杂,有些参数值还会因为人工设置的不合理而对日后的运行带来一定的影响,也是整个安装过程中最耗时的部分。
在oracle linux 7_64bit上,提供了oracle-rdbms-server-11gR2-preinstall包,可以自动化的将需要安装的rpm包,需要调整的内核参数自动化的处理,对DBA安装数据库确实节省了不少的时间。
oracle-rdbms-server-11gR2-preinstall包所干的事情包含如下:
l 自动安装oracle所需的RPM包
l 自动创建oracle用户和group组
l 自动配置/etc/sysctl.conf内核参数
l 自动配置/etc/security/limits.conf参数
l 关闭NUMA=OFF (关闭非一致内存访问)
(1) 切换到目录 /etc/yum.repos.d/
[root@oradbsv1 ~]$ cd /etc/yum.repos.d/
(2) 获取配置文件并进行相应修改
[root@oradbsv1 yum.repos.d]$ wget http://public-yum.oracle.com/public-yum-ol6.repo
[root@oradbsv1 yum.repos.d]$ vi public-yum-ol6.repo
#本环境为Oracle Linux 7,因此修改了以下2个部分。即将需要安装的部分的enabled的值置为1
[ol6_u3_base]
name=Oracle Linux $releasever Update 3 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/3/base/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
[ol6_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/base/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
(3) 采用yum安装oracle-rdbms-server-11gR2-preinstall包
[root@oradbsv1 yum.repos.d]$ yum install oracle-rdbms-server-11gR2-preinstall
注意:如果在按装过程中出现Faild,则标明存在安装失败的情况,需要重新执行如上yum语句
(4) 查看安装日志
[root@oradbsv1 yum.repos.d]$ cd /var/log/oracle-rdbms-server-11gR2-preinstall/results/
[root@oradbsv1 results]$ ls
orakernel.log
[root@oradbsv1 results]$ more orakernel.log
(5) 查看备份文件
[root@oradbsv1 yum.repos.d]$ cd /var/log/oracle-rdbms-server-11gR2-preinstall/backup
[root@oradbsv1 backup] # ls
May-31-2019-15-33-03
[root@oradbsv1 backup]$ cd May-31-2019-15-33-03
[root@oradbsv1 May-31-2019-15-33-03]$ ls
grub grub.cfg grubenv.31-05-19-15-33-06 limits.conf orakernel.log sysctl.conf
2.1.4.3 校验PRM包是否存在
[root@oradbsv1 ~]$ rpm -qa | grep软件包名称
注意:如果缺少,就继续安装缺失的组件包。如下图所示
[root@oradbsv1 ~]$ yum install -y 未安装软件包名称
或
[root@oradbsv1 ~]$ yum install -y 未安装软件包名称前几位 + *
2.2 Oracle安装前准备
2.2.1 创建oraInst.loc
#设置oracle用户及其oinstall组对oraInst.loc文件的所有权
[root@oradbsv1~]$ touch /etc/oraInst.loc
#创建oraInst.loc文件并增加内容
[root@oradbsv1~]$ vi /etc/oraInst.loc
#添加以下信息:
inventory_loc=/u01/app/oraInventory
inst_group=dba
#查看并验证文件内容
[root@oradbsv1~]$ cat /etc/oraInst.loc
2.2.2 创建Oracle用户与用户组
#创建oinstall组:
[root@oradbsv1~]$ /usr/sbin/groupadd oinstall
#创建dba组:
[root@oradbsv1~]$ /usr/sbin/groupadd dba
#创建Oracle用户(如复制代码不成功,则手动输入):
[root@oradbsv1~]$ useradd -g oinstall -G dba oracle
#查看Oracle用户:
[root@oradbsv1~]$ id oracle
# uid=1000(oracle) gid=1001(oinstall) 组=1001(oinstall),1002(dba)
注意:如果用户组:后无Oracle用户,则需要将Oracle用户追加到该组中
[root@oradbsv1~]$ usermod -g oinstall -G dba oracle
#修改Oracle密码:
[root@oradbsv1~]$ passwd oracle
#设置oraInst.loc文件所属用户及组具有该目录读、写、执行的权限
[root@oradbsv1~]$ chmod 664 /etc/oraInst.loc
[root@oradbsv1~]$ chown oracle:oinstall /etc/oraInst.loc
#核对权限是否改为用户oracle 与组oinstall
[root@oradbsv1~]$ ls -l /etc/oraInst.loc
2.2.3 创建Oracle安装目录和数据文件存放目录
#注意:查看磁盘文件空间,将目录安装在挂载点为“/”的目录下
[root@oradbsv1~]$ df -h
#创建Oracle安装目录及数据库文件存放目录
#创建ORALCE_BASE目录
[root@oradbsv1~]$ mkdir -p /u01/app/oracle
#创建Oracle数据文件存放目录
[root@oradbsv1~]$ mkdir -p /u01/app/oracle/product/11.2.0/oradata
#创建ORACLE_HOME目录
[root@oradbsv1~]$ mkdir -p /u01/app/oracle/product/11.2.0/db_1
#提示:图型化界面安装需创建 oraInventory目录
#创建Oracle安装过程日志目录
[root@oradbsv1~]$ mkdir -p /u01/app/oraInventory
#分配权限给Oracle用户
[root@oradbsv1~]$ chown -R oracle:oinstall /u01
[root@oradbsv1~]$ chmod -R 755 /u01
2.2.4 配置oracle用户环境变量(/home/oracle/.bash_profile)
#登录oracle用户
[root@oradbsv1~]$su oracle
#编辑oracle用户的环境变量
[oracle@oradbsv1~]$ vi ~/.bash_profile
#注意:覆盖系统中的.bash_profile所有内容,将原有的“PATH=$PATH”行更新到下面的文本中。用该文本覆盖整个配置,经过测试,root用户与oracle用户均设置环境变量
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
#Oracle Begin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=qdorcl
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_UNQNAME=$ORACLE_SID
export ORACLE_OWNER=oracle
export ORACLE_TERM=vt100
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
export ORA_NLS33=$ORACLE_HOME/nls/admin/data
#设置中文环境
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
# 通过locale命令查看自己主机的真实LANG情况,或者echo $LANG
#Oracle end
#重新执行刚修改的初始化文件(使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。)
[oracle@oradbsv1~]$ source ~/.bash_profile
#查看编辑内容
[oracle@oradbsv1~]$ cat ~/.bash_profile
注意:
9i: ORA_NLS33=/oracle/app/ora92/ocommon/nls/admin/data
10g:ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
su oracle : 只切换用户,而不切换环境;依旧使用root的环境。
su - oracle :同时切换用户和环境
su oracle:不会执行oracle主目录中的profile脚本
su - oracle:会执行oracle主目录中的profile脚本
2.2.5 编辑内核参数(/etc/sysctl.conf)
注意:当安装RPM软件包时采用方法一:使用yum安装oracle-rdbms-server-11gR2-preinstall包时,会自动配置/etc/sysctl.conf内核参数,该操作只需要检验即可。参数说明如下:
fs.aio-max-nr = 1048576 文件系统最大异步io
fs.file-max = 65536 文件系统中文件的最大个数
kernel.sem = 250 32000 100 128
SEMMSL SEMMNS SEMOPM SEMMNI
如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置;SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。SEMMNS参数应设置为SEMMSLSEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010128)=641280。
SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010
kernel.shmmni = 4096 --最小共享内存大小 bytes
net.ipv4.ip_local_port_range = 1024 65000 端口的范围 1024—65000
net.core.rmem_default = 1048576 r-read
net.core.rmem_max = 1048576
net.core.wmem_default = 262144 w-write
net.core.wmem_max = 262144
[oracle@oradbsv1~]$ su - root
[root@oradbsv1~]$ vim /etc/sysctl.conf
#按如下格式添加至配置文件中(编辑完成后按ESC键,输入:wq存盘退出)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
#查看并校验添加信息
[root@oradbsv1~]$ cat /etc/sysctl.conf
#使/etc/sysctl.conf更改立即生效
[root@oradbsv1~]$ sysctl -p
2.2.6 编辑Oracle用户限制(/etc/security/limits.conf)
注意:当安装RPM软件包时采用方法一:使用yum安装oracle-rdbms-server-11gR2-preinstall包时,会自动配置/etc/security/limits.conf内核参数,该操作只需要检验即可。
[root@oradbsv1~]$ vim /etc/security/limits.conf
#修改操作系统对oracle用户资源的限制。在该文件中添加如下行(编辑完成后按ESC键,输入:wq存盘退出)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240
#查看并校验添加信息
[root@oradbsv1~]$ cat /etc/security/limits.conf
2.2.7 编辑 /etc/pam.d/login
[root@oradbsv1~]$ vi /etc/pam.d/login
#添加以下信息(编辑完成后按ESC键,输入:wq存盘退出):
#注意:/lib64,根据系统安装实际情况赋值,例/lib 或 /lib64,可通过命令 “ls /”查看
session required /lib64/security/pam_limits.so
session required pam_limits.so
#查看添加信息:
[root@oradbsv1~]$ cat /etc/pam.d/login
2.2.8 编辑 /etc/profile
[root@oradbsv1~]$ vi /etc/profile
#添加以下信息(编辑完成后按Esc键,输入“:wq”存盘退出):
if [$USER = "oracle"] ; then
if [ $SHELL = " /bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65535
else
ulimit -u 16384 -n 65536
fi
fi
#查看添加信息
[root@oradbsv1~]$ cat /etc/profile
2.2.9 设置系统临时空间的大小
注意:默认为物理内存的1/2倍,同时也是为了防止在后续启动数据库时报ORA-00845的错误,下为错误示例:
SQL> startup ;
ORA-00845: MEMORY_TARGET not supported on this system
#调整shm的大小,这样相对简单,具体操作如下
[root@oradbsv1~]$ vi /etc/fstab
#修改如下行的设置(size建议为物理内存的四分之一)
tmpfs /dev/shm tmpfs defaults 0 0
#改成如下,如没有则直接追加
tmpfs /dev/shm tmpfs defaults,size=1G 0 0
#目前建议是物理内存的四分之一大小;shm信息量比较大详见https://www.cnblogs.com/andreking/p/5782577.html
#保存退出
#重新mount下shm使其生效
[root@oradbsv1~]$ mount -o remount /dev/shm
[root@oradbsv1~]$ df -h | grep shm
2.2.10 上传Oracle安装文件至服务器
#上传Linux.Oracle安装文件至</u01 >目录下
[root@oradbsv1~]$ cd /u01
[root@oradbsv1 u01]$ rz

#注意:基础版安装环境下无“rz”命令,需要通过SecureFx工具进行上传,操作如下:

2.2.11 解压Oracle安装文件
[root@oradbsv1~]$ cd /u01
[root@oradbsv1 u01]$ unzip linux.x64_11gR2_database_1of2.zip
[root@oradbsv1 u01]$ unzip linux.x64_11gR2_database_2of2.zip
#查看解压后的Database文件夹是否属于Oracle用户及Oinstall组
[root@oradbsv1 u01]$ ls -l
#调整Database文件夹权限Oracle用户及Oinstall组
[root@oradbsv1 u01]$ chown -R oracle:oinstall database/
[root@oradbsv1 u01]$ ls -l
2.3 安装Oracle11.2安装过程操作
2.3.1 安装tigervnc-server远程工具
注意:安装VNC远程工具的目是Linux安装完成后,可能不匹配显卡,分辨率很低造成后Oracle安装不顺畅。
2.3.1.1 Linux端安装VNC-Server
(1) #安装tigervnc-server包
[root@oradbsv1~]$ yum install -y tigervnc-server
[root@oradbsv1~]$ systemctl set-default graphical.target
(2) 查看已开放端口:
[root@oradbsv1 ~]$ firewall-cmd --list-all
(3) 开放指定端口:
[root@oradbsv1 ~]$ firewall-cmd --zone=public --add-port=5901/tcp --permanent
(4) 并不中断用户连接加载端口
[root@oradbsv1 ~]$ firewall-cmd --reload
(5) 启用vncserver
[root@oradbsv1~]$ su - oracle
[oracle@oradbsv1~]$ vncserver
2.3.1.2 Windos使用VNCView远程连接
VNC-Server默认端口为 5901
客户端连接使用 IP地址:5901进行连接,如 192.168.89.200:5901
2.3.2 图形化安装模式
2.3.2.1 以Oracle用户登录Linux
在图形界面以Oracle用户登陆。
2.3.2.2 打开控制台程序
桌面 - 右键 - open in Terminal
2.3.2.3 执行Oracle安装
登录用户:oracle
[oracle@oradbsv1~]$ cd /u01 /database/
#如果Linux系统字体为中文,避免中文安装界面汉字为□□,将语言调整为英文
[oracle@oradbsv1 database]$ export;
[oracle@oradbsv1 database]$ ls
[oracle@oradbsv1 database]$ ./runInstaller
2.3.2.4 图形化安装过程(Oracle软件)
注意:安装过程中,可能会在85%的时候卡住,屏幕中心会出现一个小按钮“…”,右键选择关闭即可。
2.3.2.4.1 去掉图中的勾进行下一步


2.3.2.4.2 选择“install database software only”

2.3.2.4.3 选择“Single instance database installation”

2.3.2.4.4 选择语言“Select Product Languages”
选择“English、English(United kingdom)、Simplified Chinese、Traditional Chinese”后进入下一步

2.3.2.4.5 选择“Enterprise Edition(4.29GB)”

2.3.2.4.6 配置 Oracle 的软件路径和基本路径”

2.3.2.4.7 配置 Oracle 的Inventory Directory

2.3.2.4.8 配置 Oracle Group

2.3.2.4.9 Oracle安装先决条件检测
注意:#Swap size 交换内存不需要处理
#Packages 依赖包,需要逐个检测,检测包名的前几个字母即可,如果本地安装版本比提示版本高,则不需要处理。
#检测软件包是否存在
[root@oradbsv1 ~]$ rpm -qa | grep软件包名称
#软件包下载
[root@oradbsv1 ~]$ yum install -y 未安装软件包名称

2.3.2.4.10 跟踪安装日志(SecureCrt)
[root@oradbsv1~]$ cd /u01/app/oraInventory/logs
[root@oradbsv1 logs]$ ls
[root@oradbsv1 logs]$ tail -100f installActions2019-06-01_05-49-42PM.log
2.3.2.4.11 根据提示使用root用户执行命令
注意:安装至85%时,会卡住,在窗口中心出现”…”的图标,右键关闭即可。
[root@oradbsv1 ~]$ /u01/app/oraInventory/orainstRoot.sh
[root@oradbsv1 ~]$ /u01/app/oracle/product/11.2.0/db_1/root.sh

2.3.2.4.12 Oracle软件安装完成

2.3.2.5 图形化安装过程(netca安装Listener)
2.3.2.5.1 打开Listener配置窗口
[oracle@oradbsv1 database]$ export
[oracle@oradbsv1 database]$ netca
2.3.2.5.2 配置Listener Configuration


2.3.2.5.3 配置监听名称Listener name


2.3.2.5.4 配置通信端口(1521)



2.3.2.5.5 Listener监听器安装完成

2.3.2.5.6 测试listener是否启动
Linux下可以使用ps命令来查看Oracle相关的进程(Oracle Listener)
[oracle@oradbsv1 database]$ ps -ef | grep tnslsnr
如下图所示,标明Listeners已启动:

2.3.2.6 图形化安装过程(dbca安装数据库)
2.3.2.6.1 打开dbca配置窗口
[oracle@oradbsv1 database]$ dbca
2.3.2.6.2 选择创建数据库


2.3.2.6.3 设置数据库实例名(qdorcl)
注意:该事例名要与环境变量中的ORACLE_SID一致


2.3.2.6.4 设置数据库密码

2.3.2.6.5 设置数据库存储方式(File System)



2.3.2.6.6 设置数据库内存在大小
注意:数据库内存大小应设置为物理内存的40%或50%

2.3.2.6.7 设置数据库字符集(中文字符集 ZHS16GBK)

2.3.2.6.8 开始创建数据库
注意:安装过程中,弹出式窗口在屏幕中心只会显示一个小方块,将鼠标指向后,按住左键拖放进行更改窗口大小。


2.3.2.6.9 Oracle数据库安装完成
注意:如出现如下错误不需要管,直接OK即可,未测试出是什么原因。

2.3.2.6.10 测试Oracle数据库
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> select sysdate from dual;
SYSDATE
------------
02-JUN-19s
2.3.3 静默安装模式(未测试)
2.3.3.1 编辑/u01/app/db_install.rsp
#切换至Oracle用户
[root@oradbsv1~]$ su oracle
[oracle@oradbsv1~]$ vi /u01/app/db_install.rsp
# 配置信息如下所示,适合Oracle11.2.0.4:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
DECLINE_SECURITY_UPDATES=true
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
2.3.3.2 执行静默安装操作
[oracle@oradbsv1~]$ cd /u01/app/tools/database
[oracle@oradbsv1~]$ ./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -force -responseFile /u01/app/db_install.rsp
2.4 安装Oracle11.2后期配置工作
2.4.1 Oracle11.2配置文件调整
[oracle@oradbsv1~]$ cd $ORACLE_HOME/network/admin/
[oracle@oradbsv1 admin]$ ls
listener.ora、tnsnames.ora
2.4.1.1 修改listener.ora
[oracle@oradbsv1 admin]$ vi listener.ora
#如下所示:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.90.200)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = qdorcl)
(SID_NAME = qdorcl)
)
)

2.4.1.2 修改tnsnames.ora
[oracle@oradbsv1 admin]$ vi tnsnames.ora

2.4.1.3 启用监听器
[oracle@oradbsv1~]$ lsnrctl start
2.4.2 Listener监听器开启与关闭
注意:切换用户至oracle
[root@oradbsv1~]$ su oracle
2.4.2.1 查看监听器状态
[oracle@oradbsv1~]$ lsnrctl status
如下图所示,标明服务已启动:

2.4.2.2 启动监听器
[oracle@oradbsv1~]$ lsnrctl start
2.4.2.3 停止监听器
[oracle@oradbsv1~]$ lsnrctl stop
如下图所示,标明服务已停止:

2.4.3 Oracle11g运行测试
[oracle@oradbsv1 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> quit
2.4.4 配置Oracle运行端口1521
症状:TCP/IP连接正常,服务器Listeners监听器运行正常,局域网内连接数据库错误,报ORA-12170: TNS:连接超时 ,该情况一般是启用了防火墙,但1521端口未开放
(6) 查看防火墙状态:
[root@oradbsv1 ~]$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 六 2019-06-01 14:19:40 CST; 57min ago
Main PID: 632 (firewalld)
CGroup: /system.slice/firewalld.service
└─632 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
(7) 查看已开放端口:
[root@oradbsv1 ~]$ firewall-cmd --list-all
(8) 开放指定端口:
[root@oradbsv1 ~]$ firewall-cmd --zone=public --add-port=1521/tcp --permanent
[root@oradbsv1 ~]$ firewall-cmd --zone=public --add-port=21/tcp --permanent
并不中断用户连接加载端口
[root@oradbsv1 ~]$ firewall-cmd --reload
2.4.5 配置Oracle随操作系统启动
2.4.5.1 配置dbstart和dbshut命令
(1) 测试命令配置是否有效
[root@oradbsv1 ~]$ su oracle
[oracle @oradbsv1 ~]$ dbstart
如出现如下错误提示信息则标明dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题:
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /u01/app/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME
(2) 编辑配置文件(dbstart与dbshut)
操作:找到 ORACLE_HOME_LISTNER=$1 修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
#参数大约在80行
[oracle @oradbsv1 ~]$ vi $ORACLE_HOME/bin/dbstart
#参数大约在50行
[oracle @oradbsv1 ~]$ vi $ORACLE_HOME/bin/dbshut
#快速定位指定行,vi指指令运行后,在非编辑状态下,按 :set 行号 进行定位
#查看修改,显示行号,便于定位
[oracle @oradbsv1 ~]$ cat -n $ORACLE_HOME/bin/dbshut
2.4.5.2 配置开机自动运行oracle监听与实例
(1) 修改配置文件/etc/oratab:
[oracle @oradbsv1 ~]$ su root
[root @oradbsv1 ~]$ vi /etc/oratab
操作:找到 orcl:/u01/app/oracle/product/11.2.0/db_1:N修改为orcl:/u01/app/oracle/product/11.2.0/db_1:Y
说明:Y 代表随系统一起启动,路径为$ORACLE_HOME
如下图所示:

(2) 将命令 lsnrctl start 与 dbstart 添加到 rc.local文件中
[root @oradbsv1 ~]$ vi /etc/rc.d/rc.local
#添加内容如下所示:(路径 /u01/app/oracle/product/11.2.0/db_1 即 $ORACLE_HOME)
su oracle -lc "/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/11.2.0/db_1/bin/dbstart
(3) 授权rc.local文件可执行权限
[root @oradbsv1 ~]$ chmod +x /etc/rc.d/rc.local
2.5 关闭图形界面
注意:建议在安装Oracle后关闭图形界面
#查看当前的默认目标,运行:
[root@oradbsv1~]$ systemctl get-default
graphical.target,标明运行状态
#关闭图形界面
[root@oradbsv1~]$ systemctl set-default multi-user.target
#打开图形界面
[root@oradbsv1~]$ systemctl set-default graphical.target
#重启系统生效(永久)
[root@oradbsv1~]$ reboot
#dos界面与图形化界面切换快捷键
图形到dos:ctrl+alt+f2
dos到图形:输入startx
2.6 删除安装过程临时用户与文件
2.6.1 删除系统完装时的临时用户oracle11gr2
[root@oradbsv1~]$ su root
[root@oradbsv1~]$ userdel -r oracle11gr2
2.6.2 删除Oracle安装文件
[root@oradbsv1~]$ su root
[root@oradbsv1~]$ cd /u01
[root@oradbsv1 u01]$ rm -rf database
[root@oradbsv1 u01]$ rm -rf linux.x64_11gR2_database_1of2.zip
[root@oradbsv1 u01]$ rm -rf linux.x64_11gR2_database_2of2.zip
#查看文件是否已删除
[root@oradbsv1 u01]$ ls
2.7 Oralce数据库工具运行配置
2.7.1 将用户口令有效期默认值180天修改成“无限制”(使用PL/SQL)
#查看存放用户口令的profile文件
SQL> SELECT username,profile FROM dba_users;
SQL> SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
#将用户口令有效期默认值180天修改成“无限制”
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
2.7.2 Oralce数据库最大连接与最大并发数配置(使用PL/SQL)
2.7.2.1 查看当前的数据库连接数
#当前的数据库连接数
select count(*) from v$process ;
2.7.2.2 数据库允许的最大连接数
#数据库允许的最大连接数
select value from v$parameter where name ='processes';
2.7.2.3 修改数据库最大连接数
#修改最大连接数:
alter system set processes = 1000 scope = spfile;
2.7.2.4 关闭/重启数据库
#关闭数据库
shutdown immediate;
#重启数据库
startup;
2.7.2.5 查看当前有哪些用户正在使用数据
select osuser, a.username, cpu_time/executions/1000000||'s', b.sql_text, machine
from v$session a, v$sqlarea b
where a.sql_address =b.address
order by cpu_time/executions desc; --查看当前有哪些用户正在使用数据
2.7.2.6 当前的session连接数
select count(*) from v$session --当前的session连接数
2.7.2.7 当前并发连接数
select count(*) from v$session where status='ACTIVE'; --并发连接数
3 Oracle11.2安装过程错误积累
3.1 开机提示(License information)处理
注意:如开机后提示以下信息原因是系统安装过程中,未进行“License information”(1.4.2.11设置”LICENSE INFORMATION”)确认操作,命令行方式下操作如下所示:
initial setup of oracle linux server 7.2
1) [!] License information 2) [x] Creat user
(license not accepted) (no user will be created)
Please make your choice from above [‘q’ to quit | ‘c’ to continue | ‘r’ to refresh]:
指需要接受license,操作步骤如下:
步骤 1 输入【1】,选择【License information】按Enter键进入
步骤 2 输入【1】,按Enter键阅读许可协议
步骤 3 输入【2】,选中同意许可协议(前方出来X), 按Enter键返回
步骤 4 输入【q】,按Enter键退出
步骤 5 输入【yes】,按Enter键确定
步骤 6 重启之后即可进入图形登录界面
3.2 Linux导入数据库时报(ORA-31640)
错误信息:ORA-31640: unable to open dump file
解决方法如下:出现该问题有两种
(1) 核对 dump文件所在路径及文件的权限是否有Oracle用户权限。
[root@oradbsv1~]$ cd /data1
[root@oradbsv1~]$ ls -l
[root@oradbsv1~]$ cd /data1/databak
[root@oradbsv1~]$ ls -l
(2) 核对dump文件名大小写,与impdp中文件名一致
3.3 服务器断电重启后启动数据库报(ORA-01078)
[oracle@oradbsv1 ~]$ sqlplus "/as sysdba"
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
如上错误指的是Oracle数据库,服务器异常断电,导致数据库不能启动,处理方法如下:
将 '/u01/app/oracle/ admin/Oracle实例名/pfile/ init.ora.7172019233744' 文件拷贝到'/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
操作命令如下:
[oracle@oradbsv1 ~]$ cd /u01/app/oracle/ admin/Oracle实例名/pfile/
[oracle@oradbsv1 pfile]$ ls
[oracle@oradbsv1 ~]$cp init.ora.7172019233744 /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora
如上操作完成后,重新启动数据库即可。
3.4 Oracle安装完成后shutdown报(ORA-01507)
错误提示如下所示:

解决方案如下:
#进行ORACLE_HOME/dbs目录
[oracle@oradbsv1 ~]$ cd $ORACLE_HOME/dbs
#fuser -u lk实例名
[oracle@oradbsv1 dbs]$ fuser -u lkQDORCL
#执行结果如下图所示

#fuser -k lk实例名
[oracle@oradbsv1 dbs]$ fuser -k lkQDORCL
#执行结果如下图所示

#重启、关闭数据库测试,还有无ORA-开头的错误中,如没有则正常
[oracle@oradbsv1 dbs]$ sqlplus / as sysdba
SQL> startup
SQL> shutdown immediate;
4 Oracle数据库操作
4.1 Listener监听器开启与关闭
注意:切换用户至oracle
[root@oradbsv1~]$ su oracle
4.1.1 查看监听器状态
[oracle@oradbsv1~]$ lsnrctl status
如下图所示,标明服务已启动:

4.1.2 启动监听器
[oracle@oradbsv1~]$ lsnrctl start
4.1.3 停止监听器
[oracle@oradbsv1~]$ lsnrctl stop
如下图所示,标明服务已停止:

4.2 启动数据库
注意:切换用户至oracle
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> startup
4.3 关闭数据库
注意:切换用户至oracle
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
4.4 客户端连接服务器测试
#在windows的cmd窗口中,执行 tnsping ip地址
C:\Users\Administrator>tnsping 192.168.109.132
5 Oracle数据库创建与还原准备
5.1 创建数据库与备份文件存放目录
#创建数据库文件存放目录database 与 备份文件存放目录
[oracle@oradbsv1~]$ su root
[root@oradbsv1~]$ mkdir /data/database
[root@oradbsv1~]$ mkdir /data/databack
#分配权限给Oracle用户
[root@oradbsv1~]$ chown -R oracle:oinstall /data/database
[root@oradbsv1~]$ chown -R oracle:oinstall /data/databack
[root@oradbsv1~]$ chmod -R 755 /data/database
[root@oradbsv1~]$ chmod -R 755 /data/databack
#查看新建目录权限
[root@oradbsv1~]$ ls -l

5.2 上传备份文件至/data/databack目录下
[root@oradbsv1~]$ cd /data/databack
[root@oradbsv1 databack]$ rz
#备份文件上传完成执行赋权
[root@oradbsv1 databack]$ chown -R oracle:oinstall /data/databack
[root@oradbsv1 databack]$ chmod -R 755 /data/databack
[root@oradbsv1 databack]$ ls -l
5.3 创建数据库文件至/u01/database目录下
#切换用户至Oracle,同时切换用户环境
[root@oradbsv1~]$ su - oracle
[oracle@oradbsv1~]$ sqlplus /nolog
SQL> conn system/qdsoft2018@qdorcl
#创建数据库语句请参考< [02 Linux]创建表空间用户 >
5.4 登录Oracle创建逻辑目录qdhiip_path指向/u01/databack
#核对字符集是否一致,中文默认是 ZHS16GBK
SQL> select userenv('language') from dual;
#增加临时表空间可以提高数据泵导入导出的速度
SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
#返回临时表空间所在位置
/u01/app/oracle/oradata/qdorcl/temp01.dbf
#调整临时表空间大小
SQL> alter database tempfile '/u01/app/oracle/oradata/qdorcl/temp01.dbf' resize 4096m;
SQL> alter database tempfile '/u01/app/oracle/oradata/qdorcl/temp01.dbf' autoextend on next 5m maxsize unlimited;
#创建逻辑目录qdhiip_path指向/data/databack
SQL> create directory qdhiip_path as '/data/databack';
#查看临时路径列表
SQL> select * from dba_directories;
5.5 使用impdp数据泵导入命令还原数据库
注意:文件名称注意大小写。
#导入qdhiip库
[oracle@oradbsv1~]$ impdp qdhiip/qdhiip_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip.dmp schemas=qdhiip logfile=imp_qdhiip.log
#导入qdhiip_up库
[oracle@oradbsv1~]$ impdp qdhiip_up/qdhiip_up_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_up.dmp schemas=qdhiip_up logfile=imp_qdhiip_up.log
#导入qdhiip_his库
[oracle@oradbsv1~]$ impdp qdhiip_his/qdhiip_his_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_his.dmp schemas=qdhiip_his logfile=imp_qdhiip_his.log
#导入qdhiip_lis库
[oracle@oradbsv1~]$ impdp qdhiip_lis/qdhiip_lis_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_lis.dmp schemas=qdhiip_lis logfile=imp_qdhiip_lis.log
#导入qdhiip_emr库
[oracle@oradbsv1~]$ impdp qdhiip_emr/qdhiip_emr_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_emr.dmp schemas=qdhiip_emr logfile=imp_qdhiip_emr.log
#导入qdhiip_mob库
[oracle@oradbsv1~]$ impdp qdhiip_mob/qdhiip_mob_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_mob.dmp schemas=qdhiip_mob logfile=imp_qdhiip_mob.log
#导入qdhiip_peis库
[oracle@oradbsv1~]$ impdp qdhiip_peis/qdhiip_peis_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_peis.dmp schemas=qdhiip_peis logfile=imp_qdhiip_peis.log
#导入qdhiip_wx库
[oracle@oradbsv1~]$ impdp qdhiip_wx/qdhiip_wx_2018@qdorcl directory=qdhiip_path dumpfile=qdhiip_wx.dmp schemas=qdhiip_wx logfile=imp_qdhiip_wx.log
5.6 重新编译失效的存储过程与视图
--HIS、LIS、EMR分别执行如下语句,将执行结果复制出来进行执行即可。
SQL>SELECT 'ALTER PROCEDURE ' || OBJECT_NAME || ' COMPILE;' FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE' AND STATUS='INVALID';
SQL>SELECT 'ALTER VIEW ' || OBJECT_NAME || ' COMPILE;' FROM USER_OBJECTS WHERE OBJECT_TYPE='VIEW' AND STATUS='INVALID';
5.7 删除备份文件目录/u01/databack下所有文件
[root@oradbsv1~]$ cd /data/databack
[root@oradbsv1~]$ rm –rf /u01/databack/*.dmp
[root@oradbsv1~]$ rm –rf /u01/databack/*.log
6 Oracle数据库自动备份配置
6.1 Linux系统下配置自动备份
#切换到Oracle用户下
[root@oradbsv1 ~]$ su - oracle
#创建目录
[oracle@oradbsv1 ~]$ mkdir -p /home/oracle/shell
#创建配置文件并分配权限
[oracle@oradbsv1 ~]$ chown -R oracle:oinstall /home/oracle/shell
[oracle@oradbsv1 ~]$ vi /home/oracle/shell/dbbak.sh
#添加如下信息至配置文件中(注意ORACEL开头的信息为安装Oracle前的环境变量配置信息,要一致)
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=qdorcl
export PATH=$ORACLE_HOME/bin:$PATH
export DATA_DIR=/data/databack
export DELTIME=`date -d "7 days ago" +%Y%m%d`
export BAKUPTIME=`date +%Y%m%d%H%M%S`
rm -rf $DATA_DIR/EXPDP_QDHIIP_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_HIS_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_LIS_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_EMR_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_PEIS_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_MC_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_WX_$DELTIME*.dmp
rm -rf $DATA_DIR/EXPDP_QDHIIP_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_HIS_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_LIS_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_EMR_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_PEIS_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_MC_$DELTIME*.log
rm -rf $DATA_DIR/EXPDP_QDHIIP_WX_$DELTIME*.log
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_$BAKUPTIME.log SCHEMAS=QDHIIP
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_HIS_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_HIS_$BAKUPTIME.log SCHEMAS=QDHIIP_HIS
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_LIS_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_LIS_$BAKUPTIME.log SCHEMAS=QDHIIP_LIS
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_EMR_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_EMR_$BAKUPTIME.log SCHEMAS=QDHIIP_EMR
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_PEIS_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_PEIS_$BAKUPTIME.log SCHEMAS=QDHIIP_PEIS
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_MC_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_MC_$BAKUPTIME.log SCHEMAS=QDHIIP_MC
expdp system/qdsoft2018@qdorcl directory=qdhiip_path dumpfile=EXPDP_QDHIIP_WX_$BAKUPTIME.dmp logfile=EXPDP_QDHIIP_WX_$BAKUPTIME.log SCHEMAS=QDHIIP_WX
echo "Delete the file bakup successfully. "
echo "Bakup completed."
#赋权限
[oracle@oradbsv1 ~]$ chmod -R 777 /home/oracle/shell
#查看定时服务状态
[oracle@oradbsv1 ~]$ service crond status
#停止定时服务状态
[oracle@oradbsv1 ~]$ service crond stop
#添加定时任务
[oracle@oradbsv1 ~]$ crontab -e
#添加如下语句:每天3:10分执行数据库备份操作
10 3 * * * /home/oracle/shell/dbbak.sh
#重启定时服务状态
[oracle@oradbsv1 ~]$ service crond restart
#查看定时服务状态
[oracle@oradbsv1 ~]$ service crond status
6.2 Windows系统下配置异地备份
公司服务环境标配服务最小为两台,一台服务器部署Oracle Linux 7.2版本及以上操作系统,作为智慧医院一体化系统主业务数据库服务器;另一台服务器部署Windows Server 2012R2版本及以上操作系统,安装VMWare虚拟机,部署扫码支付及作业虚拟机及微信公众平台虚拟机,而物理机则安装Oracle服务端程序并配置主业务数据库的异地备份,即该服务器也作为主业务数据库服务器的异地备份服务器。
6.2.1 安装Oralce 11gR2
安装过程可到百度中查找,安装过程中注意如下几点:
6.2.1.1 配置安全更新

6.2.1.2 安装选项(创建和配置数据库)

6.2.1.3 系统类(服务器类)

6.2.1.4 网络安装选项(单实例数据库安装)

6.2.1.5 安装类型(高级安装)

6.2.1.6 产品语言(简体中文+英语)

6.2.1.7 数据库版本(企业版)

6.2.1.8 安装位置(D:\Oracle)

6.2.1.9 配置类型(一般用途/事务处理)

6.2.1.10 数据库标识符(orcl)

6.2.1.11 管理选项-字符集(简体中文ZHS16GBK)

6.2.1.12 数据库存储(由C盘调整至D盘)

6.2.1.13 备份和恢复(不启用自动备份)

6.2.1.14 指定方案口令(通过qdpassword.exe获得System口令)


6.2.1.15 概要

6.2.1.16 完成安装

6.2.1.17 Oracle配置文件调整
路径:D:\oracle\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
文件:listener.ora 与 tnsnames.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.90.200)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = qdorcl)
(SID_NAME = qdorcl)
)
)


6.2.1.18 重启监听器
开始 – 运行 - services.msc - OracleOraDb11g_home1TNSListener – 右键重新启动

6.2.1.19 Oralce运行配置调整
C:\Users\Administrator>sqlplus /nolog
SQL> conn / as sysdba
(1)将用户口令有效期默认值180天修改成“无限制”(使用PL/SQL)
#查看存放用户口令的profile文件
SQL> SELECT username,profile FROM dba_users;
#查看对应的概要文件的口令有效期设置
SQL> SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
#将用户口令有效期默认值180天修改成“无限制”
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
(2)Oralce数据库最大连接与最大并发数配置(使用PL/SQL)
#当前的数据库连接数
SQL> select count(*) from v$process ;
#数据库允许的最大连接数
SQL> select value from v$parameter where name ='processes';
#修改最大连接数:
alter system set processes = 1000 scope = spfile;
#关闭数据库
shutdown immediate;
#重启数据库
startup;
6.2.2 配置网络泵TNS
6.2.2.1 创建数据库连接实例(TO_SERVER)
创建网络泵数据库连接实例,名称固定为 TO_SERVER。
打开文件“D:\oracle\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\ tnsnames.ORA”文件,追加如下连接串:
TO_SERVER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Linux服务器IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = qdorcl)
)
)
6.2.2.2 设置字符集
C:\Users\Administrator> SET NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
6.2.2.3 创建DBLINK
C:\Users\Administrator> sqlplus / as sysdba
SQL> drop database link local_to_server;
SQL> create public database link local_to_server connect to qdhiip identified by <Linux主业务数据库QDHIIP用户密码> using 'TO_SERVER';
6.2.2.4 确认DBLINK是否创建成功
SQL> select * from dual@local_to_server;
6.2.2.5 设置备份文件存放路径
设置数据库备份文件存放路径,一般服务器会分三个盘,C盘为系统盘,D盘业务数据盘,E盘为备份盘,备份路径建至E盘。注意:文件路径要求必须为英文路径。
(1)备份文件路径创建
E:\qdhiipdatabak\bat 用于存放数据库备份调用Bat文件
E:\qdhiipdatabak\dump 用于存放数据库备份文件
(2)备份文件路径设置
C:\Users\Administrator> sqlplus / as sysdba
SQL> CREATE OR REPLACE directory qdhiip_path_net as 'E:\qdhiipdatabak\dump ';
SQL> grant read, write on directory qdhiip_path_net to system;
(3)备份调用Bat文件设置
l [10]Del7DaysFile.bat(删除N天前的备份文件)

l [1N]expdp_****.bat(数据库备份调用bat文件)
注意:所有expdp_开头的Bat文件全部都要修改system密码

6.2.3 创建数据库备份任务计划
6.2.3.1 打开“任务计划程序”
开始 è windows管理工具 è 任务计划程序 è Microsoft è 启用所有任务历史记录

6.2.3.2 创建任务
右键“Microsoft”è 创建任务 è 常规

6.2.3.3 触发器

6.2.3.4 操作

6.2.3.5 设置

7 Oracle归档日志
Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog)
归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。
注意:Oracle数据库开归档之后,oracle 系统默认的归档空间为2G,默认存放位置为闪回区,由于日志过多,空间写满,数据库的redo文件不能归档,而出现oracle数据库挂起的问题(oem打开oracle数据库操作界面,会显示如下错误信息: 由于输出设备已满或不可用, 归档程序无法归档重做日志)。解决该问题的方法有两种,即修改闪回区大小或重定向归档日志的位置,并配合着定期删除历史归档日志计划来使用。
7.1 开启归档日志
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
#关闭数据库
SQL> shutdown immediate;
#打开数据库
SQL> startup mount;
#开启归档日志
SQL> alter database archivelog;
#开启数据库
SQL> alter database open;
#查看归档日志是否开启
SQL> archive log list;
开启状态:
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 49
下一个存档日志序列 51
当前日志序列 51
7.2 关闭归档日志
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
#关闭数据库
SQL> shutdown immediate;
#打开数据库
SQL> startup mount;
#关闭归档日志
SQL> alter database noarchivelog;
#开启数据库
SQL> alter database open;
#查看归档日志是否关闭
SQL> archive log list;
开启状态:
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 49
当前日志序列 51
7.3 增大归档日志空间
7.3.1 修改闪回区大小
Oracle数据开启归档日志后,归档日志默认存放位置为闪回区,闪回区默认大小为2-4G,空间很快就会被占满,当日志大小占用闪回区空间90%以上,就会造成Oracle数据库挂起,必须清空一部分归档日志后,才能正常使用。
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved
#以管理员身份登录数据库
SQL> conn /as sysdba
#关闭数据库
SQL> shutdown immediate;
打开数据库
SQL> startup mount;
#查看闪回区存放位置与大小
SQL> show parameter db_recovery;
NAME TYPE VALUE
db_recovery_file_dest string /home/u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
#修改回闪恢复区的大小 (缺省是2G,可以根据实际情况调整大小,如果空间足够,可设置10G)
SQL> alter system set db_recovery_file_dest_size = 10G;
#开启数据库
SQL> alter database open;
7.3.2 重定向归档日志的位置
生产环境建议将归档目录和oracle产品的安装目录分开,修改log_archive_dest_1参数指向定义的归档位置(该参数可以不关闭实例进行修改)
[oracle@oradbsv1 database]$ sqlplus /nolog
#root用户创建归档目录,选择空间较大的盘,建议与Oracle产品安装目录分开
[root@oradbsv1 ~]$ mkdir /data/archivelog
#赋于oracle用户读写权限
[root@oradbsv1 ~]$ chown -R oracle:oinstall /data/archivelog
[root@oradbsv1 ~]$ chmod -R 755 /data/archivelog
#切换至oracle用户
[root@oradbsv1 ~]$ su – oracle
#以管理员身份登录数据库
[oracle@oradbsv1 ~]$ sqlplus /nolog
SQL> conn /as sysdba
#重定向归档日志的位置
#scope=memory 当前实例生效,重启实例后失效
#scope=spfile 当前实例不生效,重启实例后生效
#scope=both 当前实例生效,且重启实例后生效
SQL> alter system set log_archive_dest_1='location=/data/archivelog' scope=both;
#执行日志切换
#该命令作用让归档日志重新在目标路径重新写入,不过前日志文件写入空间是否已满
SQL> alter system switch logfile;
#重启数据库确认下次启动正常;
SQL> shutdown immediate;
SQL> startup;
#查看数据库状态和归档日志状态
SQL> select status from v$instance;
#归档日志状态
SQL> archive log list
7.4 自动清理归档日志
7.4.1 创建自动清理归档日志脚本
脚本文件存放目录与Oracle自动备份脚本存放目录一致,便于管理。
#oracle创建脚本文件
[root@oradbsv1 ~]$ cd /home/oracle/shell
[root@oradbsv1 /home/oracle/shell]$ vi del_arch.sh
#添加如下信息至配置文件中
#!/bin/bash
echo "----------------------------------------`date`---------------------------------------"
source ~/.bash_profile
rman target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
EOF
echo -e "\n"
echo "------------------------------------ FINISHED ------------------------------------"
#赋权限
[oracle@oradbsv1 ~]$ chmod -R 777 /home/oracle/shell
7.4.2 添加定时任务
#添加定时任务
[oracle@oradbsv1 ~]$ crontab -e
#添加如下语句:每天4:10分执行归档日志清除操作
10 4 * * * /home/oracle/shell/del_arch.sh
#重启定时服务状态
[oracle@oradbsv1 ~]$ service crond restart
#查看定时服务状态
[oracle@oradbsv1 ~]$ service crond status
7.5 使用rman清理归档日志(解决归档日志存满后Oracle挂起)
RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息。
可以基于不同的条件来清除归档日志,如基于SCN,基于SEQUENCE,基于TIME等方式。
对于上述的三种方式又可以配合from, until, between .. and .. 等等子句来限定范围,方式灵活多变。下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的:
[Oracle@oradbsv1 ~]$ rman target /
RMAN> 待执行语句
# 清理到某天日期之前的归档
delete noprompt archivelog until time "to_date('2021-05-18','YYYY-MM-DD')";
# 清理到具体时分秒之前的归档日志
delete noprompt archivelog until time "to_date('2016-09-14 18:00:00','YYYY-MM-DD hh24:mi:ss')";
#校验日志的可用性
cross check archivelog all;
#列出所有失效的归档日志
list expired archivelog all;
#删除log sequence为16及16之前的所有归档日志
delete archivelog until sequence 16;
#删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志
delete archivelog all completed before 'sysdate-7';
#删除系统时间1天以前的归档日志,不会删除闪回区有效的归档日志
delete archivelog all completed before 'sysdate - 1';
#注意这个命令,删除系统时间1天以内到现在的归档日志
delete archivelog from time 'sysdate-1';
#该命令清除当前所有的归档日志
delete noprompt archivelog all completed before 'sysdate';
#该命令清除当前所有的归档日志
delete noprompt archivelog all completed before 'sysdate-0';
#该命令清除当前所有的归档日志
delete noprompt archivelog all;
8 服务器常用维护
8.1 查看与挂载新磁盘
8.1.1 查看新磁盘是否被系统识别
[root@oradbsv1 ~]$ su root
# 列出块设备信息(df -h不能看到的卷)
[root@oradbsv1 ~]$ lsblk
[root@oradbsv1 ~]$ fdisk -l
#新磁盘识别如下图所示:

#注意:新磁盘未补识别则需要对新增加磁盘进行分区并创建文件系统(格式化)
#注意: /dev/sda 为未挂载磁盘,根据实际情况调整
[root@oradbsv1 ~]$ fdisk /dev/sda
#按顺序执行如下命令:
p 查看已分区数量(我看到有两个 /dev/sda1 /dev/sda2)
n 新增加一个分区
p 分区类型我们选择为主分区
3 分区号选3(因为1,2已经用过了,见上)
回车 默认(起始扇区)
回车 默认(结束扇区)
t 修改分区类型
3 选分区3
8e 修改为LVM(8e就是LVM)
w 写分区表
q 完成,退出fdisk命令
#重启系统:
[root@oradbsv1 ~]$ reboot
8.1.2 查看原有磁盘的文件系统类型
[root@oradbsv1 ~]$ df -T
#新磁盘识别如下图所示(Avail<已使用>4.5G / Used<可用>12G / 74%,Type=xfs即原磁盘文件系统类型):

8.1.3 初使化新挂载磁盘并初使化
[root@oradbsv1 ~]$ mkfs -t xfs /dev/sdb

8.1.4 挂载磁盘至指定的文件夹
#新建data1文件夹作为新挂载磁盘的访问路径
root@oradbsv1 ~]$ mkdir /data1
#挂载磁盘/dev/sdb至指定文件夹data1
[root@oradbsv1 ~]$ mount /dev/sdb /data1
#解决系统重启后丢失磁盘的问题
[root@oradbsv1 ~]$ vi /etc/fstab
#追加如下语句
#注意: /dev/sdb 与 /data1为刚刚挂载磁盘,根据实际情况调整
/dev/sdb /data1 xfs defaults 0 0
#为oracle用户赋权
[root@oradbsv1 ~]$ chown -R oracle:oinstall /data1
[root@oradbsv1~]$ chmod -R 755 /data1
8.1.5 查看新挂载磁盘情况
[root@oradbsv1 ~]$ df -h

8.1.6 卸载新挂载磁盘
[root@oradbsv1 ~]$ umount /data1 /dev/sdb
8.2 扩容原磁盘空间/dev/sda
# 进入lvm管理
[root@oradbsv1 ~]$ lvm
# 初始化刚才的分区,必须的
lvm> pvcreate /dev/sda3
# 将初始化过的分区加入到虚拟卷组ol
lvm> vgextend ol /dev/sda3
#注意:虚拟卷组名称查看(1)使用命令 vgdisplay 获取VG Name (2)如下图所示:

#扩展已有卷的容量(注意容量大小),可使用lsblk命令查看
lvm> lvextend -L +15G /dev/mapper/ol-root

#查看卷容量,这时你会看到一个很大的卷了
lvm> pvdisplay
#退出
lvm> quit
# 对文件系统进行扩容
[root@oradbsv1 ~]$ xfs_growfs /dev/mapper/ol-root
# 查看扩容后的磁盘空间
[root@oradbsv1 ~]$ df -h
8.3 查看服务器配置情况
8.3.1 查看CPU
(1) 查看CPU个数
[root@oradbsv1 ~]$ cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
(2) 查看CPU核数
[root@oradbsv1 ~]$ cat /proc/cpuinfo | grep "cpu cores" | uniq
(3) 查看CPU型号
[root@oradbsv1 ~]$ cat /proc/cpuinfo | grep 'model name' |uniq
8.3.2 查看内存
[root@oradbsv1 ~]$ cat /proc/meminfo | grep MemTotal
8.4 重启或关机流程
8.4.1 停止Oracle监听器(详见4.1.3停止监听器操作)
注意:切换用户至oracle
[oracle@oradbsv1~]$ lsnrctl stop
8.4.2 关闭Oracle数据库(详见4.2.3关闭数据库)
注意:切换用户至oracle
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
SQL> exit
8.4.3 重启服务器
注意:切换用户至root
[oracle@oradbsv1~]$ su root
[root@oradbsv1~]$ reboot
8.4.4 关机服务器
注意:切换用户至root
[oracle@oradbsv1~]$ su root
# now 立即关机
[root@oradbsv1~]$ shutdown -h now
8.5 打开或关闭图形界面(详见2.6关闭图形界面)
注意:建议在安装Oracle后关闭图形界面
#查看当前的默认目标,运行:
[root@oradbsv1~]$ systemctl get-default
graphical.target,标明运行状态
#关闭图形界面
[root@oradbsv1~]$ systemctl set-default multi-user.target
#打开图形界面
[root@oradbsv1~]$ systemctl set-default graphical.target
#重启系统生效(永久)
[root@oradbsv1~]$ reboot
#dos界面与图形化界面切换快捷键
图形到dos:ctrl+alt+f2
dos到图形:输入startx
8.6 验证Oracle是否启动
8.6.1 查看监听器状态(详见4.1.1查看监听器状态)
注意:切换用户至oracle
[oracle@oradbsv1~]$ lsnrctl status
如下图所示,标明服务已启动:

#查看Oracle监听器进程:
[oracle@oradbsv1 database]$ ps -ef | grep tnslsnr
#如下图所示:

8.6.2 测试Oracle数据库(详见2.4.1.10.10测试Oracle数据库)
注意:切换用户至oracle
[oracle@oradbsv1 database]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jun 2 21:58:12 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> select sysdate from dual;
SYSDATE
------------
02-JUN-19s
#查看Oracle进程:
[oracle@oradbsv1 database]$ ps -ef | grep oracle
#如下图所示:

8.7 Linux进程跟踪(详见5.3Linux进程跟踪)
[root@oradbsv1~]$ top -u oracle
(1)VIRT:virtual memory usage 虚拟内存
(2)RES:resident memory usage 常驻内存
(3)SHR:shared memory 共享内存
(4)DATA:数据占用的内存。如果top没有显示,按f键可以显示出来。
(5)按 m键进行内存使用排序,显示内存使用率

8.8 服务器非正常关机,开机后连接数据库提示错误(ORA-01033)
错误信息:ORA-01033: ORACLE initialization or shutdown in progress
解决方法如下:
(1)sqlplus /nolog
(2)connect sys/change_on_install as sysdba
(3)shutdown normal
提示:数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭
(4)startup mount
(5)alter database open;
8.9 服务器时间查看与修改
8.9.1 格式化查看时间
#查看当前系统日期 2019-06-03
[root@oradbsv1~]$ date "+%Y-%m-%d"
#查看当前系统时间13:13:59
[root@oradbsv1~]$ date "+%H:%M:%S"
#查看当前系统日期时间 2019-06-03 13:14:19
[root@oradbsv1~]$ date "+%Y-%m-%d %H:%M:%S"
#查看当前系统硬件时间钟
[root@oradbsv1~]$ hwclock -show
[root@oradbsv1~]$ clock -show
8.9.2 修改系统时间
#修改当前系统日期(date -s mm/dd/yyyy)
[root@oradbsv1~]$ date -s 06/03/2019
#修改当前系统时间(date -s hh:mm:ss)
[root@oradbsv1~]$ date -s 21:00:00
#设置硬件时间(月/日/年时:分:秒)
[root@oradbsv1~]$ hwclock --set --date="06/18/14 14:55"
[root@oradbsv1~]$ clock --set --date="06/18/14 14:55"
#这个命令强制把系统时间写入CMOS。
[root@oradbsv1~]$ clock –w
8.10 客户端连接Oracle非常慢
一般是服务器网络环境DNS启用造成的,需要将DNS禁用即可,操作如下所示:
#注释掉 /etc/resolv.conf中所有行,所有行前加 #
[root@oradbsv1~]$ vi /etc/resolv.conf
#网卡配置中追加如下内容
[root@oradbsv1~]$ vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
追加如下内容后:wq保存后退出
PEERDNS=no
[root@oradbsv1~]$ service network restart
8.11 重建并修改默认临时表空间
(1)查询当前数据库默认临时表空间名
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
(2)创建新的临时表空间
create temporary tablespace QDHIIP_TEMP tempfile '/data1/database/QDHIIP_TEMP.DBF' size 1024M autoextend on;
(3)修改默认表空间为刚刚建立的临时表空间
alter database default temporary tablespace QDHIIP_TEMP;
(4)查看用户所用临时表空间的情况
SELECT USERNAME,TEMPORARY_TABLESPACE FROM DBA_USERS;
(5)--删除之前先把使用临时表空间的session kill掉
SELECT se.username, se.SID, se.serial#, se.sql_address, se.machine, se.program, su.TABLESPACE,su.segtype, su.CONTENTS FROM v$session se, v$sort_usage su WHERE se.saddr = su.session_addr;
--alter system kill session '471,27126';
(6)删除原来的临时表空间
drop tablespace TEMP including contents and datafiles;
(7)查看所有表空间名确认临时表空间是否已删除
select tablespace_name from dba_tablespaces;
8.12 配置Linux与Windows时间服务器同步
8.12.1 配置Windows时间服务器(TimeServer.exe)
注意:寻找一台能够上内外网的电脑做为时间服务器,我们可以配置在支付服务器中。
该应用程序用于定时向Internet获取标准北京时间,在选项或配置文件中配置开机自动启动与端口号后保存设置并重启服务。

8.12.2 配置Windows时间服务器(NtpServer)
8.12.2.1 关闭Window防火墙

8.12.2.2 修改注册表AnnounceFlags值设置为5
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\ AnnounceFlags

8.12.2.3 修改注册表NtpServer\Enabled值设置为1
路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer\Enabled

8.12.2.4 修改注册表Ntpclient\Enabled值设置为0
路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\ Ntpclient\Enabled

8.12.2.5 重新启动 Windows 时间服务
(1)开始 – 运行 - cmd – 打开命令提示符窗口
(2)启动服务:net start w32time
(3)停止服务:net stop w32time
8.12.3 配置Linux时间同步
8.12.3.6 检查并安装NTP包
l 在线安装RPM包
[root@oradbsv1~]$ yum -y install ntp ntpdate
l 离线安装RPM包
(1)打开网站:http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/
(2)下载文件:ntp-4.2.6p5-29.0.1.el7.x86_64.rpm
(3)上传至服务器指定目录下(可自行指定):/data
(4)以root用户进行离线安装
[root@oradbsv1~]$ cd /data
[root@oradbsv1~]$ rpm -ivh ntp-4.2.6p5-29.0.1.el7.x86_64.rpm --force --nodeps
8.12.3.7 测试一次时间同步
#192.168.90.205为时间服务器IP地址,根据单位实际地址配置
[root@oradbsv1 ~]$ ntpdate -u 192.168.90.205
#如出现如下内容,标明时间同步成功
4 Jun 10:34:51 ntpdate[326978]: adjust time server 192.168.90.205 offset 0.001961 sec
8.12.3.8 配置系统定时任务
#添加定时任务,30分钟同步一次
[root@oradbsv1 ~]$ crontab -e
#添加如下语句:每天30分执行一次时间更新操作
*/30 * * * * /usr/sbin/ntpdate -u 192.168.90.205 > /dev/null 2>&1; /sbin/hwclock -w
#重启定时服务状态
[root@oradbsv1 ~]$ service crond restart
#查看定时服务状态
[root@oradbsv1 ~]$ service crond status

