Centos安装oracle10g

来源:互联网 发布:淘宝美工修图视频 编辑:程序博客网 时间:2024/05/16 09:04
1、安装Oracle所需软件包
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  glibc.x86_64 glibc.i686 kernel-headers.x86_64 libaio.i386  libaio.x86_64 libaio-devel.i386 libaio-devel.x86_64
 libstdc++-devel.i386 libXp.i386 libXp.x86_64  libXpm.x86_64 sysstat.x86_64 readline-devel.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 oinstallgroupadd dbauseradd -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 2047
oracle 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
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -p 65536
    else
        ulimit -u 16384 -n 65536
    fi
    umask 022
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=false
s_dlgEMSMTPServer=<Value Unspecified>
s_dlgEMEmailAddress=<Value Unspecified>
s_dlgEMCentralAgentSelected=<Value Unspecified>
n_dbStorageType=<Value Unspecified>
s_mountPoint=<Value Unspecified>
s_rawDeviceMapFileLocation=<Value Unspecified>
b_enableAutoBackup=false
b_useFileSystemForRecovery=true
s_dlgRBORecoveryLocation=<Value Unspecified>
s_dlgRBOUsername=<Value Unspecified>
s_dlgRBOPassword=<Value Unspecified>
s_dlgASMCfgDiskGroupName="DATA"
s_dlgASMCfgDiskDiscoveryString=<Value Unspecified>
n_dlgASMCfgRedundancySelected=<Value Unspecified>
sl_dlgASMCfgSelectableDisks=<Value Unspecified>
sl_dlgASMCfgDiskSelections=<Value Unspecified>
sl_dlgASMDskGrpSelectedGroup={" "," "," "," "}
b_centrallyManageASMInstance=true
b_useSamePassword=true
s_superAdminSamePasswd=<Value Unspecified>
s_superAdminSamePasswdAgain=<Value Unspecified>
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_stateOfUpgradeASMCheckbox=false
b_stateOfUpgradeDBCheckbox=false
b_oneClick=false
s_dlgASMCfgRedundancyValue=""
s_dlgASMCfgExistingFreeSpace="0"
s_dlgASMCfgNewDisksSize=""
s_dlgASMCfgAdditionalSpaceNeeded="0 MB"

上述是只有安装了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  /oracle/oradata/mediadb/


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.  All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area  117440512 bytes
Fixed Size                  1218004 bytes
Variable Size              58722860 bytes
Database Buffers           50331648 bytes
Redo Buffers                7168000 bytes
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.  All rights reserved.

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  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
      Full    89.98M     DISK        00:00:52     22-10ÔÂ-05    
        BP Key: 1   Status: AVAILABLE  Compressed: YES  Tag:
        Piece Name: /ade/aime_ship_10gR2_050630.0022/oracle/oradata/Seed_Database.dfb
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time   Name
  ---- -- ---- ---------- ---------- ----
        Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/system01.dbf
        Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/undotbs01.dbf
        Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/sysaux01.dbf
        Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/users01.dbf

可以看到,我们可以利用/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 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/Seed_Database.dfb


6.还原数据库

rman target   cmdfile=/home/oracle/bk

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]$ lsredo01.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                 stringdb_name                              string                 SEEDDATAdb_unique_name                       string                 SEEDDATAglobal_names                         boolean                FALSEinstance_name                        string                 mediadblock_name_space                      stringlog_file_name_convert                stringservice_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  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/oradata/mediadb/redo01.log'  SIZE 50M,
  GROUP 2 '/oracle/oradata/mediadb/redo02.log'  SIZE 50M,
  GROUP 3 '/oracle/oradata/mediadb/redo03.log'  SIZE 50M
DATAFILE
  '/oracle/oradata/mediadb/system01.dbf',
  '/oracle/oradata/mediadb/undotbs01.dbf',
  '/oracle/oradata/mediadb/sysaux01.dbf',
  '/oracle/oradata/mediadb/users01.dbf'
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

完成!!


原创粉丝点击