oracle database xe 11.2 怎样创建数据库

oracle database xe 11.2 怎样创建数据库,第1张

Oracle XE自带数据库是如何创建的呢?这是很多人都提到过的问题,下面就为您详细介绍Oracle XE自带数据库创建的过程,供您参考。

简单的说了一下Oracle 10g XE的字符集问题, 我们接下来看看Oracle XE自带数据库如何创建的.

老实说,最开始在Windows上安装XE的时候,步骤非常简单,还以为Oracle已经掩盖了全部细节呢,安装之后浏览一下相关目录就清晰多了. 我把XE 安装到 D: 盘,在 D:\oraclexe\app\oracle\product\10.2.0\server\config\scripts 目录下有如下文件:

2010-01-24 20:47 1,783 cloneDBCreation.sql 2010-01-24 20:47 321 CloneRmanRestore.sql 2010-01-24 20:48 2,410 init.ora 2010-01-24 20:48 2,177 initXETemp.ora 2010-01-24 20:47 929 postDBCreation.sql 2010-01-24 20:47 780 postScripts.sql 2010-01-24 20:47 1,334 rmanRestoreDatafiles.sql 2010-01-24 20:47 1,424 XE.bat 2010-01-24 20:47 716 XE.sql

XE.bat 批处理文件完成如下事情:添加需要的 *** 作系统用户创建相关目录存放 Oracle数据文件设定 Oracle 环境变量主要是 SID 名字调用 Oradim 命令创建XE 的实例然后调用XE.sql 脚本

XE.sql 脚本首先定义XE 实例的用户需要用到的密码,然后用 orapwd.exe 创建密码文件, 这些步骤都和普通的 Oracle 创建实例的脚本非常相似.接下里就有意思了:XE.sql 调用 CloneRmanRestore.sql , CloneRmanRestore.sql 调用rmanRestoreDatafiles.sql.

variable devicename varchar2(255) declare omfname varchar2(512) := NULL done boolean begin dbms_output.put_line(' ') dbms_output.put_line(' Allocating device.... ') dbms_output.put_line(' Specifying datafiles... '):devicename := dbms_backup_restore.deviceAllocate dbms_output.put_line(' Specifing datafiles... ') dbms_backup_restore.restoreSetDataFile dbms_backup_restore.restoreDataFileTo(1, 'D:\oraclexe\oradata\XE\system.dbf', 0, 'SYSTEM') dbms_backup_restore.restoreDataFileTo(2, 'D:\oraclexe\oradata\XE\undo.dbf', 0, 'UNDOTBS1') dbms_backup_restore.restoreDataFileTo(3, 'D:\oraclexe\\oradata\XE\sysaux.dbf', 0, 'SYSAUX') dbms_backup_restore.restoreDataFileTo(4, 'D:\oraclexe\oradata\XE\users.dbf', 0, 'USERS') dbms_output.put_line(' Restoring ... ') dbms_backup_restore.restoreBackupPiece ('D:\oraclexe\app\oracle\product\10.2.0\server\config\seeddb\EXPRESS.dfb', done) if done then dbms_output.put_line(' Restore done.') else dbms_output.put_line(' ORA-XXXX: Restore failed ') end if dbms_backup_restore.deviceDeallocate end /

非常有意思.XE 用的是非常规手段: dbms_backup_restore 过程.以前我曾经在 RMAN 备份,未使用catalog,控制文件丢失的解决办法 中作过介绍:

在 Oracle 816 以后的版本中,Oracle 提供了一个包:DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE 包是由 dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本创建的.catproc.sql 脚本运行后会调用这两个包.所以是每个数据库都有的这个包. 是Oracle服务器和 *** 作系统之间 IO *** 作的接口.由恢复管理器直接调用。

OracleXE 直接用这个包从一个种子备份  'D:\oraclexe\app\oracle\product\10.2.0\server\config\seeddb\EXPRESS.dfb' 恢复需要的文件.注意到上面只有四个必要的表空间,Oracle 在发行说明中所说的空间限制就是从这个地方而来.至于能否超过 4g 的限制,我后面再分析.

接下来 XE.sql 调用 cloneDBCreation.sql,这个脚本的主要目的是为了创建一个可用的控制文件.

并利用dbms_backup_restore 的 zerodbid(0) 函数创建了一个新的 DBID .

然后

alter database "XE" open resetlogsalter database rename global_name to "XE"并添加了一个临时表空间 Temp.

这个脚本执行之后,XE.sql 调用 postDBCreation.sql, 通过如下过程定义端口:

begin dbms_xdb.sethttpport('8080')dbms_xdb.setftpport('0') end

/最后 XE.sql 调用 postScripts.sql ,主要是一些后续的 *** 作,Patch 脚本什么的.

到此,数据库创建已经完成.也就是图形化安装的时候 1~5 的几个步骤省略的过程.其实没那么复杂.

如果是 Linux 版本,则这一堆脚本在 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts 这个目录下.除了调用 oradim.exe 命令之外,其他差异不大.

停止服务再删除安装包和用户目录,具体步骤如下:

使用SQL*PLUS停止数据库

[oracle@OracleTest oracle]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> shutdown [immediate]

SQL> exit

停止Listener

[oracle@OracleTest oracle]$ lsnrctl stop

停止HTTP服务

[root@OracleTest /root]# service httpd stop

停止HTTP服务

[root@OracleTest /root]# service httpd stop

5.    用su或者重新登录到root(如想重新安装可以保留oracle用户,省得输入环境变量了)

6.    将安装目录删除

[root@OracleTest /root]# rm -rf /u01/app/oracle/

7.    将/usr/bin下的文件删除

[root@OracleTest /root]# rm /usr/local/bin/dbhome

[root@OracleTest /root]# rm /usr/local/bin/oraenv

[root@OracleTest /root]# rm /usr/local/bin/coraenv

8.    将/etc/oratab删除

[root@OracleTest /root]# rm /etc/oratab

9.    将/etc/oraInst.loc删除

[root@OracleTest /root]# rm /etc/oraInst.loc

10.    将oracle用户删除(若要重新安装,可以不删除)

[root@OracleTest /root]# userdel –r oracle

11.    将用户组删除(若要重新安装,可以不删除)

[root@OracleTest /root]# groupdel oinstall

[root@OracleTest /root]# groupdel dba

12.    将启动服务删除

[root@OracleTest /root]# chkconfig --del dbora

到此为止重启后,你的Linux系统下的Oracle数据库已完全删除了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6825858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存