ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 深入解析Oracle数据库创建过程

深入解析Oracle数据库创建过程

原创 Linux操作系统 作者:辛勤的小胖 时间:2013-05-16 10:00:10 0 删除 编辑

 

 

安装前准备:
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--

捕获.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28883355/viewspace-761217/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-05-13

  • 博文量
    12
  • 访问量
    284547