Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336528
  • 博文数量: 30
  • 博客积分: 3021
  • 博客等级: 少校
  • 技术积分: 409
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-01 11:32
文章分类

全部博文(30)

文章存档

2022年(1)

2015年(2)

2014年(1)

2013年(1)

2012年(2)

2011年(2)

2010年(3)

2009年(10)

2008年(8)

分类: Oracle

2013-03-15 23:31:15

环境CentOS 5.3+Oracle 10.2.0.1.0
1. 安装前的准备工作
 
 1.1 创建oracle用户及组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
 
 1.2 建立目录
# mkdir /oracle
# chown -R oracle:oinstall /oracle
 
 1.3 配置系统内核参数
cat >> /etc/sysctl.conf < ########oracle add########
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
########oracle add end########
EOF

#执行生效
sysctl -p

  1.4 设置用户资源限制
a)
cat >> /etc/security/limits.conf < ####oracle add####
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
####oracle add end####
EOF

b)
cat >> /etc/pam.d/login < ####oracle add####
session    required     /lib/security/pam_limits.so
####oracle add end####
EOF

c)
cat >> /etc/profile < ####oracle add####
if [ \$USER = "oracle" ]; then
    if [ \$SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
    umask 022
fi
####oracle add end####
EOF

#############################################
注:c)步骤执行后,进入oracle用户的时候会报错
# su - oracle
-bash: ulimit: open files: cannot modify limit: 不允许的操作
造成此问题的原因是root用户设置了ulimit -n打开文件数的上限值为65535,oracle用户ulimit -n设置为65536后超过了root用户打开文件数的上限,
只要增大root用户对应的ulimit -n的上限值即可。
解决办法:
在执行c)步骤前,先在root用户下执行以下操作,增大root用户的ulimit -n值即可解决出现的问题:
echo "ulimit -n 65536 > /dev/null 2>&1">>/etc/profile
#############################################



  1.5 安装依赖包
# rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel  libXp make sysstat unixODBC unixODBC-devel|grep "not installed"|sort
package libaio-devel is not installed
package libXp is not installed
package sysstat is not installed
package unixODBC-devel is not installed
在redhat 5.3的光盘里找到上述的rpm包,并安装
# rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]
# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:libXp                  ########################################### [100%]
# rpm -ivh sysstat-7.0.2-3.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:sysstat                ########################################### [100%]
# rpm -ivh unixODBC-devel-2.2.11-7.1.i386.rpm
Preparing...                ########################################### [100%]
   1:unixODBC-devel         ########################################### [100%]
   
   1.6 修改系统版本
修改后结果如下:
# cat /etc/redhat-release
CentOS release 4 (Final)   

2. 安装数据库并手动建库  
   2.1 设置oracle环境变量

$ vi ~/.bash_profile
##增加如下内容:
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=ora10g
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export PATH=${PATH}:$HOME/bin:$ORACLE_HOME/bin:/usr/bin:/bin:/sbin:/usr/sbin

使环境变量生效:
$ source ~/.bash_profile

   2.2 编辑静默安装需要的应答文件
以enterprise.rsp为例
$ cat /opt/oracle10gsetup/database/response/enterprise.rsp |grep -v ^#|grep -v ^$ >/home/oracle/myinstalloraen.rsp
$ cat myinstalloraentest.rsp |grep ""
ORACLE_HOME=
ORACLE_HOME_NAME=
s_nameForDBAGrp=
s_nameForOPERGrp=
n_configurationOption=
n_dbType=
s_globalDBName=
s_dbSid=
其中“Vaule Required”字样的属性值为必填;涉及到文件路径的,必须使用全路径;应该文件中的默认值不可以删除,且各属性项的顺序不可以改变。
修改后如下:
ORACLE_HOME=/oracle/product/10.2.0/db_1  ##Oracle家目录(oracle软件安装后所在的目录)
ORACLE_HOME_NAME=OraHome1                ##Oracle家目录名字
s_nameForDBAGrp=oinstall            
s_nameForOPERGrp=oinstall
n_configurationOption=3                  ##数据库安装的动作类型:1.安装并创建数据库 2.配置一个ASM实例 3.仅安装数据库软件
n_dbType=1                               ##创建的数据库类型:1.通用目的的数据库 2.联机事务处理的数据库 3.用作数据仓库的数据库 4.高级配置
s_globalDBName=ora10g                    ##数据库的全局名
s_dbSid=ora10g                           ##数据库实例名
s_dbRetChar="ZHS16GBK"                   ##数据库字符集

  2.3 然后执行安装:
