第二章数据库的创建在安装好数据库软件以后,如果在安装时没有选择创建数据库,则下一步就该创建数据库了。创建数据库的方法主要有两种,一种是利用图形化向导DBCA(数据库配置助手)创建,另一种是通过写脚本手工创建。利用DBCA创建数据全局数据库名是Oracle数据名的唯一标识,利用全局数据库名能够在网络环境中唯一确定一个数据库。全局数据库名一般是“数据库名.网络域名”。SID用于标识一个Oracle数据库实例。一个数据库至少拥有一个数据库实例。设置数据库连接选项设置完数据库配制的支持选项后,下面就是配制数据库的连接选项。Oracle有两种连接方式供选择,一种是“专用服务器模式”,一种是“共享服务器模式”。在专用服务器模式下,每一个用户进程都对应一个专用的服务器进程为其提供服务,如果存在大量的用户进程,就需要启动同样数量的服务器进程;在共享模式下,Oracle保持一定数量的服务器进程,每个用户进程首先连接到调度服务进程,然后再由高度进程分配一个服务器进程为该用户进程提供服务。客户并发连接数量少,而且经常需要对数据库建立持久的、长时间运行请求的数据库,适合选用专用服务器模式;反之,如果并行用户多,需要考虑系统资源限制的情况,可以选用共享服务器模式。设置数据库初始化参数设置数据库存储创建数据库手工创建数据库确定全局数据库名和实例名,创建相关目录全局数据库名用于在网络中唯一标识数据库,而SID用于在网络中唯一标识一个实例。在Oracle中,SID指向的数据库通过初始化参数DB_NAME指定。下面假设要建的数据库名为DEMO,实例名也为DEMO,则分别建立下面的文件夹。用于保存与数据库相关的跟踪文件的文件夹C:\oracle\admin\demoC:\oracle\admin\demo\bdumpC:\oracle\admin\demo\udumpC:\oracle\admin\demo\cdump保存初始化文件的文件夹C:\oracle\admin\demo\pfile保存数据文件、控制文件、联机日志文件的文件夹C:\oracle\oradata\demo#保存归档日志文件的文件夹#C:\oracle\oradata\demo\archive保存数据库创建脚本文件的文件夹C:\oracle\admin\demo\create创建初始化参数文件Oracle数据库实例在初始化时,会自动读取一个初始化参数文件。在手工创建数据库时,这个文件需要由DBA创建。内容可以拷贝一个别的实例的init.ora文件后修改即可。db_name=democontrol_files=(“C:\oracle\oradata\demo\control01.ctl,“C:\oracle\oradata\demo\control02.ctl,“C:\oracle\oradata\demo\control03.ctl)instance_name=demobackground_dump_dest=C:\oracle\admin\demo\bdumpcore_dump_dest=C:\oracle\admin\demo\cdumpuser_dump_dest=C:\oracle\admin\demo\udumplog_archive_start=true修改完成后,就是在{ORACLE_HOME}\database目录或{ORACLE_HOME}\admin\demo\pfile目录下建立initdemo.ora文件创建实例管理服务Oracle提供的oradim.exe程序,可以在Window环境下生成一个新的实例管理服务。如下所示,在生成服务的同时,设定其启动方式为手动。C:\setORACLE_SID=demoC:\d:\oracle\ora90\bin\oradim-new-sidDEMO-startmodem-pfile“d:\oracle\ora90\database\initdemo.ora”创建数据库在完成上面的设置后,便可以创建数据了,首先启动SQL/PLUS,然后执行createdb.sql脚本,具体如下所示:C:\sqlplus/nologSQL@D:\oracle\admin\demo\create\Createdb.sqlCreatedb.sql脚本内容如下:connectSYS/change_on_installasSYSDBAsetechoonspoolc:\oracle\ora90\assistants\dbca\logs\CreateDB.logstartupnomountpfile=“c:\oracle\admin\demo\pfile\init.ora;CREATEDATABASEdemoMAXINSTANCES1MAXLOGHISTORY1MAXLOGFILES5MAXLOGMEMBERS5MAXDATAFILES100DATAFILE‘c:\oracle\oradata\demo\system01.dbf'SIZE32MREUSEAUTOEXTENDONNEXT10240KMAXSIZEUNLIMITEDUNDOTABLESPACEUNDOTBSDATAFILE‘c:\oracle\oradata\demo\undotbs01.dbf'SIZE20MREUSEAUTOEXTENDONNEXT5120KMAXSIZEUNLIMITEDCHARACTERSETZHS16GBKNATIONALCHARACTERSETAL16UTF16LOGFILEGROUP1(‘c:\oracle\oradata\demo\redo01.log')SIZE1M,GROUP2(‘c:\oracle\oradata\demo\redo02.log')SIZE1M,GROUP3(‘c:\oracle\oradata\demo\redo03.log')SIZE1M;spooloffexit;在创建数据库时,脚本命令将创建如下内容:创建控制文件和联机日志文件创建数据库系统表空间system在system表空间上创建system系统回滚段创建sys和system账号创建基表和簇创建数据字典表、索引和序列创建相关角色权限创建其它的表空间上一步创建的数据库只包括了SYSTEM和UNDOTBS表空间,如果要使用此数据库,还需要创建其它的表空间,这些表空间将用于存放索引以及用户数据等。创建数据库其它表空间,执行脚本createfiles.sql。SQLsqlplus/nologSQL@D:\oracle\admin\demo\create\CreateDBFiles.sqlCreatefiles.sql脚本内容如下:connectSYS/sysasSYSDBAsetechoonspoolD:\oracle\ora9i\assistants\dbca\logs\CreateDBFiles.logCREATETABLESPACEINDXLOGGINGDATAFILE'D:\oracle\oradata\demo\indx01.dbf'SIZE2MREUSEAUTOEXTENDONNEXT1280KMAXSIZEUNLIMITEDEXTENTMANAGEMENTLOCAL;CREATETEMPORARYTABLESPACETEMPTEMPFILE'D:\oracle\oradata\demo\temp01.dbf'SIZE4MREUSEAUTOEXTENDONNEXT640KMAXSIZEUNLIMITEDEXTENTMANAGEMENTLOCAL;ALTERDATABASEDEFAULTTEMPORARYTABLESPACETEMP;CREATETABLESPACETOOLSLOGGINGDATAFILE'D:\oracle\oradata\demo\tools01.dbf'SIZE2MREUSEAUTOEXTENDONNEXT320KMAXSIZEUNLIMITEDEXTENTMANAGEMENTLOCAL;CREATETABLESPACEUSERSLOGGINGDATAFILE'D:\oracle\oradata\demo\users01.dbf'SIZE3MREUSEAUTOEXTENDONNEXT1280KMAXSIZEUNLIMITEDEXTENTMANAGEMENTLOCAL;spooloffexit;创建数据字典数据字典是由一系列的基础表和系统视图组成,这些表和视图保存着关于数据库和实例的结构、用户、对象定义等重要信息。在DBCA创建数据库的过程中,数据字典是自动建立的,但是在手工创建数据库时,则需要调用Oracle提供的预定义脚本创建数据字典视图。手工创建数据库后,必须要创建附加表空间和数据字典,这样数据库才能正常工作。具体可以调用createdbcatalog.sql脚本命令。SQLsqlplus/nologSQL@D:\oracle\admin\demo\create\createdbcatalog.sqlCreatedbcatalog.sql脚本内容如下:connectSYS/sysasSYSDBAsetechoonspoolD:\oracle\ora9i\assistants\dbca\logs\CreateDBCatalog.log@D:\oracle\ora9i\rdbms\admin\catalog.sql;@D:\oracle\ora9i\rdbms\admin\catexp7.sql;@D:\oracle\ora9i\rdbms\admin\catblock.sql;@D:\oracle\ora9i\rdbms\admin\catproc.sql;@D:\oracle\ora9i\rdbms\admin\catoctk.sql;@D:\oracle\ora9i\rdbms\admin\catobtk.sql;@D:\oracle\ora9i\rdbms\admin\caths.sql;@D:\oracle\ora9i\rdbms\admin\owminst.plb;connectSYSTEM/manager@D:\oracle\ora9i\sqlplus\admin\pupbld.sql;connectSYSTEM/managersetechoonspoolD:\oracle\ora9i\assistants\dbca\logs\sqlPlusHelp.log@D:\oracle\ora9i\sqlplus\admin\help\hlpbld.sqlhelpus.sql;spooloffspooloffexit;建立服务器参数文件Oracle9i建议使用服务器端初始化参数文件来维护数据库初始化参数。所以接下来还需要完善数据库,创建spfile文件,将数据库实例启动服务设置成自动启动方式。通过执行如下脚本可以实现。SQLsqlplus/nologSQL@D:\oracle\admin\demo\scripts\postdbcreation.sqlPostdbcreation.sql脚本内容如下:connectSYS/sysasSYSDBAsetechoonspoolD:\oracle\ora9i\assistants\dbca\logs\postDBCreation.logcreatespfile='D:\oracle\ora9i\database\spfiledemo.ora'FROMpfile='D:\oracle\admin\demo\pfile\init.ora';connectSYS/sysasSYSDBAsetechoonspoolD:\oracle\ora9i\assistants\dbca\logs\postDBCreation.logshutdown;startupmount;alterdatabasearchivelog;alterda