CentOS 5安装oracle 11g R2数据库

1、检查操作系统是否支持对应版本的oracle
Centos相当如对应的Red Hat Enterprise Linux版本
具体请查阅oracle安装文档

2、检查内核,内存,交换区大小,硬盘大小是否符合要求
cat /proc/version(linux核心版本)lsb_release –id(linux版本)
grep MemTotal /proc/meminfo(检查内存)
grep SwapTotal /proc/meminfo(检查交换区)
df -h /tmp(检查tmp空间大小)

3、检查相应的rpm包的情况
rpm –qa | grep pagename(grep是搜索)
主要包有:
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
unixODBC-devel-2.2.11 (32 bit)
pdksh-5.2.14(官方文档没有给出,但是安装检测时提示需要)

4、安装缺少的rpm包
rpm –ivh pagename(根据提示,如果缺少依赖包,也需要加上去)
yum install pagename(联网时直接安装)

5、添加组和用户
/usr/sbin/groupadd oinstall(添加oinstall组)
/usr/sbin/groupadd -g 502 dba(添加dba组)
/usr/sbin/useradd -u 502 -g oinstall -G dba oracle(添加用户oracle,主组oinstall,辅助组dba)
passwd oracle(修改oracle用户密码)

6、创建文件夹并修改组和用户所属关系和相关权限
mkdir -p /u01/oracle(创建文件u01/oracle)
chown -R oracle:oinstall /u01(使得u01文件夹输入oracle用户和oinstall组)
chmod -R 775 /u01(修改u01文件夹访问权限)—可选(最好执行下)

7、添加/etc/hosts中dns解析信息
12.1.1.8 xifenfei

8、在/etc/security/limits.conf中添加用户限制信息
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240

9、 添加 /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so

10、修改或者添加/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
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
—/sbin/sysctl –p(重新加载这些参数,不用重启系统)
参数意义解释:
kernel.shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。当然Oralce 的建议是希望一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有甚至轻微的性能下降的隐患。Oracle 安装文档建议32Bit Linux系统设置kernel.shmmax 为32Bit操作系统内存最大的限制值,也就是4G 。所以一般来说,1-4G 的物理内存,可以直接设置shmmax 为最大物理内存即可,那么SGA 肯定在一个共享内存段中,32Bit Linux 系统物理内存大于4G 的设置为4G 即可。总之,一般设置shmmax >=SGA(32Bit 系统是否支持到1.7G 以上SGA 需要注意) 。如果是64Bit的 Linux 操作系统,shmmax 设置为大于SGA_MAX_SIZE 即可。
kernel.shmall 参数取的这个值是ORACLE默认的值,kernel.shmall 参数是控制共享内存页数。Linux 共享内存页大小为4KB, 共享内存段的大小= 共享内存页大小*共享内存页数。一个共享内存段的最大大小是16G,需要共享内存页数16GB/4KB=16777216KB/4KB=4194304(页)。如果你的内存不超过8G,那么8GB/4KB=8388608KB/4KB=2097152 (页)。个人认为如果你的内存大小不超过8G,就默认使用2097152大小;如果内存大小为16G,则需要调大kernel.shmall参数至4194304,这时可以将shmmax 参数调整到16G了, 同时增大你的SGA_MAX_SIZE 和SGA_TARGET 为12G左右(您想设置的SGA 最大大小,当然也可以是2G~14G 等,还要协调PGA参数及OS 等其他内存使用,不能设置太满)kernel.shmmni 内核参数是共享内存段的最大数量(注意这个参数不是shmmin,是shmmni, shmmin 表示内存段最小大小)。shmmni 缺省值4096 ,一般肯定是够用了。

11、编辑vi /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
–注意空格,在用户切换时使用su – username,这样才会加载后面的环境变量的配置信息(不要使用su username切换)

12、配置环境变量
在oracle用户下的.bash_profile文件中添加下面信息
ORACLE_HOSTNAME=xifenfei(在/etc/hosts中配置的dns信息)
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH
NLS_LANG=AMERICAN_AMERICA.UTF8(为了防止乱码数据库要是utf8编码,如果数据库选择了gbk的编码,这里则使用ZHS16GBK)
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH NLS_LANG ORACLE_HOSTNAME

13、在安装过程中为了防止出现如下错误提示
Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.安装之前使用root用户执行:xhost local:oracle

14、使用向导安装,根据提示解决出现的问题
15、完成安装并执行提示脚本(全部默认就可以了)

Note:注意检查nobody用户的存在(id nobody)—-一般情况下系统都存在

rman之catalog管理

1、catalog配置

--创建表空间
create tablespace cata datafile 'C:\oracle\product\10.2.0\oradata\rmanxff\cata01.dbf' size 1024m;
--创建用户
 create user cata identified by cata default tablespace cata quota unlimited on cata;
