Linux搭建Oracle11g数据库系统

Linux搭建Oracle11g数据库系统

1.准备阶段

参数 说明
操作系统环境 建议采用RHEL5.8 (32位或64位系统),内核kernel-release版本大于2.6.32-100
物理内存 建议大于1G(最低2G)(内存最低要求是1026M,由于1G内存大小的机器,实际上不到1G,所以最低要求是2G物理内存)
硬盘空闲空间 至少8GB
交换区空间 建议大于4GB(2倍物理内存空间)
tmpfs df -h 命令查找,最好大约800M

1.1 tmpfs

1.1.1 概念

tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,temfs主要存储暂存的文件。

1.1.2 作用

linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即RAM和swap资源,透明地将RAM页移动到交换分区或从交换分区到RAM页,tmpfs文件系统需要VM子系统的页面来存储文件。tmpfs自己并不知道这些页面是在交换分区还是在RAM中;做这种决定是VM子系统的工作。tmpfs文件系统所知道的就是它正在使用某种形式的虚拟内存。
tmpfs基于内存,因而速度是相当的,另外tmpfs使用的VM资源是动态的,当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源,当然在其中创建文件时也会动态的分配VM资源。另外,tmpfs不具备持久性,重启后数据不保留,原因很明显,它是基于内存的。
编译内核时,启用“Virtual memory file system support”就可以使用tmpfs,linux kernel从2.4以后都开始支持tmpfs。目前主流的linux系统默认已启用tmpfs,如Redhat。

1.1.3 /dev/shm

看到dev大家都使知道它是一个设备文件。使用tmpfs文件系统,在Redhat/CentOS等linux发行版中默认大小为物理内存的一半。如我的虚拟机装的是CentOS6.0,分配内存为2G,所以/dev/shm为1G左右。

