安装前准备:
1.操作系统:red hat enterprise linux 5.4(此安装适用于oracle linux版本,本人已通过验证)
数据库版本:oracle 10g 10.2.0.1
内存:1024MB
cpu:1个
虚拟机:vmware workstation 9.0.0
(以上安装在虚拟机上完成,与实际生产环境略有不同。)
2.配置linux操作系统环境,符合oracle软件的安装要求,这个是基础配置,这里要非常仔细才能不出现异常问题。
3.安装步骤:
vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648(根据实际的物理内存大小分配)
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 = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
sysctl -p 是配置生效
vi /etc/security/limits.conf
oracle soft nproc(进程的最大数目) 2047
oracle hard nproc 16384
oracle soft nofile(打开文件的最大数目) 1024
oracle hard nofile 65536
官方推荐的设置,此设置已经够用了,无需变动。提高 Linux 系统对oracle软件的性能优势,增加 oracle 用户的 shell 的限制。
vi /etc/pam.d/login 添加
session required /lib/security/pam_limits.so
session required pam_limits.so(添加pam模块认证,优化用户连接认证)
创建oracle用户和组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
设置oracle用户的环境变量
在oracle用户下vi .bash_profile
export TMPDIR=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/db_1
export ORACLE_SID=nndb
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
使配置生效: . ./.bash_profile或者source .bash_profile
此设置也是官方推荐的基础变量,在此基础上可以添加其他变量看用户是否有偏好的设置而定,如有需要可以自己设置。
在这里已经满足oracle软件所需的环境变量了。
4.安装oracle 10g R2软件
oracle用户解压和root用户都行
unzip 10201_database_linux32.zip
cd database目录
./runInstaller.sh(oracle用户执行)这一步,大家可以再vnc或者Xmanager第三方图形工具界面安装,看个人嗜好了。。弹出安装图形界面后,就一步一步下一步,只要path正确就行,安装途中不
选择安装db create。选择only install software。
生成密码文件:在$ORACLE_HOME/dbs/下命令行生成orapwd file=orapwnndb.ora password=oracle entries=30
由于我们是手工创建数据库,那么我们可以按照自己的分配方式去将日志文件、数据文件、控制文件等一些文件进行放置,但是需要创建相应的目录,以便管理,比如我创建以下目录
mkdir –p $ORACLE_BASE/oradata/cfile 控制文件
mkdir –p $ORACLE_BASE/oradata/dfile 数据文件
mkdir –p $ORACLE_BASE/oradata/lfile 重做日志
mkdir –p $ORACLE_BASE/admin/nndb/adump 审计信息
mkdir –p $ORACLE_BASE/admin/nndb/cdump 一般是用来日志应用程序的
mkdir –p $ORACLE_BASE/admin/nndb/udump 前台手动trace的
mkdir –p $ORACLE_BASE/admin/nndb/bdump 后台进程trace 和alert log
当然上面的文件路径,是根据个人习惯或者管理情况所自己建立的。
生成参数文件pfile,修改初始化参数文件
参数文件在$ORACLE_HOME/dbs下init.ora模板文件,由它生成我们需要的参数文件,通过以下命令:
more init.ora|grep -v ^$ |grep -v ^# > initnndb.ora(导出的文件名格式为initSID.ora)
vi initnndb.ora
db_name = nndb
db_block_size = 8192
pga_aggregate_target = 30M
db_cache_size = 80M
shared_pool_size = 60M
parallel_threads_per_cpu = 4
optimizer_mode = choose
star_transformation_enabled = true
db_file_multiblock_read_count = 16
query_rewrite_enabled = true
query_rewrite_integrity = trusted
background_dump_dest = $ORACLE_BASE/admin/nndb/bdump
user_dump_dest = $ORACLE_BASE/admin/nndb/udump
core_dump_dest = $ORACLE_BASE/admin/nndb/cdump
control_files = $ORACLE_BASE/oradata/cfile/control01.ctl
undo_management = auto
undo_tablespace = rtbs
配置完成后,sqlplus下开启实例startup nomount。后我们必须要在生成一份动态参数文件spfile,sql命令行下create spfile from pfile。
接下来就是我们建库的准备了,我们不用dbca图形界面,为了更好的学习oracle软件的物理结构,我们用手工建库
写一个sql脚本。Create DataBase例句,可以在ORACLE官方手册中找到,直接查询关键字:creating an oracle database,该文档下的Step7:Issue the CREATE DATABASE Statement,就能找到例句了
CREATE DATABASE nndb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/lfile/redo01.log') SIZE 100M,
GROUP 2 ('/u01/app/oracle/oradata/lfile/redo02.log') SIZE 100M,
GROUP 3 ('/u01/app/oracle/oradata/lfile/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/app/oracle/oradata/dfile/system01.dbf' SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/dfile/sysaux01.dbf' SIZE 500M REUSE
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/dfile/temp01.dbf'
SIZE 100M REUSE
UNDO TABLESPACE rtbs
DATAFILE '/u01/app/oracle/oradata/dfile/rtbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
其实,这些个命令行的内容和控制文件的内容相符。大家可以理解数据库的物理结构组成部分核心的东西有哪些了!!!!!完成后,我们的实例才是由nomount到open的过程实现了,数据库可以正常使用。
执行catalog.sql创建数据库所需要使用的数据字典和相关存储过程
SQL>@?/rdbms/admin/catalog.sql
执行catproc.sql创建各种PL/SQL块的声明,包括过程、函数、数据类型、常量定义、并不是实际的代码:
SQL>@?/rdbms/admin/catproc.sql(这个时间会比较长,耐心等就可以啦!)
做到这里,手工创建数据库就基本OK了,下面就是在该数据库上进行相关操作
数据库验证:
查看数据库的状态:select status from v$instance; 数据库实例的状态
desc v$tablespace; 表空间的排序
select name from v$datafile; 数据文件查看
做一个全库备份,利用rman工具:
run{
allocate channel d1 type disk;
backup full database format '/u01/app/oracle/rmanbak/full_bk1_%u%p%s.rmn'
include current controlfile;
sql 'alter system archive log current';
backup archivelog all format '/u01/app/oracle/rmanbak/arch_bk1_%u%p%s.rmn'
delete all input;
release channel d1;
}
最后我们就完整的做完手工建库啦!!手工建库对于dba来说手工建库是很有必要的,它帮我们深刻的认识到了oracle在创建数据库都需要什么来完成工作的,物理架构了然于胸啊!
The End--