Linux系统中安装Oracle

本文将讲解Linux系统中怎么安装Oracle, 本文设计的系统为阿里云的CentOS 7.3系统 , Oracle为oracle 12g

1. 环境

Yum安装环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
yum install -y binutils* 
yum install -y compat-libstdc*
yum install -y elfutils-libelf*
yum install -y gcc*
yum install -y glibc*
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y make*
yum install -y sysstat*
yum install -y libXp*
yum install -y glibc-kernheaders*
yum install -y unixODBC*

32位下载

1
2
3
yum install -y libgcc-4.8.5-36.el7.i686
yum install -y glibc-devel-2.17-260.el7.i686
yum install -y unixODBC-devel-2.3.1-11.el7.i686

2. 创建用户

1
2
3
4
# groupadd oinstall 
# groupadd dba
# useradd -g oinstall -G dba -d /home/oracle oracle
# id oracle

出现uid=500(oracle) gid=500(oinstall) 组=500(oinstall),501(dba)

修改密码

1
#passwd oracle

3. 修改用户配置文件(环境变量)

vi .bash_profile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export PATH

export ORACLE_BASE=/data-1/app/oracle
export TMP=/tmp
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID= orcl
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG="Simplified Chinese_china.ZHS16GBK"
export LANG=C export TMPDIR=$TMP
export PATH=$PATH:/sbin/:/usr/local/bin:/usr/bin:/opt/oracle/product/12.1.0/crs/bin
export PATH=$PATH:$ORACLE_HOME/bin:/opt/oracle/crs/bin
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
umask 022

注意: ORACLE_SID改成你自己的一般为orcl或xe , ORACLE_HOME的地址改成你自己的安装地址
{例如oracle 11g($ORACLE_BASE/product/11.2.0/db_1) , oracle 12g ($ORACLE_BASE/product/12.1.0/db_1),}

source .bash_profile –使修改生效

4. 创建相关目录

1
2
3
4
# mkdir -p /data-1/app/oracle 
# mkdir -p /data-1/app/oracle/product/11.2.0/db_1
# chown -R oracle:oinstall /data-1/app/
# chmod -R 755 /data-1/app/

5. 修改内核参数

vi /etc/sysctl.conf

1
2
3
4
5
6
7
8
9
10
11
fs.aio-max-nr= 1048576
fs.file-max = 6815744
kernel.shmall=16777216
kernel.shmmax=61847529062
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 – 使修改生效

6. 修改ssh限制

vi /etc/security/limits.conf

1
2
3
4
5
6
7
8
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft nproc 131072
oracle hard nproc 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 50000000
oracle hard memlock 50000000

7. 解压数据库压缩⽂件

如果没有unzip ,就使用命令 yum install -y unzip 下载

unzip linuxamd64_12102_database_1of2.zip && linuxamd64_12102_database_2of2.zip

1
2
3
# mv database/  /data-1/oracle 
# chown -R oracle:oinstall /data-1/oracle
# chmod -R 755 /data-1/oracle

8. 安装

su到oracle用户下,开始安装(如果报错,可以在图形化界面中使用oracle用户登录)

cd /data-1/oracle/
./runInstaller

如果到这里没有报错的话说明一切顺利,如果报错了先看看有哪些错

(1) Checking swap space: 0 MB available, 150 MB required. Failed <<<<

解决办法:

1、检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令:
1
swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

2、检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:
1
df -hal
3、创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。
1
dd if=/dev/zero of=/swapfile bs=6144 count=3072k

参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

4、格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用。运行命令:
1
mkswap /swapfile

激活 Swap ,运行命令:

1
swapon /swapfile

以上步骤做完,再次运行命令:

1
swapon -s

你会发现返回的信息概要:

1
2
Filename                Type        Size    Used    Priority
/swapfile file 524284 0 -1

如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:

1
/swapfile          swap            swap    defaults        0 0

最后,赋予 Swap 文件适当的权限:

chown root:root /swapfile
chmod 0600 /swapfile

(2) Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<

解决办法:

使用root用户执行xhost +操作;

出现如上图所示,解决办法:

1
yum whatprovides "*/xhost"

效果

根据不同得到的运行

1
yum install xorg-x11-server-utils-7.7-20.el7.x86_64

在试下 #xhost + 发现xhost可以用但是报unable to open display “”

解决办法:

第一步:首先看centos是否运行了vncserver:

1
ps -ef|grep -i vnc

如果无进程信息返回,则启动vncserver:

[root@localhost ~]# vncserver

启动成功如下:

New ‘localhost:1 (root)’ desktop is localhost:1
Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/localhost:1.log

如果启动成功,跳到第三步;如果启动vncserver时系统报错【-bash: vncserver: 未找到命令】,则说明未安装vncserver,进入第二步

第二步:

开始第二步之前,确定已配置好系统yum源(本地镜像或网络镜像都可)。
使用命令:

[root@localhost ~]# yum whatprovides “*/vncserver” —-搜索包名

然后使用命令:

[root@localhost ~]# yum -y install tigervnc-server-1.8.0-13.el7.x86_64 (此为从yum源搜到的包名)—-进行vncserver的安装

最后执行命令:

[root@localhost ~]# vncserver —-启动vncserver

首次运行vncserver会提示输入两次密码,尽量设置简单易记的就行,设置完成后重启vncserver

第三步:

