环境说明
- centos7.4
- Oracle11.2.0.1
下载安装包
-
先下载安装包, 只不过需要注册账号。迁移前是11G,所以选11G版本。这两个文件都需要下载下来。
-
文件下载后,解压
linux.x64_11gR2_database_*
文件到同一个目录,database下。
创建逻辑卷
- 将硬盘纳入逻辑卷管理
[root@OralceMaster /]# pvcreate /dev/vdc
- 创建逻辑卷组
[root@OralceMaster /]# vgcreate OracleData /dev/vdc
- 添加逻辑卷
[root@OralceMaster /]# lvcreate -L 99.8G -n oracledata OracleData
- 格式化逻辑卷
[root@OralceMaster /]# mkfs.ext4 /dev/OracleData/oracledata
- 创建目录并挂载
[root@OralceMaster /]# mkdir ora01
[root@OralceMaster /]# mount /dev/mapper/OracleData-oracledata /ora01/
- 设置开机自动挂载, 不能直接用
/dev/mapper/OracleData-oracledata
,会导致无法正常开机,用UUID替换。
[root@OralceMaster ~]# blkid | grep Oracle
/dev/mapper/OracleData-oracledata: UUID="62e8ef14-4fc0-4fd3-94ed-8fd6e22cd8a0" TYPE="ext4"
[root@OralceMaster /]# vim /etc/fstab
UUID="62e8ef14-4fc0-4fd3-94ed-8fd6e22cd8a0" /ora01 ext4 defaults,noatime,barrier=0,data=writeback 0 0
- 在Linux中屏蔽tmp(让它不能启用)挂载点
[root@OralceMaster /]# systemctl mask tmp.mount
配置系统, 准备安装
- 添加用户组
--required groups
[root@OralceMaster oracle]# /usr/sbin/groupadd -g 501 oinstall
[root@OralceMaster oracle]# /usr/sbin/groupadd -g 502 dba
[root@OralceMaster oracle]# /usr/sbin/groupadd -g 503 oper
- 添加0racle用户,并加入组
[root@OralceMaster oracle]# /usr/sbin/useradd -u 502 -g oinstall -G dba,oper oracle
- 添加oracle用户的密码
[root@OralceMaster oracle]# passwd oracle
Changing password for user oracle.
New password:
- 配置内核参数,需要根据服务器配置做相应的更改
[root@OralceMaster etc]# vim sysctl.conf
[root@OralceMaster etc]# sysctl -p
kernel.shmmni = 4096
kernel.shmmax = 4398046511104
kernel.shmall = 1073741824
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
- 限制oracle用户资源的使用
[root@OralceMaster etc]# vim /etc/security/limits.conf
vim /etc/security/limits.conf
oracle soft nproc 131072
oracle hard nproc 131072
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 50000000
oracle hard memlock 50000000
- 设置host
[root@OralceMaster etc]#vim /etc/hosts
127.0.0.1 centos7 centos7.dbaora.com localhost localhost.localdomain
[root@OralceMaster oracle]# ping -c 1 centos7
PING centos7 (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
--- centos7 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.017/0.017/0.017/0.000 ms
- 为oracle用户定义环境变量
[root@OralceMaster oracle]# su - oracle
[oracle@OralceMaster ~]$ vim .bash_profile # 需要修改SID
### start oracle settings ###
export TMP=/tmp
# 下次安装,记得修改hostname, 运行"emctl status dbconsole"不会报错
export ORACLE_HOSTNAME=centos7.dbaora.com
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/ora01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
umask 022
### end oracle settings ###
- 检查哪些包缺失
[root@OralceMaster ~]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \
> elfutils-libelf \
> elfutils-libelf-devel \
> gcc \
> gcc-c++ \
> glibc \
> glibc-common \
> glibc-devel \
> glibc-headers \
> ksh \
> libaio \
> libaio-devel \
> libgcc \
> libstdc++ \
> libstdc++-devel \
> make \
> sysstat \
> unixODBC \
> unixODBC-devel
binutils-2.25.1-31.base.el7(x86_64)
elfutils-libelf-0.168-8.el7(x86_64)
package elfutils-libelf-devel is not installed
package gcc is not installed
package gcc-c++ is not installed
glibc-2.17-196.el7(x86_64)
glibc-common-2.17-196.el7(x86_64)
package glibc-devel is not installed
package glibc-headers is not installed
package ksh is not installed
libaio-0.3.109-13.el7(x86_64)
package libaio-devel is not installed
libgcc-4.8.5-16.el7(x86_64)
libstdc++-4.8.5-16.el7(x86_64)
package libstdc++-devel is not installed
make-3.82-23.el7(x86_64)
package sysstat is not installed
package unixODBC is not installed
package unixODBC-devel is not installed
[root@OralceMaster ~]# yum install -y elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc-devel \
glibc-headers \
ksh \
libaio-devel \
libstdc++-devel \
sysstat \
unixODBC \
unixODBC-devel \
elfutils-libelf-devel \
xorg-x11-server-utils-7.7-20.el7.x86_64
- 创建数据库的目录结构
[root@OralceMaster /]# mkdir -p /ora01/app
[root@OralceMaster /]# chown oracle:oinstall /ora01/app
[root@OralceMaster /]# chmod 775 /ora01/app
- 关闭防火墙
[root@OralceMaster /]# vim /etc/selinux/config
SELINUX=disabled
- 为oracle设置变量
[root@OralceMaster /]# su - oracle
Last login: Tue Jul 7 11:30:48 CST 2020 on pts/3
[oracle@OralceMaster ~]$ vim .bash_profile
alias envo='env | grep ORACLE'
alias cdob='cd $ORACLE_BASE'
alias cdoh='cd $ORACLE_HOME'
alias tns='cd $ORACLE_HOME/network/admin'
终端安装
- 运行runInstaller会报错。
[oracle@OralceMaster database]$ ./runInstaller
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 6655 MB Passed
Checking swap space: must be greater than 150 MB. Actual 8191 MB Passed
Checking monitor: must be configured to display at least 256 colors
>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<
Some requirement checks failed. You must fulfill these requirements before
continuing with the installation,
Continue? (y/n) [n] n
-
yum -y install xdpyinfo 使用xdpyinfo这个命令可以查看显式系统的具体信息。这个必须要装,不然Xstart可以远程服务器,但是Oracle安装页面无法弹出,报错如下。
网上查资料提示缺少安装包
yum install -y xorg-x11-server-utils-7.7-20.el7.x86_64
,之后通过VNC连接,安装不报错,但是不会弹出图形用户界面。注意:export DISPLAY=localhost:1,端口1也可能是2,根据vnc服务起来的端口号来指定端口。
运行
xhost +
说明root账户端配置成功,切换到oracle账户,运行runInstaller
无法正常安装。日志中只有
Moved to state <getOCMDetails>
[root@OralceMaster ~]# yum install tigervnc-server
[root@OralceMaster ~]# vncserver
New 'OralceMaster:5 (root)' desktop is OralceMaster:5
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/OralceMaster:5.log
[root@OralceMaster ~]# export DISPLAY=:5
[root@OralceMaster ~]# xhost +
access control disabled, clients can connect from any host
[root@OralceMaster ~]# su - oracle
[oracle@OralceMaster ~]$ export DISPLAY=172.20.16.100:2
改用mate desktop 和Xmanager安装
- 服务端安装mate desktop图形用户界面,默认源没有Mate桌面
[root@OralceMaster ~]# yum install epel-release
[root@OralceMaster ~]# yum groups install "MATE Desktop"
[root@OralceMaster ~]# systemctl set-default graphical.target
[root@OralceMaster ~]# echo "exec /usr/bin/mate-session" >> ~/.xinitrc
- 客户端安装Xmanager, 提取码:ln3l
- 启动Xmanager,设置Xstart, 文件--新建--Xstart会话
-
执行命令: /usr/bin/mate-session --display $DISPLAY
用户界面弹出,正式安装Oracle
-
取消
I wish to receive security updates via My Oracle Support
, 下一步
-
忽略提示信息,按yes
-
跳过软件更新,稳定版本就好
-
创建和配置数据库
-
选择服务器类
-
选择单实例安装
-
典型安装
-
设置数据库安装目录,设置密码
-
忽略所有失败提示
-
安装,可以保持配置说明文件
提示
ins_net_client.mk
文件报错, 缺少包。-
安装依然无法解决问题,
[root@OralceMaster oracle]# yum install -y compat-libstdc++-33 compat-libstdc++-33.i686
[root@OralceMaster oracle]# rpm --all --query --queryformat "%{NAME}-%{VERSION}-%{RELEASE}-(%{ARCH})\n" | grep glibc
glibc-headers-2.17-307.el7.1-(x86_64)
glibc-2.17-307.el7.1-(x86_64)
glibc-devel-2.17-307.el7.1-(x86_64)
glibc-common-2.17-307.el7.1-(x86_64)
[root@OralceMaster oracle]# yum install glibc-devel.i686
-
问题依旧~~~ 安装包后,retry, 通过,但是报
ins_ctx.mk
的错误
-
报这个错误的原因是由于缺少compat_libstdc包所导致。
[root@oraclemaster Documents]# yum install -y binutils.x86_64 gcc.x86_64 kernel-headers.x86_64
- 查看日志
[root@OralceMaster logs]# cd /ora01/app/oraInventory/logs
[root@OralceMaster logs]# vim installActions2020-07-07_10-50-36AM.log
INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
INFO: collect2: error: ld returned 1 exit status
INFO: make: *** [ctxhx] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'install' of makefile '/ora01/app/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk'.
- 下载、安装依赖,retry,提示
ins_emagent.mk
报错
修改/u01/app/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk,将
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改为:
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
可以先retry试试,如果不行再安装依赖包
rpm -ivh glibc-common-2.17-55.el7_0.5.x86_64.rpm \
glibc-2.17-55.el7_0.5.i686.rpm \
glibc-2.17-55.el7_0.5.x86_64.rpm
rpm -ivh glibc-devel-2.17-55.el7.x86_64.rpm \
glibc-headers-2.17-55.el7.x86_64.rpm \
glibc-static-2.17-55.el7.x86_64.rpm \
glibc-2.17-55.el7.i686.rpm \
glibc-2.17-55.el7.x86_64.rpm \
glibc-common-2.17-55.el7.x86_64.rpm \
-
ins_emagent.mk
文件报错报错,修改$ORACLE_HOME/sysman/lib/ins_emagent.mk
, 修改好,retry重试。
[root@OralceMaster ~]# su - oracle
Last login: Tue Jul 7 13:15:33 CST 2020 on pts/4
[oracle@OralceMaster ~]$ cdoh
[oracle@OralceMaster db_1]$ cd sysman/lib/
[oracle@OralceMaster lib]$ vim ins_emagent.mk
# before
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL)
# after
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
-
安装成功
- 执行两个脚本,点击OK
[root@OralceMaster ~]# /ora01/app/oraInventory/orainstRoot.sh
[root@OralceMaster ~]# /ora01/app/oracle/product/11.2.0/db_1/root.sh
-
安装成功,关闭窗口
查看数据库状态
- 查看监听状态
lsnrctl status LISTENER
lsnrctl start LISTENER
lsnrctl stop LISTENER
- 查看数据库管理平台, 查看状态时提示错误。
emctl status dbconsole
emctl start dbconsole
emctl stop dbconsole
[oracle@OralceMaster ~]$ emctl status dbconsole
OC4J Configuration issue. /ora01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_centos7.dbaora.com_ORA11G not found.
解决
- 将
OC4J_DBConsole_OralceMaster_orcl
名重命名为OC4J_DBConsole_centos7.dbaora.com_orcl
[oracle@OralceMaster ~]$ cd /ora01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/
[oracle@OralceMaster j2ee]$ cp -Rf OC4J_DBConsole_OralceMaster_orcl OC4J_DBConsole_centos7.dbaora.com_orcl
[oracle@OralceMaster j2ee]$ emctl status dbconsole
EM Configuration issue. /ora01/app/oracle/product/11.2.0/db_1/centos7.dbaora.com_orcl not found.
- 进入db_1目录,将
OralceMaster_orcl
重命名为centos7.dbaora.com_orcl
。查看dbconsole状态,deamon未运行,但是OEM是运行的。
[oracle@OralceMaster j2ee]$ cdoh
[oracle@OralceMaster db_1]$ cp -Rf OralceMaster_orcl centos7.dbaora.com_orcl
[oracle@oraclemaster db_1]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
https://OracleMaster:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /ora01/app/oracle/product/11.2.0/db_1/centos7.dbaora.com_ORA11G/sysman/log
[oracle@OralceMaster db_1]$ emctl stop dbconsole
[oracle@OralceMaster db_1]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
http://OralceMaster:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control .... started.
- stop dbconsole后 重新配置EM,问题依然没有解决
[oracle@OralceMaster db_1]$ emctl stop dbconsole
[oracle@OralceMaster db_1]$ emca -deconfig dbcontrol db -repos drop
STARTED EMCA at Jul 8, 2020 10:29:37 AM
EM Configuration Assistant, Version 11.2.0.0.2 Production
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Enter the following information:
Database SID: orcl
Listener port number: 1521
Password for SYS user:
Password for SYSMAN user:
Do you wish to continue? [yes(Y)/no(N)]: y
Jul 8, 2020 10:30:01 AM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /ora01/app/oracle/cfgtoollogs/emca/orcl/emca_2020_07_08_10_29_37.log.
Jul 8, 2020 10:30:01 AM oracle.sysman.emcp.EMDBPreConfig performDeconfiguration
WARNING: EM is not configured for this database. No EM-specific actions can be performed.
Jul 8, 2020 10:30:01 AM oracle.sysman.emcp.EMReposConfig invoke
INFO: Dropping the EM repository (this may take a while) ...
Jul 8, 2020 10:30:43 AM oracle.sysman.emcp.EMReposConfig invoke
INFO: Repository successfully dropped
Enterprise Manager configuration completed successfully
FINISHED EMCA at Jul 8, 2020 10:30:43 AM
- de-configure Database Control and create a new Database Control repository
[oracle@OralceMaster db_1]$ emca -deconfig dbcontrol db -repos create
[oracle@OralceMaster db_1]$ emctl start dbconsole
- EM Daemon is not running.
[oracle@OralceMaster db_1]$ emctl status dbconsole
EM Daemon is not running的解决方案
- Google后得知,这个是时区不一致导致的。
The Problem " Error Starting Database Control Please execute the following command(s) " faced at the end of installation of Oracle 10g / 11g is caused due to Time Zone Values in different files, tables and services of Oracle. Interestingly, these values do not change automatically with the change in OS time zone and you have to do it manually.
- 添加时区设置,报错
ORACLE not available
。 只能继续解决问题。
[oracle@OralceMaster db_1]$ cd sysman/config/
[oracle@OralceMaster config]$ vim emd.properties
agentTZRegion=UTC+08:00
[oracle@OralceMaster config]$ sqlplus / as sysdba
SQL> ALTER DATABASE SET TIME_ZONE='UTC+08:00';
ALTER DATABASE SET TIME_ZONE='UTC+08:00'
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
SQL> shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
SQL> startup mount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/ora01/app/oracle/product/11.2.0/db_1/dbs/initORA11G.ora'
- 发现没有initORA11G.ora文件,一查不得了,发现自己傻逼了!!
~/.bash_profile
里面设置的SID是ORA11G
,但是我安装的时候设置的是orcl。修改Oracle用户的环境变量,ORA11G
改成orcl
[oracle@OralceMaster ~]$ vim ~/.bash_profile
export ORACLE_UNQNAME=orcl
export ORACLE_SID=orcl
[oracle@OralceMaster ~]$ source ~/.bash_profile
[oracle@OralceMaster ~]$ sqlplus / as sysdba
SQL> ALTER DATABASE SET TIME_ZONE='UTC+08:00';
ORA-30079: cannot alter database timezone when database has TIMESTAMP WITH
LOCAL TIME ZONE columns
// 查看数据库时区
SQL> select dbtimezone from dual ;
DBTIME
------
+00:00
//查看当前时间和时区
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
08-JUL-20 11.48.09.137716 AM +08:00
- 可以看出数据库中一些表的列的数据类型为:TIMESTAMP WITH LOCAL TIME ZONE ,需要将这些列删除后,才能更改。此问题解决方案
SQL> alter table oe.orders drop column order_date;
Table altered.
SQL> alter database set time_zone='+8:00';
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 3273641984 bytes
Fixed Size 2217792 bytes
Variable Size 1795164352 bytes
Database Buffers 1459617792 bytes
Redo Buffers 16642048 bytes
Database mounted.
SQL> select dbtimezone from dual;
DBTIME
------
+08:00