ITPub博客

首页 > Linux操作系统 > Linux操作系统 > windows平台从零开始手工创建oracle数据库

windows平台从零开始手工创建oracle数据库

原创 Linux操作系统 作者:exway 时间:2008-04-16 14:00:54 0 删除 编辑
 
显然通过手工创建数据库的方式可以更多的暴露oracle操作细节,更好的理解oracle运行的机制。本次测试的平台是win2003企业版,oracle92。
一、安装oracle软件
只安装数据库软件,不要创建默认数据库,安装完成后oracle会创建如下服务:
OracleMTSRecoveryService
OracleOraHome92Agent
OracleOraHome92ClientCache
OracleOraHome92HTTPServer
OracleOraHome92PagingServer
OracleOraHome92SNMPPeerEncapsulator
OracleOraHome92SNMPPeerMasterAgent
以上服务并不是我们最关心的服务
二、创建实例
在创建一个实例之前,来做如下测试:
开始-运行-cmd-sqlplus /nolog
conn / as sysdba 系统将给出如下错误提示:
SQL> conn / as sysdba
ERROR:
ORA-12560: TNS: 协议适配器错误:
其原因在于没有当前系统没有一个运行的oracle实例,而且sqlplus也不知道你要连接哪个实例。
下面开始创建一个名称为ora9的实例,最简单的方法是在命令行下运行oracle ora9,实例将以一个程序的方式运行,显然这不是专业的做法,oracle提供了一个注册实例的工具
在命令运行oradim -new -sid ora9
一个名称为OracleServiceora9的服务被创建
接下来在注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0增加一个键值ORACLE_SID=ORA9
再次连接,系统将提示连接到一个空闲的实例,什么是空闲的实例,空闲的实例意味着没有数据库加载和打开,没有SGA,也没有后台进程,而只有服务器进程。
既然已经有个了一个空的实例,我不免产生了一个startup的冲动,just do it看看接下来会发生什么。
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND<~ 'C:\ORACLE\ORA92\DATABASE\INITORA9.ORA'
恩,有乱码,不过看样子好像是需要一个初始化的参数文件,接下来我们就构建这样一个初始化文件。
C:\oracle\ora92\admin\sample\pfile目录下一个initsmpl.ora复制到'C:\ORACLE\ORA92\DATABASE\改名为initora9.ora,打开文件,有很多配置项不过都注释掉了,不要被这些选项吓到,全部清空,再次运行startup,系统给出如下信息

SQL> startup
ORACLE instance started.
Total System Global Area   97589952 bytes
Fixed Size                   453312 bytes
Variable Size              46137344 bytes
Database Buffers           50331648 bytes
Redo Buffers                 667648 bytes
ORA-01506: missing or illegal database name
错误是说缺少database name,shutdown实例再换一个启动方式
 
SQL> startup nomount
ORACLE instance started.
Total System Global Area   97589952 bytes
Fixed Size                   453312 bytes
Variable Size              46137344 bytes
Database Buffers           50331648 bytes
Redo Buffers                 667648 bytes
SQL>
这次没有错误提示了,为什么呢
startup命令系统将执行以下操作,启动实例,加载数据库,打开数据库
startup nomount意味着只启动实例,不加载数据库当前情况下系统还没有数据库,而且也没有在配置文件制定db_name报错就在所难免了。
 
SQL> select instance_name, status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
ora9             STARTED
可以看到实例的当前状态是started,接下来我们开始创建数据库
三、创建数据库
非常简单的一个命令create database,运行看看有什么结果,可以想象到会产生什么错误
SQL> create database;
create database
              *
ERROR at line 1:
ORA-01506: missing or illegal database name
没有数据库名字,原因在于initora9.ora文件里缺少一个关键的配置db_name='ora9db',注意数据库名称可以和实例名称不一致,如果配置了此项可以避免这个错误提示,不要紧,在这个命令下我们手工指定数据库名称,再来一次
SQL> create database ora9db;
Database created.
SQL>
创建成功了
SQL> select instance_name, status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
ora9             OPEN
状态改变了
SQL> select name from v$datafile;
NAME
--------------------------------------------
C:\ORACLE\ORA92\DATABASE\DBS1ORA9.ORA
C:\ORACLE\ORA92\DATABASE\DBS1ORA9.ORA
这是数据库的数据文件
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
这是SYSTEM表空间
SQL> select name from v$controlfile;
NAME
-------------------------------------------
C:\ORACLE\ORA92\DATABASE\CTL1ORA9.ORA
这是控制文件
SQL> select member from v$logfile;
MEMBER
-------------------------------------------
C:\ORACLE\ORA92\DATABASE\LOG1ORA9.ORA
C:\ORACLE\ORA92\DATABASE\LOG2ORA9.ORA
这是日志文件
显然这一步ORACLE在幕后做了很多操作
---创建数据文件,控制文件,日志文件
---创建了SYSTEM表空间
---创建了数据字典
---设置数据库字符集SELECT name,value$ from sys.props$ where name like '%NLS%'可以看到
---装载并打开数据库
不过工作还没有完成,还要继续下一步的操作
四、运行脚本创建数据字典视图、同义词和PL/SQL包
SQL> @%oracle_home%\rdbms\admin\catalog.sql
执行完会有2个object的status是invalid
SQL> @%oracle_home%\rdbms\admin\catproc.sql
此一步不一定能够创建成功
五、创建其他表空间
 
六、总结一下步骤
上面所做的测试只是为了研究oracle数据库创建所要作的工作,生产环境下要创建数据库还要对各个步骤进行润色,总的说来需要如下几个步骤
确定实例名-->创建服务-->创建初始化数参数文件-->启动实例-->执行create database-->创建其他表空间-->运行脚本创建数据字典视图和程序包-->创建服务端参数文件
七、附录,初始化参数文件示例和创建数据库的完整脚本

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

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

注册时间:2007-12-29

  • 博文量
    21
  • 访问量
    26606