转://oracle 11G+ASM for Linux手工建库

时间:2022-11-29 12:49:59

环境描述
环境:Oracle Linux 6.5 + ORACLE 11g R2+ASM
ORACLE的程序已经安装完毕。但是没有创建任何数据库。

实验内容
安装ORACLE11g数据库,不使用DBCA,而是逐一执行命令行的形式创建数据库。

具体操作步骤
步骤1:设置SID和环境变量
[oracle@ocm ~]$more ocmdb.env
ORACLE_SID=ocmdb;export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/11.2.0/db_1;export ORACLE_HOME
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH

步骤2:创建安装数据库所需的目录
mkdir -p /u01/app/oracle/admin/ocmdb/adump
mkdir -p /u01/app/oracle/admin/ocmdb/dpdump
mkdir -p /u01/app/oracle/admin/ocmdb/pfile
mkdir -p /u01/app/oracle/cfgtoollogs/dbca/ocmdb
mkdir -p /u01/app/oracle/flash_recovery_area

步骤3:认证方式
1、 密码文件认证
/u01/app/oracle/11.2.0/db_1/bin/orapwd file=/u01/app/oracle/11.2.0/db_1/dbs/orapwocmdb force=y
/u01/app/grid/11.2.0/grid/bin/setasmgidwrap o=/u01/app/oracle/11.2.0/db_1/bin/oracle
2、 OS认证

步骤4:创建parameter文件
设置初始化参数
手工编写一个init.ora文件,存储到/u01/app/oracle/11.2.0/db_1/dbs/目录下,文件内容如下:
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Cache and I/O
###########################################
db_block_size=8192
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# Database Identification
###########################################
db_domain=""
db_name="ocmdb"
###########################################
# File Configuration
###########################################
db_create_file_dest="+DATA"
db_recovery_file_dest="/u01/app/oracle/flash_recovery_area"
db_recovery_file_dest_size=5218762752
###########################################
# Miscellaneous
###########################################
compatible=11.2.0.4.0
diagnostic_dest=/u01/app/oracle
memory_target=834666496
###########################################
# Processes and Sessions
###########################################
processes=150
###########################################
# Security and Auditing
###########################################
audit_file_dest="/u01/app/oracle/admin/ocmdb/adump"
audit_trail=db
remote_login_passwordfile=EXCLUSIVE
###########################################
# Shared Server
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=ocmdbXDB)"
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_tablespace=UNDOTBS1

步骤5:执行数据库创建
[oracle@ocm ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Apr 15 06:10:13 2014
SQL> startup nomount pfile="/u01/app/oracle/11.2.0/db_1/dbs/init.ora";

执行数据库创建操作:
CREATE DATABASE "ocmdb"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE SIZE 700M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE SIZE 600M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET WE8MSWIN1252
NATIONAL CHARACTER SET AL16UTF16
LOGFILE GROUP 1 SIZE 51200K,
GROUP 2 SIZE 51200K,
GROUP 3 SIZE 51200K
user sys identified by er345liu
user system identified by er345liu;

这里需要注意的几个问题:
1, 创建数据库的语句里,涉及到的数据库实例名字,表空间名称,与INIT.ORA里面的,要严格对应,有差别就会创建失败。
2, 重做日志组的每个成员,不能太小。例如日志组成员文件大小只有1MB,则必定报错。

执行完了创建数据库命令,这时候数据库是什么样子的呢?
对应的控制文件,联机归档日志文件,数据文件都已经创建好了。此时默认的表空间是SYSTEM,这个当然不行,需要单独创建一个用户表空间,用来存储用户数据。
CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE SIZE 5M AUTOEXTEND ON NEXT
1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DEFAULT TABLESPACE "USERS";

下面把系统核心的存储过程,数据字典等对象创建上。
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catalog.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catblock.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catproc.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catoctk.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/owminst.plb;
这几个sql文件可以打开直接看里面的东西,不做深入研究的话,没必要管他的细节,知道要执行一下就好。

由于这个过程比较长,建议把显示的结果记录下来。
connect "SYS"/"er345liu" as SYSDBA
set echo on
spool /u01/app/oracle/admin/ocmdb/scripts/CreateDBCatalog.log append
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catalog.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catblock.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catproc.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catoctk.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/owminst.plb;
connect "SYSTEM"/"er345liu"
@/u01/app/oracle/11.2.0/db_1/sqlplus/admin/pupbld.sql;
connect "SYSTEM"/"er345liud"
set echo on
spool /u01/app/oracle/admin/ocmdb/scripts/sqlPlusHelp.log append
@/u01/app/oracle/11.2.0/db_1/sqlplus/admin/help/hlpbld.sql helpus.sql;
spool off
spool off
到此位置,创建数据库的基本操作已经完成。

步骤6 附加功能模块的安装
创建Jserver
connect "SYS"/"er345liu" as SYSDBA
set echo on
spool /u01/app/oracle/admin/ocmdb/scripts/JServer.log append
@/u01/app/oracle/11.2.0/db_1/javavm/install/initjvm.sql;
@/u01/app/oracle/11.2.0/db_1/xdk/admin/initxml.sql;
@/u01/app/oracle/11.2.0/db_1/xdk/admin/xmlja.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catjava.sql;
@/u01/app/oracle/11.2.0/db_1/rdbms/admin/catexf.sql;
spool off

执行企业管理器的安装操作
connect "SYS"/"er345liu" as SYSDBA
set echo off
spool /u01/app/oracle/admin/ocmdb/scripts/emRepository.log append
@/u01/app/oracle/11.2.0/db_1/sysman/admin/emdrep/sql/emreposcre /u01/app/oracle/
11.2.0/db_1 SYSMAN er345liu TEMP ON; ---设置SYSMAN账户密码为er345liu
WHENEVER SQLERROR CONTINUE;
spool off

步骤7 结束安装收尾
所有模块执行完毕后,再次以SYS身份连接到数据库实例:
connect sys/er345liu as SYSDBA
shutdown immediate; --- 正常关闭
startup nomount pfile="/u01/app/oracle/11.2.0/db_1/dbs/init.ora"; ---启动,到mount状态
alter database archivelog; -----切换数据库到归档模式,然后打开
alter database open;
create spfile='/u01/app/oracle/11.2.0/db_1/dbs/spfileocmdb.ora' FROM pfile=/u01/app/oracle/11.2.0/db_1/dbs/init.ora '; ----创建一个新的spfile
shutdown immediate; ---关闭再打开一次,使用新的spfile了
startup ;
alter user SYSMAN identified by "er345liu" account unlock; ---把几个新用户解锁,后面企业管理器要使用到。
alter user DBSNMP identified by "er345liu" account unlock;
execute utl_recomp.recomp_serial(); ---重新编译一下无效的对象。
退出SQLPLUS。