oracle架构如何搭建,oracle系统架构
oracle 求助
内容的顺序基本没什么问题,从由浅入深,可以考虑按下面顺序:
创新互联公司拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的成都做网站、网站制作、网站维护、珉田数据中心解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、商城网站开发、政府网站等各类型客户群体,为全球近千家企业提供全方位网站维护、服务器维护解决方案。
2、 oracle数据库安装、启动、卸载
1、 oracle数据库的常用术语和基本概念
3、 oracle数据库管理员(也可以在12之后再看)
(1) orcale的用户类型
(2) 数据库管理员的安全和权限
(3) 数据库管理员的创建、修改、删除、权限设置
4、 创建、修改、删除orcale数据库
8、 管理表
11、 数据库的备份和还原
12、 数据的导入导出
5、 管理表空间
6、 管理控制文件
7、 管理数据文件
9、 管理分区表和分区索引
10、 检测和修复数据块损坏
13、 Oracle数据库的迁移
14、 数据库安全策略
15、 SQL程序设计
基本概念很重要,西方人喜欢把一个复杂的功能切割成很多独立的小部分,所以首先应当了解数据库要实现的总体功能,各个组件是如何设置来实现这些功能的以及Oracle的体系架构,这样学习起来才能事半功倍。
powerdesigner 怎么建立oracle11g架构
在模型设计方面,10g和11g没有任何区别,这里没必要非得选11g。
谁能把Oracle的体系结构用通俗的语言讲解一下 我要自己理解的.用通俗的话说出来.
1、 ORACLE 实例――包括内存结构与后台进程 2、 ORACLE 数据库――物理操作系统文件的集合 3、 了解内存结构的组成 4、 了解后台进程的作用
1、 Oracle 实例――包括内存结构与后台进程
2、 Oracle 数据库――物理操作系统文件的集合
3、 了解内存结构的组成
4、 了解后台进程的作用
5、 了解数据库的物理文件
6、 解释各种逻辑结构
一、Oracle实例
1、Oracle 实例
System Global Area(SGA) 和 Background Process 称为数据库的实例。
2、Oracle 数据库
一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)
3、系统全局共享区System Global Area(SGA)
System Global Area 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被Oracle的各个进程共用。其大小可以通过如下语句查看:
SQL select * from v$sga;
NAME VALUE
-------------------- ---------
Fixed Size 39816
Variable Size 259812784
Database Buffers 1.049E+09
Redo Buffers 327680
更详细的信息可以参考V$sgastat、V$buffer_pool
主要包括以下几个部分:
a、 共享池(Shared pool)
共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:
SQL语句缓冲(Library Cache)
当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Shared pool的Library Cache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。
下面举例说明parse的时间
SQL select count(*) fromscpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.08
这是在Share_pool 和Data buffer 都没有数据缓冲区的情况下所用的时间
SQL alter system flush SHARED_POOL;
System altered.
清空Share_pool,保留Data buffer
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.02
SQL select count(*) from scpass ;
COUNT(*)
----------
243
Elapsed: 00:00:00.00
从两句SQL 的时间差上可以看出该SQL 的Parse 时间约为00:00:00.02
对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Share pool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。
数据字典缓冲区(Data Dictionary Cache)
显而易见,数据字典缓冲区是Oracle特地为数据字典准备的一块缓冲池,供Oracle内部使用,没有什么可以说的。
b、块缓冲区高速缓存(Database Buffer Cache)
这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作。在这个级别里没有系统文件,,户数据文件,临时数据文件,回滚段文件之分。也就是任何文件的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成,并由DBWR进程将修改后的数据写入磁盘。
这个缓冲区的块基本上在两个不同的列表中管理。一个是块的“脏”表(Dirty List),需要用数据库块的
书写器(DBWR)来写入,另外一个是不脏的块的列表(Free List),一般的情况下,是使用最近最少使用 (Least Recently Used,LRU)算法来管理。块缓冲区高速缓存又可以细分为以下三个部分(Default pool,Keep pool,Recycle pool)。如果不是人为设置初始化参数(Init.ora),Oracle将默认为Default pool。由于操作系统寻址能力的限制,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以达到1.7G,在64位系统上,块缓冲区高速缓存最大可以达到10G。
c、重做日志缓冲区(Redo log buffer)
重做日志文件的缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘。这些修改信息可能是DML语句,如(Insert,Update,Delete),或DDL语句,如(Create,Alter,Drop等)。 重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多,所以重作日志缓冲区可以加快数据库的操作速度,但是考虑的数据库的一致性与可恢复性,数据在重做日志缓冲区中的滞留时间不会很长。所以重作日志缓冲区一般都很小,大于3M之后的重作日志缓冲区已经没有太大的实际意义。
d、Java程序缓冲区(Java Pool)
Java 的程序区,Oracle 8I 以后,Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。
e、大池(Large Pool)
大池的得名不是因为大,而是因为它用来分配大块的内存,处理比共享池更大的内存,在8.0开始引入。
下面对象使用大池:
MTS――在SGA的Large Pool中分配UGA
语句的并行查询(Parallel Executeion of Statements)――允许进程间消息缓冲区的分配,用来协调 并行查询服务器
备份(Backup)――用于RMAN磁盘I/O缓存
4、后台进程(Background process)
后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上, Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个Oracle.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。
在Unix上可以通过如下方法查看后台进程:
ps ?ef | grep ora_
# ps -ef | grep ora_ | grep XCLUAT
Oracle 29431 1 0 Sep 02 2:02 ora_dbwr_SID
Oracle 29444 1 0 Sep 02 0:03 ora_ckpt_SID
Oracle 29448 1 0 Sep 02 2:42 ora_smon_SID
Oracle 29442 1 0 Sep 02 3:25 ora_lgwr_SID
Oracle 29427 1 0 Sep 02 0:01 ora_pmon_SID
a、Oracle系统有5 个基本进程他们是
DBWR(数据文件写入进程)
LGWR(日志文件写入进程)
SMON(系统监护进程)
PMON(用户进程监护进程)
CKPT(检查点进程,同步数据文件, 日志文件,控制文件)
b、DBWR
将修改过的数据缓冲区的数据写入对应数据文件
维护系统内的空缓冲区
这里指出几个容易错误的概念:
当一个更新提交后,DBWR把数据写到磁盘并返回给用户提交完成.
DBWR会触发CKPT 后台进程
DBWR不会触发LGWR 进程
上面的概念都是错误的.
DBWR是一个很底层的工作进程,他批量的把缓冲区的数据写入磁盘。和任何前台用户的进程几乎没有什么关系,也不受他们的控制。至于DBWR会不会触发LGWR和CKPT进程,我们将在下面几节里讨论。
DBWR工作的主要条件如下
DBWR 超时
系统中没有多的空缓冲区用来存放数据
CKPT 进程触发DBWR 等
c、LGWR
将重做日志缓冲区的数据写入重做日志文件,LGWR是一个必须和前台用户进程通信的进程。当数据被修改的时候,系统会产生一个重做日志并记录在重做日志缓冲区内。这个重做日志可以类似的认为是以下的一个结构:
SCN=000000001000
数据块ID
对象ID=0801
数据行=02
修改后的数据=0011
提交的时候,LGWR必须将被修改的数据的重做日志缓冲区内数据写入日志数据文件,然后再通知前台进程提交成功,并由前台进程通知用户。从这点可以看出LGWR承担了维护系统数据完整性的任务。
LGWR 工作的主要条件如下
用户提交
有1/3 重做日志缓冲区未被写入磁盘
有大于1M 重做日志缓冲区未被写入磁盘
超时
DBWR需要写入的数据的SCN号大于LGWR 记录的SCN号,DBWR 触发LGWR写入
d、SMON
工作主要包含
清除临时空间
在系统启动时,完成系统实例恢复
聚结空闲空间
从不可用的文件中恢复事务的活动
OPS中失败节点的实例恢复
清除OBJ$表
缩减回滚段
使回滚段脱机
e、PMON
主要用于清除失效的用户进程,释放用户进程所用的资源。如PMON将回滚未提交的工作,释放锁,释放分配给失败进程的SGA资源。
f、CKPT
同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。
CKPT工作的主要条件如下
在日志切换的时候
数据库用immediate ,transaction , normal 选项shutdown 数据库的时候
根据初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的设置的数值来确定
用户触发
以下进程的启动需要手工配置
g、ARCH
当数据库以归档方式运行的时候,Oracle会启动ARCH进程,当重做日志文件被写满时,日志文件进行切换,旧的重做日志文件就被ARCH进程复制到一个/多个特定的目录/远程机器。这些被复制的重做日志文件被叫做归档日志文件。
h、RECO
负责解决分布事物中的故障。Oracle可以连接远程的多个数据库,当由于网络问题,有些事物处于悬而未决的状态。RECO进程试图建立与远程服务器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。
i、服务进程Server Process
服务进程的分类
专用服务进程(Dedicated Server Process)
一个服务进程对应一个用户进程
共享服务进程(MultiTreaded Server Process)
一个服务进程对应多个用户进程,轮流为用户进程服务。
PGA UGA
PGA = Process Global Area
UGA = User Global Area
他保存了用户的变量、权限、堆栈、排序空间等用户信息,对于专用服务器进程,UGA在PGA中分配。对于多线程进程,UGA在Large pool中分配。
j、用户进程User Process
在客户端,将用户的SQL 语句传递给服务进程
5、一个贯穿数据库全局的概念----系统改变号SCN(System Change Number)
系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
a. 查询语句不会使SCN增加,就算是同时发生的更新,数据库内部对应的SCN也是不同的。这样一来就保证了数据恢复时候的顺序。
b. 维持数据的一致性,当一
二、Oracle 数据库
Oracle数据库的组成――物理操作系统文件的集合。主要包括以下几种。
1、控制文件(参数文件init.ora记录了控制文件的位置)
控制文件包括如下主要信息
数据库的名字,检查点信息,数据库创建的时间戳
所有的数据文件,联机日志文件,归档日志文件信息
备份信息等
有了这些信息,Oracle就知道那些文件是数据文件,现在的重做日志文件是哪些,这些都是系统启动和运行的基本条件,所以他是Oracle运行的根本。如果没有控制文件系统是不可能启动的。控制文件是非常重要的,一般采用多个镜相复制来保护控制文件,或采用RAID来保护控制文件。控制文件的丢失,将使数据库的恢复变的很复杂。
控制文件信息可以从V$Controlfile中查询获得
2、数据文件(数据文件的详细信息记载在控制文件中)
可以通过如下方式查看数据文件
SQL select name from v$datafile;
NAME
---------------------------------------------
/u05/dbf/PROD/system_01.dbf
/u06/dbf/PROD/temp_01.dbf
/u04/dbf/PROD/users_01.dbf
/u09/dbf/PROD/rbs_01.dbf
/u06/dbf/PROD/applsys_indx_01.dbf
/u05/dbf/PROD/applsys_data_01.dbf
从以上可以看出,数据文件大致可以分为以下几类:
i. 系统数据文件(system_01.dbf)
存放系统表和数据字典,一般不放用户的数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中的。
名词解释:数据字典 数据字典是一些系统表或视图,他存放系统的信息,他包括数据库版本,数据文件信息,表与索引等段信息,系统的运行状态等各种和系统有关的信息和用户脚本信息。数据库管理员可以通过对数据字典的查询,就可以了解到Oracle的运行状态。
ii. 回滚段文件(rbs_01.dbf)
如果数据库进行对数据的修改,那么就必须使用回滚段,回滚段是用来临时存放修改前的数据(Before Image)。回滚段通常都放在一个单独的表空间上(回滚表空间),避免表空间碎片化,这个表空间包含的数据文件就是回滚数据文件。
iii. 临时数据文件(temp_01.dbf)
主要存放用户的排序等临时数据,与回滚段相似,临时段也容易引起表空间碎片化,而且没有办法在一个永久表空间上开辟临时段,所以就必须有一个临时表空间,它所包含的数据文件就是临时数据文件,主要用于不能在内存上进行的排序操作。我们必须为用户指定一个临时表空间。
iv. 用户数据文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
存放用户数据,这里列举了两类常见的用户型数据,一般数据和索引数据,一般来说,如果条件许可的话,可以考虑放在不同的磁盘上。
3、重做日志文件(联机重做日志)
用户对数据库进行的任何操作都会记录在重做日志文件。在了解重做日志之前必须了解重做日志的两个概念,重做日志组和重做日志组成员(Member),一个数据库中至少要有两个日志组文件,一组写完后再写另一组,即轮流写。每个日志组中至少有一个日志成员,一个日志组中的多个日志成员是镜相关系,有利于日志文件的保护,因为日志文件的损坏,特别是当前联机日志的损坏,对数据库的影响是巨大的。
联机日志组的交换过程叫做切换,需要特别注意的是,日志切换在一个优化效果不好的数据库中会引起临时的“挂起”。挂起大致有两种情况:
在归档情况下,需要归档的日志来不及归档,而联机日志又需要被重新利用
检查点事件还没有完成(日志切换引起检查点),而联机日志需要被重新利用
解决这种问题的常用手段是:
i.增加日志组
ii.增大日志文件成员大小
通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。
4、归档日志文件
Oracle可以运行在两种模式之中,归档模式和不归档模式。如果不用归档模式,当然,你就不会有归档日志,但是,你的系统将不会是一个实用系统,特别是不能用于生产系统,因为你可能会丢失数据。但是在归档模式中,为了保存用户的所有修改,在重做日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。
有人或许会说,归档日志文件占领我大量的硬盘空间,其实,具体想一想,你是愿意浪费一点磁盘空间来保护你的数据,还是愿意丢失你的数据呢?显而义见,我们需要保证我们的数据的安全性。其实,归档并不是一直占领你的磁盘空间,你可以把她备份到磁带上,或则删除上一次完整备份前的所有日志文件。
5、初始化参数文件
initSID.ora或init.ora文件,因为版本的不一样,其位置也可能会不一样。在8i中,通常位于$Oracle_HOME/admin//Pfile下,初始化文件记载了许多数据库的启动参数,如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载),初始化文件记录了很多重要参数,对数据库的性能影响很大,如果不是很了解,不要轻易乱改写,否则会引起数据库性能下降。
6、其他文件
i . 密码文件
用于Oracle 的具有sysdba权限用户的认证.
ii. 日志文件
报警日志文件(alert.log或alrt.ora)
记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。你可以通过以下SQL 找到他的路径select value from v$PARAMETER where name ="background_dump_dest";
后台或用户跟踪文件
系统进程或用户进程出错前写入的信息,一般不可能读懂,可以通过Oracle的TKPROF工具转化为可以读懂的格式。对于系统进程产生的跟踪文件与报警日志文件的路径一样,用户跟踪文件的路径,你可以通过以下SQL找到他的路径select value from v$PARAMETER where name ="user_dump_dest";
三、Oracle逻辑结构
1、 表空间(tablespace)
表空间是数据库中的基本逻辑结构,一系列数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
2、 段(Segment)
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。
段基本可以分为以下四种
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
3、区间(Extent)
关于Extent的翻译有多种解释,有的译作扩展,有的译作盘区,我这里通常译为区间。在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。 在Oracle8i以上版本,理论上一个段可以无穷个区间,但是多个区间对Oracle却是有性能影响的,Oracle建议把数据分布在尽量少的区间上,以减少Oracle的管理与磁头的移动。
4、Oracle数据块(Block)
Oracle最基本的存储单位,他是OS数据块的整数倍。Oracle的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,Oracle实际也扩展到块的整数倍)。
5、基本表空间介绍
a. 系统表空间
主要存放数据字典和内部系统表基表
查看数据数据字典的SQL
select * from dict
查看内部系统表的SQL
select * from v$fixed_view_definition
DBA对系统的系统表中的数据字典必须有一个很深刻的了解,他们必须准备一些基础的SQL语句,通过这些SQL可以立即了解系统的状况和数据库的状态,这些基本的SQL包括
系统的剩余空间
系统的SGA
状态系统的等待
用户的权限
当前的用户锁
缓冲区的使用状况等
在成为DBA 的道路上我们不建议你过分的依赖于OEM/Quest 等优秀的数据库管理工具,因为他们不利于你对数据数据字典的理解,SQL语句可以完成几乎全部的数据库管理工作。
大量的读少量的写是该表空间的一个显著的特点。
b. 临时表空间.
临时表空间顾名思义是用来存放临时数据的,例如排序操作的临时空间,他的空间会在下次系统启动的时候全部被释放。
c. 回滚段表空间
i. 回滚段在系统中的作用
当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(Before Image)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一至性。
回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。
ii. 回滚段的工作方式
一个回滚表空间可以被划分成多个回滚段.
一个回滚段可以保存多个会话的数据.
回滚段是一个圆形的数据模型
假设回滚段由4 个区间组成,他们的使用顺序就是区间1à区间2à区间3à区间4à区间1。也就是说,区间是可以循环使用的,当区间4到区间1的时候,区间1里面的会话还没有结束, 区间4用完后就不能再用区间1,这时系统必须分配区间5,来继续为其他会话服务服务。
我们分析一个Update 语句的完成
①. 用户提交一个Update 语句
②. Server Process 检查内存缓冲.
如果没有该数据块的缓冲,则从磁盘读入
i. 如果没有内存的有效空间,DBWR被启动将未写入磁盘的脏缓冲写入磁盘
ii. 如果有有效空间,则读入
③. 在缓冲内更新数据
i. 申请一个回滚段入口,将旧数据写如回滚段
ii. 加锁并更新数据
iii. 并在同时将修改记录在Redo log buffer中
如何搭建sde数据库 oracle
安装oracle数据库。
使用相应版本的arcsde连接到oracle数据库。
post一下sde相关信息到oracle数据库里面。
如何配置oracle数据库环境
1.安装oracle 11g
2.Oracle自带的SQL Developer
在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL DeveloperW工具,在操作系统菜单的所有程序中找到SQL Developer如下所示,并单击:
结果却提示缺少快捷方式,没找到“SQLDEVELOPER.BAT”,**
在Oracle的安装目录D:\DataBaseInstall\Oralce_11g_r2\product\11.2.0\dbhome_1\sqldeveloper\sqldeveloper\bin下的确也没找到sqldeveloper.bat文件。网上很多人都说重新下载SQL Developer替换掉安装Oracle时自带的那个。
重新到Oracle官网下载SQL Developer,当前最新版下载地址:
将下载下来的 sqldeveloper64-3.2.20.09.87-no-jre.zip解压到Oracle安装目录下
这时重新单击操作系统菜单中的“SQL Developer”,看到命令窗口闪一下就消失了。看了一下SQL Developer的“readme.html”文档知道了SQL Developer 3.2支持的Java版本至少要1.6.0_04。
那就下载当前最新JDK安装,在这里我下载的是jrockit-jdk1.6.0_37-R28.2.5-4.1.0-windows-x64.exe。下载完成后双击出现如下安装界面:
在欢迎窗口中单击“Next”:
设置JDK安装目录,单击“Next”:
这里问你是否需要安装示例或源代码,根据需要选择,这里我就不选了直接单击“Next”:
这里是否安装JRE,选择“Yes”,单击“Next”:
设置JRE安装目录,单击“Next”:
安装过程:
安装完毕,单击“Done”关闭。
现在新的JDK安装完后,重新单击操作系统菜单中的“SQL Developer”,这时“SQL Developer”可以启动,但是报了如下的异常:
Exception initializing 'oracle.dbtools.raptor.plsql.PLSQLAddin' in extension 'Or
acle SQL Developer': java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap
at oracle.jdevimpl.debugger.jdi.DebugJDIConnector.getVersion(DebugJDICon
nector.java:30)
at oracle.jdevimpl.debugger.support.DebugFactory.(DebugFactory.j
ava:81)
at oracle.dbtools.raptor.plsql.PLSQLAddin.initialize(PLSQLAddin.java:97)
at oracle.ideimpl.extension.AddinManagerImpl.initializeAddin(AddinManage
rImpl.java:407)
at oracle.ideimpl.extension.AddinManagerImpl.initializeAddins(AddinManag
erImpl.java:214)
at oracle.ideimpl.extension.AddinManagerImpl.initProductAndUserAddins(Ad
dinManagerImpl.java:128)
at oracle.ide.IdeCore.initProductAndUserAddins(IdeCore.java:1941)
at oracle.ide.IdeCore.startupImpl(IdeCore.java:1565)
at oracle.ide.Ide.startup(Ide.java:703)
at oracle.ideimpl.DefaultIdeStarter.startIde(DefaultIdeStarter.java:35)
at oracle.ideimpl.Main.start(Main.java:184)
at oracle.ideimpl.Main.main(Main.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at oracle.ide.boot.PCLMain.callMain(PCLMain.java:62)
at oracle.ide.boot.PCLMain.main(PCLMain.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodA
ccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.classloader.util.MainClass.invoke(MainClass.java:128) at oracle.ide.boot.IdeLauncher.bootClassLoadersAndMain(IdeLauncher.java: 189) at oracle.ide.boot.IdeLauncher.launchImpl(IdeLauncher.java:89) at oracle.ide.boot.IdeLauncher.launch(IdeLauncher.java:65) at oracle.ide.boot.IdeLauncher.main(IdeLauncher.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.ide.boot.Launcher.invokeMain(Launcher.java:713) at oracle.ide.boot.Launcher.launchImpl(Launcher.java:115) at oracle.ide.boot.Launcher.launch(Launcher.java:68) at oracle.ide.boot.Launcher.main(Launcher.java:57)
看着异常就不爽啊,解决呗。运行命令行窗口查看是否设置了JDK系统环境变量,这里显然是没有设置JDK系统环境变量:
设置系统环境变量
在桌面选中“计算机”右键选择“属性”,单击“高级系统设置”:
在高级选项卡中单击“环境变量”:
在系统变量下单击“新建”,填入变量名“JAVA_HOME”,变量值为JDK的安装目录,我这里为“ D:\JAVAEEServiceInstall\Java\jrockit-jdk1.6.0_37-R28.2.5-4.1.0 ”,单击“确定”:
在系统变量中找到“Path”,单击“编辑”,在变量值中加入“%JAVA_HOME%\bin”以“;”相隔,单击“确定”:
系统环境变量设置完成后,重新启动命令行窗口,检查是否成功。如下为设置成功:
重新单击操作系统菜单中的“SQL Developer”,这时“SQL Developer”可以正常启动:
如果希望不出现“[WARN ][jrockit] MaxPermSize=128M ignored: Not a valid option for JRockit”警告,那用记事本打开SQL Developer的bin目录下的“sqldeveloper.bat”文件,找到“-XX:MaxPermSize=128M”直接删除。因为jrockit已经不需要-XX:MaxPermSize这样的参数了。
注:1.JDK一定要是1.6版本的即U6版本。
2.发现SQL_developer还是会一闪而过,但是SQL_developerW可以方面使用。
3.Oracle SQL Developer 添加SQLServer 和Sybase 连接
1. 开始只有oracle 和access 连接
\
喎?"/kf/ware/vc/" target="_blank" class="keylink"vcD4KPHA+CjxzdHJvbmc+Mi4gtPK/qk9yYWNsZSBTUUwgRGV2ZWxvcGVyo7o8L3N0cm9uZz48L3A+CjxwPgo8c3Ryb25nPrmkvt+hqqGqPHN0cm9uZz4mZ3Q7PC9zdHJvbmc+ytfRoc/uoaqhqjxzdHJvbmc+Jmd0Ozwvc3Ryb25nPsr9vt2/4qGqoaomZ3Q7tdrI/be9SkRCQ8f9tq+zzNDyoaqhqiZndDvM7bzTx/22r8z1xL88L3N0cm9uZz48YnI+CjwvcD4KPHA+CjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20160421/20160421091223242.jpg" alt="\"
\
3. 自动加载到目录,JTDS.jar 下载后就到放这里。
(我的路径:C:\Documents and Settings\Administrator\Application Data\SQL Developer\)
我的JTDS.jar免费下载地址:
\
4. 完成后添加连接有SQLServer 和Sybase了。
\
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
还有一种添加方法是:
1. 帮助——检查更新
\
2. 选择可更新的相关软件查件
\
3. 单击下一步自动更新,则出现下列详细插件,选取JTDS JDBC Driver……
\
\
4. 填写在官方网址上的账户信息,确定。
\
4.sqlserver 转oracle
上一次,我使用手工转换SQL脚本的方式进行数据库的迁移,其间过程相当繁琐,特别是标识符长度的限制让我焦头烂额,因为我们的系统中长标识符真是多如繁星,另外,表结构建好之后,数据的迁移又是一个相当复杂的过程,因为修改了不少的表名,需要把导出的数据和表一一对应上。
但是,除了手工的方式之外,其实我们还有更为简便和自动化的解决方案,那就是ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench。
什么是Oracle SQL Developer?在官方页面上,是这样介绍它的:
Oracle SQL Developer is a free and fully supported graphical tool for database development. With SQL Developer, you can browse database objects, run SQL statements and SQL scripts, and edit and debug PL/SQL statements. You can also run any number of provided reports, as well as create and save your own. SQL Developer enhances productivity and simplifies your database development tasks .
另外,通过第三方驱动包,该工具还支持连接和管理各种主流数据库服务器。
下面就把我使用这个工具迁移Microsoft SQL Server 2008数据库到Oracle 11G的过程记录下来,为了积累也为分享。
第一部分:获取工具
第二部分:建立资料档案库(Migration Repository)
第三部分:数据库移植向导
第四部分:SqlServer中的架构到Oracle中的模式,名称的处理
第五部分:转移数据
第六部分:存储过程和函数
首先,当然是获得工具,该工具在Oracle Sql Developer官方下载页面里面可以直接下载到。Windows 32位直连地址:Windows 32bit Sql Developer。Oracle Sql Developer需要JDK的支持,在下载页面中提供了包含JDK的下载包,还有支持各种操作系统的下载选项。
下载后,解压到任意位置。直接运行程序。第一次运行,需要指定JDK的目录。
启动后,我们要做的第一件事,不干别的,先下载SQL SERVER的驱动程序。点击菜单帮助,选择检查更新,弹出检查更新向导窗口,第一页一般是废话,直接下一步,等更新中心列表加载完毕后,只选择“Third Party SQL Developer extensions”,点击下一步,等待更新搜索完毕后,中列表中找到并选中 JTDS JDBC Driver,如下图:
image
下一步,在许可协议页面,点击“我同意”按钮后再点下一步,等下载完毕后关闭窗口,弹出提示需要重启程序才能完成更新,点击“是”。等程序重启完毕。
环境准备完毕,开始进入到正题移植数据库。
建立资料档案库(Migration Repository)
一、连接到Oracle
在程序左边的连接窗口中,点击加号按钮,添加一个到Oracle数据库的dba连接,如下图:
image
配置完成后,点击连接按钮,连接到数据库。
二,建立用户
打开到Oracle数据的连接,新建一个用户,我们要在该用户的模式中建立所谓的“资料档案库”,并使用该用户去建立SQL Server移植后的用户名,以及做其它的一些工作。按照帮助中的说明,这个用户最少需要以下权限和角色:
Roles
CONNECT WITH ADMIN OPTION,RESOURCE WITH ADMIN OPTION
Privileges
ALTER ANY ROLE,ALTER ANY SEQUENCE,ALTER ANY TABLE,ALTER TABLESPACE,ALTER ANY TRIGGER,COMMENT ANY TABLE,CREATE ANY SEQUENCE,CREATE ANY TABLE,CREATE ANY TRIGGER,CREATE VIEW WITH ADMIN OPTION,CREATE PUBLIC SYNONYM WITH ADMIN OPTION,CREATE ROLE
CREATE USER,DROP ANY SEQUENCE,DROP ANY TABLE,DROP ANY TRIGGER,DROP USER,DROP ANY ROLE,GRANT ANY ROLE,INSERT ANY TABLE,SELECT ANY TABLE,UPDATE ANY TABLE
以下语句直接建立一个名为migrations的用户:
-- Create the user
create user MIGRATIONS
identified by MIGRATIONS
default tablespace USERS
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to MIGRATIONS with admin option;
grant resource to MIGRATIONS with admin option;
-- Grant/Revoke system privileges
grant alter any role to MIGRATIONS;
grant alter any sequence to MIGRATIONS;
grant alter any table to MIGRATIONS;
grant alter any trigger to MIGRATIONS;
grant alter tablespace to MIGRATIONS;
grant comment any table to MIGRATIONS;
grant create any sequence to MIGRATIONS;
grant create any table to MIGRATIONS;
grant create any trigger to MIGRATIONS;
grant create any view to MIGRATIONS;
grant create materialized view to MIGRATIONS with admin option;
grant create public synonym to MIGRATIONS with admin option;
grant create role to MIGRATIONS;
grant create session to MIGRATIONS with admin option;
grant create synonym to MIGRATIONS with admin option;
grant create tablespace to MIGRATIONS;
grant create user to MIGRATIONS;
grant create view to MIGRATIONS with admin option;
grant drop any role to MIGRATIONS;
grant drop any sequence to MIGRATIONS;
grant drop any table to MIGRATIONS;
grant drop any trigger to MIGRATIONS;
grant drop tablespace to MIGRATIONS;
grant drop user to MIGRATIONS;
grant grant any role to MIGRATIONS;
grant insert any table to MIGRATIONS;
grant select any table to MIGRATIONS;
grant unlimited tablespace to MIGRATIONS with admin option;
grant update any table to MIGRATIONS;
再次点击连接中的加号按钮,添加一个使用刚刚新建立的用户的连接。
image
连接后,在该连接上点击右键,选择移植资料档案库-关联移植资料档案库,程序会在该用户下建立移植资料档案库所需要的表、存储过程等等,弹出一个对话框显示当前建立的进度,稍等片刻即建立完毕。
数据库移植向导
一,建立到源SqlServer数据库的连接
在连接窗口中,点击绿色加号按钮,打开连接配置窗口,按下图建立到SqlServer的连接:
image
因为动态商品的使用,使得原来SqlServer配置页中默认的1433往往没有办法连接到SqlServer2008数据库,修改为1434即可。
二、启动数据库移植向导
建立到SqlServer的连接后,开始对数据库进行移植。有两个地方可以启动数据库移植向导,一个是在新建的SqlServer连接上点击右键,选择移植到Oracle,另一个是在菜单工具-移植-移植,启动向导后,第一页当然是向导的简介,通过简介,我们可以知道整个移植过程有7步,并且有两个先决条件,如下图:
image
直接点击下一步。
三、选择资料档案库
在这个页面中,我们也可以去建立连接和资料档案库,也就是前一部分中我们所做的工作在这里也可以进行。当然选择我们刚刚建立的migrations连接,如下图:
image
这里截断的意思是将资料档案库清空,我们建立一个移植项目后,所有抓取的数据库结构信息、统计信息还有转换记录等都保存在这个资料档案库中,只要项目名称不同,即使不清空资料档案库也不会影响到移植工作。当然,如果希望更“清爽”一点,也可以勾选。这是后话。
四、为转换项目命名
选择好资料档案库后,点击下一步,为我们的转换项目输入名称和备注,以便识别。另外,还需要指定脚本生成目录,用于存放向导执行过程中生成的脚本。
五、选择源数据库连接
然后继续下一步,选择源数据库,在这里有联机和离线两种模式,联机即是直接连接到源数据进行抓取,而离线则是在SqlDeveloper不直接连接到源数据库的情况下,通过SqlDeveloper提供的脚本预先捕获数据库,得到数据库结构文件后,通过向导导入。
这里当然是选择我们刚才建立的SqlServer连接。
六、选择捕获源数据库
如何正确配置基于 oracle 数据库的 wps v6.12 集群应用系统
本文描述了远程消息传递和远程支持集群环境的搭建配置过程。这个集群环境由三个集群组成,具体的拓扑结构是:
应用程序集群,不但为应用程序提供工作负载管理以及URL和EJB 请求故障转移功能,而且还部署了BPC和HTM 容器,提供了对长业务流程和人工业务流程的应用程序的支持。
远程消息集群,运行WPS默认提供的四个总线(SCA应用,SCA系统,BPC和CEI)提供独立的高效的消息引擎。
远程支持集群,部署通用事件体系结构和业务规则管理等其他应用程序,提供异步的事件查询。
这三个集群配置在两台机器的不同的节点上,即三个集群的成员水平部署在两台机器上。在一个集群中的两个成员是该集群中完全相同的副本。消息传递引擎、业务支持和业务流程应用程序分别位于不同的集群上,所以可以根据实际业务负载和硬件环境,灵活调配所需的资源。这种模式,也称为黄金拓扑,是 WPS 中最复杂的拓扑结构,是大多数企业集成应用用户的首选,具有如下优点:
可靠性。将所有的应用、消息引擎和通用事件部署在三个集群上面,方便管理和使用。
可扩展性。因为系统中的消息引擎处于的关键地位,可能存在之后的访问需求增长等扩展需要,单独创建消息引擎集群可以很方便实行这一点。
对于系统运行时可能遇到的处理量非常大和可伸缩性等问题,通过将通用事件基础架构(CEI)和应用程序分离,可以确保这两个组件不会争用相同的资源(内存和CPU)。此拓扑还能帮助创建集中的事件服务器以处理来自多个源的事件。
所有的应用服务器由 Deployment Manager 统一管理,降低了系统管理的复杂度。
安装前的注意事项
在集群环境的安装过程中,需要同步两台主机的信息,确保它们之间能够良好的通信。主要同步的信息包括两台主机的系统时间、时区设置,并确保两台机器的时间差在5分钟之内,如果时间差超过5分钟,联合操作将失败。
更新两台主机的hosts 文件(默认目录为/etc/hosts ),确保每台机器均包含对方的host name 和对应的IP 地址,以便主机间的相互访问。
在使用向导安装和配置概要时,请按照从上到下的顺序输入配置参数,对于WPS V6.12 ,输入顺序的改变有可能导致未知错误。
集群环境的搭建步骤
Informix 数据库规划
WPS的集群环境需要后台数据库的支持。为了提高集群在实际运行中的效率,建议根据功能的不同,创建不同的数据库。数据库的详细信息如下表所示:
数据库名称 说明
WPRCSDB 公共数据库
EVENT 通用事件体系结构数据库
CEIDB 通用事件体系结构消息传递引擎数据库
SCASYSDB 服务组件系统消息传递引擎数据库
SCAAPPDB 服务组件应用程序消息传递引擎数据库
BPCDB 业务流程编排器数据库
BPCME 业务流程编排器消息传递引擎数据库
OBSVRDB 业务流程编排器事件收集器数据库
注意:本文选择英文语言的数据库安装。如果要安装中文语言的数据库,请参考本文的:在数据源定制属性中添加数据库语言。
安装WPS的步骤
首先使用图形化安装向导在两台主机上分别安装WPS v6.1.2 产品,。在安装产品和搭建集群过程中,步骤如下:
1.选择“Typical installation”安装类型。典型安装也称为完全安装,提供了环境的初始化定义,包括通过概要管理工具创建特定了类型的概要文件。
图2 选择安装类型
2.在选择概要类型界面提供了四种可选择的概要类型(图3)。我们选择“None”,即不创建任何类型的概要,以便在以后的步骤中手动创建概要。
使用Profile Management Tool(PMT) 创建Deployment Manager 概要
Deployment Manager(DM)是管理控制节点,它对集群环境下的所有节点提供了图形化的管理功能。一个集群环境中一般只需要一个管理概要。下面我们将向您讲述创建DM 概要的主要步骤:
1. 在WPS_HOME/bin/ProfileManagement/ 下执行命令pmt.sh ,弹出安装界面。在各种类型的环境选项中选择 WPS,进入下一步。
2. 在概要类型中提供了三种典型的概要类型,选择 Deployment manager profile,搭建DM 概要。
3. 在创建方式界面中,默认选项为创建典型的概要文件,在此需要选择 Advanced profile creation,以便我们在后续步骤中通过管理控制台手动进行集群配置,以满足特定环境的需求。
4. 填写要创建的Deployment manager profile的名称和安装目录。
5. 填写概要的Node Name和Cell name ,指定 Host Name。
6. 在管理安全选项中,如果选中 Enable administrative security 选项,请记住 WPS v 6.1.2
用户名称和密码。这里建议取消 Enable administrative security 选项,不设置安全管理。在后续步骤中可以根据需要手动启动安全管理选项,设定用户名密码。
7. 配置服务器的端口。
8. 进行数据库的配置。首先从 Choose a database product 选择 Informix Dynamic Server 作为公共数据库类型,并选择 Use an existing database。另外,需要指定 Database name,本例中使用先前创建的数据库 WPRCSDB。不选择“Deplay execution of database scripts for new or existing database”选项,因为概要文件的安装过程中会自动创建数据库 WPRCSDB 中的表。注意:如果创建的数据库为中文字符集,则需要选择 “Deplay execution of database scripts for new or existing database“选项,在概要创建完成后,手动执行创建数据库表(请参考本节内容中的步骤 11)。
9. 在数据库配置的第2步,需要对 Common DB 参数进行配置。如果是远程数据库,则在填写 Database server host name时,要确保远程数据库的host name 已经添加到本地主机(参考本文的第三部分内容“安装前的注意事项”);也可以直接在该项填写远程数据库的IP 地址。换句话说,在点击下一步之前,请确认数据库的参数信息,否则将在点击下一步后,会收到不能连接数据库的错误提示。
10. 完成以上步骤后,系统会显示概要的创建信息。如果发现参数需要调整可以后退向导重新进行输入。DM 创建成功后,可取消选择 Launch the First steps console和Create another profile,点击完成。至此,Deployment Manager 创建完成。如果创建DM 失败,请查看 WPS_HOME/logs/manageprofile 目录下的日志文件进行分析。
11. 另外,如果需要手工创建Common DB(WPRCSDB) 相关的表,可执行DM 概要创建生成的数据库脚本,默认目录为:
WPS_HOME/profiles/Dmgr01/dbscripts/CommonDB/Informix/WPRCSDB 。
请将这些脚本复制到 Informix 数据库所在机器,并设置如下环境变量:
INFORMIXSERVER=IFX_INSTANCENAME
INFORMIXDIR=IFX_INSTALL_HOME
之后执行如下命令:
dbaccess – createDatabase_CommonDB.sql
如果WPRCSDB已经创建,可以忽略。
dbaccess WPRCSDB createTable_AppScheduler.sql
dbaccess WPRCSDB createTable_CommonDB.sql
dbaccess WPRCSDB createTable_customization.sql
dbaccess WPRCSDB createTable_lockmanager.sql
dbaccess WPRCSDB createTable_mediation.sql
dbaccess WPRCSDB createTable_Recovery.sql
dbaccess WPRCSDB createTable_RelationshipMetadataTable.sql
dbaccess WPRCSDB createTable_EsbLoggerMediation.sql
dbaccess WPRCSDB insertTable_CommonDB.sql
使用PMT 创建自定义概要
接下来,我们手动进行自定义概要的创建。这样,能够在创建概要过程中,根据客户特定的使用需求和环境特点,选择适合于自己的数据库,并进行端口、用户名、密码等信息的设置。
在创建自定义概要(Custom profile)之前启动 DeploymentManager(DM)概要,在目录WPS_HOME/profiles/Dmgr01/bin 下,运行startManager.sh 命令。节点概要的创建与 DM 概要的创建类似,在目录WPS_HOME/bin/ProfileManagment 下执行命令pmt.sh,随即获得安装界面,主要步骤如下。
1.选择 Create 即创建一个新的概要文件。
2.在环境选项中,选择 WPS,进入下一步。
3.在创建概要的类型中,选择 Custom Profile,创建一个自定义节点概要。
4.在安装类型选项中,选择 Advanced profile creation,以便在后续步骤中通过手动配置相关参数,定制特定的节点概要。
5.输入节点所对应的DM 概要的主机名称和端口,默认端口为8879。如果在创建DM时启动了管理安全性,则需要输入用户名和密码。Federate this node later 选项的选择取决于是否要在创建节点的同时将其联合到指定的DM 概要中。这里,我们不选择该选项,节点会自动与 DM 概要联合,需要注意的是,要确保 DM 概要此时为启动状态。
若选择创建节点之后手动联合到 DM 概要中,则需要在创建节点完成后使用WPS_HOME/Custom01/bin 目录下的addNode.sh 命令进行节点与 DM的手动联合,具体命令如下:
addNode.sh dmgr_hostname –username username –password password
6.输入DM的信息后,进入端口设置页面,可以自行修改端口号。
7.在数据库选项中选择 Informix Dynamic Server 作为数据库类型,并为Informix JDBC driver 指定正确的路径。该路径指向节点所在的本地机器上 ifxjdbc.jar和ifxjdbcx.jar的存储位置。
8.浏览汇总信息无误后,点击 Create 开始创建自定义概要。
9.创建成功后,重复以上步骤为另一台机器创建自定义概要。
命令行方式创建Deployment Manager 实例和托管节点实例
创建DM profile 和Custom profile时,除了使用pmt.sh 命令外,还可以选择命令行方式,即执行WPS_HOME /bin/manageprofiles.sh 命令创建概要。创建Deployment manager 概要的命令和脚本如下:
./manageprofiles.sh –create -dbServerPort 8002
–templatePath WPS_HOME/profileTemplates/dmgr.wbiserver
–profileName Dmgr01
-dbDelayConfig true –dbCommonForME false
–dbType INFORMIX –dbHostName aix235.cn.ibm.com
–dbInstance IFXTest –hostName aix235.cn.ibm.com
–enableAdminSecurity false –dbName wprcsdb
–dbPassword informix –ndtopology false
-cellName aix235Cell01 –nodeName aix235CellManager01
–dbJDBCClasspath /opt/jdbc/lib –dbUserId Informix
–dbCreateNew false –profilePath WPS_HOME/profiles/Dmgr01
创建自定义节点的命令和脚本如下:
./manageprofiles.sh –create –dmgrHost 9.186.111.234
–profileName Custom01 –templatePath WPS_HOME/profileTemplates/managed.wbiserver
–dbType INFORMIX –ndtopology false
–cellName aix234Node01Cell –hostName aix234.cn.ibm.com
–nodeName aix234Node01 –dbJDBCClasspath /home/jdbc/lib
–dmgrPort 8879 –profilePath WPS_HOME/profiles/Custom01
当前文章:oracle架构如何搭建,oracle系统架构
当前网址:http://ybzwz.com/article/hsegog.html