既然已经有个了一个空的实例,我不免产生了一个startup的冲动,just do it看看接下来会发生什么。
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND
恩,有乱码,不过看样子好像是需要一个初始化的参数文件,接下来我们就构建这样一个初始化文件。
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-->创建其他表空间-->运行脚本创建数据字典视图和程序包-->创建服务端参数文件
七、附录,初始化参数文件示例和创建数据库的完整脚本