环境:Windows2008,centos7.
工具:xmanager.
使用xshell连接上Linux主机。以root身份登录,在建立了oracle用户之后,再连接一台,因为后面会在oracle和root之间切换身份,这样操作会更方便,且避免一些问题。
连接上了之后的操作,
//以下内容为引用,但其中加入了自己在操作过程中的注意点。
(要点:各个路径不要弄错,如果有疑问的路径,一定先查看了再进行操作。)
root用户执行以下步骤
切换root用户命令
su root
Enter,系统提示输入密码
输入正确密码后切换成功
1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件
输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件
oraclesoft nproc 2047
oraclehard nproc 16384
oraclesoft nofile 1024
oraclehard nofile 65536
编辑完成后按Esc键,输入“:wq”存盘退出
2)修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件
sessionrequired /lib/security/pam_limits.so
session required pam_limits.so
编辑完成后按Esc键,输入“:wq”存盘退出
3)修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件
fs.file-max= 6815744
fs.aio-max-nr= 1048576
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= 4194304
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max = 1048576
编辑完成后按Esc键,输入“:wq”存盘退出
4)要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl-p 显示如下:
linux:~# sysctl -p
net.ipv4.icmp_echo_ignore_broadcasts= 1
net.ipv4.conf.all.rp_filter= 1
fs.file-max= 6815744
fs.aio-max-nr= 1048576
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= 4194304
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max = 1048576
注:如果有重复设置,需以写入的内容为主,将重复的部分用#号注释。
5)编辑 /etc/profile ,输入命令:vi /etc/profile,按i键进入编辑模式,将下列内容加入该文件。
if[ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
编辑完成后按Esc键,输入“:wq”存盘退出
注:单词与符号之间有空格。
6)创建相关用户和组,作为软件安装和支持组的拥有者。
创建组
groupadd –g 200 oinstall
groupadd –g 201 dba
创建Oracle用户和密码,输入命令:
useradd –u 440 –g oinstall –G dbaoracle
passwd oracle
然后会让你输入密码,密码任意输入2次,但必须保持一致,回车确认。
7)创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到oracle用户下,例如:
输入命令:
mkdir /home/oracle/app
mkdir /home/oracle/app/oracle
mkdir /home/oracle/app/oradata
mkdir /home/oracle/app/oracle/product
8)更改目录属主为Oracle用户所有,输入命令:
chown -R oracle:oinstall/home/oracle/app
9)更改目录权限,输入命令
chmod 777/home/oracle/
chmod 777 /home/oracle/app/
10)配置oracle用户的环境变量,首先,切换到新创建的oracle用户下,
输入:su oracle ,然后直接在输入 : vi~/.bash_profile
按i编辑 ~/.bash_profile,进入编辑模式,增加以下内容:
exportORACLE_BASE=/home/oracle/app
exportORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
exportORACLE_SID=orcl
exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
编辑完成后按Esc键,输入“:wq”存盘退出
1) 当上述系统要求操作全部完成后,注销系统,在图形界面以Oracle用户登陆。
首先将下载的Oracle安装包复制到linux中,用SSH其他ftp工具拷贝。可以使用xshell上的绿色工具,直接上传到目录下。注意目录路径。
打开一个终端,运行unzip命令解压oracle安装文件,如:
输入命令:
unzip 112040_Linux-x86-64_1of7.zip
unzip 112040_Linux-x86-64_2of7.zip
解压完成后 cd 进入其解压后的目录database
输入命令:
cd database
使用ls命令可以查看解压后database所包含的文件,如下图:
切换oracle用户:
输入命令:xhost + //在xshell下,执行这条命令时,打开的是一个灰色的背景,不要管他继续操作。注意,一定直接以oracle用户登录,而不是root用户su.
切换oracle用户
依次输入命令:LANG=en
./runInstaller
装到这一步,可以看到,可以查看到有很多的rpm包没有,我们使用ssh工具将所缺失的包传上去,在root用户下执行安装命令:rpm –ivh 包名,到把包全部都安装好的情况下,再次在oracle图形界面中,点击“check again”,在环境检查过程中,就通过了
注:安装gcc和gcc-c++比较特殊,需要以下rpm包,需要我们一步一步检查过去,如缺失需要补上。
rpm-ivh glibc-common-2.12-1.25.el6.x86_64.rpm
rpm-ivh kernel-headers-2.6.32-131.0.15.el6.x86_64.rpm
rpm-ivh libgcc-4.4.5-6.el6.x86_64.rpm
rpm-ivh glibc-2.12-1.25.el6.x86_64.rpm
rpm-ivh libgomp-4.4.5-6.el6.x86_64.rpm
rpm-ivh nscd-2.12-1.25.el6.x86_64.rpm
rpm-ivh glibc-headers-2.12-1.25.el6.x86_64.rpm
rpm-ivh glibc-devel-2.12-1.25.el6.x86_64.rpm
rpm-ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm-ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm-ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm-ivh cpp-4.4.5-6.el6.x86_64.rpm
rpm -ivh gcc-4.4.5-6.el6.x86_64.rpm
注:以上是安装gcc,软件安装顺序不能错。
rpm -ivh libstdc++-4.4.5-6.el6.x86_64.rpm
rpm -ivh libstdc++-devel-4.4.5-6.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.5-6.el6.x86_64.rpm
注:以上是安装gcc-c++
安装完成后,系统会提示你需要用root权限执行2个shell脚本。按照其提示的路径,找到其所在的位置,如:我的就在/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
和 /home/oracle/oraInventory/orainstRoot.sh 新开启一个终端,输入命令:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
home/oracle/oraInventory/orainstRoot.sh
Oracle用户下执行命令:netca(假如命令不执行,则退出之后,直接用oracle用户登录,而不是在root用户下,用su 的命令进入。否则可能出现 display尚未设置这样的问题)
注:如果出现乱码,需先执行LANG=en,在执行netca
系统会出现oracle监听器配置图形化界面
点击finish完成监听器配置
输入命令:lsnrctlstatus,查看监听器信息
注:ListenerParameter File的路径为监听器文件所在的路径
输入命令:ifconfig
查看IP地址
注:eth1是本例所使用的ip地址
输入命令:
vi/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
输入i进入编辑模式,将localhost改为本机ip。
编辑完成后按Esc键,输入“:wq”存盘退出
Root用户依次执行以下命令。
输入命令:vi/etc/hosts
将内容更改成如下:
127.0.0.1 localhost
::1 localhost
10.8.10.244 oracle
#其中10.8.10.244为本例ip,具体ip要根据你的IP来设定。
输入命令:vi/etc/sysconfig/network-scripts/ifcfg-eth0
更改成如下内容:
注:不同电脑的网卡不一样,要根据ifconfig查出来的地址匹配,如果使用的是eth0网卡,就是编辑/etc/sysconfig/network-scripts/ifcfg-eth0,如果是eth1网卡,则是/etc/sysconfig/network-scripts/ifcfg-eth0(对照配置就可以。因为不同的电脑可能参数会有差异。不必配成上图一模一样也不会出现问题。)
编辑完成后按Esc键,输入“:wq”存盘退出
重启网络,输入命令:service network restart
设置好以上配置,重启系统,让配置生效。
输入命令:reboot
Oracle用户下依次执行以下命令
开启监听器,输入命令:lsnrctl start
登录数据库,输入命令:sqlplus/ as sysdba
进入sqlplus,挂载数据库,输入命令:startup
等待挂载完,退出。我们就可以远程连接了。
如果远程连接不了,是因为防火墙。
Root用户下依次执行以下命令
临时关闭防火墙,输入命令:chkconfigiptables off
永久关闭防火墙,输入命令:vi/etc/selinux/config
输入i进入编辑模式,将SELINUX改成disabled
编辑完成后按Esc键,输入“:wq”存盘退出
重启系统生效。
至此,数据库配置完成。
Oracle用户依次执行以下命令
将dmp文件上传到/home/oracle/app/admin/orcl/dpdump
导入数据库命令:
grant MGMT_USER,DBA,RESOURCE,CONNECT,CREATE VIEW,UNLIMITED TABLESPACE to cms
impdpdirectory=DATA_PUMP_DIR full=y dumpfile=CMS.DMP logfile=dp.log
注:/home/oracle/app/admin/orcl/dpdump为本例路径,具体dpdump文件路径要根据实际情况。
(如果以上方法执行不成功,试着使用imp 用户/密码 file=绝对路径/xx.dmp full=y ignore=n)
系统重启后,需要挂载数据库和启动监听器。
启动监听器,输入命令:lsnrctlstart
登录数据库,输入命令:sqlplus/ as sysdba;
挂载数据库,输入命令:startup;
退出数据库,输入命令:quit;
在oracle用户下,开启终端,输入命令:dbca
注:如有乱码,先输入LANG=en,在输入dbca
弹出如下界面。我们这里采用定制数据库。
经过漫长的等待,当看到此界面,说明oracle建库完成
(充当oracle客户端,连接别的oracle服务器)
输入连接的oracle服务器的数据库的实例名
输入oracle服务器的ip地址
选中YES测试
点击change Login 输入所连接oracle服务器的其中某一个用户名和密码(用户名oracle和设置的密码),点击OK
看到此界面说明测试成功(如果不成功,请查看网络是否畅通,所连接的oracle服务器是否启动,监听是否启动等原因)
为你所设置的本地网络服务名起个名字
当远程连接Oracle时,客户端得到的错误信息通常是:ORA-12170: TNS:连接超时
这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)
解决方法:
(1)假如你是在一个局域网环境,配置了防火墙。那么可以关闭Linux的防火墙。
sudo serviceiptables stop
(2)编辑iptables, 开放1521端口:
sudo vi/etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
:wq
重启防火墙
sudo serviceiptables restart
保存配置,以便linux重启后依然有效
sudo serviceiptables save
查看防火墙规则:
sudo iptables -L–n
Centos7的防火墙默认不是iptables.如果没有重新设置防火墙请参照下面的操作。或是自己重新设置防火墙。
启动: systemctl start firewalld