分类: Oracle
2007-12-21 15:47:12
这两天一直在看如何手工创建数据库,发现涉及到方面挺多的,一时难以学会,只能一步一步来了。
今天先介绍一下如何手工创建数据库。
1、确定系统标识
为了简单期间,实例名和数据库名我们都叫做magic。(有一些概念比如数据库名,数据库标识,实例名、域名等,在后边详细介绍)
2、确定要创建数据库的目录结构
mkdir E:\oracle\product\10.2.0\admin\magic\adump
mkdir E:\oracle\product\10.2.0\admin\magic\bdump
mkdir E:\oracle\product\10.2.0\admin\magic\cdump
mkdir E:\oracle\product\10.2.0\admin\magic\dpdump
mkdir E:\oracle\product\10.2.0\admin\magic\pfile
mkdir E:\oracle\product\10.2.0\admin\magic\udump
mkdir E:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca\magic
mkdir E:\oracle\product\10.2.0\db_1\database
mkdir E:\oracle\product\10.2.0\flash_recovery_area
mkdir E:\oracle\product\10.2.0\oradata\magic
其中adump、bdump、cdump、dpdump和udump是各种转储的dump目录,用于存放数据库的跟踪文件和登录信息。
Pfile用来存放启动实例使用的参数文件init.ora信息。
Oradata\magic是用来存放各种数据文件、控制文件和重做日志文件的。
命令执行过程
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\adump
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\bdump
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\cdump
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\dpdump
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\pfile
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\admin\magic\udump
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca\magic
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\db_1\database
子目录或文件 E:\oracle\product\10.2.0\db_1\database 已经存在。
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\flash_recovery_area
子目录或文件 E:\oracle\product\10.2.0\flash_recovery_area 已经存在。
C:\Documents and Settings\zdw>mkdir E:\oracle\product\10.2.0\oradata\magic
C:\Documents and Settings\zdw>
3、创建实例
ORADIM -NEW -SID MAGIC
已经是最为简化的写法了,如果不了解ORADIM的用法,可以在命令提示符下键入ORADIM然后回车,ORADIM除了可以创建实例,还可以修改、删除已有实例,另外还可以打开和关闭服务和实例。
C:\Documents and Settings\zdw>ORADIM -NEW -SID MAGIC
实例已创建。
这时会在系统服务中看到我们刚刚创建的实例,此时只是在操作系统级别上为我们实例的启动创造了条件。
4、如果使用口令文件的验证方式登录数据库,而不是操作系统,那么我们还需要创建口令文件
ORAPWD FILE=E:\ORALCE\PRODUCT\10.2.0\DB_1\DATABASE\PWDMAGIC.ORA PASSWORD=MAGIC
C:\>ORAPWD FILE=E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\PWDMAGIC.ORA PASSWORD=MAGIC
C:\>
创建成功,这时我们可以登录我们打开我们刚刚创建的实例了。
C:\>SET ORACLE_SID=MAGIC
C:\>SQLPLUS /NOLOG
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 11月 22 20:36:00 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> CONN SYS/MAGIC AS SYSDBA;
已连接到空闲例程。
SQL> CONN SYS/magic as sysdba;
已连接到空闲例程。
SQL> conn sys/xxx as sysdba;
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL>
SET ORACLE_SID=MAGIC是指定我们要登陆的实例,避免混淆。
另外,上面的命令还验证了:
1、数据库现在采用的是密码验证的方式
2、创建的密码是不区分大小写的
我们还可以将创建实例和创建密码都有ORADIM来实现
ORADIM -NEW -SID MAGIC -SYSPWD MAGIC -STARTMODE M
C:\>ORADIM -DELETE -SID MAGIC
实例已删除。
C:\>DEL E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\PWDMAGIC.ORA
C:\>ORADIM -NEW -SID MAGIC -SYSPWD MAGIC -STARTMODE M
实例已创建。
5、我们知道实例的启动分三个步骤,第一个是启动到NOMOUN状态,这这个阶段完成内存机构的分配和后台服务的建立,而这个过程用到的就是实例的初始化参数文件INIT.ORA
我们尽量简化这个参数文件
sga_target=167772160
audit_file_dest=E:\oracle\product\10.2.0/admin/magic/adump
remote_login_passwordfile=EXCLUSIVE
pga_aggregate_target=16777216
db_domain="world"
db_name=MAGIC
control_files=("E:\oracle\product\10.2.0\oradata\magic\control01.ctl", "E:\oracle\product\10.2.0\oradata\magic\control02.ctl", "E:\oracle\product\10.2.0\oradata\magic\control03.ctl")
db_recovery_file_dest=E:\oracle\product\10.2.0\flash_recovery_area
db_recovery_file_dest_size=2147483648
undo_management=AUTO
undo_tablespace=UNDOTBS
background_dump_dest=E:\oracle\product\10.2.0/admin/magic/bdump
core_dump_dest=E:\oracle\product\10.2.0/admin/magic/cdump
user_dump_dest=E:\oracle\product\10.2.0/admin/magic/udump
processes=150
db_block_size=8192
db_file_multiblock_read_count=16
在没有使用以上的初始化参数之前,提示找不到参数文件,实例无法完成NOMOUNT
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITMAGIC.ORA'
SQL>
在启动参数中指定INIT参数的位置,实例启动到NOMOUNT状态
SQL> STARTUP NOMOUNT PFILE=E:\oracle\product\10.2.0\admin\magic\pfile\INIT.ORA
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 62915940 bytes
Database Buffers 100663296 bytes
Redo Buffers 2945024 bytes
SQL>
此处可以使用视图v$instance查看实例的状态
SQL> select status from v$instance;
STATUS
------------
STARTED
如果我们在此时把实例启动到MOUNT状态,则
SQL> ALTER DATABASE MOUNT;
ALTER DATABASE MOUNT
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
因为在启动到MOUNT状态时要检查控制文件,而我们并没有创建,所以报此错误。
注:在我们未指定INIT管理员在2009年8月13日编辑了该文章文章。