Linux安装Oracle 11g
0
一开始网上找的静默安装搞不定,最后还是用vnc用图形界面装完的。
演示使用的Linux发行版是CentOS 7。
准备:
安装依赖包:
查看安装状态:
rpm -q binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC.i686 unixODBC-devel
全部安装:
yum install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC.i686 unixODBC-devel
安装Java:
yum install java-1.8.0-openjdk.x86_64
版本自己确定,不过Oracle 11g自带的JDK是1.5的,所以最好不要超过1.8。
创建用户:
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
创建Oracle的用户和用户组,Oracle安装强制不能使用root用户安装。
创建安装目录:
mkdir -p /home/data/database
mkdir -p /home/data/oracle
mkdir -p /home/data/oraInventory
mkdir -p /home/data/oracle/product/11.2.0/db_1
上面目录分别表示:安装文件、数据库安装主目录、数据库安装记录、数据库目录。
准备Oracle安装包:
如果没有安装unzip命令需要安装:
yum install zip unzip
解压:
unzip linux.x64_11gR2_database_1of2.zip -d /home/data/database/
unzip linux.x64_11gR2_database_2of2.zip -d /home/data/database/
修改系统参数:
配置文件追加参数,不是替换所有配置。
vi /etc/sysctl.conf
:
kernel.shmmax = 8589934592
kernel.shmall = 4294967296
kernel.shmmni = 4096
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
修改后执行:sysctl -p
注:
上面的kernel.shmmax
这个参数一定要注意大小必须要小于等于/dev/shm
挂载的大小,可以使用df -h
查看。否者启动Oracle时会提示:ORA-00845: MEMORY_TARGET not supported on this system
。
如果出现上面的错误可以执行:mount -o remount,size=8G /dev/shm
来修改/dev/shm
大小。
vi /etc/security/limits.conf
:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vi /etc/pam.d/login
:
session required /lib64/security/pam_limits.so
session required pam_limits.so
vi /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
修改Oracle用户环境变量(可以忽略)vi /home/oracle/.bash_profile
:
export ORACLE_BASE=/home/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin:/usr/sbin:$PATH
修改目录权限:
chown -R oracle:oinstall /home/data/
本地Windows安装XShell
和XManager
按照如下设置:
如果没有XManager(这个软件是收费的),可以选择Xming替代,但是下面要选择第二个选项(X DISPLAY)。
服务器安装vncserver:
yum install xhost tigervnc tigervnc-server
然后执行:
vncserver
输入密码,不用记住,后面也不会用到。
然后执行:
export DISPLAY=:1
xhost +
至于上面:1
,这个数字怎么来的,你具体可以看一下启动vncserver时候的控制台输出内容,一般执行一次vncserver后就不会需要再次执行了。
安装:
现在我们切换到Oracle用户开始安装:
su oracle
./runInstaller
如果提示:Exception in thread "main" java.lang.NoClassDefFoundError
重新执行上面vncserver和后面的命令。
如果提示:xhost: unable to open display ":1"
表示没有启动vncserver。
如果root执行xclock
可以打开时钟,但是切换到Oracle提示:Error: Can't open display: localhost:10.0
可以在root下面执行:ssh -AY oracle@localhost
,然后执行后面的命令。
如果出现乱码
执行export LANG=C,修改为英文进行安装。
开始安装程序:
如果是本地会很快,如果是远程可能会非常慢,而且中断了就GG,重来。
安装过程:
如果上面的依赖包都安装了,下面的提示应该是依赖包的版本太高导致出现下面缺少依赖的问题,选择忽略。
使用root用户执行后面的语句:
如果提示错误:
INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
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 '/home/data/oracle/product/11.2.0/db_1/ctx/lib/ins_ctx.mk'. See '/home/data/oraInventory/logs/installActions2018-06-22_04-41-52PM.log' for details.
Exception Severity: 1
执行下面命令:
yum install libstdc++*
当然还是不行,最后我在其他机器上面考了一个libstdc++.so.5.0.7
,放到/usr/lib64
里面就OK了。
下载地址:https://pan.baidu.com/s/1cuJBOrt-v8Q5hST6thodhQ
然后提示:
INFO: make[1]: Leaving directory `/home/data/oracle/product/11.2.0/db_1/sysman/lib'
INFO: make[1]: *** [/home/data/oracle/product/11.2.0/db_1/sysman/lib/emdctl] Error 1
make: *** [emdctl] Error 2
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'agent nmhs' of makefile '/home/data/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/home/data/oraInventory/logs/installActions2018-06-22_05-18-11PM.log' for details.
Exception Severity: 1
修改ins_emagent.mk
,将$(MK_EMAGENT_NMECTL)
改为$(MK_EMAGENT_NMECTL) -lnnz11
。
安装完成。
创建数据库:
使用dbca进行创建数据库:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName acgist -sid acgist -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword oracle -systemPassword oracle
使用之前先设置Oracle的环境变量:. .bash_profile
。
上面命令执行后等待大概两分钟左右就完成创建了。
启动数据库:
登陆数据库:sqlplus
输入账号
sys as sysdba
和密码oracle
如果提示:Connected to an idle instance.
输入命令:
startup
如果提示:LRM-00109: could not open parameter file '/home/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
进入目录
$ORACLE_BASE/admin/${SID}/pfile
,也就是:/home/data/oracle/admin/acgist/pfile
,目录下面有一个文件init.ora.*
,拷贝为上面提示不存在的文件:cp init.ora.* /home/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora
再次执行:startup
可能提示:ORA-00845: MEMORY_TARGET not supported on this system
,请参考上面。
如果提示:ORA-01102: cannot mount database in EXCLUSIVE mode
,其实重启一下会有奇效。
重启后再次执行startup
:
Total System Global Area 768294912 bytes
Fixed Size 2217304 bytes
Variable Size 452987560 bytes
Database Buffers 310378496 bytes
Redo Buffers 2711552 bytes
Database mounted.
Database opened.
OK,数据库启动完成。
创建监听:
这是我们访问数据库会提示:ORA-12541:TNS:no listener
,所以我们需要创建一个数据库监听来提供数据库访问。
创建命令:
netca -silent -responsefile /home/data/database/database/response/netca.rsp
提示:
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/home/data/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
成功后可以使用命令:lsnrctl status
查看监听状态。
然后就可以连接数据库了。
这里我们需要注意:
如果使用SID
连接,那么SID
的值是环境变量里面ORACLE_SID
的值:orcl
如果使用服务名连接,那么服务名是gdbName
的值:acgist
如果没有创建用户情况下,可以使用system
进行登陆。
或者创建新用户,下面是创建和授权命令:
create user test identified by test;
grant connect, resource to test;
然后就可以使用test
进行登陆了。
这里有几个概念:数据库名、实例名、服务名、ORACLE_SID。
数据库名:
查看配置文件/home/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora
里面的db_name
。
或者进入sqlplus
使用以下命令进行查询:
select name from v$database;
show parameter db
实例名:
进入sqlplus
使用以下命令查询:
select instance_name from v$instance;
show parameter instance
或者使用查看监听状态。
服务名:
进入sqlplus
使用以下命令查询:
select name, value from v$parameter where name = 'service_names';
show parameter service_name
ORACLE_SID:
一般和实例名一样,并不是创建时的SID。
完成,感觉Oracle还是挺复杂的,工作主要还是使用MySQL数据库。😀
参考文章:
https://blog.csdn.net/rosicky198188/article/details/79555596
http://blog.itpub.net/26736162/viewspace-1448220/
https://www.cnblogs.com/ivictor/p/4384583.html
https://www.cnblogs.com/rootq/articles/1235647.html
https://www.cnblogs.com/xuezhen-huang/p/5531962.html