本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
oracle在使用dblink 远程调用数据,插入当前数据库时,提示报错误:ORA-02291: 违反完整约束条件 - 未找到父项关键字检查发现: 两个表之间有外键约束,必须先插入父表再插入字表,删除的时候刚好相反 . CREATE TABLE "GPS_QUESTION_ANSWER" ( "QUESTION_ID" NUMBER, "ANSWER_ID" NUMBER, "ANSWER_CONTENT" VARCHAR2(512 BYTE), CONSTRAINT "PRIMARYGPS_QUESTION_ANSWER1" PRIMARY KEY ("QUESTION_ID", "ANSWER_ID") CONSTRAINT "FK_QUESTION_ANSWER" FOREIGN KEY ("QUESTION_ID") REFERENCES "GPS_QUESTION_SETTING" ("QUESTION_ID") ON DELETE CASCADE ENABLE ) SQL> desc gps_question_answerName Type Nullable Default Comments -------------- -------...
oracle给表作了按时间分区,分区表名partition1,partition2,插入数据后,按分区查询partition2数据select * from HT-100 partition(partition2)
SQL*Net message from client 事件产生的原因分析 今天同事运行一个程序,修改表的内容,但运行一半总是挂起,查询数据库看有什么在等待,查询v$session_waitSELECT S.SID, S.SERIAL#, S.USERNAME, S.STATUS, S.MACHINE, S.PROGRAM, S.MODULE, A.SQL_TEXT FROM V$SESSION S, V$SQLAREA AWHERE S.USERNAME IS NOT NULL AND S.SQL_ADDRESS = A.ADDRESS看见同事那个会话在那挂起,看见SQL*Net message from client 等待时间最长,其实这个是oracle空闲等待时间,只要网络没有问题,可以不用考略这个wait。后来同事修改了下程序通过了,他是因为执行了大查询,而无反应。下面是参考文档:1.对于一个session来说,每时每刻都在wait 的状态。WAIT FOR IO / WAIT FOR CPU / WAIT FOR LATCH /WAIT FOR ...这一点你可以Query v$session_wait,总有data.2....
oracle10g分区表的自动维护oracle 10g分区表不支持自动化管理,一般都要手动创建分区,手动删除。今天给大家带来了一个自动化管理表空间的脚本。本脚本主要由3个部分组成:sys_ConfigTable.sql、sys_pro_AddAndDropPartition.sql、sys_pro_MergeTable.sql1、sys_ConfigTable.sql 主要创建了一张配置表:这里填写具体要自动维护的表名、保存天数、每天分区的个数等等;2、sys_pro_AddAndDropPartition.sql 这个用来自动增加表分区,删除过期分区;3、sys_pro_MergeTable.sql 等每天的分区大于1时,我们合并旧的分区,并重建失效的索引。1、sys_ConfigTable.sql[sql] view plaincopydrop table CONFIGTABLE; create table CONFIGTABLE ( name VARCHAR2(64) not null, value VARCHAR2(64) not null, type VARCHAR2(64) not null, isrun NUMBER(1) not null, remark VARCHAR2(64) ) &n...
Oracle 分区表-Range分区 一、什么是分区表 Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。 Oracle的分区表可以包括多个分区, 每个分区都是一个独立的段( SEGMENT),可以存放到不同的表空间中 。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。 二、什么时候用分区表When to Partition a Table 什么时候需要分区表,官网的 2 个建议如下:(1)Tables greater than 2GB should always be considered for partitioning.(2)Tables containing historical data, in which new data is added into the newest partition. A typical example is a historical table where only the current month's data is updatable and the other 11 months are read only. 三、分区表优点 (1)由于将数据分散到各个分区中,减少了数据损坏的可能性; ...
--数据泵IMPDP 导入工具的使用--================================= 数据的导入导出时数据库经常处理的作业之一,Oracle 提供了IMP和IMPDP以及SQL*Loader等工具来完成数据的导入工作,其中IMP服务于早期的9i之前的版本,在10g及后续版本,Oracle 提供了数据泵高速导入工具,本文主要介绍IMPDP的使用方法,关于高速导出工具请参照:数据泵EXPDP 导出工具的使用。SQL*Loader请参照:SQL*Loader使用方法。 一、数据泵的体系结构 数据泵的体系结构在数据泵EXPDP 导出工具的使用已列出,再此不再赘述。 二、IMPDP支持的接口及导入模式 导入接口 使用命令行带参数的 使用命令行带参数文件 使用命令行交互 使用database console(GUI) 几种常用的导入模式 导入表 导入方案 ...
imp的buffer和commit分析 Imp的commit和buffer分析:Imp的commit影响:imp的commit主要用于大表数据插入时减少回滚段的压力,以免出现长时间导入而出现的回滚段过久ora-01555,结合buffer设置则能按照buffer的大小进行分批提交,可以有效的减轻undo压力。但是如果对于插入lob、long、ref、rowid等字段时设置commit=y则会逐条commit,我们都清楚对于批量插入数据逐条commit会降低性能,所以这里需要依据表中的具体信息。而且还存在一个因素则是结合buffer区大小批量commit提交时,如果出现表空间,连接丢失等问题导致imp失败,则可能只提交一批数据,此时带来的影响还是很大的,即使再次插入根据主键筛选依然会出现大量的错误,而imp对这些错误的排查则会降低大量性能,这也可能是oracle默认的imp工具中commit=n缘由吧。Imp的buffer效果生产环境下,oracle 9I下sga大概8G,pga大概6g,需要导入一个2.7g以上的大表到成产库中,由于是同事着手运用imp工具的默认buffer=30K,用时大概一个小时还没有结果,考虑到pga还是很大的,跟同事商议加上buffer=409600000设置buffer大概400M的,15分钟内imp完成。当然运用impdp然后运用parallel=n效率当然更加理想了!首先建好了...
导出ha 用户的表结构expdp ha/ha directory=dump_dir dumpfile=expdp.dmp logfile=expdp.log schemas=ha content=metadata_only 将表结构数据导入ha用户impdp ha/ha directory=dump_dir logfile=local.impdp.log dumpfile=expdp.dmp 导出HA用户的表数据 expdp ha/ha directory=dump_dir dumpfile=gps_acc.dmp tables=GPS_ACC_STATE content=data_only导出的HA表数据,将导入happy表空间,对应的表结构已经建好。impdp happy/happy directory=dump_dir dumpfile=gps_acc.dmp tables=GPS_ACC_STATE remap_schema=ha:happy . importing table "T1"IMP-00058: ORACLE error 30036 encounteredORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'IMP-00028: partial import of previous table rolled back: 14351923 rows rolled backIMP-00017: following statement failed with ORACLE error 2264:About to enable con...
ORA-20005: object statistics are locked SQL> exec dbms_stats.unlock_table_stats(ownname =>'ECC_VIEW',tabname => 'TABLE_TEST1');PL/SQL procedure successfully completedorSQL> EXEC DBMS_STATS.unlock_schema_stats(ownname =>'ECC_VIEW');PL/SQL procedure successfully completed ============(普通用户权限)==SQL> exec dbms_stats.gather_table_stats(ownname =>'ECC_VIEW',tabname => 'TABLE_TEST1',cascade =>TRUE,estimate_percent => 20);PL/SQL procedure successfully completed////////////////执行以下脚本后正常SQL> exec dbms_stats.unlock_schema_stats(ownname =>'test'); PL/SQL procedure successfully completed//////////////////// 发现一个用户下统计信息没有生成,查询user_tab_modifications发现变动信息也超过10%没有警告日志执行exec dbms_stats.gather_schema_stats(ownname =>'test',granularity => 'ALL',cascade => true);还是没有生成 然后执行报begin dbms_stats.gather_table_stats(ownname => 'test',tabname=> ...
假设导入用户为happy数据文件存放目录为dump_dir两台服务器oracle系统作oracle数据迁移。#: mkdir /home/oracle/bakSQL:# create or replace directory dump_dir as '/home/oracle/bak';查询:select * from dba_directories where DIRECTORY_NAME='DUMP_DIR';查看目录是否存在 select owner,table_name,grantor,privilege from dba_tab_privs where grantee='HAPPY'; //注意HAPPY大写查看是否有read write权限如果没有读写权限,执行如下语句,赋给sysdb读写DATA_PUMP_DIR权限:GRANT WRITE ON DIRECTORY DUMP_DIR TO HAPPY WITH GRANT OPTION;GRANT READ ON DIRECTORY DUMP_DIR TO HAPPY WITH GRANT OPTION;导出ha 用户的表结构expdp ha/ha directory=dump_dir dumpfile=expdp.dmp logfile=expdp.log schemas=ha content=metadata_only 将表结构数据导入ha用户impdp ha/ha directory=dump_dir logfile=local.impdp.log dumpfile=expdp.dmp 导出HA用户的表数据 expdp ha/ha directory=dump_dir dumpfile=gps_acc.dmp tables=GPS_ACC_STAT...
最新评论