--授权用户
grant create session,resource,recovery_catalog_owner to cata;
--rman连接到catalog数据库rmanxff上
rman catalog cata/cata@rmanxff
--建立恢复目录
create catalog;
--rman连接到target数据库orcl上
connect target sys/xifenfei@orcl
--注册目标数据库
register database;
--catalog登录
rman target sys/xifenfei@orcl catalog cata/cata@rmanxff
--同步catalog 
resync catalog;

控制文件中rman信息保存的时间由control_file_record_keep_time参数决定

2、rman的脚步管理

--创建脚步
create script b{
 backup incremental level 0
 format 'c:\temp\l0_%U.bak' database;
 sql 'alter system archive log current';}
--执行脚本
run{execute script b;}
--print脚步
print script b;
--修改脚本
 replace script b
{backup database format 'c:\temp\11_%U.bak';
sql 'alter system archive log current';}
--删除脚本
delete script b;
--列车脚本
list script names;
--脚本导出到文件
print script b to file 'c:\a.txt';
--文件导入成脚本
create script a from file 'c:\a.txt';
--通过文件修改脚步
replace script b from file 'c:\a.txt';

oracle之数据备份恢复——不完全恢复

一、用户管理备份的数据库
1、restore备份的数据库
2、startup nomount/mount(看具体情况,如果和控制文件要nomount)
3、三种恢复方式选择
recover database until change scn
recover database until time ‘yyyy-mm-dd hh24:mi:ss’
recover database until cancel
如果利用备份控制文件恢复
在3的后面加上using backup controlfile
4、alter database open resetlogs

二、rman备份的数据库
run{
startup mount;
sql “alter session set nls_date_format =”yyyy-mm-dd hh24:mi:ss””;
set until time=’2010-09-01:20:25:29′;
restore database;
recover database;
alter database open resetlogs;}
使用set until time “to_date(‘2010-09-01:20:25:29′,’yyyy-mm-dd hh24:mi:ss’)”

oracle之备份恢复——数据库备份完全恢复

一、noarchive模式下
1、如果不是磁盘损坏或者像转移数据文件路径,直接拷贝datafile、logfile、controlfile,tempfile文件到原来相对应目录即可
2、如果是磁盘损坏或者要转移路径(备份了全部文件)
1)创建pfile文件,并修改pfile中的controlfile的路径,指到新的控制文件路径,再使用pfile创建spfile(在nomount状态下)
2)启动数据库到mount状态,使用alter database rename file ‘oldname’ to ‘newname’,主要修改datafile、logfile、controlfile文件路径和文件名
3)alter database open

3、没有备份redo file文件
1)创建pfile文件,并修改pfile中的controlfile的路径,指到新的控制文件路径,再使用pfile创建spfile(在nomount状态下)
2)启动数据库到mount状态,使用alter database rename file ‘oldname’ to ‘newname’,主要修改datafile、tempfile,controlfile文件路径和文件名
3)recover database until cancel using backup controlfile;
4)alter database open resetlogs;重建日志文件

二、archive模式
如果是system、undo表空间,要在mount模式下恢复,其他表空间可以在open模式下,使用offline进行恢复,然后online
对表空间对应的datafile执行offline和online操作效果同tablespace
recover database(只能用于mount)
recover datafile(mount和open均可)
recover tablespace(只能用于open)

三、恢复没有备份的数据文件
1、非system表空间文件
2、该数据文件创建后的所有日志文件均存在
3、使用 alter database create datafile ‘filepath’创建文件
4、recover datafile 恢复

四、利用老controlfile文件在表空间有变动的情况下恢复
1、恢复老的controlfile文件到原来控制文件位置
2、recover database using backup controlfile ;尝试着恢复
3、利用日志文件(包括联机在线和归档日志)输入filename,先利用归档日志,然后利用联机日志,然后有数据文件错误的提示
4、查看v$datafile,利用alter database rename file修改奇怪命名的数据文件
如:alter database rename file ‘C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED0
0007’ to ‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FF01.DBF’;
5、recover database using backup controlfile until cancel;
尝试归档日志和联机日志文件
6、alter database open resetlogs;成功

五、rman备份恢复(本脚本是datafile恢复实例)
run{set newname for datafile 7 to ‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\xifenfei\FF01.DBF’;
restore datafile 7;
switch datafile 7;
recover datafile 7;
alter database open;}

oracle之rman增量备份

1、差异性增量备份
backup incremental level 0 database format ‘c:\rman\L0_%U.bak’;
backup incremental level 1 database format ‘c:\rman\L1C_%U.bak’;

2、累积性增量备份
backup incremental level 0 database format ‘c:\rman\L0_%U.bak’;
backup incremental level 1 cumulative database format ‘c:\rman\L1C_%U.bak’;

Note:差异性备份是同一级别不备份,而累积性备份是同一级别的也备份
备份的级别可以为0、1、2、3、4

3、启用/关闭oracle块更改跟踪
开启
alter database enable block change tracking using file
‘c:\oracle\product\10.2.0\admin\orcl\bdump\block_trace.txt‘
关闭
alter database disable block change tracking;