Linux&&oracle 11gR2
了解
11g : 版本号
11gR2 : 11g版本的正式版;11gR1 : 11g版本的测试版
oracle服务器的物理内存应不少于1GB;硬盘空间不少于8GB,建议40GB。
部署
配置hosts文件
#查看当前主机主机名
hostname
#配置hosts文件,令主机名www.test.com与真实ip192.168.10.1相对应,否则oracle有可能将监听程序仅仅建立在127.0.0.1上面。
vim /etc/hosts
192.168.10.1 www.test.com
预安装软件包
#预安装软件包
yum clean all
yum -y install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-9.* unixODBC-2.* unixODBC-devel-2.* numactl-devel-*
修改内核参数并使修改生效
#修改内核参数并使修改生效
vim /etc/sysctl.conf
#该参数限制并发未完成的请求,应该设置避免I/O子系统故障
fs.aio-max-nr = 1048576
#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表Linux系统中可以打开的文件数量
fs.file-max = 6815744
#该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16GB,那么需要共享内存页数是16GB/4KB=4194304页,也就是64Bit系统下16GB物理内存,设置kernel.shmall=4194304才符合要求。
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 = 1048576
sysctl -p
新建用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
#检查结果
id oracle
为oracle用户设置shell限制
为了优化性能,需要添加oracle用户的限制参数。
进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启动该认证
vim /etc/security/limits.conf
#进程数软限制
oracle soft nproc 2047
#进程数硬限制
oracle hard nproc 16384
#文件数软限制
oracle soft nofile 1024
#文件数硬限制
oracle hard nofile 65536
vim /etc/pam.d/login
session required pam_limits.so
新建安装目录
vim ~oracle/.bash_profile
#文件权限掩码
umask 022
#定义基本目录
export ORACLE_BASE=/opt/oracle
#定义数据库实例名称
export ORACLE_SID=orcl
#告知默认的显示终端号。下行意思指在安装过程中,在图形界面打开一个子窗口
export DISPLAY=:0.0
#确认使用何种语言环境
export LANG=zh_CN.UTF-8
#建立基本目录
mkdir /opt/oracle
chown -R oracle.oinstall /opt/oracle/
chmod -R 755 /opt/oracle/
解压oracle11g压缩包
cd /usr/src/
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
#解压后的database目录下有oracle安装脚本、产品手册等文档
ls database/
#中文字体.字体文件zysong.ttf请自备
mkdir -p /usr/share/fonts/zh_CN/TrueType
cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/
chmod o+r /usr/share/fonts/zh_CN/TrueType/zysong.ttf
安装oracle11g
以用户oracle身份登录到图形界面下,启动database目录下的runInstaller脚本文件:
针对/tmp目录、交换分区、显示器的基本检测通过以后,将会打开图形化的oracle安装序,如下图所示,下面将依次讲解oracle11g的主要安装步骤。
1)配置安全更新:
如果已购买oracle11g数据库的授权,且服务器能连接INTERNET,建议正确填写电子邮件地址和oracle support口令,以便及时接收官方的安全更新通知。实验过程中建议将电子邮件地址留空,并消取对“我希望通过my oracle……”复选框的选择。
2)安装选项:
全新安装建议选择“创建和配置数据库”或者“仅安装数据库软件”,后者将不会创建并配置数据库实例,只有对旧版本的oracle数据库进行升级时,才选择“升级现有数据库”。
3)系统类:
选择“服务器类”进行安装,以便适用于企业环境的数据库系统。“桌面类”一般只建议个人用户使用,包含的配置和功能比较少。
4)网格选项:
选择“单实例数据库安装”,大多数应用场合中oracle数据库的用途比较单一,每台oracle服务器只需要一个实例就可以了。
5)安装类型:
选择“典型安装”,采用oracle11g的基本配置进行完全安装。若要为各种管理账户分别设置口令,或者选择语言版本、设置自动备份、存储管理等,则应该选择“高级安装”。
6)典型安装配置:
在“典型安装”步骤中,可以指定oracle11g的基本目录、软件安装目录、数据库存放目录,并选择要安装的数据库版本、指定全局数据库名称、设置管理口令,如下图所示:
必须设置管理口令,其他参数可采用默认值。Oracle11g数据库自动建有三个用户:超级管理员sys、system和数据库所有者sysman,当选择“高级安装”时可以为三个用户分别设置口令,否则将使用同一个管理口令。
7)创建产品清单:
将清单目录修改为:/opt/oracle/oraInventory,以便oracle用户有权限写入oracle数据库的清单信息。
8)先决条件检查及概要:
针对各种前置条件进行检查,发现有未满足的条件后会给出提示,应根据检查结果进行修复或者安装必需的软件包。预安装检查,错误可忽略(软件版本问题,但必须确认软件包已安装)。
如果所有条件都已满足,则会看到本次安装的概要信息,确定无误后单击“完成”按钮却完成设置,然后开始复制文件及部署数据库的安装过程。
9)完成安装:
文件复制及相关部署结束后,会弹出“执行配置脚本”对话框,如图所示,根据提示切换为root用户并依次执行/opt/oracle/oraInventory/orainstRoot.sh、/opt/oracle/product/11.2.0/dbhome_1/root.sh脚本。
最后单击“确定”按钮,会提示方问https://dbserver:1158/em/,表示使用此URL地址可以访问OEM(oracle enterprise manager,oracle企业管理器)平台,以便对oracle11g的数据库实例进行管理。
10)验证安装结果
使用浏览器访问OEM管理平台,以用户名sys、连接身份“SYSDBA”进行登录,密码为安装时指定的管理口令。登录成功后可以看到OEM管理控制台,如图所示,若显示数据库状态正常、无明显错误,则表示oracle11g安装成功。
1158是oracle的图形管理程序em的端口
11)让oracle和oem随机启动:
完成oracle11g数据库的安装后,相关服务器会自动启用,但并不表示下次开机后oracle服务器仍然可用。下面将介绍oracle的基本服务组件,以及如何编写服务脚本来控制oracle数据库系统的自动运行。
为了方便执行oracle11g的服务组件程序,建议对所有用户的环境配置作进一步的优化调整、补充PATH路径、oracle终端类型等变量设置。除此以外,还应该修改/etc/oratab配置文件,以便运行dbstart时自动启用数据库实例。
vim /etc/oratab
orcl:/opt/oracle/product/11.2.0/dbhome_1:Y
vim /etc/profile
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_OWNER=oracle
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$PATH:$ORACLE_HOME/bin
编写oracle启动控制脚本
vim /etc/init.d/oracle
在oracle脚本文件中,数据库的启动、停止操作均通过“su – oracle –c 命令行”形式来执行,这是为了获得oracle用户的登录环境,且因为由root切换为普通用户无需验证密码,从而省去了交互式登录的过程,便于脚本的后台执行。
为脚本设置权限并添加为系统服务:
chmod +x /etc/init.d/oracle
chkconfig --add oracle
chkconfig oracle on
chkconfig --list oracle
使用
OEM(oracle enterprise manager),oracle服务的web控制台,监听在1158端口
oracle,oracle服务,监听在TCP/1521端口
创建表空间
基于命令行操作:
#登录oracle数据库
sqlplus sys as sysdba
#创建表空间
#create tablespace 表空间
#datafile 数据文件的位置/名称.dbf size 大小(K/M/G) [autoextend [on/off]] next 大小 [maxsize 大小]
#[autoextend [on/off]] next 大小 : 自动增长 next size 每次增长多少
#[maxsize 大小] : 最大增长到多少
> create tablespace test010
2 datafile '/opt/oracle/oradata/orcl/test010.dbf' size 10M autoextend on next 2m maxsize 500m;
基于web控制台演示:
创建表
基于命令行操作:
> create table test010a (id int,xm varchar(30),xb char(2)) tablespace test010;
#向表插入记录
> insert into test010a(id,xm,xb) values (1,'lisi','1');
#查询记录
> select * from test010a;
基于web控制台演示:
oracle数据库的备份与恢复
配置备份目录
#创建备份目录
mkdir /opt/mydbackup
#赋予指定用户的读写权限
chown oracle.oinstall /opt/mydbbackup/
#使用sys用户登录oracle数据库
sqlplus sys as sysdba
#指定备份目录位置,为备份目录指定一个逻辑目录名称
> create directory dmpdir as '/opt/mydbbackup';
#查看创建的逻辑目录
> select * from dba_directories;
#此处使用oracle的一个默认用户system执行以上操作,(大部分情况下对oracle操作都尽量避免使用sys用户而用普通用户代替。)
#查询用户system的权限
>select * from dba_sys_privs where grantee='SYSTEM';
#授权
> grant create any directory to system;
#查询是否授权成功
> select * from dba_sys_privs where grantee='SYSTEM';
# 为system用户授予在指定目录的操作权限
> grant read,write on directory dmpdir to system;
#创建测试数据
> create tablespace baoge datafile '/opt/oracle/oradata/orcl/baoge.dbf' size 50m;
#切换oracle的登录用户为system
> conn system/123456
# 创建表
> create table xueyuan(id int,name varchar(20)) tablespace baoge;
#添加表记录
> begin
2 for i in 1 .. 10 loop
3 insert into xueyuan values(i,'lisi');
4 end loop;
5 end;
6 /
#查看表记录
> select * from xueyuan;
> exit
#备份(导出数据)
#expdp 备份操作用户/登录密码 directory=备份目录别名 full=y
#full : 表示导入或导出整个数据库,默认为N
#full={Y|N},为Y代表整个数据库导出
#LOGFILE : 指定导出日志文件的名称,默认名称为
#dumpfile : 指定备份文件名称
cd /opt/mydbbackup
expdp system/123456 directory=dmpdir full=y dumpfile=full.dmp
ls /opt/mydbackup/
#恢复(导入)数据
sqlplus sys/123456 as sysdba
> conn system/123456
#删除测试表
> delete from xueyuan;
> exit
#导入数据
#恢复表
impdp system/123456 directory=dmpdir dumpfile=full.dmp tables=xueyuan table_exists_action=replace
#恢复表空间
impdp system/123456 directory=dmpdir dumpfile=full.dmp tablespaces=baoge table_exists_action=replace