Oracle 12c安装方法及一些使用问题

Linux Centos6.5 64bit下安装oracle12c:

groupadd oinstall
groupadd dba
mkdir -p /u01/oracle
useradd -g oinstall -G dba -d /u01/oracle oracle
(这里不是一定要把home目录更改到/u01/oracle,默认也可。)
把下面三个文件复制到 /u01/oracle目录下
[root@oracle /]# cd /etc/skel/
[root@oracle skel]# ll -a
-rw-r--r--. 1 root root 18 7月 18 2013 .bash_logout
-rw-r--r--. 1 root root 176 7月 18 2013 .bash_profile
-rw-r--r--. 1 root root 124 7月 18 2013 .bashrc
注:useradd添加用户时,会自动从这个目录下的文件复制到用户的家目录
password oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01/

/*安装vnc*/

yum -y install tigervnc-server
vncserver 回车
输入密码
ps -ef | grep vnc
vnc客户端连接:ip:1

检测是否有安装以下程序:

binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3 -
elfutils-libelf-0.125
elfutils-libelf-devel-0.125 -
elfutils-libelf-devel-static-0.125 -
gcc-4.1.2 -
gcc-c++-4.1.2 -
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214 -
libaio-0.3.106
libaio-devel-0.3.106 -
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2 -
make-3.81
sysstat-7.0.2 
unixODBC-2.2.11 -
unixODBC-devel-2.2.11 -

修改 /etc/sysctl.conf 文件,加上如下参数

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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

为使上述配置生效而不重启系统,执行如下命令
# /sbin/sysctl -p

修改用户限制

root用户:修改 /etc/security/limits.conf 文件,加上下面的参数

oracle   soft nproc 2047
oracle   hard nproc 16384
oracle   soft nofile 1024
oracle   hard nofile 65536

修改用户验证选项
root用户下:修改/etc/pam.d/login文件加上如下参数

session required  pam_limits.so

修改用户配置文件
root用户下:修改/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用户bash_profile:
$ vi .bash_profile
增加如下内容,主要是修改

export ORACLE_BASE=/u01 
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=hxw168 
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

安装oracle:

安装oracle无法使用命令/usr/bin/xdpyinfo自动检查显示器颜色:

[root@oracle /]# xdpyinfo | grep "name of display"
name of display: :1.0
[root@oracle /]# 
在Oracle用户下执行命令:
export DISPLAY=:1.0 (上面name of display:后面的 :1.0)

prvf-0002:无法检索本地节点名

host文件 ip与名称对应
192.168.198.188 oracle

SQL> create user admin identified by zerostudy;
create user admin identified by zerostudy
*
ERROR at line 1:
ORA-65096: invalid common user or role name


SQL> !oerr ora 65096
65096, 00000, "invalid common user or role name"
// *Cause: An attempt was made to create a common user or role with a name
// that wass not valid for common users or roles. In addition to
// the usual rules for user and role names, common user and role
// names must start with C## or c## and consist only of ASCII
// characters.
// *Action: Specify a valid common user or role name.
//

解决方法:https://www.nhooo.com/article/92720.htm

调整虚拟机的内存到600多M(原来1G多),启动oracle时提示:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

SQL> !oerr ora 00854
00854, 00000, "ASM IOServer Instance Fence monitor process terminated."
// *Cause: The ASM IOServer Fence monitor process died.
// *Action: Warm start the instance.

原因就是Linux系统的shm的大小比SGA设置的小造成的。
可以调整shm的大小:
vi /etc/fstab
修改如下行的设置
tmpfs /dev/shm tmpfs defaults 0 0
改成
tmpfs /dev/shm tmpfs defaults,size=6G 0 0
重新mount下shm使其生效
mount -o remount /dev/shm

TNS-12514: TNS:listener does not currently know of service requested in connect descriptor

需要更改listener.ora文件(跟径在$ORACLE_HOME/network/admin),然后重启lsnrctl

# Generated by Oracle configuration tools.
#LISTENER =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
#  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
#  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.198.188)(PORT = 1521))
# )
# )
hxw168 =
 (DESCRIPTION_LIST =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.198.188)(PORT = 1521))
 )
 )
 SID_LIST_hxw168=
 (SID_LIST =
 (SID_DESC=
  (ORACLE_HOME = /u01/app/product/12.1.0/db_1)
  (SID_NAME = hxw168)
 )
 )

oracle简单的启动脚本:

[root@oracle ~]# cat /etc/init.d/oracle 
su - oracle <<EOF
lsnrctl start
sqlplus / as sysdba
startup
EOF

本文出自 “尽管错,让我错到死!” 博客