Oracle如何附加数据库

Oracle如何附加数据库,第1张

oracle中没有附加数据一说,附加数据库是SQL Server中的说法。

oracle中是用导入数据库。用如下方法:

1、必须要有一个dmp文件,进行导入,放到指定目录下,如d盘根目录。

2、打开命令提示符窗口。

3、执行以下语句:

imp 用户名/密码@实例 file=D:/文件名 log=D:/日志文件名 fromuser=(导出文件用户名)

4、等待执行结束即可。

这个问题很诡异的。

首先,确保你所用的oracle驱动(ojdbc14jar)与Oracle服务器的版本一致。

并确保开发环境能够访问到数据库服务器(不会被防火墙拦住,必要时关了防火墙试试)。

还有问题的话,得查Oracle服务器上的日志了,如alert_SIDlog,请你们的DBA帮忙看看。

网上也有说是游标不足的原因:

SELECT vname, vvalue value FROM V$PARAMETER v WHERE name = 'open_cursors'

如果value小于300 就用下面的语句增大就行

alter system set open_cursors = 10000

代码应该没有问题,主要得查数据库那边了。

因为delete过后是不移动HW的,而Oracle进行全表扫描时,是需要读取HW以前的全部块的,即使是空块也要扫描,举例来说,原来你的表是这样的,每个字母代表一个块,D是数据,H是HW标记,F是空块,此时全表扫描是读所有的D块

DDDDDDDDDDHFFFFFFFFFFF

当你delete删除时,H是不移动的

DDFFFFFFFFFHFFFFFFFFFFF

此时H前的D和F都要扫描,你需要收缩表移动HW,变成这样

DDHFFFFFFFFFFFFFFFFFFFF

这样它只扫描两个D

所以你要收缩一下你的表,移动HW

先允许表能够row movement

alter table wpt_log enable row movement;

再收缩,

alter table wpt_log shrink space;

收缩完后,最好给这表做一次统计分析

exec dbms_statsgather_table_stats(user,'WPT_LOG',cascade=>true)

如果需要删除表中所有数据,建议用truncate,它可以将HW移动到表头

HFFFFFFFFFFFFFFFFFFFFFF

再插入数据时,HW会按照你填充块自动顺序移动

还有,如果你做开发,下面sql是不合适的,尽量不要在表列上加函数(执行用15秒,因为它是并发的)

select from tablename where to_char(op_time,'yyyymmdd')='20131002';

如果op_time保存时所有行都没有带时间,上面sql可以改为:

select from tablename where op_time=to_date('20131002','yyyymmdd')

如果在op_time上有个索引,那么上面sql可能会走索引

假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle的Scott用户 首先需要有安装SQL Server企业版 1.打开工具: 开始->程序-> 导入和SQL Server数据导出数据 2.下一步,选择数据源 [数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。 [服务器]选择要导出数据的服务器,如果是本机,选择(local) [数据库]选择要导出的数据所在的库,这里选择Northwind 3.下一步,选择目的 [目的]选择Microsoft ODBC for Oracle [DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。 如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。 接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle 下一步,完成,出现Microsoft ODBC for Oracle安装界面 [数据源名称]随便输入,比如sss [说明]可以不填 [用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott [服务器]填入要连接到Oracle服务器所使用的服务名,比方说使用sqlplus scott/tiger@server1可以连接到数据库,那么这里就填入server1。如果本机就是服务器,使用sqlplus scott/tiger即可连接到数据库,这里空着不填即可。 这样就创建好了一个数据源sss,保证下拉列表框中选择了sss一项。 [用户名]填入SQL Server数据导出到的Oracle用户名称,这里是scott [密码]填入SQL Server数据导出到的Oracle用户使用的密码,这里是tiger 4.下一步,指定表复制或查询 如果要导出的内容是整个表,选择[从源数据库复制表和视图] 如果要导出的内容是表的一部分列,行,可以选择[用一条查询指定要传输的数据],这时需要写出一个查询语句 这里选择第一项[从源数据库复制表和视图] 5.下一步,选择源表和视图 点中要导出的表Products一行的复选框,目的、转换两栏就会出现内容。 目的可以用来选择表名。转换可以用来修改列的数据类型或是整个建表的SQL语句 6.下一步,保存、调度和复制包 选中立即运行 7.下一步,正在完成DTS导入/导出向导 8.完成 提示“成功地将n个表从Microsoft SQLServer复制到了Oracle” 9.完成,关闭导入导出程序 注意:因为oracle的表名都是大写的,而SQL的表可能是大小混写的,所以导入后在oracle里查不到该表,比如这个Products表在oracle里查询就应该写成select from scott."Products";为了方便查询可以通过批量修改表名为大写以便后面导数据的工作。

有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。

1在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。

这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:

SELECT

FROM msdbdboMSdatatype_mappings

SELECT

FROM msdbdbosysdatatypemappings

来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。

SQLServer和Oracle的对应

2建立链接服务器。我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。

具体做法参见我以前的文章>

以上就是关于Oracle如何附加数据库全部的内容,包括:Oracle如何附加数据库、高分求解,急!!!Java连接Oracle10g 问题 java.sql.SQLException: 无法从套接字读取更多的数据、oracle数据库,有CLOB字段的表在删除过数据后直接select * from tablename 查询为何很慢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存