oracle如何创建表以及向表里面添加数据1:首先打开oracle , 在左侧中右击选择新建表 。
2:然后选择添加数据,添加完一组数据之后,紧接着还可以添加一组数据,把自己要填写的数据都上传之后就可以了 。
3:点击另存为,这个时候会出现一个窗口,出入文件的名字 , 点击确定即可 。
4:在表的下方就会出现一个名为Class的表,这个时候就已经创建好了,如果不行,可以按照上述步骤重新操作,看看是不是哪里出现了问题 。
oracle怎么导出数据Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入 。
一、利用exp imp导出导入
exp imp 语法如下:
exp:
1) 将数据库orcl完全导出
exp system/manager@orcl file=d:\orcl_bak.dmp full=y
2) 将数据库中system用户oracle怎么提数据的表导出
exp system/manager@orcl file=d:\system_bak.dmp owner=system
3) 将数据库中表table1oracle怎么提数据 , table2导出
exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)
4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出
exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 将备份文件bak.dmp导出数据库
imp system/manager@orcl file=d:\bak.dmp
如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了 。
2) 将备份文件bak.dmp中的表table1导入
imp system/manager@orcl file=d:\bak.dmp tables=(table1)
exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端 , 你就可以将服务器中的数据导出到你本地计算机 。同样也可以将dmp文件从你本地导入到服务器数据库中 。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表 。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true 。当你新建了一张表 , 并且没用向其中插入数据时,这个表不会立即分配segment 。
解决办法:
1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment 。
在sqlplus中 , 执行如下命令:
SQLalter system set deferred_segment_creation=false;
查看:
SQLshow parameter deferred_segment_creation;
【oracle怎么提数据 oracle 提升】该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效 。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:
alter table table_name allocate extent
构建对空表分配空间的SQL命令:
SQLselect 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的语句 。
然后执行这些修改语句 , 对所有空表分配空间 。
此时用exp命令,可将包括空表在内的所有表导出 。
二、利用expdp impdp导出导入
在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)
数据泵与传统导出导入的区别;
1) exp和imp是客户端工具 , 他们既可以在客户端使用,也可以在服务端使用 。
2) expdp和impdp是服务端工具,只能在Oracle服务端使用 。
3) imp只适用于exp导出文件,impdp只适用于expdp导出文件 。
expdp导出数据:
1、为输出路径建立一个数据库的directory对象 。
create or replace directory dumpdir as 'd:\';
可以通过:select * from dba_directories;查看 。
2、给将要进行数据导出的用户授权访问 。
grant read,write on directory dumpdir to test_expdp;
3、将数据导出
expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp
注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误 。因为这句话是操作系统命令而不是SQL 。
impdp导入数据:
1、给将要进行数据导入的用户授权访问 。
grant read,write on directory dumpdir to test_impdp;
2、将数据导入
impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp
oracle 数据怎么导入?oracle怎么提数据我给你一些数据库常用的导入导出命令吧:\x0d\x0a该命令在“开始菜单运行CMD”中执行\x0d\x0a一、数据导出(exp.exe)\x0d\x0a1、将数据库orcl完全导出oracle怎么提数据 , 用户名systemoracle怎么提数据,密码accp,导出到d:\daochu.dmp文件中\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、将数据库orcl中scott用户的对象导出\x0d\x0aexp scott/accp@orcl file=d:\daochu.dmpowner=(scott)\x0d\x0a\x0d\x0a3、将数据库orcl中的scott用户的表emp、dept导出\x0d\x0aexp scott/accp@orcl file= d:\daochu.dmp tables=(emp,dept)\x0d\x0a\x0d\x0a4、将数据库orcl中的表空间testSpace导出\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp tablespaces=(testSpace)\x0d\x0a\x0d\x0a二、数据导入(imp.exe)\x0d\x0a1、将d:\daochu.dmp 中的数据导入 orcl数据库中 。\x0d\x0aimp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、如果导入时,数据表已经存在,将报错,对该表不会进行导入oracle怎么提数据;加上ignore=y即可,表示忽略现有表,在现有表上追加记录 。\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmpfull=yignore=y\x0d\x0a\x0d\x0a3、将d:\daochu.dmp中的表emp导入\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp tables=(emp)
如何加速Oracle大批量数据处理?一、提高DML操作的办法:\x0d\x0a简单说来:\x0d\x0a1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.\x0d\x0a2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.\x0d\x0a3、创建一临时的大的表空间用来应对这些更新动作.\x0d\x0a\x0d\x0a4、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.\x0d\x0a\x0d\x0a5、创建一临时的大的表空间用来应对这些更新动作.\x0d\x0a\x0d\x0a6、加大排序缓冲区\x0d\x0aalter session set sort_area_size=100000000;\x0d\x0ainsert into tableb select * from tablea;\x0d\x0acommit;\x0d\x0a\x0d\x0a如果UPDATE的是索引字段,就会涉及到索引的重建,暂停索引不会提高多少的速度,反而有可能降低UPDATE速度,\x0d\x0a因为在更新是索引可以提高数据的查询速度,重建索引引起的速度降低影响不大 。\x0d\x0a\x0d\x0aORACLE优化修改参数最多也只能把性能提高15%,大部分都是SQL语句的优化!\x0d\x0a\x0d\x0aupdate总体来说比insert要慢 :\x0d\x0a几点建议:\x0d\x0a1、如果更新的数据量接近整个表,就不应该使用index而应该采用全表扫描\x0d\x0a2、减少不必要的index , 因为update表通常需要update index\x0d\x0a3、如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率\x0d\x0a另外,建表的参数非常重要,对于更新非常频繁的表,建议加大PCTFREE的值 , 以保证数据块中有足够的空间用于UPDATE,从而降低CHAINED_ROWS 。\x0d\x0a\x0d\x0a二、各种批量DML操作:\x0d\x0a(1)、oracle批量拷贝:\x0d\x0aset arraysize 20\x0d\x0aset copycommit 5000\x0d\x0acopy from username/password@oraclename append table_name1\x0d\x0ausing select * from table_name2;\x0d\x0a(2)、常规插入方式:\x0d\x0ainsert into t1 select * from t;\x0d\x0a为了提高速度可以使用下面方法,来减少插入过程中产生的日志:\x0d\x0aalter table t1 nologging;\x0d\x0ainsert into t1 select * from t;\x0d\x0acommit;\x0d\x0a(3)、CTAS方式:\x0d\x0acreate table t1\x0d\x0aas\x0d\x0aselect * from t;\x0d\x0a为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:\x0d\x0acreate table t1 nologging parallel(degree 2) as select * from t;\x0d\x0a(4)、Direct-Path插入:\x0d\x0ainsert /* append*/ into t1 select * from t;\x0d\x0acommit;\x0d\x0a为了提高速度可以使用下面方法,来减少插入过程中产生的日志:\x0d\x0aalter table t1 nologging;\x0d\x0ainsert /* append*/ into t1 select * from t;\x0d\x0a \x0d\x0aDirect-Path插入特点:\x0d\x0a1、append只在insert ? select ?中起作用 , 像insert /*append */ into t values(?)这类的语句是不起作用的 。在update、delete操作中,append也不起作用 。\x0d\x0a2、 Direct-Path会使数据库不记录直接路径导入的数据的重做日志,会对恢复带来麻烦 。\x0d\x0a3、 Direct-Path直接在表段的高水位线以上的空白数据块中写数据,不会重用高水位线以下的空间,会对空间的使用造成一定的浪费,对查询的性能也会造成一定的影响 。而常规插入会优先考虑使用高水位线之下有空闲空间存在的数据块 。因此理论上Direct-Path插入会比常规插入速度更快,因为Direct-Path直接使用新数据块,而常规插入要遍历freelist获取可用空闲数据块 , 如果同 nologging 配合,这种速度优势会更加明显 。\x0d\x0a4、 以append方式插入记录后,要执行commit,才能对表进行查询 。否则会出现错误:ORA-12838: 无法在并行模式下修改之后读/修改对象 。\x0d\x0a5、 用append导入数据后,如果没有提交或者回滚,在其他会话中任何对该表的DML都会被阻塞(不会报错) , 但对该表的查询可以正常执行 。\x0d\x0a6、 在归档模式下,要把表设置为nologging,然后以append方式批量添加记录,才会显著减少redo数量 。在非归档模式下,不必设置表的 nologging属性,即可减少redo数量 。如果表上有索引,则append方式批量添加记录,不会减少索引上产生的redo数量,索引上的redo 数量可能比表的redo数量还要大 。\x0d\x0a7、 数据直接插入数据文件,绕过buffer cache并且忽略了引用完整性约束 。\x0d\x0a8、 不管表是否在nologging 下,只要是 directinsert,就不会对数据内容生成undo 。\x0d\x0a9、 Oracle在Direct-Path INSERT 操作末尾,对具有索引的表执行索引维护,这样就避免了在drop掉索引后,再rebuild 。\x0d\x0a10、Direct-Path INSERT比常规的插入需要更多的空间 。因为它将数据插入在高水位之上 。并行插入非分区表需要更多的空间 , 因为它需要为每一个并行线程创建临时段 。\x0d\x0a11、在插入期间,数据库在表上获得排他锁,用户不能在表上执行并行插入、更新或者删除操作,并行的索引创建和build也不被允许 。但却可以并行查询,但查询返回的是插入之前的结果集 。\x0d\x0a(5)、并行DML:\x0d\x0a如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率\x0d\x0aALTER SESSION ENABLE PARALLEL DML;\x0d\x0a\x0d\x0aINSERT /*PARALLEL(tableA, 2) */INTO tableA \x0d\x0aSELECT * FROM tableB;\x0d\x0a\x0d\x0a为了提高速度可以使用下面方法,来减少插入过程中产生的日志:\x0d\x0a\x0d\x0a INSERT /*PARALLEL(tableA, 2) */INTO tableA NOLOGGING\x0d\x0aSELECT * FROM tableB;\x0d\x0a\x0d\x0aoracle默认并不会打开PDML,对DML语句必须手工启用 。即需要执行\x0d\x0aalter table enable parallel dml命令 。\x0d\x0a \x0d\x0a并行DML特点:\x0d\x0a1、在并行DML模式中,默认的就是DIRECT-PATH插入,为了运行并行DML模式,必须满足以下条件:\x0d\x0aa、必须是Oracle企业版;\x0d\x0ab、必须在session中使并行DML生效,执行以下sql语句:\x0d\x0aALTER SESSION { ENABLE | FORCE } PARALLEL DML;\x0d\x0ac、必须指定table的并行属性,在创建的时候或者其他时候,或者在insert操作时使用“PARALLEL”提示 。\x0d\x0ad、为了使Direct-Path Insert模式失效,在INSERT语句中指定“NOAPPEND”提示,覆盖并行DML模式 。\x0d\x0a2、并行Direct-Path INSERT到分区表:\x0d\x0a类似于serial Direct-Path INSERT,每个并行操作分配给一个或者多个分区 , 每个并行操作插入数据到各自的分区段的高水位标志之上,commit之后,用户就能看到更新的数据 。\x0d\x0a3、并行Direct-Path INSERT到非分区表:\x0d\x0a每个并行执行分配一个新的临时段,并插入数据到临时段 。当commit运行后,并行执行协调者合并新的临时段到主表段,用户就能看到更新的数据 。\x0d\x0a4、Direct-Path INSERT可以使用Log或者不使用Log 。\x0d\x0a5、另外不得不说的是,并行不是一个可扩展的特性,只有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行需要非常谨慎 。事实上PDML还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL同 样是如此 。
oracle数据库里的数据怎么导出Oracle数据导入导出imp/exp
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份 。
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失) 。
Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接
(通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了)
这样你可以把数据导出到本地 , 虽然可能服务器离你很远 。
你同样可以把dmp文件从本地导入到远处的数据库服务器中 。
利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用 。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中安装目录\$ora10g\BIN被设置为全局路径 ,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出 。
oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件 。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能 。
下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单 。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like'00%'\"
上面是常用的导出 , 对于压缩我不太在意,用winzip把dmp文件可以很好的压缩 。
不过在上面命令后面 加上 compress=y就可以了
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中 。
imp system/manager@TESTfile=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在 , 然后它就报错,对该表就不进行导入 。
在后面加上 ignore=y 就可以了 。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TESTfile=d:\daochu.dmptables=(table1)
基本上上面的导入导出够用了 。不少情况我是将表彻底删除,然后导入 。
注意:
你要有足够的权限 , 权限不够它会提示你 。
数据库时可以连上的 。可以用tnsping TEST 来获得数据库TEST能否连上 。
数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;
导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!
同名用户之间的数据导入:
imp hkb/hkb@xefile=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y
不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp
log=c:\orabackup\hkbimp.log;
关于oracle怎么提数据和oracle 提升的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 如何看待乡村新媒体发展,新媒体助力乡村发展
- 快手直播伴侣设置连麦互动,快手直播伴侣设置连麦互动怎么设置
- mysql怎么隐藏手机号 mysql 隐藏字段
- oracle表怎么解锁,oracle数据库锁表如何解锁
- cebx转pdf在线,cebx文件转pdf
- excel日期怎么不显示,excel日期怎么不显示日
- phpcurl数据解析 php解析接口
- 包含postgresql设置默认时间的词条
- 中国移动国外服务器地址,中国移动的服务器地址