在 Oracle 数据库 11g 中操作分区
- 格式:doc
- 大小:975.00 KB
- 文档页数:22
数据库读写分离解决方案----oracle 11G ADG实施方案1.项目背景介绍1.1目的通过DG实现主库与备库同步,主库作为业务应用库,备库作为查询库,应用根据不同需求配置对应数据库;1.2测试环境在2台RedHat5.4上使用ORACLE 的DataGuard组件实现容灾。
设备配置(VMWare虚拟机环境)清单如下:2.Oracle DataGuard 介绍备用数据库(standby database)是ORACLE 推出的一种高可用性(HIGH AVAILABLE)数据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份,可以实现快速切换与灾难性恢复。
●STANDBY DATABASE的类型:有两种类型的STANDBY:物理STANDBY和逻辑STANDBY两种类型的工作原理可通过如下图来说明:physical standby提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。
它是可以直接应用REDO实现同步的。
l ogical standby则不是这样,在logical standby中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。
逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表,但其数据库用户相关对象均需要有主键。
✧本次实施将选择物理STANDBY(physical standby)方式●对主库的保护模式可以有以下三种模式:–Maximum protection (最高保护)–Maximum availability (最高可用性)–Maximum performance (最高性能)✧基于项目应用的特征及需求,本项目比较适合采用Maximum availability (最高可用性)模式实施。
3.Dataguard 实施前提条件和注意事项:●灾备环境中的所有节点必须安装相同的操作系统,尽可能令详细补丁也保持相同。
oracle分区的interval字符在Oracle数据库中,分区是一种将表数据分成逻辑部分的方法,可以提高查询性能和管理数据的灵活性。
Oracle 11g引入了分区表的自动管理特性,其中一个重要的概念是分区的间隔(interval)字符。
分区的间隔字符是指在分区表中定义分区的方式,它决定了分区之间的边界。
使用间隔字符可以自动创建新的分区,并将新的数据插入到正确的分区中。
这样一来,用户不需要手动创建每个分区和插入数据,大大简化了分区表的管理。
在Oracle中,可以使用不同的间隔字符来定义分区。
其中一种常见的间隔字符是基于日期的间隔字符,比如按照月份进行分区。
这种情况下,可以使用以下语句来创建一个按照月份分区的表:CREATE TABLE sales (sales_id NUMBER,sales_date DATE,sales_amount NUMBER)PARTITION BY RANGE (sales_date)INTERVAL (INTERVAL '1' MONTH)(PARTITION sales_q1 VALUES LESS THAN (TO_DATE('01-APR-2022', 'DD-MON-YYYY')));在上述例子中,sales表按照sales_date列的日期范围进行分区。
INTERVAL '1' MONTH表示每个分区的间隔为一个月。
系统将自动创建新的分区,并将新的数据插入到正确的分区中。
另一个例子是使用数字的间隔字符。
假设需要根据订单金额将表进行分区,可以使用以下语句创建一个按照金额范围分区的表:CREATE TABLE orders (order_id NUMBER,order_date DATE,order_amount NUMBER)PARTITION BY RANGE (order_amount)INTERVAL (1000)(PARTITION orders_below_1000 VALUES LESS THAN (1000),PARTITION orders_1000_2000 VALUES LESS THAN (2000),PARTITION orders_2000_3000 VALUES LESS THAN (3000),PARTITION orders_above_3000 VALUES LESS THAN (MAXVALUE));在上述例子中,orders表按照order_amount列的值范围进行分区。
CentOS6.5下Oracle11g安装完整步骤一、硬件要求本部分内容命令,均以root用户执行。
1、内存建议内存应大于2G以上,1G可以运行,但比较吃力。
内存查看命令:[root@tsp-rls-dbserver /]# cat /proc/meminfo或[root@tsp-rls-dbserver /]# free -mtotal used free shared buffers cachedMem: 32062 1301 30760 0 40 552-/+ buffers/cache: 708 31354Swap: 16095 0 160952、交换分区交换分区大小,通常设为内存的1.5倍以上,也可以根据实际情况进行调整。
交换分区查看命令:[root@tsp-rls-dbserver /]# grep SwapTotal /proc/meminfoSwapTotal: 67682296 kB3、硬盘空间建议数据使用独立的挂载分区,本文中采用/data作为数据分区。
要求/tmp目录空间不小于400M。
磁盘空间查看命令:[root@tsp-rls-dbserver /]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_tsprlsdbserver-lv_root 50G 4.3G 43G 10% /tmpfs 16G 348K 16G 1% /dev/shm/dev/sda1 485M 39M 421M 9% /boot/dev/mapper/vg_tsprlsdbserver-lv_home 210G 190M 199G 1% /home/dev/sdb1 1.1T 4.5G 1.1T 1% /data目录空间大小查看命令:[root@tsp-rls-dbserver tmp]# du -ch /tmp二、软件要求1、安装依赖包建议安装系统时,选择开发库。
服务器磁盘分配一般C盘100G装系统、D盘80G放ORACLE基目录和软件位置、E盘剩余空间(最大)放数据库目录。
Oracle 11g安装图文攻略注意用administrator用户登录一、Oracle 下载注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。
路径名称中,最好不要出现中文,也不要出现空格等不规则字符。
二、Oracle安装1. 解压缩文件,将两个压缩包一起选择,鼠标右击- 解压文件如图2.两者解压到相同的一、Oracle 下载注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。
路径名称中,最好不要出现中文,也不要出现空格等不规则字符。
二、Oracle安装1. 解压缩文件,将两个压缩包一起选择,鼠标右击-> 解压文件如图2.两者解压到相同的路径中,如图:3. 到相应的解压路径上面,找到可执行安装文件【setup.exe 】双击安装。
如图:4. 安装第一步:配置安全更新,这步可将自己的电子邮件地址填写进去(也可以不填写,只是收到一些没什么用的邮件而已)。
取消下面的“我希望通过My Oracle Support接受安全更新(W)”。
如图:5. 安全选项,直接选择默认创建和配置一个数据库(安装完数据库管理软件后,系统会自动创建一个数据库实例)。
如图:6. 系统类,直接选择默认的桌面类就可以了。
(若安装到的电脑是,个人笔记本或个人使用的电脑使用此选项) 服务器类直接点击这里跳转如图:7. 典型安装。
重要步骤。
建议只需要将Oracle基目录更新下,目录路径不要含有中文或其它的特殊字符。
全局数据库名可以默认,且口令密码,必须要牢记。
密码输入时,有提示警告,不符合Oracel建议时不用管。
(因Oracel建议的密码规则比较麻烦,必须是大写字母加小写字母加数字,而且必须是8位以上。
麻烦,可以输入平常自己习惯的短小密码即可) 如图:8. 若输入的口令短小简单,安装时会提示如下。
Oracle11g数据库管理与开发基础教程课后习题及答案第⼀章选择题1、Oracle数据库服务器包含的两个主要组件是(AB)A、Oracle实例B、oracle数据库C、内存结构D、后台进程2、create database 创建Oracle数据库时创建的⽂件包括(AC)A、数据⽂件B、控制⽂件C、⽇志⽂件D、初始化参数⽂件3、创建Oracle数据库时,createdatabase语句中指出了需要创建的数据⽂件、⽇志⽂件存储路径和名称,但没有指出需要创建的控制⽂件,因此创建数据库之前需要创建(D)个控制⽂件。
A、0B、1C、2D、任意数量4、调⽤shutdown命令关闭Oracle数据库后,以下(D)命令关闭的数据库处于不⼀致状态。
A、shutdown normalB、shutdown transactionalC、shutdown immediateD、shutdown abort5、作为普通⽤户,只有当数据库处于以下(C)状态下才可连接访问。
A、NUMOUNTB、MOUNTC、OPEND、CLOSE填空题1、SGA可分为以下⼏种主要区域:(SGA固定)、(数据库缓冲区缓存)、(重做⽇志缓冲区)、(共享池)等。
2、Oracle实例有多种后台进程,其中每个数据库实例上必须启动的后台进程包括(数据库写⼊进程)、(⽇志写⼊进程)、(检查点进程)、(进程监视进程)、(系统监视进程)等。
3、Oracle数据库的逻辑存储结构是(表空间)、(段)、(区)、(数据块)等。
4、Oracle数据库逻辑上的表空间结构与磁盘上的物理(数据)⽂件相关联。
5、下⾯连接字符串采⽤的是(简易连接)命名⽅式。
CONNECT Scott/tiger@dbs:1525@/doc/727db4ff03768e9951e79b89680203d8ce2f6aac.html编程题1.写出以下操作的SQL*PLUS命令语句:先启动Oracle实例到“已启动实例状态”,再修改Oracle实例到“数据库已装载状态”,最后修改Oracle实例到打开状态。
oracle11g关于内存的分配方案。
1,在32位的操作系统上,安装oracle的话,oracle最大能分配到的内存是1.7G。
这样的话,推荐最好使用64位的操作系统。
这样在物理内存足够大的情况下,oracle也能分配到无限制的足够大的内存。
2,在物理内存既定的情况下,如果服务器是只为oracle应用提供的服务器。
在创建数据库实例时,oracle的典型内存分布,默认总共给sga 和pga分配系统内存的40%,同时oracle建议自动内存管理。
此时,如果选择oracle的典型内存分布,同时不选择自动管理内存分布,那么sga : pga的内存比是3:1。
但是当sga的内存达到1536M之后,就不会再增加内存了,多出来的内存全都被增加到了pga的内存中去了。
(问题一:请问一下,如果是自动管理内存分布的话,sga和pga 也会出现这样的情况吗? sga达到1536m之后也不会继续增加吗?问题二:pga增多的话,排序等的性能会增加。
但是如果适当的增加sga,将表数据全都缓存到sga中的话,内存中的排序等性能同样会得到很大的提升。
为什么典型配置在sga增加到1536m之后就不再增加了呢?)3,定制数据库实例的内存时:pga,根据实际的情况,可以增加到足够大。
sga的共享池,日志缓冲池如果过大的话,会对性能产生较大的负面影响。
sga的java池,建议20msga的共享池,建议sga的22%sga的large池,建议sga的9.9%sga的缓冲区,可以设置到足够大。
(问题三,当创建数据库实例时,如果选择的是自动管理内存的话,这时的内存结构参数的值都是0。
如果只想要手动管理sga的一个缓冲区的话,是不是必然将重新手动设置sga的全部内存结构?包括重新设置sga本身的大小?)4,问题四:请问一下,如果手动设置的话,那sga和pga的内存比应该多少比较合适?以上只是个人的一些理解,有可能有错误的地方,希望大家能帮忙指出,最后将做出总结,将错误的地方改正。
Oracle 11.2.0.4 RAC for RHEL 6.4目录1. 硬件环境 (2)1.1 主机配置 (2)1.2 存储划分 (2)2. 软件环境 (2)2.1 操作系统 (2)2.2 软件准备 (3)3. 网络环境 (3)4.系统安装配置 (3)4.1关闭操作系统防火墙 (3)4.2修改系统内核参数 (3)4.3设置ORACLE用户资源 (4)4.4修改用户验证选项 (4)4.5创建数据库用户 (5)4.6修改用户环境变量 (5)4.7创建软件安装目录 (6)4.8配置/etc/hosts (6)4.9 建立SSH等效 (7)4.10配置NTP时间同步 (7)5. 安装GRID集群软件 (8)5.1软件安装包准备 (8)5.2安装环境检测 (9)5.3安装GRID软件 (9)5.4 安装完成验证 (20)6. 安装ORACLE软件 (20)7. 创建ASM磁盘组 (27)8.创建数据库 (29)8.1 使用DBCA创建数据库实例 (29)8.2 检查数据库状态 (36)1. 硬件环境1.1 主机配置1.2 存储划分2. 软件环境2.1 操作系统操作系统版本:Red Hat Enterprise Linux 6.4 Server x86_642.2 软件准备数据库安装包包括GRID和ORACLE安装包:p1*******_112040_Linux-x86-64_1of7.zipp1*******_112040_Linux-x86-64_2of7.zipp1*******_112040_Linux-x86-64_3of7.zip 上传解压可用3. 网络环境4.系统安装配置4.1关闭操作系统防火墙chkconfig iptables offchkconfig ip6tables offchkconfig NetworkManager offvi /etc/sysconfig/selinux修改配置为"SELINUX=disabled"service iptables saveservice iptables stopchkconfig iptables offSUSE11系统则为:检查防护墙状态:chkconfig --list|grep fire关闭防火墙:chkconfig SuSEfirewall2_setup offchkconfig SuSEfirewall2_init off4.2修改系统内核参数vi /etc/sysctl.conf## FOR ORACLE RACkernel.msgmni = 2878kernel.msgmax = 8192kernel.msgmnb = 65536kernel.shmmax = 135274323968kernel.shmall = 4294967296kernel.shmmni = 4096kernel.sem = 4000 512000 100 128fs.file-max = 6815744net.ipv4.tcp_sack=0net.ipv4.tcp_timestamps=0net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576vm.min_free_kbytes = 524288fs.aio-max-nr= 3145728vm.nr_hugepages = 51266(niko优化值:34816,SUSE系统中这个参数未添加,默认为20148)#bin/sysctl –p ## 应用加载内核配置4.3设置用户资源# vi /etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536优化后配置:* soft nproc 20480* hard nproc 16384* soft nofile 10240* hard nofile 65536oracle soft memlock -1oracle hard memlock -14.4修改用户验证选项# vi /etc/pam.d/loginsession required pam_limits.so4.5创建数据库用户# groupadd -g 501 oinstall# groupadd -g 502 dba# groupadd -g 503 oper# groupadd -g 504 asmadmin# groupadd -g 505 asmdba# groupadd -g 506 asmoper# useradd -u 1100 -g oinstall -G dba,asmadmin,asmdba,asmoper grid# useradd -u 1101 -g oinstall -G dba,oper,asmadmin,asmdba oracle# passwd grid ## 修改GRID用户密码,为: 28ORCLb=30_2dL# passwd oracle ## ## 修改ORACLE用户密码,为: 28dGRID=30_2Dl4.6修改用户环境变量--FOR ORACLE 用户# vi /home/oracle/.bash_profileexport TMP=/tmpexport TMPDIR=$TMPexport ORACLE_SID=bacdb1 ## 节点2修改相应的bacdb2实例名export ORACLE_BASE=/oracle/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1export ORACLE_UNQNAME=bacdbexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORACLE_TERM=xtermexport PATH=/usr/sbin:/usr/local/bin:$PATHexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export EDITOR=viexport LANG=en_USexport NLS_LANG=American_america.ZHS16GBKexport NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'umask 022--FOR GRID用户# vi /home/grid/.bash_profileexport TMP=/tmpexport TMPDIR=$TMPexport ORACLE_SID=+ASM1 ## 节点2修改相应的+ASM2实例名export ORACLE_BASE=/oracle/app/crs_baseexport ORACLE_HOME=/oracle/app/crs_homeexport ORACLE_TERM=xtermexport NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'export TNS_ADMIN=$ORACLE_HOME/network/adminexport PATH=/usr/sbin:$PATHexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export EDITOR=viexport LANG=en_USexport NLS_LANG=American_america.ZHS16GBKumask 0224.7创建软件安装目录-- bac-db-01,bac-db02两节点# mkdir -p /oracle/app/crs_base# mkdir -p /oracle/app/crs_home# chown -R grid:oinstall /oracle/app/crs_base# chown -R grid:oinstall /oracle/app/crs_home# chmod 775 /oracle/app/crs_base# chmod 775 /oracle/app/crs_home# mkdir -p /oracle/app/oracle# chown -R oracle:oinstall /oracle/app/oracle# chmod 775 /oracle/app/oracle# mkdir -p /oracle/app/oraInventory# chown -R grid:oinstall /oracle/app/oraInventory# chmod 775 /oracle/app/oraInventory4.8配置/etc/hosts--bac-db-01,bac-db02两节点# vi /etc/hosts# bac-db-01 for ORACLE RAC10.165.0.9 bac-db-0110.165.0.11 bac-db-01-vip192.168.255.249 bac-db-01-priv# bac-db-02 for ORACLE RAC10.165.0.10 bac-db-0210.165.0.12 bac-db-02-vip192.168.255.250 bac-db-02-priv# scan-ip for ORACLE RAC10.165.0.13scan-cluster4.9建立SSH等效--建议做该项配置(需要分别再oracle和grid用户下做这个配置,也可以在安装的时候由oracle 自动创建)## 两个节点执行mkdir ~/.sshtouch ~/.ssh/authorized_keysssh-keygen -t rsassh-keygen -t dsacat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keyscat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys## 根据要求执行scp ~/.ssh/authorized_keys bac-db-02:~/.ssh/authorized_keys-bak ##bac-db-01执行scp ~/.ssh/authorized_keys bac-db-01:~/.ssh/authorized_keys-bak ##bac-db-02执行融合通信机器安装时scp ~/.ssh/authorized_keys zabbixdb02:~/.ssh/authorized_keys-bak ## zabbixdb01执行scp ~/.ssh/authorized_keys zabbixdb01:~/.ssh/authorized_keys-bak ## zabbixdb02执行南基wabp安装时:scp ~/.ssh/authorized_keys nj-wabp02:~/.ssh/authorized_keys-bak ##nj-wabp01执行scp ~/.ssh/authorized_keys nj-wabp01:~/.ssh/authorized_keys-bak ## nj-wabp02执行## 两个节点执行cat ~/.ssh/authorized_keys-bak >> ~/.ssh/authorized_keys## 测试两节点SSH等效ssh bac-db-01 ##节点2执行ssh bac-db-02 ##节点1执行将私有IP的等效建立起来,需要分别再两节点root、grid、oracle用户执行:Ssh zabbixdb01-priv dateSsh zabbixdb02-priv date4.10配置NTP时间同步(ORACLE11G 不推荐使用NTP服务,可以不配置)##bac-db-01配置,NTP服务器# vi /etc/ntp.confserver 127.127.1.0fudge 127.127.1.0 stratum 11driftfile /var/lib/ntp/driftbroadcastdelay 0.008# chkconfig ntpd on ##服务开机启动# service ntpd restart ##服务重启#vi /etc/sysconfig/ntpdOPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"(niko:优化修改值,添加-x,阻止时间往后调)NTPDATE_OPTIONS=””(niko:优化修改值)SYNC_HWCLOCK=yes ##写入硬件时钟##bac-db-02配置,NTP客户端# vi /etc/ntp.confserver 10.165.0.9 preferdriftfile /var/lib/ntp/driftbroadcastdelay 0.008vi /etc/sysconfig/ntpdOPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"(niko:优化修改值,添加-x,阻止时间往后调)NTPDATE_OPTIONS=””(niko:优化修改值)SYNC_HWCLOCK=yes ##写入硬件时钟# chkconfig ntpd on ##服务开机启动# service ntpd restart ##服务重启##检查NTP时钟同步是否生效# pgrep ntpd #-- 查看服务进程号# ntpq -p 用ntpstat #-- 检查时间服务器同步的状态# netstat -ntlup #-- 查看端口使用情况!SUSE11环境下配置:配置文件为/etc/sysconfig/ntp重启NTP服务:rcntp restart查看NTP服务状态:chkconfig ntp –lis 全off表示服务停止设置开机启动:chkconfig ntp on5. 安装GRID集群软件5.1软件安装包准备上传GRID和ORACLE软件安装包到服务器p1*******_112040_Linux-x86-64_1of7.zipp1*******_112040_Linux-x86-64_2of7.zipp1*******_112040_Linux-x86-64_3of7.zip解压安装包unzip p1*******_112040_Linux-x86-64_*安装补丁包cd grid/rpmrpm –ivh cvuqdisk-1.0.9-1.rpm5.2安装环境检测# su – grid# ./runcluvfy.sh stage -pre crsinst -n bac-db-01,bac-db-02 -fixup -verbose详细查看检查结果,修正安装检查不通过的项,在满足安装要求情况下安装GRID软件./runcluvfy.sh stage -pre crsinst -n zabbixdb01,zabbixdb02 -fixup -verbose >>/tmp/check.log./runcluvfy.sh stage -pre crsinst -n nj-wabp01,nj-wabp02 -fixup -verbose >>/tmp/check.log检测过程会发现部分包没有安装,可以在上下载,或者利用yum install 下载。
实测操作系统:redhat Linux 6.3 64位(内核:2.6.32-279.el6.x86_64)Oracle版本:Oracle 11g 64位检查安装环境查看内存和交换分区# free查看内核版本# uname -r2.6.32-71.el6.i6861、安装RPMbinutils-2.20.51.0.2-5.11.el6.i686.rpmcloog-ppl-0.15.7-1.2.el6.i686.rpmcompat-gcc-34-3.4.6-19.el6.i686.rpmcompat-gcc-34-c++-3.4.6-19.el6.i686.rpmcompat-gcc-34-g77-3.4.6-19.el6.i686.rpmcompat-glibc-headers-2.5-46.2.i686.rpmcompat-libf2c-34-3.4.6-19.el6.i686.rpmcompat-libgcc-296-2.96-144.el6.i686.rpmcompat-libstdc++-296-2.96-144.el6.i686.rpmcompat-libstdc++-33-3.2.3-69.el6.i686.rpmcpp-4.4.4-13.el6.i686.rpmelfutils-libelf-0.148-1.el6.i686.rpmelfutils-libelf-devel-0.148-1.el6.i686.rpmgcc-4.4.4-13.el6.i686.rpmgcc-c++-4.4.4-13.el6.i686.rpmgcc-gfortran-4.4.4-13.el6.i686.rpmgcc-java-4.4.4-13.el6.i686.rpmglibc-2.12-1.7.el6.i686.rpmglibc-common-2.12-1.7.el6.i686.rpmglibc-devel-2.12-1.7.el6.i686.rpmglibc-headers-2.12-1.7.el6.i686.rpmglibc-utils-2.12-1.7.el6.i686.rpmkernel-2.6.32-71.el6.i686.rpmkernel-headers-2.6.32-71.el6.i686.rpmksh-20100621-2.el6.i686.rpmlibaio-0.3.107-10.el6.i686.rpmlibaio-devel-0.3.107-10.el6.i686.rpmlibgcc-4.4.4-13.el6.i686.rpmlibstdc++-4.4.4-13.el6.i686.rpmlibstdc++-devel-4.4.4-13.el6.i686.rpmmake-3.81-19.el6.i686.rpmmpfr-2.4.1-6.el6.i686.rpmpdksh-5.2.14-1.src.rpmppl-0.10.2-11.el6.i686.rpmsysstat-9.0.4-11.el6.i686.rpmunixODBC-2.2.14-11.el6.i686.rpmunixODBC-devel-2.2.14-11.el6.i686.rpm安装方法rpm –ivh *2、修改/etc/sysctl.conf添加如下内容fs.file-max = 6815744fs.aio-max-nr = 1048576kernel.shmmni = 4096kernel.shmmax = 536870912kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 4194304net.core.rmem_max = 4194394net.core.wmem_default = 262144net.core.wmem_max = 1048576---------------------------------------------------可能需要的设置fs.aio-max-nr =fs.file-max =---------------------------------------------------使修改立刻生效# sysctl -p3、关闭selinux【需重启】vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 创建oracle目录、用户、用户组、授权3、创建用户组、用户# groupadd oinstall# groupadd dba# useradd –m –g oinstall –G dba oracle# passwd oracle创建目录# mkdir /home/db授权chown –R oracle:oinstall /home/dbchmod –R 777 /home/db为oracle用户设置环境变量4、修改/home/oracle/bash_profile添加如下内容ORACLE_SID=orclORACLE_BASE=/home/db/oracleORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1export ORACLE_SID ORACLE_BASE ORACLE_HOMEPATH=$PATH:/$ORACLE_HOME/bin:$HOME/binexport PATH5、修改/etc/security/limits.conf添加如下内容oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 655366、修改/etc/pam.d/login添加如下内容session required /lib/security/pam_limits.so7、修改/etc/profileif [ $USER = "oracle" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifi安装oracle11g8、使用oracle用户登录通过命令进入oracle11g软件存放目录,运行./ runInstaller 图形安装界面可以参考《Oracle_11g_R2安装手册(图文教程)》9、以root用户执行如下两条脚本sh /home/db/oraInventory/orainstRoot.shChanging permissions of /home/db/oraInventory.Adding read,write permissions for group.Removing read,write,execute permissions for world.Changing groupname of /home/db/oraInventory to oinstall.The execution of the script is complete.sh /home/db/oracle/product/11.2.0/dbhome_1/root.shRunning Oracle 11g root.sh script...The following environment variables are set as:ORACLE_OWNER= oracleORACLE_HOME= /home/db/oracle/product/11.2.0/dbhome_1Enter the full pathname of the local bin directory: [/usr/local/bin]:Copying dbhome to /usr/local/bin ...Copying oraenv to /usr/local/bin ...Copying coraenv to /usr/local/bin ...Creating /etc/oratab file...Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root.sh script.Now product-specific root actions will be performed.Finished product-specific root actions.10、配置监听器11、启动监听器[oracle@sqc ~]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-OCT-2013 20:59:13Copyright (c) 1991, 2009, Oracle. All rights reserved.Starting /home/db/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionSystem parameter file is/home/db/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraLog messages written to /home/db/oracle/diag/tnslsnr/sqc/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.254)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.254)(PORT=1521))) STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date 25-OCT-2013 20:59:14Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File/home/db/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraListener Log File /home/db/oracle/diag/tnslsnr/sqc/listener/alert/log.xml Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.254)(PORT=1521)))The listener supports no servicesThe command completed successfully12、启动实例[oracle@sqc ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 25 21:03:23 2013Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> conn / as sysdbaConnected to an idle instance.11.编后语:编写脚本,系统重启后,自动启动服务# vi /app/oracle/oraclestart.sh# !/bin/shsu - oracle <<EONexport ORACLE_SID=ixdbalsnrctl startsqlplus /nolog <<EOFconn / as sysdbastartupexitEOFexitEON:wq!# echo "/app/oracle/oraclestart.sh">>/etc/rc.local--------------------------------------------------------------------------------------------------------------------------------- 11.后话,编写脚本,系统重启后,自动启动服务# vi /app/oracle/oraclestart.sh# !/bin/shsu - oracle <<EONexport ORACLE_SID=ixdbalsnrctl startsqlplus /nolog <<EOFconn / as sysdbastartupexitEOFexitEON:wq# echo "/app/oracle/oraclestart.sh">>/etc/rc.local--------------------------------------------------------------------------------------------------------------------------------- 查看信息可以用more修改用vi插入信息用I保存信息用esc :wq!---------------------------------------------------------------------------------------------------------------------------------。
目录一、硬件要求二、软件三、系统安装注意四、安装Oracle前的系统准备工作五、安装Oracle,并进行相关设置一、硬件要求1、内存& swapMinimum: 1 GB of RAMRecommended: 2 GB of RAM or more检查内存情况# grep MemTotal /proc/meminfo# grep SwapTotal /proc/meminfo2、硬盘由于CentOS安装后差不多有4~5G,再加上Oracle等等的安装,所以请准备至少10G的硬盘空间。
检查磁盘情况# df -h二、软件准备系统平台:CentOS 7.5(x86_64)CentOS-7-x86_64-DVD-1804Oracle版本:Oracle 11gp1*******_112040_Linux-x86-64_1of7.zip、p1*******_112040_Linux-x86-64_2of7.zip 三、系统安装注意系统安装时一定要安装桌面模式,否则无法安装oracle,另外请勿开启SELinux,oracle官方不建议使用SELinux,防火墙也请暂时关闭,减少安装时的困扰。
为防止Oracle安装过程中出现乱码,建议使用英文作为系统语言,进行Oracle的安装工作。
本文中所描述的系统命令,未经特殊标示,均为“#”代表root权限,“$”代表oracle权限。
四、系统准备工作首先,请先以root账号登入作一些前置设定作业。
1、关闭防火墙//临时关闭systemctl stop firewalld//禁止开机启动systemctl disable firewalld2、安装依赖包以下RPM包拷贝到/opt目录下,进入opt目录,执行以下命令。
rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpmrpm -ivh cpp-4.8.5-28.el7.x86_64.rpmrpm -ivh kernel-headers-3.10.0-862.el7.x86_64.rpmrpm -ivh glibc-headers-2.17-222.el7.x86_64.rpmrpm -ivh glibc-devel-2.17-222.el7.x86_64.rpmrpm -ivh gcc-4.8.5-28.el7.x86_64.rpmrpm -ivh libstdc++-devel-4.8.5-28.el7.x86_64.rpmrpm -ivh gcc-c++-4.8.5-28.el7.x86_64.rpmrpm -ivh libaio-devel-0.3.109-13.el7.x86_64.rpmrpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpmrpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpmrpm -ivh pkgconfig-0.27.1-4.el7.x86_64.rpmrpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpmrpm -ivh elfutils-libelf-devel-0.170-4.el7.x86_64.rpm3、创建Oracle用户与组在这里只讨论单主机环境,不考虑RAC环境的配置。
Oracle 11GOracle 11g是甲骨文公司在2007年年7月12日推出的最新数据库软件,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。
相对过往版本而言,Oracle 11g具有了与众不同的特性。
·数据库重演数据库重演(Database Replay)这一特性可以捕捉整个数据的负载,并且传递到一个从备份或者standby数据库中创建的测试数据库上,然后重演负责以测试系统调优后的效果。
·SQL重演(SQL Replay)和前一特性类似。
但只是捕捉SQL负载部分,而不是全部负载。
·计划管理(Plan Management)这一特性允许你将某一特定语句的查询计划固定下来,无论统计数据变化还是数据库版本变化都不会改变她的查询计划。
·自动诊断知识库(Automatic Diagnostic Repository ADR)当Oracle探测到重要错误时,会自动创建一个事件(incident),并且捕捉到和这一事件相关的信息,同时自动进行数据库健康检查并通知DBA。
此外,这些信息还可以打包发送给Oracle支持团队。
·事件打包服务(Incident Packaging Service)如果你需要进一步测试或者保留相关信息,这一特性可以将与某一事件相关的信息打包。
并且你还可以将打包信息发给oracle支持团队。
·基于特性打补丁(Feature Based Patching)在打补丁包时,这一特性可以使你很容易区分出补丁包中的那些特性是你正在使用而必须打的。
企业管理器(EM)使你能订阅一个基于特性的补丁服务,因此企业管理器可以自动扫描那些你正在使用的特性有补丁可以打。
·自动SQL优化(Auto SQL Tuning)10g的自动优化建议器可以将优化建议写在SQL profile中。
而在11g中,你可以让oracle自动将能3倍于原有性能的profile应用到SQL语句上。
Oracle 建立分区表在Oracle 11g数据库中,根据对表或索引的分区方法可以创建五种类型的分区表:范围分区、散列分区、列表分区、组合范围散列分区和组合范围列表分区。
每种分区表都有自己的特点,在创建分区表时,应当根据表应用情况选择合理的分区类型。
1.范围分区表范围分区就是根据分区字段的取值范围进行分区,将数据存储在不同的分区段中。
如果表的数据可以按照逻辑范围进行划分,并在不同范围内分布比较均衡,那么可以使用范围分区。
例如,根据日期值进行分区,将不同日期的数据存储在不同的分区上。
如图10-2所示,假设有一个销售表SALES,该表的数据总量达到1000G,每个季度平均250G。
如果使用普通表存储数据,那么1000G数据会存放到一个表段SALES中,那么在统计一季度销售数据时需要扫描1000G数据;如果使用分区表,则可以将一、二、三、四季度数据分别存放到不同分区段中,此时统计一季度销售数据时只需要扫描250G的数据。
显而易见,使用范围分区可以大大降低I/O次数,从而提高了磁盘I/O性能。
普通表分区表一季度销售数据二季度销售数据三季度销售数据四季度销售数据图10-2 分区表与普通表例如,下面的示例建立一个范围分区表,将每个季度的销售数据部署到不同的表分区段。
建立范围分区时,必须指定分区方法RANGE,分区列以及每个分区列值的具体范围。
示例如下:SQL> create table sales_range(2 customer_id number(3),3 sales_amount number(10,2),4 sales_date date not null5 )partition by range(sales_date)(6 partition part_01 values less than(to_date('2008-04-01','yyyy-mm-dd')) tablespace space01,7 partition part_02 values less than(to_date('2008-07-01','yyyy-mm-dd')) tablespace space02,8 partition part_03 values less than(to_date('2008-10-01','yyyy-mm-dd')) tablespace space03,9 partition part_o4 values less than(maxvalue) tablespace space0410 );表已创建。
Oracle11g分区表创建(⾃动按年、⽉、⽇分区)前⾔:⼯作中有⼀张表⼀年会增长100多万的数据,量虽然不⼤,可是表字段多,所以⼀年下来也会达到 1G,⽽且只增不改,故考虑使⽤分区表来提⾼查询性能,提⾼维护性。
11g ⽀持⾃动分区,不过得在创建表时就设置好分区。
如果已经存在的表需要改分区表,就需要将当前表 rename后,再创建新表,然后复制数据到新表,然后删除旧表就可以了。
⼀、为什么要分区(Partition) 1、⼀般⼀张表超过2G的⼤⼩,ORACLE是推荐使⽤分区表的。
2、这张表主要是查询,⽽且可以按分区查询,只会修改当前最新分区的数据,对以前的不怎么做删除和修改。
3、数据量⼤时查询慢。
4、便于维护,可扩展:11g 中的分区表新特性:Partition(分区)⼀直是 Oracle 数据库引以为傲的⼀项技术,正是分区的存在让Oracle ⾼效的处理海量数据成为可能,在 Oracle 11g 中,分区技术在易⽤性和可扩展性上再次得到了增强。
5、与普通表的 sql ⼀致,不需要因为普通表变分区表⽽修改我们的代码。
⼆、oracle 11g 如何按天、周、⽉、年⾃动分区2.1 按年创建numtoyminterval(1, 'year')--按年创建分区表create table test_part(ID NUMBER(20) not null,REMARK VARCHAR2(1000),create_time DATE)PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'year'))(partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));--创建主键alter table test_part add constraint test_part_pk primary key (ID) using INDEX;-- Create/Recreate indexescreate index test_part_create_time on TEST_PART (create_time);2.2 按⽉创建numtoyminterval(1, 'month')--按⽉创建分区表create table test_part(ID NUMBER(20) not null,REMARK VARCHAR2(1000),create_time DATE)PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'month'))(partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));--创建主键alter table test_part add constraint test_part_pk primary key (ID) using INDEX;2.3 按天创建NUMTODSINTERVAL(1, 'day')--按天创建分区表create table test_part(ID NUMBER(20) not null,REMARK VARCHAR2(1000),create_time DATE)PARTITION BY RANGE (CREATE_TIME) INTERVAL (NUMTODSINTERVAL(1, 'day')) (partition part_t01 values less than(to_date('2018-11-12', 'yyyy-mm-dd')));--创建主键alter table test_part add constraint test_part_pk primary key (ID) using INDEX;2.4 按周创建NUMTODSINTERVAL (7, 'day')--按周创建分区表create table test_part(ID NUMBER(20) not null,REMARK VARCHAR2(1000),create_time DATE)PARTITION BY RANGE (CREATE_TIME) INTERVAL (NUMTODSINTERVAL (7, 'day')) (partition part_t01 values less than(to_date('2018-11-12', 'yyyy-mm-dd')));--创建主键alter table test_part add constraint test_part_pk primary key (ID) using INDEX;2.5 测试可以添加⼏条数据来看看效果,oracle 会⾃动添加分区。
在 Oracle 数据库 11g中操作分区
目的
本教程演示了如何在 Oracle 数据库 11g中使用各种分区技术。
所需时间
大约 50 分钟
主题
本教程包括下列主题:
概述
前提条件
使用引用分区
使用基于虚拟列的分区
总结
概述
在Oracle 数据库11g中,可以使用多种新技术对表数据进行分区,以提高数据的检索性能、优化数据组织。
这些技术包括:
返回主题列表
前提条件
开始本教程之前,您应该:
1.安装 Oracle 数据库 11g。
2.
将partition.zip文件下载并解压缩到您的工作目录中。
3.打开一个终端窗口,执行以下命令:
sqlplus / as sysdba
@setup
返回主题列表
使用引用分区
引用分区通过从父表继承分区键(而非复制键列),使得具有父-子关系的表能
够在逻辑上均分。
分区键通过现有的父-子关系解析,由现行的主键或外键约束
实施。
逻辑相关性还可以自动级联分区维护操作,从而使应用程序开发更轻松且
更不易出错。
执行以下步骤,进一步了解引用分区的用法:
1.
打开一个终端窗口,以SH用户身份登录 SQL*Plus。
执行create_orders.sql脚本,
创建按范围分区的ORDERS表。
@create_orders
2.
执行create_order_items.sql脚本,创建按引用分区的ORDER_ITEMS表。
@create_order_items
3.
执行query_dict_1.sql脚本,查看按引用分区的ORDER_ITEMS表的相关信息。
@query_dict_1
4.
执行insert_orders.sql脚本,将数据插入ORDERS表。
@insert_orders
5.
执行show_data_placement.sql脚本,观察如何将数据置于分区中的同一位置。
@show_data_placement
6.
要显示智能化分区连接,请将 _parallel_broadcast_enabled 参数设为 FALSE 。
执行以下命令:
ALTER SESSION SET "_parallel_broadcast_enabled"=FALSE;
7.
执行show_plan.sql脚本,查看有关智能化分区连接的信息。
@show_plan
8.
执行drop_partition.sql脚本,从ORDERS表中删除p_before_jan_2006分区。
@drop_partition
9.
执行query_dict_2.sql脚本,查看有关表的信息。
@query_dict_2
10.
执行add_partition.sql脚本,添加p2007_01分区。
@add_partition
11.
执行cleanup_1.sql脚本,删除本例中创建的分区和表空间。
@cleanup_1
返回主题列表使用间隔分区
间隔分区可以完全自动化范围分区的创建。
管理新分区的创建是一项繁琐的高重复性任务。
对于可预测的小范围分区添加(例如,添加每日的新分区)尤其如此。
间隔分区可以通过按需创建分区来自动化该操作。
执行以下步骤,了解间隔分区的用法:
1.
执行create_newsales.sql脚本,创建按间隔分区的NEWSALES表。
@create_newsales
2.
执行query_dict_3.sql脚本,查询USER_TAB_PARTITIONSNEWSALES字典视图,以了解有关NEWSALES表的信息。
@query_dict_3
3.
执行insert_newsales.sql脚本,将新数据插入NEWSALES表,以创建新分区(段)。
@insert_newsales
4.
执行query_dict_4.sql脚本,查看有关新分区的信息。
@query_dict_4
5.
执行merge_partition.sql脚本,合并两个分区。
@merge_partition
@query_dict_5
7.
执行create_hist_newsales.sql脚本,创建一个按范围分区的表。
@create_hist_newsales
@query_dict_6
9.
执行insert_histnewsales_row_1.sql脚本,在HISTORICAL_NEWSALES表中插入一行。
插入操作将失败,因为分区表目前还不是一个按间隔分区的表。
@insert_histnewsales_row_1
10.
执行alter_hist_newsales.sql脚本,将分区表更改为按间隔分区的表。
@alter_hist_newsales
11.
执行insert_histnewsales_row_2.sql脚本,再次尝试在该表中插入一行。
@insert_histnewsales_row_2
12.
执行query_dict_7.sql脚本,查看有关分区的信息。
@query_dict_7
返回主题列表
返回主题列表
使用基于虚拟列的分区
您可以使用虚拟列分区对在表的虚拟列上定义的键列进行分区。
虚拟列通过求解表达式来定义。
虚拟列可以在创建或修改表时定义。
通常,从逻辑上对对象进行分区的业务需求并不是以一对一的方式与现有列匹配。
Oracle 分区功能已经得到增强,它允许在虚拟列上定义分区策略,因此可以实现更全面的业务需求匹配。
本例中的员工分类如下:
执行以下步骤,了解基于虚拟列的分区的用法:
1.
执行create_employees.sql脚本,创建包含虚拟列的EMPLOYEES表。
@create_employees
2.
执行insert_employees.sql脚本,在EMPLOYEES表中插入多个行。
@insert_employees
3.
执行select_employees.sql脚本,查询EMPLOYEES表。
@select_employees
4.
执行create_prod_ret.sql脚本,创建包含虚拟列的PRODUCT_RETURNS表,虚拟列用于对表进行分区。
@create_prod_return
5.
执行insert_prod_ret.sql脚本,在PRODUCT_RETURNS表中插入多个行。
@insert_prod_ret
执行select_prod_return.sql脚本,查询PRODUCT_RETURNS表。
@select_prod_return
7.
执行xplan_prod_ret.sql脚本,为使用定义虚拟列的表达式的查询显示分区修剪。
@xplan_prod_ret
返回主题列表总结
在本教程中,您学习了如何:
使用引用分区
使用间隔分区
使用虚拟列分区。