$ ./runInstaller  -silent -responseFile /home/oracle/myinstalloraen.rsp
最后以 root 权限运行脚本
/oracle/oraInventory/orainstRoot.sh
/oracle/product/10.2.0/db_1/root.sh
安装完成。

  2.4 手动建库
  2.4.1环境变量设置
  环境变量已经在数据库安装阶段设置完毕,此处不需再次设置
  2.4.2创建目录
$ mkdir -p admin/ora10g/adump
$ mkdir -p admin/ora10g/bdump
$ mkdir -p admin/ora10g/cdump
$ mkdir -p admin/ora10g/udump
$ mkdir -p oradata/ora10g/disk1
$ mkdir -p oradata/ora10g/disk2
$ mkdir -p oradata/ora10g/disk3
 
  2.4.3生成密码文件
$ orapwd --help
Usage: orapwd file= password= entries= force=

  where
    file - name of password file (mand),
    password - password for SYS (mand),
    entries - maximum number of distinct DBA and     force - whether to overwrite existing file (opt),
OPERs (opt),
  There are no spaces around the equal-to (=) character.
 
$ cd $ORACLE_HOME/dbs  
$ orapwd file=orapwORA10G password=oracle entries=30
$ chmod u+s orapwORA10G
$ ll -tr
总计 36
-rw-r----- 1 oracle oinstall  8385 1998-09-11 init.ora
-rw-r----- 1 oracle oinstall 12920 2001-05-03 initdw.ora
-rwSr----- 1 oracle oinstall  5120 03-12 10:58 orapwORA10G


  2.4.4生成pfile文件,并由pfile文件生成spfile
$ cd $ORACLE_HOME/dbs
$ cat init.ora |grep -v ^#|grep -v ^$ >initora10g.ora
$ vi initora10g.ora  ##修改后如下
db_name=ora10g
db_files = 100                                                         # SMALL  
db_file_multiblock_read_count = 8                                     # SMALL  
db_block_buffers = 100                                                 # SMALL  
shared_pool_size = 3500000                                            # SMALL
log_checkpoint_interval = 10000
processes = 200                                                        # SMALL  
parallel_max_servers = 5                                              # SMALL
log_buffer = 32768                                                    # SMALL
max_dump_file_size = 10240      # limit trace file size to 5 Meg each
global_names = TRUE
control_files = (/oracle/oradata/ora10g/disk1/control01.ctl, /oracle/oradata/ora10g/disk2/control2.ctl,/oracle/oradata/ora10g/disk3/control03.ctl)

生成spfile文件
$ sqlplus "/as sysdba"
SQL> create spfile from pfile;

File created.
SQL> startup nomount;
ORA-00371: not enough shared pool memory, should be atleast 72265318 bytes

################################################################################
解决ORA-00371问题的办法如下(增大shared_pool_size值后,重新生成spfile):
#db_block_buffers = 100                                                 # SMALL  
shared_pool_size = 268435456                                            # SMALL
################################################################################

SQL> create spfile from pfile;

File created.
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  348127232 bytes
Fixed Size                  1219352 bytes
Variable Size             293602536 bytes
Database Buffers           50331648 bytes
Redo Buffers                2973696 bytes


  2.4.5执行建库脚本
在官方文档()
Books → Administrator's Guide → 2 Creating an Oracle Database → Manually
Creating an Oracle Database → Creating the Database → Step 7: Issue the CREATE DATABASE Statement
取得建库脚本:
 
