按照惯例,本来在写博文之前先BB几句。一直对数据库不感兴趣,这是我人短板,所以硬着头皮学一下。入门小布老师的oracle视频,前面几节讲结构,启动过程,参数文件,直接把我绕歇菜了。
oracle通过向导创建自动创建数据库非常简单,根据提示一步一步就OK了。手动创建对于有专业人员必备技能。这过程,现在看来也难(因为没注意细节)。但我花了三个晚上稿定。在此声明一下,本文重在过程,通过这个过程,让你对手动创建有个认识,所以会比较啰嗦。
-------------本机oracle目录结构------------------------------------------------------------
ora10
|--product
|--admin
|--ora10
adump bdump cdump dpdump pfile udump
|--oradate
|--ora10
|--10.2.0
|--db_1
|--dbs
spfileora10.ora init.ora orapwora10 .....
---------------------------------------------------------------------------------------
了解oracle数据库的创建过程
第一步: 指定一个sid
这一步简单,给我们的数据库起个名字。
ORACLE_SID的长度是12,只能使用数字和字母,区分大小写。
第二步: 确保所需要的环境变量的设置
ORACLE_BASE
ORACLE_HOME
ORACLE_SID
ORA_NLS33
PATH
LD_LIBRARY_PATH
取保ORACLE_HOME 和 ORACLE_SID两选项是要设置的
[ora10@localhost pfile]$ env | grep ORA 查看环境变量
ORACLE_SID=ora10
ORACLE_BASE=/ora10/product
ORACLE_HOME=/ora10/product/10.2.0/db_1
[ora10@localhost ~]$ vi .bash_profile 查看你本机具体环境的设置
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/ora10/product
export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
export ORACLE_SID=ora10
export LD_LIBRARY_PATH=$ORACLE_HOME/jdk/fre/lib/i386:$ORACLE_HOME/jdk/jre/lib/i386/server:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=American_America.ZHS16GBK
[ora10@localhost dbs]$ touch chongshi.env 创建一个chongshi.env文件
[ora10@localhost dbs]$ vi chongshi.env 编辑
ORACLE_BASE=/ora10/product
ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
ORACLE_SID=chongshi
提示:上面的环境有配置,根据你机子原先的配置进行。其实,你需要修改的就ORACLE_SID其它内容都可以与以前的保持一致。我前面也主过了,只有ORACLE_HOME 和 ORACLE_SID两个选项是必须设置,以免环境变量设置出现。我们这里就缺省了。所以上面内容比较精简。
[ora10@localhost dbs]$ chmod u+x chongshi.env 给文件加一个可执行权限
[ora10@localhost dbs]$ ll
总计 52
-rwxr--r-- 1 ora10 dba 257 07-17 23:09 chongshi.env
[ora10@localhost dbs]$ . ./chongshi.env 执行文件(前面两个点中间有空格)
[ora10@localhost dbs]$ env | grep ORA 再次查看我们的环境变量已经被修改了
ORACLE_SID=chongshi
ORACLE_BASE=/ora10/product
ORACLE_HOME=/ora10/product/10.2.0/dba_1
提示,此处不用环境变量怎么回去,切换到其它用户再切换回来。环境变量又会变成默认的环境变量。当然,你还需要执行. ./chongshi.env 进行修改。
第三步: 选择一个数据库管理员的身份验证方法
我们这里以oracle组用户直接进放oracle
[ora10@localhost pfile]$ id 查看本机id
uid=501(ora10) gid=501(dba) groups=501(dba)
第四步: 创建初始化参数文件
这里要求我们创建oracle的参数文件pfile/spfile
pfile/spfile作用:
Oracle通过一系列参数来对数据库进行配置,参数文件就是存放参数的地方,oracle在启动时会从参数中读取相关的配置。
那么我们如何来配置这个参数文件呢? 这貌似是oracle玩的非常牛的人才会做的事儿。在我们创建数据库后,oracle会自动帮有生成这些参数。我们所要做的就是把文件创建出来。
[ora10@localhost dbs]$ touch initchongshi.ora
根据pfile/spfile的命名规则,你必须要用 init加你设置的sid 。
[ora10@localhost dbs]$ vi initchongshi.ora
db_name='chongshi' -----我们只需要创建这一个参数,其它都可以缺省
第五步 :(windows only)创建一表实例
这一表windows系统才有,由本机试验环境是linux ,所以直接跳过。
第六步 : 和实例进行连接
这步非常简单,相当于我们进入数据库
[ora10@localhost dbs]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 18 00:12:23 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect /as sysdba
Connected to an idle instance.
如果前面环境变量设置有问题的话, 这里一定会出错。我这里就卡了。又回去把环境变量认真检查了一下。
第七步:,创建一个服务器参数文件
这一步也很简单,紧跟上一步,在进入数据库的状态,输入以下命令创建spfile
SQL> create spfile from pfile;
File created.
SQL> ! //退出sql
[ora10@localhost dbs]$ ll
总计 60
-rwxr--r-- 1 ora10 dba 88 07-18 00:11 chongshi.env
-rw-rw---- 1 ora10 dba 1544 07-17 21:27 hc_ora10.dat
-rw-r--r-- 1 ora10 dba 19 07-17 23:33 initchongshi.ora
-rw-r----- 1 ora10 dba 12920 2001-05-03 initdw.ora
-rw-r----- 1 ora10 dba 8385 1998-09-11 init.ora
-rw-rw---- 1 ora10 dba 24 06-18 23:29 lkORA10
-rw-r----- 1 ora10 dba 1536 06-18 23:32 orapwora10
-rw-r----- 1 ora10 dba 2560 07-16 21:02 orapwtest
-rw-r----- 1 ora10 dba 1536 07-18 21:10 spfilechongshi.ora
-rw-r----- 1 ora10 dba 3584 07-17 22:00 spfileora10.ora
通过pfile(initchongshi.ora)文件生成spfile(spfilechongshi.ora)文件!
其实,这一步和第四步类似,都是创建启动文件。可以缺省。对后续无影响。但是,oracle推荐你创建,如果你这里创建的话,新生成的数据库使用spfile,不创建使用pfile。Spfile和pfile有什么区别。新旧区别,新的但然比旧的好。
第八步: 启动实例
[ora10@localhost dbs]$ exit
exit
SQL> startup nomount 启动数据库
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 1218004 bytes
Variable Size 58722860 bytes
Database Buffers 50331648 bytes
Redo Buffers 2973696 bytes
SQL>
这个时候,我们后台数据库并没有启动。那我打入startup nomount 命令其实读取的是spfilechongshi.ora 文件的内容,由此看出。上一步必不可少。呵呵!
第九步:发出创建数据库语句
这一步创建数据库,还是一句命令搞定。需要注意的,这里创建的数据库名字与第四步创建的参数文件里设置的名字一致。
[ora10@localhost dbs]$ cat initchongshi.ora
db_name='chongshi'
[ora10@localhost dbs]$ exit
exit
SQL> create database chongshi;
创建文件比较大,会有点慢,请耐心等一下!
[ora10@localhost dbs]$ ll
总计 188628
-rwxr--r-- 1 ora10 dba 88 07-18 00:11 chongshi.env
-rw-r----- 1 ora10 dba 6078464 07-18 21:39 cntrlchongshi.dbf
-rw-r----- 1 ora10 dba 81928192 07-18 21:39 dbs1chongshi.dbf
-rw-rw---- 1 ora10 dba 1544 07-18 22:03 hc_chongshi.dat
-rw-rw---- 1 ora10 dba 1544 07-17 21:27 hc_ora10.dat
-rw-r--r-- 1 ora10 dba 19 07-17 23:33 initchongshi.ora
-rw-r----- 1 ora10 dba 12920 2001-05-03 initdw.ora
-rw-r----- 1 ora10 dba 8385 1998-09-11 init.ora
-rw-rw---- 1 ora10 dba 24 07-18 21:39 lkCHONGSHI
-rw-rw---- 1 ora10 dba 24 06-18 23:29 lkORA10
-rw-r----- 1 ora10 dba 52429312 07-18 21:39 log1chongshi.dbf
-rw-r----- 1 ora10 dba 52429312 07-18 21:39 log2chongshi.dbf
-rw-r----- 1 ora10 dba 1536 06-18 23:32 orapwora10
-rw-r----- 1 ora10 dba 2560 07-16 21:02 orapwtest
-rw-r----- 1 ora10 dba 1536 07-18 21:10 spfilechongshi.ora
-rw-r----- 1 ora10 dba 3584 07-17 22:00 spfileora10.ora
上面列表中标红的就是我们创建的数据库
============================================小隔开一下===========================
OK!通过上面简单的几步,我们已经完整的创建了一个数据库,由于我们设置的太简单了。这个数据库基本是不能用的。麻雀虽然小,步骤很全。
手工创建数据库的难点就是第四步与第九步。
第四步,因为我上面的pfile文件设置太过简单。第九步,创建一下比较实用的数据库也不是那么简单一下命令就稿定的。
所以把我们创建的几个文件干掉,重新再来。哈哈!你怒了?
cntrlchongshi.dbf
dbs1chongshi.dbf
log1chongshi.dbf
log2chongshi.dbf
initchongshi.ora
spfilechongshi.ora
不要生气,根据上面步骤的操作,我们大概已经知道了手动创建一个数据库的过程。下面我们只要集中精力解决第四步与第九步就行。这个我话下一节中介绍。
本文紧跟上篇内容。
《oracle10g 手动创建数据详解(linux)上》
http://www.cnblogs.com/fnng/archive/2012/07/19/2600167.html
考虑篇幅过长不易于阅读,所以分个上下两节来进行。这一节中重点解决上一节中第四步与第九步的难题。
设置参数文件与创建数据库命令
如何获得一个的参数文件pfile 呢?
1、问oracle高手,这显然不现实,如果有高手在你身边,你就没必要看本文了,
2、从别处数据库拷贝一份过来,这显然也不太现实。
3、从自己本机的其它数据库拷贝,所以,你在做手动创建之前,先通过向导的方式创建一个数据库。
我本机的只有一个spfile文件(以前自动创建数据库时生成的)。
[ora10@localhost dbs]$ pwd
/ora10/product/10.2.0/db_1/dbs
[ora10@localhost dbs]$ ll
-rwxr--r-- 1 ora10 dba 88 07-18 00:11 chongshi.env
-rw-r----- 1 ora10 dba 3584 07-17 22:00 spfileora10.ora
.............
通过下面名命令,把我的spfile文件复制重命名一份
[ora10@localhost dbs]$ strings spfileora10.ora > initchongshi.ora
[ora10@localhost dbs]$ vi initchongshi.ora 编辑文件
chongshi.__db_cache_size=125829120 chongshi.__java_pool_size=4194304 chongshi.__large_pool_size=4194304 chongshi.__shared_pool_size=67108864 chongshi.__streams_pool_size=0 *.audit_file_dest='/ora10/product/admin/chongshi/adump' *.background_dump_dest='/ora10/product/admin/chongshi/bdump' *.compatible='10.2.0.1.0' *.control_files='/ora10/product/oradata/chongshi/control01.ctl','/ora10/product/oradata/chongshi/control02.ctl','/ora10/product/oradata/chongshi/control03.ctl' *.core_dump_dest='/ora10/product/admin/chongshi/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='ora10' *.db_recovery_file_dest='/ora10/product/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=chongshiXDB)' *.fast_start_mttr_target=250 *.job_queue_processes=10 *.nls_language='SIMPLIFIED CHINESE' *.nls_territory='CHINA' *.open_cursors=300 *.pga_aggregate_target=68157440 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=205520896 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='/ora10/product/admin/chongshi/udump'
新手一定稿不懂这些参数,没关系。把ora10 替换成chongshi就行。(命令模式下)
:%s/ora10/chongshi/g
创建目录
我本机存在的一个数据库的存放位置。
[ora10@localhost ora10]$ pwd
/ora10/product/oradata/ora10
因为我们pfile参数文件的配置都参照以前修改的,所以,我们在创建目录结果时,也应该与之前目录结果保持一致。
---------------------创建之后新数据库目录之后的目录--------------------
ora10
|--product
|--admin
|--ora10
adump bdump cdump dpdump pfile udump
|--chongshi
adump bdump cdump dpdump pfile udump ----把这几个目录下的内容清空
|--oradate
|--ora10
|--chongshi ----这个目录下的内容也要清空
|--10.2.0
|--db_1
|--dbs
spfileora10.ora init.ora orapwora10 .....
--------------------------------------------------------------------------------
[ora10@localhost oradata]$ pwd
/ora10/product/oradata
[ora10@localhost oradata]$ mkdir chongshi 创建数据库文件夹
[ora10@localhost oradata]$ ls
chongshi ora10
[ora10@localhost admin]$ pwd
/ora10/product/admin
[ora10@localhost admin]$ cp -R ora10/ chongshi 拷贝ora10目录重命名chongshi
[ora10@localhost chongshi]$ cd chognshi 进入目录
[ora10@localhost chongshi]$ ls
adump bdump cdump dpdump pfile udump
进入上面几个目录,把这些目录下的所有文件都删除。rm -f * 命令 清空目录下的所有文件。现在我们已经在admin 和oradata两个目录下分别创建好了目录。
创建数据库命令文件
创建数据库命令很复杂,写的时候容易写错。我们先把它写到一个文件里,然后进行调用。
[ora10@localhost dbs]$ pwd
/ora10/product/10.2.0/db_1/dbs
[ora10@localhost dbs]$ touch crdb01.sql
[ora10@localhost dbs]$ vi crdb01.sql
spool dbcreate.log; CREATE DATABASE "chongshi" MAXDATAFILES 500 MAXINSTANCES 8 MAXLOGFILES 32 CHARACTER SET "UTF8" NATIONAL CHARACTER SET AL16UTF16 ARCHIVELOG DATAFILE '/ora10/product/oradata/chongshi/system01.dbf' SIZE 300M SYSAUX DATAFILE '/ora10/product/oradata/chongshi/sysaux01.dbf' SIZE 120M EXTENT MANAGEMENT LOCAL DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/ora10/product/oradata/chongshi/tempts01.dbf' SIZE 100M EXTENT MANAGEMENT LOCAL UNDO TABLESPACE "UNDOTBS1" DATAFILE '/ora10/product/oradata/chongshi/undotbs01.dbf' SIZE 200M LOGFILE GROUP 1( '/ora10/product/oradata/chongshi/redo01a.rdo', '/ora10/product/oradata/chongshi/redo01b.rdo' ) SIZE 100M,
GROUP 2(
'/ora10/product/oradata/chongshi/redo02a.rdo',
'/ora10/product/oradata/chongshi/redo02b.rdo'
) SIZE 100M,
GROUP 3(
'/ora10/product/oradata/chongshi/redo03a.rdo',
'/ora10/product/oradata/chongshi/redo03b.rdo'
) SIZE 100M
;
spool off
上面内容不算复杂,我通过vi手动将上面内容输入,确实是个很痛苦的过程。在写入的时候一定要注意是否与你本机与建的目录保持一致。以免脚本运行不成功。
手动创建一个的数据库
现在,我们已经把前期工作准备好。下面就来创建一个比较像样的数据库。
再把上面的步骤来个遍,这个步骤也就是我上一节中,第一步到第九步的过程。前期工作做好过,你会发现这个过程是如此的简单。呵呵
[ora10@localhost dbs]$ . ./chongshi.env 修改环境变量
[ora10@localhost dbs]$ env | grep ORA 查看本机环境
ORACLE_SID=chongshi
ORACLE_BASE=/ora10/product
ORACLE_HOME=/ora10/product/10.2.0/db_1
[ora10@localhost dbs]$ sqlplus /nolog 无用户进入数据库
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 19 20:52:59 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba 连接数据库
Connected to an idle instance.
SQL> create spfile from pfile; 通过pfile文件生成spfile文件
File created.
SQL> startup nomount; 启动数据库
ORACLE instance started.
Total System Global Area 205520896 bytes
Fixed Size 1218532 bytes
Variable Size 75499548 bytes
Database Buffers 125829120 bytes
Redo Buffers 2973696 bytes
SQL> @/ora10/product/10.2.0/db_1/dbs/crdb01.sql; 调用创建数据库命令文件
Database created. ----经过等待后数据库创建成功!
没完,还有两步呢!
第十步,创建用户文件
SQL> create tablespace mytbs datafile '/ora10/product/oradata/chongshi/chongshimytbs01.dbf' SIZE 100M extent management local;
Tablespace created.
第十一步,创建数据字典
SQL> /ora10/product/10.2.0/db_1/rdbms/admin/catalog.sql;
SQL> /ora10/product/10.2.0/db_1/rdbms/admin/catproc.sql;
SQL> /ora10/product/10.2.0/db_1/rdbms/admin/pupbld.sql;
这三个sql文件是必须执行。也有可先项catblock.sql;catoctk.sql;owminst.plb;catclust.sql;