分类: LINUX
2009-05-18 09:03:41
第一章:oracle数据库的创建
1.1使用DBCA创建数据库
1.1.1DBCA的启动
1.1.2配置数据库选项
1.2数据库创建的脚本
1.2.1数据库创建的脚本
1.2.2创建的起点
创建oracle创建数据库的过程:
n
建立一系列的目录
n
设置ORACLE_SID环境变量
n
通过oradim创建并配置实例
n
通过sqlplus运行脚本开始创建数据库
1.2.3oradim工具的使用
通过oradim创建一个服务后,实例会随之启动:
C:\>oradim
–new –sid eygle
1.2.4oracle_sid的含义
Oracle的实例是由一块共享内存区域SGA和一组后台进程共同组成的;而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
实例的启动仅需要一个参数文件,而这个参数文件的名称就是由ORACLE_SID决定的。对以init文件,缺省的文件名称是init
Spifile 从9i开始引入并成为了缺省使用的参数文件,oracle启动实例时按照以下顺序从缺省目录查找参数文件:spfile
通过以上信息可以知道,在同一个ORACLE_HOME下,oracle能够根据ORACLE_SID将实例区分开来;但是如果在不同的ORACLE_HOME下,ORACLE将无法屏蔽相同名称的ORACLE_SID,也就是说即使在同一台主机上,oracle也是能够创建相同ORACLE_SID的实例的。
在操作系统上,oracle能够通过ID标识将共享或信号量区分开来:
$ipcs –i
通过oracle提供的一个小工具sysresv,可以找到对应于不同的ORACLE_SID,操作系统上创建的共享内存段ID和信号量ID等信息。
$ sysresv
–l eygle julia
在linux上,ORACLE_SID还和一个名为oratab的文件有关,在solaris环境中,这个文件一般位于/var/opt/oracle目录下,在linux下,这个文件一般位于/etc目录下。
当执行dbstart脚本时,oracle会根据这里记录的ORACLE_SID的
C:\>oracle
julia
此后就可以连接到这个环境启动实例:
C:\>set
ORACLE_SID=julia
当然还需要创建参数文件和口令文件等:
此后,实例就可以顺利启动:
SQL> set linesize 120
SQL>
show parameter instance_name
SQL> show
parameter db_name
SQL>
alter database mount;
SQL>
alter database open;
1.2.5INSTANCE_NAME的含义及作用
INSTANCE_NAME是oracle数据库的一个参数,在参数文件中定义,用于标识数据库实例的名称,其缺省值是ORACLE_SID,但是不同的实例可以有相同的实例名。总结一下,ORACLE_SID用于标识进程,而INSTANCE_NAME则用来标识实例,两者可以具有不同的名称。此外oracle的监听器配置文件中的SID_NAME就是来自INSTANCE_NAME参数,监听器通过INSTANCE_NAME才能确定需要将连接请求注册到哪一个实例上。
1.2.6oracle的口令文件
当口令文件丢失或损坏之后,可以通过这个工具重建口令文件,这个语句的语法:
C:\Documents
and Settings\oracle>orapwd
Usage:
orapwd file=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA
and force - whether to overwrit
e
existing file (opt),
OPERs
(opt),
There are no spaces around the equal-to (=)
character.
Oracle在启动过程中,会在$ORACLE_HOME/dbs目录下查找口令文件,查找的顺序是首先检查orapwd
口令文件丢失或损失后,通常可以通过如下命令重建口令文件:
$ orapwd
file=orapwhsjf password=oracle entries=5
在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份的。此时口令文件就体现出来了。口令文件中存放了具有SYSDBA / SYDPER 身份用户的用户名和口令,oracle允许用户通过口令文件验证,在数据库未启动之前登录,从而启动实例进而加载并打开数据库;而如果没有口令文件,在数据库未启动之前就只能通过操作系统认证方式来启动实例。
Oracle通过一个初始化参数remote_login_passwordfile来限制口令文件的使用,通过这个参数可以设置用户登录时是否检查口令文件,以及多少个数据库可以使用口令文件。这个参数有三个选项:EXCLUSIVE,SHARED和NONE。
当remote_login_passwordfile设置为NONE时,远程用户将不能通过SYSDBA / SYDPER身份登录。
缺省的remote_login_passwordfile参数设置为exclusive,支持远程SYSDBA的登录操作:
Alter
system set remote_login_passwordfile=exclusive scope=spfile;
这个参数时静态参数,修改后重启数据库才能生效。当remote_login_passwordfile参数设置为shared时,则多个数据库可以共享一个口令文件,但是此时口令文件中只能存储SYS用户的口令,此时其他用户不能授予sysdba身份。
SQL>
select * from v$pwfile_users;
1.2.7脚本执行
第一个脚本时CreateDB.sql,这个文件的主要操作步骤如下:
n
通过SYS连接
n
通过配置的参数init.ora启动实例
n
开始数据库创建
n
将数据库生成的控制名称追加到参数文件中
1.2.8DB_NAME参数和INSTANCE_NAME参数
对于oracle数据库来说,DB_NAME代表数据库的名称而INSTANCE_NAME代表实例的名称,INSTANCE_NAME通过参数文件即可修改,而DB_NAME则不然,来看一下ORACLE对于数据库名称的定义:DB_NAME必须是一个不超过8个字符的文本串。数据库在创建过程中,DB_NAME被记录在数据文件,日志文件和控制文件中。
一个实例可以mount并打开任何数据库,但是同一个时间一个实例只能打开一个数据库:一个数据库同一时间可以为任一实例所打开,但是在非OPS/RAC情况下,同时只能被同一个实例打开。
1.2.9sql.bsq文件与数据库创建
这个脚本用于创建数据字典。
1.2.10数据文件及字典的创建
再来看CreateDBfile.sql文件:
这个文件向数据库追加了USERS表空间,并将该表空间设置为系统缺省的数据表空间。
1.3使用模板创建数据库
1.3.1启动创建
1.3.2数据库创建模板
使用模板创建数据库通常速度都会很快,原因在于数据文件时从种子数据库中恢复出来的,而不需要创建文件及字典对象等信息。
1.3.3RMAN的引入
rmanRestoreDatafiles.sql脚本时通过系统包DBMS_BACKUP_RESTORE来恢复备份集中的文件,从而实现数据恢复。当通过RMAN进行数据库备份时,RMAN会将多个数据文件写出到一个或多个备份文件(称为备份集)中,RMAN的相关的备份信息或者存储在控制文件中,或者存放在RMAN的专用目录数据库(catalog)中,如果RMAN的备份信息丢失,那么通常备份集中的文件是没有办法读取出来的,其他工具无法识别RMAN的备份集文件;而DBMS_BACKUP_RESTORE就是针对这种情况提供的一种解决方案,DBMS_BACKUP_RESTORE可以在数据库nomount状态下调用,直接从备份集中读取数据文件。
1.3.4克隆数据库
数据文件具备了,接下来是通过这些文件“克隆”一个数据库,这个工作由cloneDBCreation.sql脚本继续执行。