
对于许多数据库管理员来说 Oracle究竟是不是一个难以管理和驾驭的怪兽级数据库 会不会让他们管理生涯饱受折磨当看到其命令行界面时 很多人会问这么一个问题 如果你想通过一个应用程序 *** 控使用这个数据库 那么你应当是一名终端用户;因此对这类人而言 界面越透明当然越好 而命令行界面显然不够理想 而如果你想成为精通数据库的技术员 成为排除数据库故障的检修员 成为当大家碰到数据库难题时会向他求助的万能先生的话 你就不能嫌脏怕累 而要不辞劳苦地深入了解数据库的结构和机理 这样你才能知道数据库到底怎么运作 发生了什么问题 命令行界面正是你需要适应并了解的东西
为什么要手动创建数据库
创建数据库也应该是你要深入了解的内容之一 当然 Oracle本身提供有图形用户界面工具可以帮助用户出色地完成这项任务 但是如果失败了呢如果你在创建的过程中出现了警告或错误信息呢这时候你应当怎么办你是否想知道在这些信息背后到底是哪里出了问题你是否想要更进一步了解Oracle在数据库创建的过程中到底是怎么变的戏法吗来手动创建一次数据库 相信就能为你阐明一切
当你手动创建一个数据库时 你就要在sqlplus提示符下输入指令 通常情况下你需要将这些指令添加到一个sql脚本 随后从sqlplus调用这个脚本 假设所有的路径和选项都正确 设定的大小可用 而且在数据库创建过程中没有达到容量的极限的话 那么整个创建过程应当顺利运行 而且 如果你开发了一个想要部署到Oracle数据库商的应用程序 你的应用程序也可以提供一份数据库创建脚本 按照你设定的方式来运行
什么时候使用手动方法创建数据库
显然 当你第一次学习Oracle时 你应当使用手动方法来创建数据库 一旦你完全理解其中的奥妙 你就可以考虑使用图形用户界面来简化你的工作 不过 如果你想控制文件的命名规范 建议你还是坚持使用手动方法 此外 当有新版本的Oracle数据库发布时 一定要通过手动方法检查一下有什么新选项添加到了创建数据库的语法当中 那如果你要创建一大堆特征相似的数据库呢这种时候 手动创建的方法更具有吸引力 因为这样能够减少我们的工作量
如何手动创建数据库
首先我们把我们要创建的数据命名为DBJ 接着 至少你得给DBJ设置ORACLE_SID环境变量 编辑initDBJ ora 添加如下脚本
db_name=DBJ
然后启动sqlplus 发布如下指令
SQL> startup nomount;
SQL> create database;
Oracle会为所需要的所有参数设置一些默认值 例如应当将数据文件 控制文件放在哪里 分配多少内存等 然后启动实例 不挂载任何文件 创建数据库指令(create database)将要求Oracle创建一个数据库 这个数据库带有最小系统和sysaux表空间等默认设置
不过现实中 我们可能想要指定很多其他的选项 下面我们来看看现实中创建Oracle数据库脚本更真实的例子
connect / as sysdba;startup nomount;CREATE DATABASE dbj DATAFILE /u /oradata/sysdbj dbf size MSYSAUX DATAFILE /u /oradata/auxdbj dbf size MUNDO TABLESPACE dbjundo DATAFILE /u /oradata/unddbj dbf size MLOGFILE /u /oradata/rdodbj dbf size M /u /oradata/rdodbj dbf size MCHARACTER SET WE ISO P NATIONAL CHARACTER SET UTF EXTENT MANAGEMENT LOCALDEFAULT TEMPORARY TABLESPACE mytemp TEMPFILE /u /oradata/tmpdbj dbf SIZE MNOARCHIVELOGMAXDATAFILES MAXLOGFILES ;# create the rest of the data dictionary@/rdbms/admin/catalog sql@/rdbms/admin/catproc sql
详解创建的各阶段
当我们发布 startup nomount 的指令时 我们是让Oracle以一种不同于平常使用的方式启动 不同在哪里呢我们让Oracle 其实 我们让Oracle只启动实例 而不安装数据库 也不打开数据库 并启动所有的后台进程 并为系统全局区域(SGA)分配内存 为什么不启动数据库因为在现阶段我们还没有一个可以挂载的数据库 也就是以一个有效形式存在的数据文件集合
当我们发出 create database 指令的时候 Oracle将创建系统表空间 sysaux表空间 undo表空间和临时表空间 并为该数据库设置字符集 也就是设置数据文件的头信息 表明我们想要创建本地管理表空间 还有就是设置归档或非归档模式 一旦这些都完成了 Oracle就会运行一个名为sql bsq的神奇文件 建议大家看看这个文件的内容 会很有趣且很有用 这是Oracle的自举代码(bootstrapping code) 可以供我们查看并了解其中内容 我们可以在$ORACLE_HOME/rdbms/adminsql bsq目录中找到这个sql bsq文件 注意 这个文件会随着版本的不同而有所改变 所以定期查看一下其中的变化很能说明一些问题
这个运行之后 就是创建Oracle数据字典了 catalog sql和catproc sql只是在真正的数据字典上创建有用的视图以及每个Oracle数据库都需要有的各种存储过程 包和函数
结论
lishixinzhi/Article/program/Oracle/201311/18920
在Oracle中建库,通常有两种方法。一是使用Oracle的建库工且DBCA,这是一个图形界面工且,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“ Oracle - OraDb10g_home1”—“ Configuration and Migration Tools”—“ Database Configuration Assistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。另一种方法就是手工建库,这也就是下面所要讲的内容。
手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。手工建库须要经过几个步骤,每一个步骤都非常关键。它包括:
1、 创建必要的相关目录
2、 创建初始化参数文件
3、 设置环境变量Oracle_sid
4、 创建实例
5、 创建口令文件
6、 启动数据库到nomount(实例)状态
7、 执行建库脚本
8、 执行catalog脚步本创建数据字典
9、 执行catproc创建package包
10、 执行pupbld
11、 由初始化参数文件创建spfile文件
12、 执行scott脚本创建scott模式
做完了以上的步骤之后就可以使用“SQL>alter database open;”打开数据库正常的使用了。下面,我将具体地把以上的几个步骤用实验展开来讲。
实验系统平台:Windows Server 2000 数据库系统版本:Oracle Database 10G
Oracle的安装路径:D盘 创建的数据库名称:book
1、打开命令行工具,创建必要有相关目录
C:\>mkdir D:\oracle\product\1010\admin\book
C:\>mkdir D:\oracle\product\1010\admin\book\bdump
C:\>mkdir D:\oracle\product\1010\admin\book\udump
C:\>mkdir D:\oracle\product\1010\admin\book\cdump
C:\>mkdir D:\oracle\product\1010\admin\book\pfile
C:\>mkdir D:\oracle\product\1010\admin\book\create
C:\>mkdir D:\oracle\product\1010\oradata\book
上面创建目录的过程也可以在Windows的图形界面中去创建。其中D:\oracle\product\1010\admin\book目录下的几个子目录主要用于存放数据库运行过程中的跟踪信息。最重要的两上子目录是bdump和udump目录,bdump目录存放的是数据库动行过程中的各个后台进程的跟踪信息,当中alert文件是警告文件,其文件名称为alert_booklog,当数据库出现问题时,首先就可以去查看此文件以找出原因,手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。Udump目录存放和特定会话相关的跟踪信息。D:\oracle\product\1010\oradata\book目录存放各种数据库文件,包括控制文件、数据文件、重做日志文件。
2、创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。
创建初始化参数文件可以通过拷贝现在的初始化参数文件并将其做适当的修改即可,从而不必要用手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。在我们安装Oracle的时候,系统已经为我们安装了一个名为orcl的数据库,于是我们可以从它那里得到一份初始化参数文件。打开D:\oracle\product\1010\admin\orcl\pfile,找到initora文件,把它拷贝到D:\oracle\product\1010\bd_1\databse下,并将其改名为initbookora。接着用记事本的方式打开initbookora,修改以下的内容:
db_domain=""
db_name=book
control_files=("D:\oracle\product\1010\oradata\book\control01ctl", "D:\oracle\product\1010\oradata\book\control02ctl", "D:\oracle\product\1010\oradata\book\control03ctl")
undo_management=AUTO
undo_tablespace=UNDOTBS1 ――注意此处的“UNDOTBS1”要和建库脚步本中对应
background_dump_dest=D:\oracle\product\1010\admin\book\bdump
core_dump_dest=D:\oracle\product\1010\admin\book\cdump
user_dump_dest=D:\oracle\product\1010\admin\book\udump
3、打开命令行,设置环境变量oracle_sid
C:\>set oracle_sid=book
设置环境变量的目地是在默认的情况下,指定命令行中所 *** 作的数据库实例是book。
4、创建实例(即后台控制服务)
C:\>oradim –new –sid book
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定害例的名称。
5、创建口令文件
C:\>orapwd file=D:\oracle\product\1010\db_1\database\pwdbookora password=bookstore entries=2
orapwd是创建口令文件的工肯程序各称,file参数指定口令文件所在的目录和文件名称,password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,当然还有一个force参数,相信您不指即明,这里就不再细述。
请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。
口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,这样数据库末打开时也能进行口令验证。
6、启动数据库到nomount(实例)状态
C:\>sqlplus /nolog
SQLPlus:Release 101020 - Production on 星期三 6月 29 23:09:35 2005
Copyright 1982,2004,Oracle All rights reserved
SQL>connect sys/bookstore as sysdba ---这里是用sys连接数据库
已连接到空闲例程
SQL>startup nomount
ORACLE 例程已经启动。
Total System Global Area 319888364bytes
Fixed Size 453612bytes
Variable Size 209715200bytes
Database Buffers 109051904bytes
Redo Buffers 667648bytes
SQL>
7、执行建库脚本
执行建库脚本,首先要有建库的脚本。(去哪找建库脚本呢?我又没有!)不用着急,请接着往下看。
得到一个符合自己要求的建库脚本有两种方法,一种方法是在自己的电脑上用DBCA来建,接照它的提示一步步地去做,在做到第十二步的时候,请选择“生成建库脚本”,然后就大功告成,你就可以到相应的目录上去找到那个脚本并适当地修它便可便用。另一种方法就是自己手工去写一份建库脚本,这也是这里要见意使用的方法,用记事本编辑如下的内容,并将其保存为文件名任取而后缀名为(sql)的SQL脚本,这里保存到E盘根本录下且文件名称为booksql。
Create database book
datafile 'D:\oracle\product\1010\oradata\book\system01dbf' size 300M reuse autoextend on next 10240Kmaxsize unlimited
extent management local
sysaux datafile 'D:\oracle\product\1010\oradata\book\sysaux01dbf'
size 120M reuse autoextend on next 10240K maxsize unlimited
default temporary tablespace temp
tempfile 'D:\oracle\product\1010\oradata\book\temp01dbf' size 20M reuse autoextend on next 640K maxsize unlimited
undo tablespace "UNDOTBS1" --请注意这里的undo表空间要和参数文件对应
datafile 'D:\oracle\product\1010\oradata\book\undotbs01dbf' size 200M reuse autoextend on next 5120K maxsize unlimited
logfile
group 1 ('D:\oracle\product\1010\oradata\book\redo01log') size 10240K,
group 2 ('D:\oracle\product\1010\oradata\book\redo02log') size 10240K,
group 3 ('D:\oracle\product\1010\oradata\book\redo03log') size 10240K
接着就执行刚建的建库脚本:
SQL>start E:\booksql
8、执行catalog脚步本创建数据字典
SQL>start D:\oracle\product\1010\db_1\rdbms\admin\catalogsql
9、执行catproc创建package包
SQL>start D:\oracle\product\1010\db_1\rdbms\admin\catprocsql
10、执行pupbld
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。因为此数据库是刚建的,所以system的口令是系统默认的口令,即manager。你可以在数据库建好以后再来重新设置此账户的口令。
SQL>connect system/manager
SQL>start D:\oracle\product\1010\db_1\sqlplus\admin\pupbldsql
11、由初始化参数文件创建spfile文件
SQL>create spfile from pfile;
12、执行scott脚本创建scott模式
SQL>start D:\oracle\product\1010\db_1\rdbms\admin\scottsql
13、把数据库打开到正常状态
SQL>alter database open;
14、以scott连接到数据库(口令为tiger),测试新建数据库是否可以正常运行
至此,整个数据库就已经建好了。接着你就可以在此数据库上建立自己的账户和表空间啦以及数据库对象,这里就不再作更多地叙述
Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。通常情况了我们称的“数据库”,包含了物理数据、数据库管理系统、内存、 *** 作系统进程的组合体,就是指这里所说的数据库管理系统。
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
① Oracle数据库是一系列物理文件的集合;
组成Oracle数据库的文件可以分成三个类型:数据文件(data file)、重做日志文件(redo log file)和控制文件(control file)。数据文件保存数据,Oracle中可以存在任意数量的数据文件;重做日志文件跟SQL Server的事务日志文件一样用来保存对数据更改的记录,在系统恢复阶段需要用到;控制文件是一些特别的小文件,用来保存一些至关重要的关于数据库的信息,没有这个文件的话,实例就无法打开数据库。
除了数据文件、重做日志文件、控制文件之外,数据库还包含参数文件(parameter file)、密码文件(password file)和可选的归档日志文件(archive log files)。
② Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。
当Oracle启动时,它和SQL Server一样要先占用一些服务器内存用于执行 *** 作,这个内存区域——SGA(System Global Area)——被分为数个不同的结构,在创建SGA的同时也会启动一系列的后台进程用于和SGA进行交互,在这里这些分配的内存空间和后台进程组合起来就是Oracle实例了。请注意这里并没有提到数据库,实际上Oracle实例在没有数据库或是数据库不能访问时也是跑的很好的,在安装Oracle时,我们可以选择只安装软件,完了之后再安装数据库。
Oracle系统启动时,首先在内存中创建数据库实例,然后由实例找到保存在磁盘中的数据库,最后打开数据库让用户 *** 作。当系统关闭时,实例会从内存中清除掉;整个内存结构和后台进程都会消失,但是数据库依然存在于磁盘上,只是处于关闭的状态。
1、数据库
数据库是数据集合。
在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库);
启动数据库:也叫全局数据库,是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等。我们用这些高级权限账号登陆就可以在数据库实例中创建表空间,用户,表。
内置一些高级权限的用户有 3 个:sys,system,scott
① sys用户超级管理员(等同sql sa,mysql root),具有oracle的最高权限,具有sysdba角色,具有创建create database的权限,密码默认为manager。
②system用户是 *** 作管理员,权限仅次于sys,具有sysoper(ate)的角色;system其没有create database的权限,其他的权限与sys相同。
③scott用户普通用户,默认密码为tiger,该用户默认是锁定,可以用system去解锁
全局数据库名:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名。
查询当前数据库名:
1 select name from v$database;
2、数据库实例
Oracle官方描述:实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合。
其实就是用来访问和使用数据库的一块进程,它只存在于内存中。
我们访问Oracle数据库就是通过一个实例连接数据库,然后访问数据库文件。如果这个实例关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
Oracle系统启动时,首先在内存中创建数据库实例,然后由实例找到保存在磁盘中的数据库,最后打开数据库让用户 *** 作。当系统关闭时,实例会从内存中清除掉:整个内存结构和后台进程都会消失,但是数据库依然存在于磁盘上,只是处于关闭的状态。之前也说过,Oracle实例可以在不打开数据库的情况下运行
实例名指的是用于响应某个数据库 *** 作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。
查询当前数据库实例名:
1 select instance_name from v$instance;
数据库实例名(instance_name)用于对外部连接。在 *** 作系统中要取得与数据库的联系,必须使用数据库实例名。比如我们作开发,要连接数据库,就得连接数据库实例,通过实例名连接:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)
严格的说:一个Oracle服务,只包括一个Oracle实例和一个数据库(不考虑双机并行等这样的情况)。
但是一个实例只能对应一个数据库,一个数据库有可能对应多个实例。除非使用并行 Oracle 服务器选项,否则每个 Oracle 数据库都有一个实例与之相关,一个数据库被唯一的一个实例装载。
数据库与实例之间是1对1/n的关系,在非并行的数据库系统中每个Oracle数据库与一个实例相对应;在并行的数据库系统中,一个数据库会对应多个实例,同一时间用户只与一个实例相联系,当某一个实例出现故障时,其他实例自动服务,保证数据库正常运行。在任何情况下,每个实例都只可以对应一个数据库。
3、表空间
Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间。
表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。
数据库自带表空间:
① SYSAUX表空间
SYSAUX表空间在Oracle Database 10g中引入,作为SYSTEM表空间的辅助表空间以前一些使用独立表空间或系统表空间的数据库组件现在在SYSAUX表空间中创建SYSAUX 表空间存放一些其他的 metadata 组件,如 OEM,Streams 等会默认存放在 SYSAUX 表空间里。通过分离这些组件和功能,SYSTEM表空间的负荷得以减轻反复创建一些相关对象及组件引起SYSTEM表空间的碎片问题得以避免。
② SYSTEM表空间
SYSTEM表空间是Oracle创建数据库时候自动创建的,每个Oracle数据库都会有SYSTEM表空间,而且SYSTEM表空间总是要保持在联机模式下,因为其包含了数据库运行所要求的基本信息,如:数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表等等。
③ TEMP表空间
临时表空间用来管理数据库排序 *** 作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。像数据库中一些 *** 作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、ORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当 *** 作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大的原因。临时表空间存储大规模排序 *** 作(小规模排序 *** 作会直接在RAM里完成,大规模排序才需要磁盘排序Disk Sort)和散列 *** 作的中间结果它跟永久表空间不同的地方在于它由临时数据文件(temporary files)组成的,而不是永久数据文件(datafiles)。临时表空间不会存储永久类型的对象,所以它不会也不需要备份。另外,对临时数据文件的 *** 作不产生redo日志,不过会生成undo日志。
④ UNDO表空间
UNDO表空间是Oracle特有的概念。undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值。在rollback,实例恢复(前滚),一致性读CR块的构造时会使用到undo信息。由于undo的引入,从而Oracle的select语句实现一致性读时,不需要任何锁。undo表空间和其它表空间有很多类似的地方:undo数据块也会被读到buffer cache缓存起来,修改时也会产生redo log,数据也会写回到undo表空间的磁盘上。所以崩溃后,undo块的buffer cache也会恢复过来。
⑤ USERS表空间
创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间,此用户所有信息都会放入到users表空间中。
查看已经创建好的表空间:
1 select default_tablespace, temporary_tablespace, username from dba_users;
4、用户
Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。Oracle的表空间、包括各种数据库对象的使用和 *** 作权限都是通过授权的方式在用户之间使用的。
查看数据库用户:
1 select from dba_users;
综上,现有实例和数据库;用户和表空间都存在于实例之后,是授权访问的,但是系统内置高级权限用户和自带表空间在实例创建之初都会被加载。
因此,实例故障时,其他实例接替服务,故障实例的表空间等信息,都可以通过高级权限用户再行赋权给其他实例。
5、数据库对象
有了数据库,表空间和用户,用户在自己的表空间创建表。有了表,就可以进行开发。
数据库的所有对象,包括过程、函数、包和包体、JOB、表、视图、索引、序列、触发器等都由用户开发,存在于表空间下。
Oracle XE自带数据库是如何创建的呢?这是很多人都提到过的问题,下面就为您详细介绍Oracle XE自带数据库创建的过程,供您参考。
简单的说了一下Oracle 10g XE的字符集问题, 我们接下来看看Oracle XE自带数据库如何创建的.
老实说,最开始在Windows上安装XE的时候,步骤非常简单,还以为Oracle已经掩盖了全部细节呢,安装之后浏览一下相关目录就清晰多了. 我把XE 安装到 D: 盘,在 D:\oraclexe\app\oracle\product\1020\server\config\scripts 目录下有如下文件:
2010-01-24 20:47 1,783 cloneDBCreationsql 2010-01-24 20:47 321 CloneRmanRestoresql 2010-01-24 20:48 2,410 initora 2010-01-24 20:48 2,177 initXETempora 2010-01-24 20:47 929 postDBCreationsql 2010-01-24 20:47 780 postScriptssql 2010-01-24 20:47 1,334 rmanRestoreDatafilessql 2010-01-24 20:47 1,424 XEbat 2010-01-24 20:47 716 XEsql
XEbat 批处理文件完成如下事情:添加需要的 *** 作系统用户; 创建相关目录存放 Oracle数据文件;设定 Oracle 环境变量主要是 SID 名字;调用 Oradim 命令创建XE 的实例; 然后调用XEsql 脚本.
XEsql 脚本首先定义XE 实例的用户需要用到的密码,然后用 orapwdexe 创建密码文件, 这些步骤都和普通的 Oracle 创建实例的脚本非常相似.接下里就有意思了:XEsql 调用 CloneRmanRestoresql , CloneRmanRestoresql 调用rmanRestoreDatafilessql
variable devicename varchar2(255); declare omfname varchar2(512) := NULL; done boolean; begin dbms_outputput_line(' '); dbms_outputput_line(' Allocating device '); dbms_outputput_line(' Specifying datafiles '); :devicename := dbms_backup_restoredeviceAllocate; dbms_outputput_line(' Specifing datafiles '); dbms_backup_restorerestoreSetDataFile; dbms_backup_restorerestoreDataFileTo(1, 'D:\oraclexe\oradata\XE\systemdbf', 0, 'SYSTEM'); dbms_backup_restorerestoreDataFileTo(2, 'D:\oraclexe\oradata\XE\undodbf', 0, 'UNDOTBS1'); dbms_backup_restorerestoreDataFileTo(3, 'D:\oraclexe\\oradata\XE\sysauxdbf', 0, 'SYSAUX'); dbms_backup_restorerestoreDataFileTo(4, 'D:\oraclexe\oradata\XE\usersdbf', 0, 'USERS'); dbms_outputput_line(' Restoring '); dbms_backup_restorerestoreBackupPiece ('D:\oraclexe\app\oracle\product\1020\server\config\seeddb\EXPRESSdfb', done); if done then dbms_outputput_line(' Restore done'); else dbms_outputput_line(' ORA-XXXX: Restore failed '); end if; dbms_backup_restoredeviceDeallocate; end; /
非常有意思.XE 用的是非常规手段: dbms_backup_restore 过程.以前我曾经在 RMAN 备份,未使用catalog,控制文件丢失的解决办法 中作过介绍:
在 Oracle 816 以后的版本中,Oracle 提供了一个包:DBMS_BACKUP_RESTOREDBMS_BACKUP_RESTORE 包是由 dbmsbkrssql 和 prvtbkrsplb 这两个脚本创建的catprocsql 脚本运行后会调用这两个包所以是每个数据库都有的这个包 是Oracle服务器和 *** 作系统之间 IO *** 作的接口由恢复管理器直接调用。
OracleXE 直接用这个包从一个种子备份 'D:\oraclexe\app\oracle\product\1020\server\config\seeddb\EXPRESSdfb' 恢复需要的文件.注意到上面只有四个必要的表空间,Oracle 在发行说明中所说的空间限制就是从这个地方而来.至于能否超过 4g 的限制,我后面再分析.
接下来 XEsql 调用 cloneDBCreationsql,这个脚本的主要目的是为了创建一个可用的控制文件.
并利用dbms_backup_restore 的 zerodbid(0) 函数创建了一个新的 DBID .
然后
alter database "XE" open resetlogs;alter database rename global_name to "XE";并添加了一个临时表空间 Temp
这个脚本执行之后,XEsql 调用 postDBCreationsql, 通过如下过程定义端口:
begin dbms_xdbset>
SYSAUX表空间重建测试 (>
第一章 安装 目标完成本课 您将能够:列出新的安装特性列出安装性能的增加安装新特性支持数据库存储选项 文件系统 自动存储管理(a ) 裸设备数据库管理选项 企业管理器网格控制器 企业管理器数据库控制器数据库备份和恢复选项电子邮件通知选项cluster ready服务克隆oracle g报告下面的新安装特性:配置使用oraclea 安装和配置新的企业管理器(EM)框架 如果你选择使用oracle企业管理器数据库控制器 你可以有配置使用oracle推荐的默认备份策略的选项如果你在安装的时候使用oracle企业管理器数据库控制器 你可以配置em发送警告到你知道的email地址 这些警告包括磁盘空间到了严重的界限或数据库非正常关闭 RAC的加强 g安装支持RAC新特性 尤其是安装Cluster ready服务 oracle的homes可以使用企业配置管理工具进行克隆 这个工具是附带在grid control中的 安装的性能加强内存需求 有数据库控制器的实例 m 无数据库控制器的实例 m磁盘需求 G的交换分区(或Ram的两倍) /tmp目录下要有 m的空间 oracle软件大概要 g到 g g可配置的数据库(可选) g的闪回区(可选) 减少了安装数据库的总大小 去掉了旧的选项完全安装大概 min只需要一张cd查看安装前的必要条件 查看是否有足够的临时空间 位和 位的问题 检查正确的os 检查ps的patch 系统包 系统/内核参数 x 服务器的许可 足够的交换空间 非空的oracle_home混杂的安装加强sys和system密码只需要输入一次干净的反安装 没有文件留下 oracle home外的文件都被清除 windows中的注册表记录被清除有特定的 oc j需求b_idsableStartMenu变量受到ISV的支持CD pack的内容oracle database g cdpanion cdoracle iAS infrastructure cdoracle database g clientoracle enterprise manger cdoracle documentation g cdoracle database g demos cdpanion cd 有 dbworkflowohssqlj jpublishercontext knowledgelegato storage managerexamples管理选项如果你在安装的时候选择创建启动数据库 你可以看到很多屏幕问你配置启动数据库的下面的信息命名数据库字符集schema样本数据库管理文件存储选项文件系统 把文件存储在你配置的os文件系统上ASm ASM文件是自动创建和配置的 你可以得到额外的镜向 条带化等益处 裸设备(分区) 上面没有文件系统的磁盘分区 备份和恢复选项安装的时候会提示你要不要进行自动备份口令安装的时候你可以为所有的用户设置同一个口令 也可以单独为他们设置 第二章 服务器配置 完成本章之后 您将能够:描述使用dbca安装完数据库之后oracle g功能性的支持同时使用初始化参数的子集来简化实例配置从dbca安装样本schema(可选的)从oem中查看数据库使用统计dbca的加强dbca为oracle标准提供快速创建功能齐全的马上可以使用的数据库:自动创建sysaux辅助表空间应用闪回去 并且设置闪回备份和恢复策略out of the box管理资料库自动统计的收集自动ldap注册oracle g为了简化当年的将来的自我管理活动 引进了许多特性上的改善 这次改善包括存储所有辅助元数据和工作负载信息和为了优化性能的监控工具的公用体系结构 这些改善都是被dbca完全支持和应用的 新的属于系统的sysaux表空间为所有的不存在system表空间的辅助数据库元数据提供了集中的位置 它减少了创建摩尔表空间的数目 无论是种子数据库还是用户定义的数据库 dbca现在自动的配置默认的闪回区 这是为需要恢复的文件和数据库活动的统一存储位置 oem资料库 作业 事件子系统现在都是自动的配置 减少了人工安装的需要 以个新的嵌入和完全自我管理的资料库捕捉工作负载信息和与性能有关的统计 这样减少了管理成本 dbca配置的新目录减少了使用网络api配置ldap ora的需要 简化种子数据库 简化初始化参数 减小大小 样本schema的可选安装为磁盘存储的自动存储管理ASM现在oracle数据库的配置更容易 dba只需要注意少量几个初始化参数 参数现在分成两组 基本的和高级的参数 在大多数情况下 为了得到合理的性能 你之需要设置或修改基本参数 他们大概有 个 你现在可以时候dbca配置a 为oracle数据库文件建立的和文件系统和卷管乐器的综向集成 为了常规和rac环境 使用数据库控制器进行管理在这个dbca屏幕上 你可以设置你的数据库使用grid控制器还是数据库控制器 当你运行dbca的时候 它要确定oracle管理代理已经在这个计算机上安装了 如果有 你就可以从下拉框选择oracle管理服务和grid control选项来进行中央化管理 当你完成安装的时候 这个服务作为被管理的目标是自动启动的 如果你不中央管理你的oracle环境 你仍然可以使用em来管理你的数据库 em database control在你数据库安装的时候 自动安装了 你可以使用db control提供的基于web的特性来监控 管理你安装的单实例或集群数据库 你也可以配em为sy an用户接受电子邮件通知 当metric到了一定严重或警告的时候 当你选择db control的时候 你还可以配置每天备份到闪回区 SYSAUX和dbcadbca支持强制创建sysaux表空间 在数据库存储页 sysaux是tablespace文件夹必要的原始 你可以通过单击 存储标签或在datafile文件夹相应的sysaux入口来改变sysaux的数据库文件和存储参数 数据文件和存储参数有默认的值 但你单击finish的时候 dbca就会和其它的数据库创建事件一起创建sysaux表空间和它的schema 所有的种子数据库都有sysaux表空间 使用企业管理器启动控制台os> emctl start dbconsole访问数据库控制器 //hostname: /em要提供sys/passwd as sysdba;你要从一个客户端浏览器访问em 数据库控制器 必须要运行dbconsole进程 安装之后 dbconsole进程是自动会启动的 然后 如果这个集成没有启动 你可以向下面的命令行手工的启动它: 到$ORACLE_HOME/bin目录下 执行下面的命令: emctl start dbconsole这样你就可以打开web浏览器 输入下面的url ortnumber/em TARGET=//hostnameortnumber/em来访问em db control host那么是你的计算机的名字或地址 portnumber是em db control 的端口号 这是在安装的时候指定的 默认的是 你可以在$ORACLE_HOME/install/portlist ini文件中找到这个值 如果实例启动了 EM就会显示db control登录页 你必须使用授权访问db control的用户登录到数据库 一开始是sys用户 使用在安装的时候你确定的sys用户的密码 从connect as 下拉框选sysdba 然后点登录 这样就会出现db control的主页 数据库克隆在你成功的配置调整和测试新的实例之后 你也许需要克隆数据库到一个已有的oracle home 你可以使用em clone database向导来完成克隆 要克隆一个数据库 你可以到要克隆的数据库的维护页 然后在deployment区点击clone 数据库 克隆数据库工具有下列特性:克隆数据库可以从 或后来的版本可以在源数据库打开的时候进行克隆备份数据文件 把它copy到指定的oracle home下 然后通过备份的数据库文件和归档恢复数据库来创建新的数据库 新的数据库跟到备份开始的源数据库一模一样 在指定的oracle home下创建新的数据库实例 密码文件 设置网络文件 根据源实例配置创建初始化参数文件和spfile 然后启动新的实例到open模式 clone database工具是使用rman来完成数据库克隆的 metalink的集成oem G 通过内置的metalink集成大大简化了安装补丁 em会自动的警告你关键更新和系统需要指定补丁的标注 你可以使用em patch向导来看哪些临时补丁可以安装 你还可以使用patch向导来选择补丁和查看你的系统是否需要这个补丁 你可以直接从em看到补丁的详细信息已经readme 按照下面的步骤访问补丁向导 在db control主页选maintenance标签 在deployments区下面 lishixinzhi/Article/program/Oracle/201311/17212
以上就是关于手动创建Oracle数据库之前因后果全部的内容,包括:手动创建Oracle数据库之前因后果、oracle10g数据库如何建库名、oracle数据库中,应用所使用的数据库用户,可以访问哪类数据库系统表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)