手工创建oracle数据库
Ø 确定数据库SID
例如执行以下命令设置SID:% setenv ORACLE_SID mynewdb
Ø 建立数据库管理员认证方式
选择操作系统认证或密码文件认证
Ø 创建初始化参数文件
对于unix操作系统,参考$ORACLE_HOME/dbs/init.ora文件作为你的参数文件的蓝本,建议把参数文件的路径和命名规范化,这样启动实例时就不需要指定PFILE参数了,具体规则稍后给出!
Ø 连接到新的实例
执行“CONNECT SYS/password AS SYSDBA”命令以sysdba特权连接到新的实例
Ø 创建服务端参数文件(spfile)
执行以下命令创建spfile,创建spfile后再重启实例就会读取新的spfile
-- create the server parameter file
CREATE SPFILE='/u01/oracle/dbs/spfilemynewdb.ora' FROM
PFILE='/u01/oracle/admin/initmynewdb/scripts/init.ora';
SHUTDOWN
-- the next startup will use the server parameter file
EXIT
Ø 启动实例
STARTUP NOMOUNT
只启动SGA和后台进程,目前数据库还不存在
Ø 执行create database命令
参考以下语句:
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/u01/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/u01/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
简要说明:
由参数文件中CONTROL_FILES参数指定的三个控制文件会自动创建
MAXINSTANCES 1指定再同一时刻只能有一个实例可以挂载并打开这个数据库
Ø 创建其他表空间(可选)
例如:
CONNECT SYS/password AS SYSDBA
-- create a user tablespace to be assigned as the default tablespace for users
CREATE TABLESPACE users LOGGING
DATAFILE '/u01/oracle/oradata/mynewdb/users01.dbf'
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
-- create a tablespace for indexes, separate from user tablespace
CREATE TABLESPACE indx LOGGING
DATAFILE '/u01/oracle/oradata/mynewdb/indx01.dbf'
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
Ø 执行创建数据字典的脚本
CONNECT SYS/password AS SYSDBA
@/u01/oracle/rdbms/admin/catalog.sql
@/u01/oracle/rdbms/admin/catproc.sql
EXIT
Ø 执行安装其他选项的脚本
Ø 备份数据库
解析create database语句
Ø 为了保护数据库,请指定sys和system的密码
Ø 建立本地化管理的system表空间
EXTENT MANAGEMENT LOCAL字句用于指定创建本地化管理的system表空间,前提是“COMPATIBLE”初始化参数的值必须大于等于9.2
创建本地化管理的system表空间意味着默认附带了“AUTOALLOCATE”选项,即extent是数据库自动分配的,当然也不能指定“UNIFORM”参数。
为了创建对于本地化管理的system表空间,必须满足下面两个条件:
1、 必须存在一个默认的临时表空间,且名称不是system(你可以在create databse语句中使用DEFAULT TEMPORARY TABLESPACE子句来创建默认的临时表空间)
2、 你可以在create databse语句中使用UNDO TABLESPACE子句来创建UNDO表空间
Ø 建立SYSAUX表空间
SYSAUX表空间是system表空间的附属空间,之前很多使用system的一些特性现在都已经迁移到sysaux表空间以降低system表空间的负载
在创建SYSAUX表空间是你可以只指定datafile参数,以下四个属性是强制、不可更改的:
PERMANENT
READ WRITE
EXTENT MANAGMENT LOCAL
SEGMENT SPACE MANAGMENT AUTO
你不可以使用ALTER TABLESPACE语句来改变上述四个属性,你也不能删除或重命名sysaux表空间
如果在创建system表空间时指定了datafile参数,那么对于sysaux表空间也必须指定datafile参数
如果在create database中未指定system或sysaux的参数,则系统会在默认位置创建这两个表空间的数据文件
Ø 采用自动UNDO管理:建立UNDO表空间
自动的UNDO管理是使用UNDO表空间来实现的,即对于“UNDO_MANAGEMENT”初始化参数必须指定为“AUTO”,在这种模式下UNDO数据是存储在UNDO表空间中让oracle自动管理的。如果需要自定义UNDO表空间,在create databse语句中指定“UNDO TABLESPACE”子句。如果你没有指定该子句且“UNDO_MANAGEMENT”初始化参数必须指定为“AUTO”,那么系统会自动创建一个名为“SYS_UNDOTBS”的UNDO表空间
Ø 建立一个默认的永久表空间
通过“DEFAULT TABLESPACE”子句指定默认的永久表空间。如果新建用户时没有为其指定表空间,那么会以这个默认的永久表空间作为该用户的存储空间。
Ø 建立一个默认的临时表空间
通过“DEFAULT TEMPORARY TABLESPACE”子句指定默认的永久表空间。如果新建用户时没有为其指定临时表空间,那么会以这个默认的临时表空间作为该用户的临时表空间。
在创建完数据库后,你还可以增加或改变默认的临时表空间
使用“CREATE TEMPORARY TABLESPACE”创建新的临时表空间,再使用“ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <tbspname>”命令修改数据库的默认临时表空间。如果system表空间是本地化管理的话,那么默认的临时表空间也必须是本地化管理的。对于当前使用的默认临时表空间,你不能将它删除或置为offline状态。可以查询“DATABASE_PROPERTIES”视图查看当前使用的默认临时表空间。
Ø 在创建数据库时指定使用给予oracle管理的数据文件
如果在初始化参数文件中指定了诸如DB_CREATE_FILE_DEST,DB_CREATE_ONLINE_LOG_DEST_n, or DB_RECOVERY_FILE_DEST等参数,那么在创建数据库时不指定数据文件的位置时,系统会根据上述参数自动给出。
Ø 在创建数据库时指定“大文件”表空间
“大文件”表空间只能有一个数据文件,但这个文件最大能达4G BLOCKS,因而“大文件”表空间这一特使能够大大提高oracle的存储能力
可以在create database语句中指定“SET DEFAULT bigfile TABLESPACE”或“SET DEFAULT smallfile TABLESPACE”语句设置默认的表空间类型,这将影响后续的create tablespace 语句。“小文件”表空间可以最多拥有1022个数据文件,每个文件最大为4M BLOCKS。当数据库建立完毕后,可以使用“ALTER DATABASE SET DEFAULT BIGFILE/SMALLFILE TABLESPACE”语句来重新设置默认的表空间类型。
可以通过以下语句查看当前使用的默认表空间类型:
“SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';“
Ø 在创建数据库时设置时区和时区文件
在create database 语句中指定SET TIME_ZONE子句设置数据库的时区,如果不指定该子句,则默认使用操作系统的时区。ALTER SESSION命令也支持SET TIME_ZONE子句修改会话级的时区
Ø 设定FORCE LOGGING 模式
某些ddl语句可以加上NOLOGGING选项设置某些操作不记入重做日志,如果create database语句指定了FORCE LOGGING选项,则ddl的NOLOGGING就不起作用了。
在数据库创建完毕后,可以使用如下语句重新设置或取消该模式:
ALTER DATABASE [NO] FORCE LOGGING。
在表空间级别上你也可以指定FOECE LOGGING模式,ORACLE建议在数据库一级或在表空间一级指定该模式,不要在两个级别上同时指定该模式。
FOECE LOGGING是数据库的静态属性(重启实例不会改变它的值),然而如果你重建控制文件,则必须重新指定该参数。
如果数据库运行于NOARCHIVELOG模式,则建议不要指定该模式,因为NOARCHIVELOG模式本来就不支持数据恢复,FOECE LOGGING就变得没意义了,不但如此而且也影响性能。