yum install avahi-compat-libdns_sd.x86_64 compat-db.i386 compat-db.x86_64 compat-gcc-34.x86_64 compat-gcc-34-c++.x86_64 compat-gcc-34-g77.x86_64 compat-glibc.i386 ompat-glibc.x86_64 compat-glibc-headers.x86_64 compat-libf2c-34.x86_64 compat-libgcc-296.i386 compat-libstdc++-296.i386 compat-libstdc++-33.i386 compat-libstdc++-33.x86_64 java-1.4.2-gcj-compat.x86_64 elfutils-libelf.i386 elfutils-libelf-devel.x86_64 elfutils-libelf-devel-static.x86_64 compat-glibc.x86_64 glibc-devel.i386 glibc-devel.x86_64 glibc-headers.x86_64
yum -y install openssl-devel
2、修改系统版本
vi /etc/redhat-release
redhat-4
#CentOS release 5.7 (Final)
3、修改内核参数
#vi /etc/sysctl.conf
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
然后sysctl -p 应用系统参数。
4、建立安装Oracle需要的用户、组及目录
(1)新增组和用户:
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle
(2)创建Oracle的安装目录,并把权限付给oracle用户:
mkdir -p /oracle/product/10.2.0/ chown -R oracle.oinstall /oracle
5、设置oracle用户的shell limit
#vi /etc/security/limits.conf
增加下面的内容到文件 /etc/security/limits.conf 文件中:
oracle soft nproc 2047oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
增加下面的内容到文件 /etc/pam.d/login 中,使shell limit生效:
session required /lib/security/pam_limits.so
6、修改/etc/hosts
把127.0.0.1改为具体的ip地址,注意最好去掉那些无用的,格式如下:
ip地址 – 主机名 – localhost
7、关闭SeLinux
因为SeLinux对oracle有影响,所以把Secure Linux设成无效,编辑文件/etc/selinux/config :
SELINUX=disabled
当然你也可以用图形界面下的工具 (系统 > 管理 > 安全级别和防火墙),选择SELinux页面并且设为无效。
接下来切换到oracle用户
8、配置Oracle用户的环境变量
登录到oracle用户并且配置环境变量,编辑/home/oracle目录下的.bash_profile文件
vi .bash_profile
增加下面的内容到文件 .bash_profile
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=mediadb
#export ORACLE_SID=vasdb
export NLS_LANG='simplified chinese_china.ZHS16GBK'
export PATH=$PATH:$ORACLE_HOME/bin
export LANG=en_US
export EDITOR=vi
alias 'sqlplus=rlwrap sqlplus'
alias 'rman=rlwrap rman'
if [ $USER = "oracle" ]; then
fi
里面的SID在安装数据库时候如果修改了,安装完后需要回来重新修改SID。修改完用“source .bash_profile”使其生效。
环境已经搭建完成,然后开始静默安装。
1. 建立静默安装的配置文件
cd /srv/database/response
vi enterprise01.rsp
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME=<Value Unspecified>
FROM_LOCATION="../stage/products.xml"
NEXT_SESSION_RESPONSE=<Value Unspecified>
ORACLE_HOME="/oracle/product/10.2.0"
ORACLE_HOME_NAME="OraDbHome1"
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"}
DEINSTALL_LIST={"oracle.server","10.2.0.1.0"}
SHOW_SPLASH_SCREEN=false
SHOW_WELCOME_PAGE=false
SHOW_NODE_SELECTION_PAGE=false
SHOW_SUMMARY_PAGE=false
SHOW_INSTALL_PROGRESS_PAGE=false
SHOW_CONFIG_TOOL_PAGE=false
SHOW_XML_PREREQ_PAGE=false
SHOW_ROOTSH_CONFIRMATION=true
SHOW_END_SESSION_PAGE=false
SHOW_EXIT_CONFIRMATION=false
NEXT_SESSION=false
NEXT_SESSION_ON_FAIL=false
SHOW_DEINSTALL_CONFIRMATION=false
SHOW_DEINSTALL_PROGRESS=false
RESTART_SYSTEM=<Value Unspecified>
RESTART_REMOTE_SYSTEM=<Value Unspecified>
REMOVE_HOMES=<Value Unspecified>
ORACLE_HOSTNAME=<Value Unspecified>
SHOW_END_OF_INSTALL_MSGS=false
CLUSTER_NODES=<Value Unspecified>
COMPONENT_LANGUAGES={"en"}
INSTALL_TYPE="EE"
s_nameForDBAGrp=dba
s_nameForOPERGrp=dba
n_configurationOption=3
s_ASMSYSPassword=""
RESPONSEFILE_VERSION=2.2.1.0.0
UNIX_GROUP_NAME=<Value Unspecified>
FROM_LOCATION="../stage/products.xml"
NEXT_SESSION_RESPONSE=<Value Unspecified>
ORACLE_HOME="/oracle/product/10.2.0"
ORACLE_HOME_NAME="OraDbHome1"
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"}
DEINSTALL_LIST={"oracle.server","10.2.0.1.0"}
SHOW_SPLASH_SCREEN=false
SHOW_WELCOME_PAGE=false
SHOW_NODE_SELECTION_PAGE=false
SHOW_SUMMARY_PAGE=false
SHOW_INSTALL_PROGRESS_PAGE=false
SHOW_CONFIG_TOOL_PAGE=false
SHOW_XML_PREREQ_PAGE=false
SHOW_ROOTSH_CONFIRMATION=true
SHOW_END_SESSION_PAGE=false
SHOW_EXIT_CONFIRMATION=false
NEXT_SESSION=false
NEXT_SESSION_ON_FAIL=false
SHOW_DEINSTALL_CONFIRMATION=false
SHOW_DEINSTALL_PROGRESS=false
RESTART_SYSTEM=<Value Unspecified>
RESTART_REMOTE_SYSTEM=<Value Unspecified>
REMOVE_HOMES=<Value Unspecified>
ORACLE_HOSTNAME=<Value Unspecified>
SHOW_END_OF_INSTALL_MSGS=false
CLUSTER_NODES=<Value Unspecified>
COMPONENT_LANGUAGES={"en"}
INSTALL_TYPE="EE"
s_nameForDBAGrp=dba
s_nameForOPERGrp=dba
n_configurationOption=3
s_ASMSYSPassword=""
s_ASMSYSPasswordAgain=""
n_dbType=<Value Required>
oracle.assistants.server:s_responseFileName=<Value Unspecified>
s_globalDBName=<Value Required>
s_dbSid=<Value Required>
s_dbRetChar="WE8ISO8859P1"
b_loadExampleSchemas=false
b_useDBControl=true
b_receiveEmailNotification
s_dlgEMSMTPServer=<Value Unspecified>
s_dlgEMEmailAddress=<Value Unspecified>
s_dlgEMCentralAgentSelecte
n_dbStorageType=<Value Unspecified>
s_mountPoint=<Value Unspecified>
s_rawDeviceMapFileLocation
b_enableAutoBackup=false
b_useFileSystemForRecovery
s_dlgRBORecoveryLocation=<Value Unspecified>
s_dlgRBOUsername=<Value Unspecified>
s_dlgRBOPassword=<Value Unspecified>
s_dlgASMCfgDiskGroupName="DATA"
s_dlgASMCfgDiskDiscoverySt
n_dlgASMCfgRedundancySelec
sl_dlgASMCfgSelectableDisks
sl_dlgASMCfgDiskSelections=<Value Unspecified>
sl_dlgASMDskGrpSelectedGrou
b_centrallyManageASMInstan
b_useSamePassword=true
s_superAdminSamePasswd=<Value Unspecified>
s_superAdminSamePasswdAgai
sl_superAdminPasswds=<Value Unspecified>
sl_superAdminPasswdsAgain=<Value Unspecified>
n_performUpgrade=0
n_upgradeDB=0
s_dbOHSelectedForUpgrade=""
s_dbSIDSelectedForUpgrade=""
n_upgradeASM=0
s_dbSelectedUsesASM="no"
sl_upgradableSIDBInstances={}
sl_upgradableRACDBInstances
n_dbSelection=0
b_stateOfUpgradeASMCheckbo
b_stateOfUpgradeDBCheckbox
b_oneClick=false
s_dlgASMCfgRedundancyValue
s_dlgASMCfgExistingFreeSpa
s_dlgASMCfgNewDisksSize=""
s_dlgASMCfgAdditionalSpace
上述是只有安装了software,等下要继续安装database
. 开始安装
cd /srv/database/
./runInstaller -silent -responseFile /srv/database/response/enterprise01.rsp
安装完后执行如下脚本。
/oracle/product/10.2.0/root.sh
/oracle/oraInventory/orainstRoot.sh
至此Oracle的产品已经安装完成,可是目前为止我们还没有建立数据库。
由于没有X界面无法启动dbca ,所以不能用dbca来帮我们建立数据库。这时候你可能会想到用create database 语句来建立数据库,可是语法实在是繁琐,并且还要运行许多的
oracle脚本 。
下面我们来利用oracle提供的种子数据库还原一个数据库出来。
假设我们要建立的数据库的名称为mediadb 。
2.建立我们所需的目录
mkdir -p /oracle/admin/mediadb/{a,b,u,c}dump
mkdir -p /oracle/oradata/mediadb
找到oracle为种子数据库提供的控制文件并copy至/oracle/oradata/mediadb
cp /oracle/product/10.2.0/assistants/dbca/templates/Seed_Database.ctl
3.建立pfile文件
cd /oracle/product/10.2.0/dbs/
vi initorcl.ora
*.db_name=SEEDDATA #注:因为Seed_Database.ctl控制文件中记录的db_name为SEEDDATA。
control_files='/u01/app/oracle/oradata/orcl/Seed_Database.ctl'
compatible=10.2.0.1.0
4.启动数据库到mount状态
sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production . Mon May 12 21:48:47 2008
Copyright (c) 1982, 2005, Oracle.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
Database mounted.
使用默认的参数建立spfile
SQL> create spfile from pfile;
重新启动数据库
SQL> shutdown immediate
SQL> startup mount
更改sga_max_size,sga_target参数的值 。
SQL> alter system set sga_max_size=200M scope=spfile;
SQL> alter system set sga_target=160M scope=spfile;
然后再次重新启动数据库
SQL> shutdown immediate
SQL> startup mount
5.用rman连接数据库
[oracle@lsuperman dbs]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on ÐÇÆÚËÄ 12ÔÂ 15 03:18:21 2011
Copyright (c) 1982, 2005, Oracle.
connected to target database: SEEDDATA (DBID=3901070184, not open)
RMAN> list backupset;
using target database control file instead of recovery catalog
List of Backup Sets
===================
BS Key
------- ---- -- ---------- ----------- ------------ ---------------
1
可以看到,我们可以利用/ade/aime_ship_10gR2_050630.0022/oracle/oradata/Seed_Database.dfb这个备份集来还原数据库。
但 是很明显我们系统中并没有这样一个文件/ade/aime_ship_10gR2_050630.0022/oracle/oradata/Seed_Database.dfb,但是查找发现路径/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates下有 Seed_Database.dfb文件 。
有两种方法,一个是建立一个软链接/ade/aime_10.2_lnx_push/oracle /oradata/Seed_Database.dfb 指向/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates /Seed_Database.dfb 。另一个是创建目录/ade/aime_10.2_lnx_push/oracle/oradata/
并将Seed_Database.dfb copy至其下 。
ln -s /oracle/product/10.2.0/assistants/dbca/templates/Seed_Database.dfb
6.还原数据库
rman target
bk文件如下:
run {
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/system01.dbf' to '/oracle/oradata/mediadb/system01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/sysaux01.dbf' to '/oracle/oradata/mediadb/sysaux01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/undotbs01.dbf' to '/oracle/oradata/mediadb/undotbs01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/users01.dbf' to '/oracle/oradata/mediadb/users01.dbf';
restore database;
switch datafile all;
}
数据文件恢复完毕以后,缺少日志文件。
因为控制文件中记录的log file路径为 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/
所以要先创建相应的目录。
mkdir -p /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/
SQL> alter database open resetlogs; 然后数据库自动在相应的路径下创建的log [oracle@lsuperman ~]$ cd /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/[oracle@lsuperman seeddata]$ ls redo01.log redo02.log redo03.log temp01.dbf [oracle@lsuperman seeddata]$ cp * /oracle/oradata/mediadb/ 启动数据库到mount状态,并更改日志和临时文件的路径 alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo03.log' to '/oracle/oradata/mediadb/redo03.log'; alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo01.log' to '/oracle/oradata/mediadb/redo01.log'; alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/redo02.log' to '/oracle/oradata/mediadb/redo02.log'; alter database rename file '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/temp01.dbf' to '/oracle/oradata/mediadb/temp01.dbf'; SQL> alter database open; 到此数据库已经建立,并且数据文件也放到了我们期待的地方。但是还有一个问题,就是数据库名称不是我们事先期待的。 SQL> show parameter name; NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ db_file_name_convert string db_name string SEEDDATA db_unique_name string SEEDDATA global_names boolean FALSE instance_name string mediadb lock_name_space string log_file_name_convert string service_names string SEEDDATA 下面我们将数据库名称SEEDDATA改成我们需要的mediadb 。注意此时仅仅更改参数文件的值是不行的,因为控制文件中同样也记录着数据库的名称。
7.更改数据库名称
备份控制文件脚本
SQL> alter database backup controlfile to trace as '/tmp/ctl.txt';
SQL> create pfile from spfile;
将spfile删除,编辑pfile将db_name="SEEDDATA" 改成 db_name="mediadb" 。
vi /tmp/ctl.txt 改成:
CREATE CONTROLFILE REUSE DATABASE "SEEDDATA" SET DATABASE "MEDIADB" RESETLOGS
LOGFILE
DATAFILE
CHARACTER SET US7ASCII
;
然后数据库启动成nomount状态,
startup nomount;
@/tmp/ctl.txt;
alter database open resetlogs;
8.控制文件更名并实现冗余
修改参数文件initorcl.ora
*.control_files='/oracle/oradata/mediadb/control01.ctl','/oracle/oradata/mediadb/control02.ctl','/oracle/oradata/mediadb/control03.ctl'
cd /oracle/oradata/mediadb
mv Seed_Database.ctl control01.ctl
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
9.undo段的创建
首先创建undo表空间
create undo tablespace undo01 datafile '/oracle/oradata/mediadb/undo01.dbf' size 500M reuse autoextend on
其次
create spfile from pfile;
shutdown immeidate;
startup;
alter system set undo_management="AUTO" scope=spfile;
alter system set undo_tablespace = 'UNDO01' scope= spfile;
shutdown immediate;
startup;
show parameter undo
完成!!