CREATE DATABASE ora10g
   USER SYS IDENTIFIED BY oracle
   USER SYSTEM IDENTIFIED BY oracle
   LOGFILE GROUP 1 ('/oracle/oradata/ora10g/disk1/redo01.log') SIZE 100M,
           GROUP 2 ('/oracle/oradata/ora10g/disk2/redo02.log') SIZE 100M,
           GROUP 3 ('/oracle/oradata/ora10g/disk3/redo03.log') SIZE 100M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   MAXINSTANCES 1
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   DATAFILE '/oracle/oradata/ora10g/disk1/system01.dbf' SIZE 500M REUSE
   EXTENT MANAGEMENT LOCAL
   SYSAUX DATAFILE '/oracle/oradata/ora10g/disk1/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/oracle/oradata/ora10g/disk1/users01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/oracle/oradata/ora10g/disk1/temp01.dbf'
      SIZE 500M REUSE
   UNDO TABLESPACE undotbs
      DATAFILE '/oracle/oradata/ora10g/disk1/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
      
将其保存为createora10gdb.sql,然后执行

SQL> @/oracle/createora10gdb.sql

################################################################################
执行建库sql的时候,报以下错误:
CREATE DATABASE ora10g
*
ERROR at line 1:
ORA-30014: operation only supported in Automatic Undo Management mode
报错原因:UNDO未处于自动管理模式,该参数默认是MANUAL
SQL> set line 200;
SQL> show parameter undo_management;

NAME                                 TYPE            VALUE
------------------------------------ --------------- ------------------------------
undo_management                      string          MANUAL
解决办法:将UNDO置为自动管理模式
SQL> alter system set undo_management=AUTO scope=spfile;

System altered.
再重新生成一下pfile
SQL> create pfile from spfile;

File created.
###############################################################################

重启数据库然后再查询:
SQL> show parameter undo_management;

NAME                                 TYPE            VALUE
------------------------------------ --------------- ------------------------------
undo_management                      string          AUTO

再执行建库sql
SQL> @/oracle/createora10gdb.sql
CREATE DATABASE ora10g
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
##########################################################################################
查看alter日志报错如下:
Errors in file /oracle/admin/ora10g/udump/ora10g_ora_5969.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-02236: invalid file name
Tue Mar 12 18:50:20 2013
Errors in file /oracle/admin/ora10g/udump/ora10g_ora_5969.trc:
ORA-01501: CREATE DATABASE failed
ORA-01519: error while processing file '?/rdbms/admin/sql.bsq' near line 6262
ORA-00604: error occurred at recursive SQL level 1
ORA-02236: invalid file name
继续查看/oracle/admin/ora10g/udump/ora10g_ora_5969.trc内容如下:
*** 2013-03-12 18:50:20.428
ORA-00604: error occurred at recursive SQL level 1
ORA-02236: invalid file name
Offending statement at line 6262
CREATE  TABLESPACE TBS_1 DATAFILE  SEGMENT SPACE MANAGEMENT MANUAL
ORA-01501: CREATE DATABASE failed
ORA-01519: error while processing file '?/rdbms/admin/sql.bsq' near line 6262
ORA-00604: error occurred at recursive SQL level 1
ORA-02236: invalid file name
发现其中提到TBS_1这个表空间,回去查看建库sql的时候,里面有如下内容:
SYSAUX DATAFILE '/oracle/oradata/ora10g/disk1/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE tbs_1
对比侯老师建库sql,发现SYSAUX的默认表空间为tbs_1,将此两行内容更改为如下内容:
SYSAUX DATAFILE '/oracle/oradata/ora10g/disk1/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/oracle/oradata/ora10g/disk1/users01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
##########################################################################################
第三次执行建库sql
$ rm -rf disk1/*
$ rm -rf disk2/*
$ rm -rf disk3/*
SQL> startup nomount;
SQL> @/oracle/createora10gdb.sql

Database created.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE
建库成功。


  2.4.6执行必须的sql脚本
SQL> @?/rdbms/admin/catalog.sql
SQL> @?/rdbms/admin/catproc.sql

  2.4.7查看数据库版本
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

5 rows selected.
 

阅读(3486) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~