[root@yujxtest ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   18G   21G  46% /
tmpfs           939M  447M  493M  48% /dev/shm
/dev/vdb1       9.9G  2.7G  6.7G  29% /mnt

1.1.4 tmpfs大小修改

tmpfs是基于内存的文件系统,创建时不需要使用mkfs等初始化。如我想把/dev/shm tmpfs大小改为900M.

[root@yujxtest ~]# vi /etc/fstab
tmpfs   /dev/shm tmpfs   defaults        0 0

修改为

tmpfs  /dev/shm tmpfs  defaults,size=900M  0 0

之后再命令行执行下面语句

[root@yujxtest etc]# mount -o remount /dev/shm

就可以查看到tmpfs已经被修改了

[root@yujxtest etc]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   18G   21G  46% /
tmpfs           900M  447M  454M  50% /dev/shm
/dev/vdb1       9.9G  2.7G  6.7G  29% /mnt

1.1.5 命令行修改tmpfs

[root@yujxtest etc]#  mount -t tmpfs shmfs -o size=7g /dev/shm

1.1.6 tmpfs应用

tmpfs是基于内存的,速度是不用说的,硬盘和它没法比。
Oracle 中的Automatic Memory Management特性就使用了/dev/shm。

1.2 swap交换分区

1.2.1 概念

swap是Linux的虚拟内存,即在硬盘上开辟空间当内存不够时充当内存使用, 因此可以理解为当/dev/shm空间不够时可以占用swap的空间

1.2.2 作用

Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢
复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。有的程序会打开一些文件,对文件进行读写,当需要将这些程序的内存空间交换出去时,就没有必要将文件部分的数据放到Swap空间中了,而可以直接将其放到文件里去。如果是读文件操作,那么内存数据被直接释放,不需要交换出来,因为下次需要时,可直接从文件系统恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc和new函数生成的对象的数据则不同,它们需要swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称作“匿名”(Anonymous)内存数据。这类数据还包括堆栈中 的一些状态和变量数据等。所以说,Swap空间是“匿名”数据的交换空间。

1.2.3 swap配置对性能的影响

分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out ofmemory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。 另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap 交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并 不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

1.2.4 swap创建

1.2.4.1 第一种方法
  1. fdisk /dev/sda
  2. n (新建一个分区为/dev/sda6)
  3. t (修改分区的id)
  4. 82 (swap的id为82)
  5. w (重写分区表)
  6. partprobe (同步内存和分区表信息)
  7. mkswap /dev/sda6 (格式化成swap分区)
  8. swapon /dev/sda6 (打开swap分区)
  9. vi /etc/fstab (在fstab中增加一条记录如下) /dev/hda6 swap swap defaults 0 0
  10. mount -a
1.2.4.2 第二种方法
  1. dd if=/dev/zero of=/opt/swapfile bs=1M count=1000 (创建一个1G的文件作为交换分区使用)
  2. mkswap /opt/swapfile (格式化成swap分区)
  3. swapon /opt/swapfile (打开swap分区)
  4. vim /etc/fstab (在fstab中增加一条记录如下) /opt/swapfile swap swap defaults 0 0
  5. mount -a
1.2.5 重置swap分区
swapoff /opt//swapfile  
rm -rf /opt//swapfile  

然后按照上面1.2.4上面的步骤重新进行交换分区的分配。

1.3 阿里云图形界面

1.3.1 安装gnome图形化桌面

[root@yujxtest ~]# yum groupinstall -y "X Window System"
[root@yujxtest ~]# yum groupinstall -y "Desktop"

1.3.2 安装vncserver并配置

1.3.2.1 安装
    [root@yujxtest ~]# yum install -y tigervnc-server

1.3.3.2.配置vncserver

1.3.3.2.1 配置为开机自启动
[root@yujxtest ~]# chkconfig --level 345 vncserver on
1.3.3.2.2 配置vnc密码
[root@yujxtest ~]# vncserver
You will require a password to access your desktop.
Password:
Verify:
1.3.3.2.2 配置为使用gnome桌面

修改 /root/.vnc/xstartup文件

[root@yujxtest ~]#vi /root/.vnc/xstartup 

把最后的 twm & 删掉 添加以下内容。

gnome-session &
1.3.3.2.3 配置vncserver启动后监听端口和环境参数

修改/etc/sysconfig/vncservers 文件

[root@yujxtest ~]# vi /etc/sysconfig/vncservers

添加以下内容

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1200x800"
1.3.3.2.4 重启vncserver服务
[root@yujxtest ~]# service vncserver restart

1.3.3 oracle 图形界面

由于安装oracle也是会有图形界面的,所以在创建完oracle用户后再他下面也要配置vnc

[root@yujxtest ~]# su - oracle
[oracle@yujxtest ~]# vncserver
You will require a password to access your desktop.
Password:
Verify:
[root@yujxtest ~]# vi /etc/sysconfig/vncservers

添加以下内容

VNCSERVERS="1:root 2:oracle"
VNCSERVERARGS[1]="-geometry 1200x800"

1.3.4 vnc登录

1.4 linux系统限制的修改

1.4.1 设置域名解析

通过hosts文件实现域名解析

[root@yujxtest ~]# vi /etc/hosts

前面的注释掉
然后在里面添加

127.0.0.1 localhost
主机ip yujxtest

注意:主机ip是在hosts本来有的,引用就可以了
修改完后,重启电脑

[root@yujxtest ~]# reboot

1.4.2 调整内核运行参数

1.4.2.1 修改内核配置文件
[root@yujxtest ~]# vi /etc/sysctl.conf

修改内容如下(oracle注释后面的内容)

kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1

########oracle######
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

重新加载内核

[root@yujxtest ~]# sysctl -p  
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
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

1.5 软件包安装

[root@yujxtest ~]#yum -y install binutils compat-libstdc++-33 compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc glibc-common glibc-devel glibc-devel glibc-headers ksh libaio libaio libaio-devel libaio-devel libgomp libgcc libgcc libstdc++ libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC unixODBC-devel unixODBC-devel pdksh

查询安装的软件包

[root@yujxtest ~]# rpm  -q  binutils compat-libstdc++-33 compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc glibc-common glibc-devel glibc-devel glibc-headers ksh libaio libaio libaio-devel libaio-devel libgomp libgcc libgcc libstdc++ libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC unixODBC-devel unixODBC-devel pdksh

2. oracle相关操作

2.1 创建Oracle用户和组账号

groupadd oinstall (创建安装组)

groupadd dba (创建管理组)

useradd -g oinstall -G dba oracle (创建运行用户oracle,并指定其私有组为oinstall,附加组为dba)
passwd oracle (设置oracle用户密码,如:123abc)

[root@yujxtest ~]# groupadd  oinstall 
[root@yujxtest ~]# groupadd  dba 
[root@yujxtest ~]# useradd  -g oinstall -G dba oracle 
[root@yujxtest ~]# passwd oracle
Changing password for user oracle.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

2.2 创建oracle安装目录,并分配权限

mkdir /opt/oracle
chown -R oracle:oinstall /opt/oracle (递归修改oracle安装目录的所有者和隶属组分别为:oracle用户,oinstall组)

chmod -R 775 /opt/oracle (递归修改oracle安装目录的权限为755,即:oracle用户为rwx权限、oinstall组权限、其它用户权限均为rx)

[root@yujxtest ~]# mkdir  /opt/oracle
[root@yujxtest ~]# chown -R oracle:oinstall /opt/oracle
[root@yujxtest ~]# chmod -R 775 /opt/oracle

2.3 修改oracle用户的环境配置

[root@yujxtest ~]# vi   ~oracle/.bash_profile

在 ~oracle/.bash_profile增加oracle用户的环境配置

###### for oracle ######
umask 022
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_SID=orcl
#export LANG=zh_CN.UTF-8
export LANG=en_US.UTF-8
export NLS_LANG="AMERICAN_AMERICA".ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH

2.4 启用进程会话限制

[root@yujxtest ~]# vi /etc/pam.d/login

在里面新增2条语句

session    required     /lib/security/pam_limits.so
session    required      pam_limits.so

2.5 修改oracle用户能打开的进程数和文件数

[root@yujxtest ~]# vi  /etc/security/limits.conf

新增如下:

####oracle####
oracle   soft nproc   2047    #进程数软限制 
oracle   hard nproc   16384   #进程数硬限制
oracle   soft nofile  1024    #文件数软限制
oracle   hard nofile  65536   #文件数硬限制
oracle   soft stack   10240   #堆栈的软限制

3.安装

3.1 利用rz指令把安装包传到oracle用户下面

3.2 解压

[oracle@yujxtest ~]$ unzip linux.x64_11gR2_database_1of2.zip 
[oracle@yujxtest ~]$ unzip linux.x64_11gR2_database_2of2.zip 
[oracle@yujxtest ~]$ ls 
database  Documents  linux.x64_11gR2_database_1of2.zip  Music           Pictures  Templates
Desktop   Downloads  linux.x64_11gR2_database_2of2.zip  oradiag_oracle  Public    Videos

3.3 安装

[oracle@yujxtest~]$ cd database/
[oracle@dbserver database]$ ./runInstaller 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 65023 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 3999 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-04-03_07-58-48PM. Please wait ...[oracle@yujxtest database]$ 

进入到图形界面安装

Linux搭建Oracle11g数据库系统_第1张图片

上面的 I wish to 那行不要选择,对号去掉后跳转到next

Linux搭建Oracle11g数据库系统_第2张图片

选择yes跳转到下面

Linux搭建Oracle11g数据库系统_第3张图片

Linux搭建Oracle11g数据库系统_第4张图片

Linux搭建Oracle11g数据库系统_第5张图片

Linux搭建Oracle11g数据库系统_第6张图片

Linux搭建Oracle11g数据库系统_第7张图片

Linux搭建Oracle11g数据库系统_第8张图片

Linux搭建Oracle11g数据库系统_第9张图片

当上图这个步骤提示INS-32055 直接选择yes进行下一步

Linux搭建Oracle11g数据库系统_第10张图片

Linux搭建Oracle11g数据库系统_第11张图片

上面的failed的安装包是由于需要32位机器的安装包,我们用rpm来安装这些包,安装这些包的时候要注意包的安装顺序,如下

[root@yujxtest rpm]# ls -lrt
total 2404
-rw-r--r--. 1 root root 237109 Jan 18  2007 compat-libstdc++-33-3.2.3-61.i386.rpm
-rw-r--r--. 1 root root 754208 Jan 18  2007 unixODBC-devel-2.2.11-7.1.i386.rpm
-rw-r--r--. 1 root root  60619 Mar 18  2011 libgcc-3.4.6-3.i386.rpm
-rw-r--r--. 1 root root 173189 Mar 23  2013 pdksh-5.2.14-1.i386.rpm
-rw-r--r--. 1 root root  32585 Jul  6  2015 libaio-devel-0.3.106-2.i386.rpm
-rw-r--r--. 1 root root  19798 Jul  6  2015 libaio-0.3.106-5.i386.rpm
-rw-r--r--. 1 root root 290023 Jul  6  2015 libstdc++-3.4.6-11.i386.rpm
-rw-r--r--. 1 root root 851485 Jul  6  2015 unixODBC-2.2.11-7.1.i386.rpm
-rw-r--r--. 1 root root  19530 Jul  7  2015 libaio-0.3.106-3.2.i386.rpm
-rw-r--r--. 1 root root  11345 Jul  7  2015 libaio-devel-0.3.106-3.2.i386.rpm


[root@yujxtest rpm]# rpm -ivh  --force libgcc-3.4.6-3.i386.rpm
Preparing...                ########################################### [100%]
   1:libgcc                 ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force libstdc++-3.4.6-11.i386.rpm
warning: libstdc++-3.4.6-11.i386.rpm: Header V3 DSA/SHA1 Signature, key ID 82fd17b2: NOKEY
Preparing...                ########################################### [100%]
   1:libstdc++              ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force compat-libstdc++-33-3.2.3-61.i386.rpm
warning: compat-libstdc++-33-3.2.3-61.i386.rpm: Header V3 DSA/SHA1 Signature, key ID 37017186: NOKEY
Preparing...                ########################################### [100%]
   1:compat-libstdc++-33    ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force libaio-0.3.106-5.i386.rpm
warning: libaio-0.3.106-5.i386.rpm: Header V3 DSA/SHA1 Signature, key ID e8562897: NOKEY
Preparing...                ########################################### [100%]
   1:libaio                 ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force libaio-0.3.106-3.2.i386.rpm
warning: libaio-0.3.106-3.2.i386.rpm: Header V3 DSA/SHA1 Signature, key ID e8562897: NOKEY
Preparing...                ########################################### [100%]
   1:libaio                 ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force libaio-devel-0.3.106-3.2.i386.rpm
warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA/SHA1 Signature, key ID 37017186: NOKEY
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force unixODBC-2.2.11-7.1.i386.rpm
warning: unixODBC-2.2.11-7.1.i386.rpm: Header V3 DSA/SHA1 Signature, key ID 82fd17b2: NOKEY
Preparing...                ########################################### [100%]
   1:unixODBC               ########################################### [100%]
[root@yujxtest rpm]# rpm -ivh --force unixODBC-devel-2.2.11-7.1.i386.rpm
warning: unixODBC-devel-2.2.11-7.1.i386.rpm: Header V3 DSA/SHA1 Signature, key ID 37017186: NOKEY
Preparing...                ########################################### [100%]
   1:unixODBC-devel         ########################################### [100%]

注意当提示安装pdksh安装错误的时候,你安装pdksh会报和ksh冲突,这时候需要卸载ksh,然后再安装pdksh

[root@yujxtest rpm]# rpm -e  ksh-20120801-33.el6.x86_64  
[root@yujxtest rpm]# rpm -ivh --force  pdksh-5.2.14-1.i386.rpm 

Linux搭建Oracle11g数据库系统_第12张图片

Linux搭建Oracle11g数据库系统_第13张图片

Linux搭建Oracle11g数据库系统_第14张图片

这时候会提示安装2个shell脚本的执行,另开个窗口切换到root下面执行。执行中直接按enter就可以了

[root@yujxtest ~]# sh /opt/oracle/oraInventory/orainstRoot.sh 
[root@yujxtest ~]# sh /opt/oracle/product/11.2/db_1/root.sh 

执行完,点击ok

Linux搭建Oracle11g数据库系统_第15张图片

创建监听器

[root@yujxtest ]# netca 

Linux搭建Oracle11g数据库系统_第16张图片

Linux搭建Oracle11g数据库系统_第17张图片

Linux搭建Oracle11g数据库系统_第18张图片

Linux搭建Oracle11g数据库系统_第19张图片

Linux搭建Oracle11g数据库系统_第20张图片

Linux搭建Oracle11g数据库系统_第21张图片

查看监听器状态
[oracle@yujxtest ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 04-APR-2017 03:00:26

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yujxtest)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                04-APR-2017 03:00:19
Uptime                    0 days 0 hr. 0 min. 7 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/11.2/db_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yujxtest)(PORT=1521)))
The listener supports no services
The command completed successful

