您的位置:首页 > 数据库 > Oracle

Centos安装oracle10g

2012-11-28 11:30 288 查看
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 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 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

------- ---- -- ---------- ----------- ------------ ---------------

1       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

  ---- -- ---- ---------- ---------- ----

  1       Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/system01.dbf

  2       Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/undotbs01.dbf

  3       Full 525875     22-10ÔÂ-05 /ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/sysaux01.dbf

  4       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]$ 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            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ORACLE orcale