- A+
目录
ORACLE官方文档 :http://docs.oracle.com/cd/E11882_01/nav/portal_booklist.htm
1.初识Oracle
1.1 Oracle简介
Oracle
Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。
1.2 Oracle特点
1. ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。
2. 提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。
3. 支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。
4. 提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵,加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。
5. 提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。
1.3 oracle数据库存储结构
1. 物理结构
ORACLE数据库在物理上是存储于硬盘的各种文件。它是活动的,可扩充的,随着数据的添加和应用程序的增大而变化。
2.逻辑结构
ORACLE数据库在逻辑上是由许多表空间构成。主要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数据、索引、程序等相关信息。我们准备上马一个较大的ORACLE应用系统时,应该创建它所独占的表空间,同时定义物理文件的存放路径和所占硬盘的大小。
下图为ORACLE数据库逻辑结构与物理结构的对照关系:
1.4 分布式数据库管理介绍
1、原理
物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单个的大数据库。用户可以通过网络对异地数据库中的数据同时进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的:开发人员无需关心网络的连接细节、无需关心数据在网络接点中的具体分布情况、也无需关心服务器之间的协调工作过程。
2、过程
由网络相连的两个ORACLE数据库之间通过数据库链接(DB-LINKS)建立访问机制,相当于一方以另一方的某用户远程登录所做的操作。但ORACLE采用的一些高级管理方法,如同义词(SYNONME)等使我们觉察不到这个过程,似乎远端的数据就在本地。数据库复制技术包括:实时复制、定时复制、储存转发复制。对复制的力度而言,有整个数据库表的复制,表中部分行的复制。在复制的过程中,有自动冲突检测和解决的手段。
2. Oracle安装前准备
2.1 服务器环境
[root@oracle ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@oracle ~]# hostname -I 101.201.123.28 192.168.1.28 [root@oracle ~]# hostname oracle [root@oracle ~]# uname -r 2.6.32-573.el6.x86_64 [root@oracle ~]# /etc/init.d/iptables stop
2.2 修改用户的SHELL限制
编辑/etc/security/limits.conf文件,在该文件末尾添加如下带颜色色内容即可
[root@oracle ~]# vim /etc/security/limits.conf oracle soft nproc2047 oracle hard nproc16384 oracle soft nofile1024 oracle hard nofile65536
2.3 修改/etc/pam.d/login 文件
末尾添加即可
[root@oracle ~]# vim /etc/pam.d/login session required /lib/security/pam_limits.so session required pam_limits.so
2.4 优化linux内核
修改/etc/sysctl.conf文件。在末尾添加以下带颜色色字体内容即可
[root@oracle ~]# vim /etc/sysctl.conf kernel.shmall = 2097152 kernel.shmmax = 2147483648 fs.file-max = 6815744 fs.aio-max-nr = 1048576 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
编辑完成存盘退出;然后执行:sysctl -p使之立即生效。
sysctl -p
2.5 配置相关环境变量
编辑/etc/profile文件,在该文件末尾添加如下内容即可(这一步不需要做,在系统优化的时候已经做过,即使做了在oracle用户中也会出现没权限更改文件打开数问题)
## vim /etc/profile
if [ USER = "oracle" ]; then
if [SHELL = "/bin/ksh" ]; then
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使用source或者“.”是该配置生效
source /etc/profile
2.6 创建Oracle相关用户和组
(1)创建用户组
groupadd oinstall groupadd dba
(2)创建Oracle用户及密码
useradd -g oinstall -g dba -m oracle
设置密码:
echo "123456"|passwd --stdin oracle
2.7 创建数据库软件目录和数据文件存放目录
1. 目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到oracle用户下:
mkdir /home/oracle/app mkdir /home/oracle/app/oracle mkdir /home/oracle/app/oradata mkdir /home/oracle/app/oracle/product
2. 更改创建目录属主为oracle
chown -R oracle. /home/oracle/app
2.8 配置oracle用户环境变量
需要切换到新创建的oracle用户下,输入su –
oracle,编辑 .bash_profile,增加以下内容:
[root@oracle ~]# su - oracle [oracle@oracle ~]vim .bash_profile umask 022 export ORACLE_BASE=/home/oracle/app export ORACLE_HOME=ORACLE_BASE/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=PATH:HOME/bin:ORACLE_HOME/bin export LD_LIBRARY_PATH=ORACLE_HOME/lib:/usr/lib64
source或点使其生效
source .bash_profile
2.9 使其支持Oracle图形化安装
(1)yum安装依赖软件包
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \ glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libstdc++ libstdc++-devel \ make sysstat unixODBC unixODBC-devel pdksh numactl-devel glibc-headers #提示:有些软件可能意在存在,但是为了能够安装过程不出错,但还是都安装一遍
检查,我们一共下载了20个包
rpm -qa binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \ glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libstdc++ \ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh numactl-devel glibc-headers|wc -l
(2)安装pdksh用来支持oracle图形化安装
pdksh下载地址: |
|
用户名和密码都是: |
www.linuxidc.com |
具体下载目录: |
/2016年资料/6月/6日/Linux 安装 Oracle 11g R2/ |
下载方法见: |
|
说明:本文档下载的pdksh版本为5.2.14,所以以上信息根据UCI版本为准 |
|
#<== 此软件包可用 |
上传解压:
cd /usr/local/src/ rz pdksh-5.2.14.zip unzip pdksh-5.2.14.zip
安装检查:
cd pdksh-5.2.14 rpm -ivh pdksh-5.2.14-30.x86_64.rpm rpm -qa pdksh
(3)安装xclock工具
yum -y install xclock
(4)检查是否支持图形化
命令行输入xclock后,桌面会出现钟表界面,既表示成功,否则不能图形化界面安装oracle
[root@oracle ~]# xclock
界面如下:
特别说明:
坑一:使用CRT是打不开这个图形界面的,应该不支持,本人在这里遇见的坑!
坑二:输入xclock报错“Error:Can't open display:”
解决方法:yum -y groupinstall "X Window System" 配置安装图形化接口
还有一种情况需要退出root账号,重新登录才可以显示。
2.10 安装配置vpnserver服务端
操作前说明:此步骤可不用操作,根据情况而定
vnc是一款使用广泛的服务器管理软件,可以实现图形化管理,下面简单介绍一下如何在centos6.7下安装vnc。
1. 安装vncserver
yum -y install tigervnc tigervnc-server
2. 配置vncserver
[root@oracle ~]# vim /etc/sysconfig/vncservers #<== 在该文件末尾添加即可 VNCSERVERS="1:root 2:root" VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp -localhost"
设置vnc访问密码(本人设置的密码为123456)
[root@oracle ~]# vncpasswd Password:123456 Verify: 123456
说明: 这里是为上面的root远程用户配密码,所以在root账户下配;依次类推,为别的账户配密码,就要在别的账户下使用该命令。
3. 设置iptables <== 当然,我们这里没有开启iptables可以不设置!
iptables防火墙默认会阻止vnc远程桌面,所以需要在iptables允许通过。当你启动vnc服务后,你可以用netstat -tunlp命令来查看vnc服务所使用的端口,可以发现有5801,5901,6001等。使用 下面命令开启这些端口:
## vim /etc/sysconfig/iptables -A RH-Firewall-l-INPUT -p tcp -m tcp –dport 5801 -j ACCEPT -A RH-Firewall-l-INPUT -p tcp -m tcp –dport 5901 -j ACCEPT -A RH-Firewall-l-INPUT -p tcp -m tcp –dport 6001 -j ACCEPT /etc/init.d/iptables save #<== 加载配置,使其生效
3. Oracle数据库部署
Oracle11g安装包下载地址:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
下载该软件包需要注册Oracle的用户
Oracle用户名:1097857032
密码:*********
下载过程如下:
1. 上传oracle11g安装包
[root@oracle ~]# mkdir -p /home/soft [root@oracle ~]# cd /home/soft [root@oracle ~]# rz linux.x64_11gR2_database_1of2.zip [root@oracle ~]# rz linux.x64_11gR2_database_2of2.zip
2. 对上传的压缩包使用unzip进行解压
unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip
说明:以上两个文件解压后会合并生成到当前目录下的database目录
这里我们可以查看一下database多包含的文件,如下:
[root@oracle soft]# cd database/ [root@oracle database]# ls doc install responserpm runInstaller sshsetup stage welcome.html
3. 执行安装(在xhell操作)
[root@oracle ~]# su - oracle #<== 需要先切换到oracle用户下
[oracle@oracle ~]cd /home/soft/database/
[oracle@oracle database] ./runInstaller #<== 运行此命令后金辉进入oracle安装界面
此时如果运行./runInstall无法出现如下安装界面且报错:
[oracle@oracle database]./runInstaller
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 225212 MB Passed
Checking swap space: must be greater than 150 MB. Actual 8191 MB Passed
Checking monitor: must be configured to display at least 256 colors
>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<
Some requirement checks failed. You must fulfill these requirements before
continuing with the installation,
Continue? (y/n) [n] y
>>> Ignoring required pre-requisite failures. Continuing...
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2016-08-10_09-47-02AM. Please wait ...[oracle@localhost database] Exception in thread "main" java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at java.awt.Toolkit$2.run(Toolkit.java:821)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:804)
at com.jgoodies.looks.LookUtils.isLowResolution(LookUtils.java:484)
at com.jgoodies.looks.LookUtils.<clinit>(LookUtils.java:249)
解决办法:
用oracle用户登录,执行: export DISPLAY=" 101.201.123.28:0.0"
101.201.123.28为装有xshell工具的连接服务器的电脑
常见报错:
>>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过 <<<<
[root@oracle ~]# yum -y install xdpyinfo [root@oracle ~]# xhost + access control disabled, clients can connect from any host
报错依旧,这是怎么回事???
突然意识到,本次使用的是root用户登录的,于是注销掉root用户,使用oracle重新登录,执行成功。
如果出现乱码,请执行如下命令,重新安装即可
[oracle@oracle database]$ LANG=en
4. 开始安装
首先第一步设置oracle的源密码123456,这里我没有设置,刚开始安装时可能会有如下报错,意思是IP地址不确定,这种问题在hosts文件中配置我们得主机名和IP做一下解析即可解决!
-->>>如下取消I wish to receive...Support(意思是在oracle的升级上你是否支持?)选项,如果公司买了oracle服务的话可以勾选,如果没有就将其取消即可,然后Next
你真的要取消嘛?
-->>>如下选择Install database soft only,然后Next
含义为: 1.创建一个数据库(既装软件又创建数据库)
2.只装软件不建库
3.对现在的库进行升级
--->>>如下选择single instance database
installation,然后Next
说明:第一个是装单库,第二个是装集群插件的东西,这里我们选择第一个,装单库
--->>>如下选择语言English【根据自己的需求,也可以导入所有语言】,然后Next
--->>>如下选择Enterprise edition,然后Next
1.企业版
2.标准版
3.标准版
--->>>如下默认即可,然后Next
--->>>如下默认即可,然后Next
--->>>如下默认即可,然后Next
--->>>如下勾选Ignore All后Next,此步骤是先前检查
如下装到这一步,可以看到,可以查看到有很多的rpm包没有,我们可以从安装linux的光盘或ISO中(或去D:\linux_oracle11g_Package)查找所缺的包,使用ftp上传到linux中,然后使用rpm –ivh xxx.rpm --nodeps –force 来进行安装(其中加上--nodeps -- force 代表强制安装,是在直接使用rpm –ivh xxx.rpm安装不成功的情况下用的)等到把包全部都安装好的情况下,再次在oracle图形界面中,执行安装过程2,下来在环境检查过程中,就通过了。有些是可以忽略的,所以我们以下选择忽略所有
--->>>如下选择Finish进行下一步
--->>>如下就是正在安装啦!
以上进度条被填满后就出现以下提示,我们选择OK
安装完成后,系统会提示你需要用root权限执行2个shell脚本。(不用关闭弹出的窗口)按照其提示的路径,找到其所在的位置,
如:我的就在/home/oracle/oraInventory/orainstRoot.sh和/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
执行过程脚本如下:
[oracle@oracle database]$ su - root [root@oracle ~]# whoami root
[root@oracle ~]# /bin/sh /home/oracle/oraInventory/orainstRoot.sh Changing permissions of /home/oracle/oraInventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /home/oracle/oraInventory to dba. The execution of the script is complete.
[root@oracle ~]# /bin/sh /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: #<== 回车 ........... ...........输出省略........
以上脚本执行完毕后选择OK进入下一步:
--->>>如下选择Close关闭
到这里Oracle数据库建立完成!!!
4. 创建数据库
在Oracle用户的图形界面oracle用户中,新开一个终端,直接输入:dbca会弹出如下界面。
[root@oracle ~]# su - oracle [oracle@oracle ~]$ dbca
1) 还是在oracle用户的图形界面oracle用户中,新开启一个终端,直接输入命令dbca会弹出如下界面。我们这里采用定制数据库。
开始创建数据库
--->>>如下选择Create a Database后Next
1.创建一个数据库
2.管理模板
--->>>如下选择Custom Database后Next
--->>>如下为数据库命名
注意:数据库的名字是我们事先在变量文件中定义好的
--->>>如下取消Configure...Manger后Next
--->>>如下设置密码【自己设置,两次一样(截图上的测试机随机写的:123456)】
在以上选择Next后继续时可能会提示密码过于简单,但是我们不予理会,yes即可
--->>>如下为数据库存放位置,采用默认
--->>>如下为取消Specify...Area(即不指定快速恢复和归档),然后Next
--->>>如下设置内存大小【默认推荐大小,也可以根据需求自行设定,在Sizing中也可以设定】
--->>>如下选择字符类型ZHS16GBK-GBK 16-bit
Simplified Chinese后Next
--->>>如下打开Read Log Groups选项,大小此处采用默认【可以根据需求设定】
经过漫长的等待,当看到此界面,说明oracle建库完成
--->>>此时可以用sqlplus连接测试,但是需要配置网络监听程序
未配置监听服务前状态:
[oracle@oracle ~]cd /home/soft/database/
[oracle@oracle database] lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-NOV-2016 16:55:35
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener #<== 没有被监听
Linux Error: 111: Connection refused #<== 拒绝连接
5. 配置监听及本地网络服务
在Oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca会弹出如下界面:
[root@oracle ~]# su - oracle [oracle@oracle ~]$ netca
步骤截图如下:
1)在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面。此步骤是充当oracle服务器,让别的oracle客户端连接本oracle服务器
2) 配置本地网络服务名(充当oracle客户端,连接别的oracle服务器)
以下为输入连接数据的实例名(我们创建的什么数据库就填写什么数据库)
输入oracle服务器的ip地址
如下选中YES测试
如下点击change Login 输入所连接oracle服务器的其中某一个用户名和密码(用户名oracle和设置的密码),点击OK
如下看到此界面说明测试成功(如果不成功,请查看网络是否畅通,所连接的oracle服务器是否启动,监听是否启动等原因)
再次进行测试
[root@oracle ~]# su - oracle
[oracle@oracle ~]cd /home/soft/database/
[oracle@oracle database] netca
[oracle@oracle ~]$ netca
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Listener configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Default local naming configuration complete.
Created net service name: test_id
配置监听服务后:
[root@oracle ~]# su - oracle
[oracle@oracle ~]cd /home/soft/database/
[oracle@oracle database] lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-NOV-2016 17:26:39
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 28-NOV-2016 17:13:45
Uptime 0 days 0 hr. 12 min. 54 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/oracle/app/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
Services Summary...
Service "test" has 1 instance(s).
Instance "test", status READY, has 1 handler(s) for this service...
Service "testXDB" has 1 instance(s).
Instance "test", status READY, has 1 handler(s) for this service...
The command completed successfully
6. 连接测试
[root@oracle ~]# su - oracle [oracle@oracle ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 28 17:29:25 2016 Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL> SQL> #<== 连接成功
[oracle@oracle ~]$ sqlplus / as sysdba #<== 以管理员身份登录 SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 28 17:34:59 2016 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> SQL> show user; #<== 查看当前登录用户 USER is "SYS" SQL> quit #<== 退出 Disconnected
7. Oracle数据库常用操作命令
1. 数据库监听
[root@oracle ~]# su - oracle
[oracle@oracle ~]lsnrctl start #<== 启动监听服务
[oracle@oracle ~] lsnrctl stop #<== 停止监听服务
[oracle@oracle ~]$ lsnrctl status #<== 查看监听状态
2. 启动oracle数据库
[root@oracle ~]# su - oracle
[oracle@oracle ~]sqlplus /nolog #<== 进入sqlplus环境,nolog参数表示不登录
[oracle@oracle ~] sqlplus / as sysdba #<== 以管理员模式登录
SQL> startup #<== 启动数据库
SQL> shutdown immediate #<== 停止数据库
3. 创建用户并授权
SQL> create user mysql identified by 123456; #<== 创建用户 SQL> alter user mysql default tablespace biao; #<== 赋予用户的表空间权限(无表,报错) SQL> create user mysql identified by 123456 default tablespace biao; # 将以上两条命令合并使用
说明:新创建的用户是没有任何权限的,登录的权限都没有。因此需要再继续做授权操作,但必须是具有授权能力的用户,例如:sys、system;角色是指由系统权限集合,通常给某个用户授权时,如果没有角色存在的话,则需要一条条的操作。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限),dba,resource(在任何表空间建表)
SQL> grant connect,resource,dba to mysql; #<== 授予用户管理权限 SQL> drop user "mysql" cascade; #<== 删除用户
说明:cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数。“name”的引号有无都是一样的
4. 查看当前用户
SQL> select * from all_users; #<== 查看当前系统所有用户 SQL> show user; #<== 查看当前登录的用户 SQL> select count(*) from sys.v_$session; #<== 查看用户当前连接数
文档安装参考网址:
http://www.cnblogs.com/lightnear/archive/2012/10/07/2714247.html
http://www.jb51.net/article/53769.htm
附件列表