没有报错就说明监听器成功启动

创建数据库
利用数据库助手(dbca)创建数据库
[root@yujxtest ]# dbca

Linux搭建Oracle11g数据库系统_第22张图片

Linux搭建Oracle11g数据库系统_第23张图片

Linux搭建Oracle11g数据库系统_第24张图片

Linux搭建Oracle11g数据库系统_第25张图片

Linux搭建Oracle11g数据库系统_第26张图片

Linux搭建Oracle11g数据库系统_第27张图片

Linux搭建Oracle11g数据库系统_第28张图片

Linux搭建Oracle11g数据库系统_第29张图片

Linux搭建Oracle11g数据库系统_第30张图片

Linux搭建Oracle11g数据库系统_第31张图片

Linux搭建Oracle11g数据库系统_第32张图片

Linux搭建Oracle11g数据库系统_第33张图片

Linux搭建Oracle11g数据库系统_第34张图片

Linux搭建Oracle11g数据库系统_第35张图片

Linux搭建Oracle11g数据库系统_第36张图片

4 数据库相关操作

4.1 创建用户和设置密码

[oracle@yujxtest ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Tue Apr 4 18:43:44 2017

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba;
Connected.
SQL> create user yujx identified by yujx;

User created.

SQL> grant dba to yujx;

Grant succeeded.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

4.2 navicat连接测试

Linux搭建Oracle11g数据库系统_第37张图片

lsnrctl start(启动监听)
lsnrctl stop (关闭监听)

4.3 数据库打开

[oracle@yujxtest ~]$ sqlplus sys/Oracle11g AS SYSDBA;
SQL> startup
ORACLE instance started.    ##oralce实例已启动

Total System Global Area  776646656 bytes
Fixed Size          2217384 bytes
Variable Size         608176728 bytes      ###内存情况
Database Buffers      159383552 bytes
Redo Buffers            6868992 bytes
Database mounted.        ##数据库已加载
Database opened.     ##数据库已打开

4.4数据库关闭

[oracle@yujxtest ~]$ sqlplus sys/Oracle11g AS SYSDBA;
SQL> shutwon immeiate;
Database closed.              ##数据库已关闭
Database dismounted.          ##数据库已卸载 
ORACLE instance shutdown.     ##oralce实例关闭

5 第三方机器oracle客户端安装

5.1 oracle客户端

  • instantclient-basic-linux-x86-64-11.2.0.2.0.zip
  • instantclient-precomp-linux-x86-64-11.2.0.2.0.zip
  • instantclient-sdk-linux-x86-64-11.2.0.2.0.zip
  • instantclient-sqlplus-x86-64-11.2.0.2.0.zip
  • instantclient-tools-linux-x86-64-11.2.0.2.0.zip
    *
    解压并在目录instantclient_11_2下面创建tnsnames.ora

    ORCL =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 120.77.206.254)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)
    )
    )