设置DISPLAY临时变量(注意:经测试,设置DISPLAY临时变量仅单次有效,如调出图形化界面后中途退出,需重新设定一次并重新执行第三步之后的步骤),命令为:

[root@localhost ~]# export DISPLAY=xxx.xxx.xxx.xxx:x.x —-必须以root身份

第四步:验证临时变量是否有效:

[root@localhost ~]#xdpyinfo |grep “name of display”

有结果返回则说明生效
如果报错:-bash: xdpyinfo: 未找到命令

[oracle@linux-oracle6 ~]$ /usr/bin/xdpyinfo
-bash: /usr/bin/xdpyinfo: No such file or directory

发现该命令不存在,开始怀疑是xdpyinfo问题,于是安装xdpyinfo:

[root@linux-oracle6 ~]# yum -y install xdpyinfo

然后再执行xdpyinfo |grep “name of display”命令

xdpyinfo: unable to open display “:0.0”.

第五步:

这时候将ssh客户端退出一下,重新连接服务器

再次输入echo $DISPLAY 发现 输出为:localhost:10.0

输入命令:xhost +

[root@localhost ~]#xhost +

返回信息为:access control disabled,clients can connect from any host,则说明设置成功

输入xdpyinfo ,发现这个也正常了。

这里还需要在root用户下下载xclock(如果你的系统中没有的话)

1
yum -y install xclock

然后执行 xclock, 出现时钟则表示成功

[root@localhost ~]#xclock

第六步: 退出ssh客户端,以oracle用户登录:

第七步: 查看DISPLAY变量的值

输入xdpyinfo |grep “name of display” 如果和在root用户下一样直接执行第八步,否则在oracle用户下设置DISPLAY临时变量,使用命令:

[oracle@localhost ~]#export DISPLAY=xxx.xxx.xxx.xxx:x.x

这里DISPLAY后面跟的一串数字跟第三步在root用户下设置的一模一样

再使用命令查看一下
[oracle@localhost ~]#xdpyinfo |grep “name of display”—-如果跟第七步输入的临时变量信息一致,则说明成功,可以开始数据库安装

第八步:进入数据库安装文件目录,执行./runInstaller进行数据库安装

配置邮箱

选择仅安装数据库

选择语言

指定环境变量⽬录

选择数据库组

预览

点击install ,在下载的过程中会弹出需要执行的两个脚本

一定要用root执⾏这两个脚本!!!

至此安装完成。

9. 配置数据库 执行netca创建监听

安装成功后如果打不开sqlplus或者netca ,在oracle用户下看看.bash_profile文件文件中是否配置了$ORACLE_BASE和$ORACLE_HOME, 如果没有的话,就把之前的添加内容再在这里添加一下

10. 执行dbca开始配置数据库

这里是oracle的环境变量

Initialization Parameters,内存分配20%(测试库所以分⼩小⼀一些,⽣生产库可以分配 较⼤大的⽐比如40%60%等),

字符集为GBK

至此配置结束!

安装成功后如果打不开sqlplus ,在oracle用户下看看.bash_profile文件文件中是否配置了$ORACLE_BASE和$ORACLE_HOME, 如果没有的话,就把之前的添加内容再在这里添加一下

11. 创建用户

输入sqlplus命令进行登录,如果登录不进去则在oracle用户下执行startup ,

[oracle@localhost oracle]#startup

1
2
3
4
5
6
7
8
9
10
11
ORACLE 例程已经启动。

Total System Global Area 535662592 bytes

Fixed Size 1375792 bytes

VariableSize 293601744 bytes

Database Buffers 234881024 bytes

RedoBuffers 5804032 bytes

数据库装载完毕。

创建用户:必须以sqlplus / as sysdba 登录

1
create user glsdb identified by glsdb;

创建用户怕没创建成功可以使用命令查看用户是否存在(请看附件)

创建表空间:

1
create tablespace glsdb_data datafile '/home/oracle/oradata/glsdb_data.dbf' size 1500M autoextend on next 5M maxsize 3000M;

怕表空间没创建好可以使用命令查看表空间(请看附件)

创建好表空间,还需要将表空间分配给用户.

1
alter user glsdb default tablespace glsdb_data;

给用户分配了表空间,用户还不能登陆(没有登录权限),因此还需要为用户分配权限 (create session为登录权限)

1
2
3
4
5
6
7
8
9
10
11
12
grant create session,create table,create view,create sequence,unlimited tablespace to zs;

grant connect,dba to GLSDB_CS;
grant create any sequence to GLSDB_CS;
grant create any table to GLSDB_CS;
grant delete any table to GLSDB_CS;
grant insert any table to GLSDB_CS;
grant select any table to GLSDB_CS;
grant unlimited tablespace to GLSDB_CS;
grant execute any procedure to GLSDB_CS;
grant update any table to GLSDB_CS;
grant create any view to GLSDB_CS;

此时就能使用新建的用户glsdb 使用sql developer等连接工具连接数据库了

附件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select * from dba_users;    --查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system

select * from all_users; --查看你能管理的所有用户!

select * from user_users; --查看当前用户信息 !

SELECT * FROM user_tables -- 查询你 当前用户下,有哪些表

SELECT * FROM all_tables -- 查询你 当前用户下, 可以访问哪些表 [也就是访问自己 和 其他用户的]

SELECT * FROM dba_tables -- 查询当前数据库所有的表, 需要你有 DBA 的权限

select * from dba_tablespaces; -- 查询表空间

alter user glsdb identified by 123456; --修改密码命令