新增用户oracle和组oinstall
修改instantclient_11_2目录拥有者oracle,所属组为oinstall修改tnsnames.ora权限,使得其他用户有读取这个文件的权限。
下面定义的代码就可以直接用数据库名调用

chown -R oracle:oinstall instantclient_11_2
chmod 644 tnsnames.ora

5.2 环境变量

export NLS_LANG="Simplified Chinese_china".AL32UTF8
export LANG=en_US.UTF-8
export ORACLE_BASE=/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/instantclient_11_2
export TNS_ADMIN=$ORACLE_HOME
export PATH=$PATH:$HOME/bin:$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH

注意:要根据lib的实际目录定义

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH

5.3 ocilib(oracle第三方客户端库, 源代码编译安装)

  • ocilib-4.0.1-gnu.tar.gz

    tar -zxvf ocilib-4.0.1-gnu.tar.gz
    cd ocilib-4.0.1
    ./configure
    make
    make install

6. oci连接数据库

代码oci_test.c

#include 
#include 
#include "ocilib.h"

void ngx_oracle_err_handler(OCI_Error *err)
{
    printf("ORACLE ERR-%05i - msg : %s\n", OCI_ErrorGetOCICode(err), OCI_ErrorGetString(err));
}

int main(int argc, char** argv)
{
    if (OCI_Initialize (ngx_oracle_err_handler, NULL, OCI_ENV_DEFAULT) == 0){//如果初始化OCILIB库失败,就报错

            printf("init OCILIB faild");
        return -1;
    }
    printf("init OCILIB success\n")

    if (OCI_ConnectionCreate("localhost:1521/orcl", "posp_yujx", "posp_yujx", OCI_SESSION_DEFAULT) == NULL) {//连接数据库
    //if (OCI_ConnectionCreate("orcl", "posp_yujx", "posp_yujx", OCI_SESSION_DEFAULT) == NULL) {//当用户对tnsnames.ora有读取的权限时候,可以直接用数据库名orcl

        printf("connect faild");
            return -1;
    }
    printf("connect success\n");
    return 0;

}

编译生成oci_test

gcc oci_test.c -locilib -o oci_test

7. Proc*C连接数据库

代码pc_test.pc

#include 
#include 
#include "sqlca.h"

exec sql include sqlca;
int main(int argc, char** argv)
{

exec sql begin declare section;
    char curdate[20] = {0};
exec sql end    declare section;

exec sql connect:userpwd;
EXEC SQL CONNECT: "posp_yujx" IDENTIFIED BY : "posp_yujx" USING :"orcl";
if(sqlca.sqlcode == 0) {
    fprintf(stderr, "connect to database success!\n");
}
else {
    fprintf(stderr, "connect to database failed! error:%s\n", sqlca.sqlerrm.sqlerrmc);
    return -1;
}
exec sql select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') into:curdate from dual;
fprintf(stderr, "%s\n", curdate);

return 0;
}

编译执行如下

proc parse=none iname=pc_test.pc
gcc -g -o pc_test pc_test.c -I/$ORACLE_HOME/precomp/public -L/$ORACLE_HOME/lib -lclntsh
./pc_test

你可能感兴趣的:(oracle安装)