oracle怎么往sqlserver和oracle里面插入数据

oracle中怎样往有外键的表中插入数据
oracle中怎样往有外键的表中插入数据
09-09-04 &匿名提问
UPDATE A SET A.COL1=(SELECT B.COL1 FROM B WHERE A.KEY=B.KEY)SQL SERVER :UPDATE A SET A.COL1=B.COL1FROM A,B WHERE A.KEY=B.KEY
请登录后再发表评论!
ORACLE数据库优化基础(2)ORACLE数据库优化基础2 多重日志文件    每个Oracle实例用一个日志线程(thread)来记录数据库的变化。日志线程由若干日志组构成,日志组又由一个或多个日志成员构成。    从逻辑上讲可以将一个日志组理解成一个独立的日志文件。但是,Oracle允许指定日志的多个复本来保护日志文件的完整性。    在控制文件丢失的情况下,还有重建控制文件静态部分的方法,但是对丢失的日志文件就没有重新生成的方法,因此必须保证日志文件有多个复本。    Oracle同步执行对所有日志成员的写操作。在确认了磁盘上所有的日志文件复本都正确地修改后,写日志操作才算已经执行。    Oracle如何使用日志    当服务器将所有能用的日志文件都使用过一次,它将再次转向第一个并重新使用。Oracle用日志文件序列号来跟踪不同的日志文件。这个序列号记录正在使用的日志文件中    操作系统用日志文件名来识别物理文件,而Oracle用日志文件序列号来确定日志文件填写和循环使用的顺序。因为Oracle会自动重复使用日志文件,因此并不需要用日志文件名来确定它在日志文件序列的位置。    归档日志    Oralce两种日志文件类型:    联机日志文件    这是Oracle用来循环记录数据库改变的操作系统文件    归档日志文件    这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份    Oracle有两种归档日志模式,Oracle数据库可以采用其中任何一种模式:    NOARCHIVELOG    不对日志文件进行归档。这种模式可以大大减少数据库备份的开销,但可能回导致数据的不可恢复    ARCHIVELOG    在这种模式下,当Oracle转向一个新的日志文件时,将以前的日志文件进行归档。为了防止出现历史“缺口”的情况,一个给定的日志文件在它成功归档之前是不能重新使用的。归档的日志文件,加上联机日志文件,为数据库的所有改变提供了完整的历史信息。    在Oracle利用日志文件和归档日志文件来恢复数据库时,内部序列号可以起一个向导的作用。    ARCHIVELOG模式和自动归档    Oracle自动归档分成两步。首先,用SQL命令来转向归档日志模式    ALTER DATABASE ARCHIVELOG    如果数据库在ARCHIVELOG模式下,在Oracle写日志时,它会标识出用于归档的日志。    但是标记为用于归档的日志并不意味着它们会自动归档。必须在初始化文件中设置如下参数:    LOG_ARCHIVE_START=TURE    这样就启动了归档进程,由Oracle调用该进程,将完整的日志文件拷贝到归档日志的目标位置。    归档日志的目标位置以及归档日志文件名的形式需使用另两个参数来指定,即LOG_ARCHIVE_DEST和LOG_ARCHIVE_FORMAT。以下是一个设置的例子:    LOG_ARCHIVE_DEST = C: \ORANT\DATABASE\ARCHIVE    该语句指定了Oracle存放归档日志的目录。    LOG_ARCHIVE_FORMAT = &ORCL%S.ARC&    这个语句指定了Oracle对归档日志文件的命名形式。此例中,文件名必须以ORCL开始,以.ARC结束。Oracle自动用左边补零的日志文件序列号来替代通配符%S。命名形式中可选的通配符还有:    %S  以序列号替代,但左边不补零    %T  用补零的日志线程号来替代    %t  用不补零的日志线程号来替代    每个Oracle实例开始运行时,都要首先读初始化文件,在此之后对参数的改变不会影响此实例的运行。只有在再次启动实例时,改变的参数才会起作用。    尽管打开了自动归档模式也不会使数据库处于ARCHIVELOG模式。同样,仅仅将数据库设置为ARCHIVELOG模式是不会自动启动归档进程的。    LOG_ARCHIVE_START参数默认设置为FALSE。有时由于ARCHIVELOG模式和LOG_ARCHIVE_START设置不一致,会导致一个Oracle实例无止境地等待。假如设置了归档模式,但是没有启动自动归档进程,这样因为不能写一个没有归档的日志文件,Oracle实例就会停止。换句话说,不能自动执行该文件的归档进程。为了避免这样的问题,首先修改初始化参数,然后设置ALTER DATABASE ARCHIVELOG命令。    在自动归档进程中应该确保归档目录中有足够的空间。如果归档日志文件目标空间已满,Oracle不能对其他的日志文件进行归档,它将会挂起。    归档日志对Oracle数据库的恢复很重要,Oracle8及其以后的版本允许为归档日志指定多个目标位置。Oracle将日志文件写入每个指定的路径中,还可以指定每个复本是否必须成功。用于该功能的初始化参数如下:    LOG_ARCHIVE_DUPLEX_DEST  为冗余的日志文件指定其他的存放位置  LOG_ARCHIVE_MIN_SUCCEED_DEST  表示日志文件是否必须成功写入某个或全部的存储位置    从Oracle8i开始,用户可以指定五个必需的或可选的归档日志存放位置,包括用于灾难性恢复的远程系统。Oracle自动支持多个归档进程,并对多个归档位置同时进行相同的归档。    实例的组件    Oracle实例可以定义为一个共享内存区和后台进程的集合。为实例分配的内存被称为SGA(System Global Area,系统全局区)。SGA并不是一个不加区分的大内存段,它由许多组件构成。    实例的所有进程共享SGA,包括系统进程以及用户进程。    在Oracle9i之前,实例开始时就要设置SGA的大小。改变SGA大小或者改变SGA中任何组件唯一办法就是修改初始化参数,然后停止实例再重新运行。Oracle9i中,在实例运行中可以改变SGA的大小,也可以调整其组件。Oracle9i引入了粒度(granule)的概念,这是在SGA中可以改变(增加或删除)的最小内存量。    后台进程要与操作系统进行交互,而且后台进程互相之间也需要交互,从而管理实例的内存结构。这些进程还要管理磁盘上的实际数据库,并对实例做一般性的内部管理。    还有一些物理文件,也可以将它们认为是实例的组成部分:    实例的初始化文件    初始化文件中包括许多配置实例运行的参数:可使用多大的内存,可连接的用户数目,实例访问的数据库等等。在Oracle之前,只有一个初始化文件——INIT.ORA。在Oracle9i中引入了SPFILE,它不仅具有和INIT.ORA相同的功能,而且能够连续地存储Oracle9i运行过程中初始化参数的变化。    SPFILE是一个二进制文件,它保存在服务器中,这样就无需在客户主机上保留INIT.ORA文件了。当一个Oracle9i实例开始启动时,它首先寻找SPFILE文件,然后再查找INIT.ORA文件。    实例的配置文件    CONFIG.ORA是可选的参数文件。如果希望分离一个初始化文件参数集(例如,用于Oracle并行服务器/实时应用集群的参数集),那么可以选择这个文件。    口令文件    口令文件是Oracle的一个可选文件,这是一个操作系统文件,可以为管理Oracle数据库提供附加的灵活性。口令文件是加密的,包括用于执行管理任务(例如,启动或停止实例)的用户ID和口令。    实例的内存结构    SGA由三个主要区组成:数据库高速缓存、共享池和日志文件缓冲区。    大池(Larger Pool),内存池的另一种类型,是在Oracle8中引入的。这个SGA的可选区可用于为不同服务器进程缓存I/O操作,其中包括那些用于恢复和备份的进程。还可以为多线程服务器保存会话内存。    由于这个备用池的存在,需要分配大内存时可以降低对共享池的要求。配置大池的初始化参数:LARGE_POOL_SIZE    数据库高速缓存    数据库高速缓存用来存储从数据库获取的数据块。这个介于用户请求和实际数据文件之间的缓冲区改进了数据库的性能。如果数据存放在缓冲区中,可以从内存中直接获取,而不用去磁盘中读取。Oracle用LRU(least recently used,最近最少使用)算法来管理缓冲区。如果一个用户请求的数据是最近才使用过的,那么这个数据最有可能存放在数据库高速缓存中;存放在缓冲区的数据能够直接传送,不用执行磁盘读操作。    当用户要读的数据不在缓冲区时,该数据块必须从磁盘中读出,并加载到缓冲区中。当用户修改数据时,首先是改变缓冲区中的数据,稍后这些改变才写入数据所驻留的数据文件中。这样做的目的在于,当Oracle往磁盘中写入所该变的数据块时用户不必等待。    磁盘是计算机系统中执行速度最慢的部分,因此I/O执行得越少,系统的运行速度就越快。通过延期而不是立即执行非关键性的I/O操作可以使一个Oracle数据库获得更好的性能。    在Oracle8及其以后的版本中有三个可用的缓冲池:    DEFAULT    这是标准的Oracle数据库高速缓存。如果没有特别指出的话,所有的对象都使用该缓冲区。    KEEP    用来存放经常使用的对象    RECYCLE    用于存放很少再访问的对象    可以标记表或索引从而在一个特定的缓冲池内缓存。这将有助于在缓冲区内保存更多所需的对象,而避免了在一个中心缓冲区内所有对象“竟用”缓冲区。    共享池    共享池中存放的是用户共享结构。    日志文件缓冲区    日志信息首先存放在日志文件缓冲区内,然后才写入磁盘上的物理日志文件中。    实例的后台进程    DBWR(Database Writer,数据库写进程)    DBWR将数据库块从SGA中的数据库高速缓存写入磁盘的数据文件中。每个Oracle实例最多可以拥有10个DBWR进程,即从DBWR0到DBWR9,用于处理多个数据文件的I/O操作。大多数实例只运行一个DBWR进程。若需要DBWR进程从缓存把数据块写到磁盘中,往往有两个主要原因:    ·如果Oracle需要执行一个检查点(例如,修改数据文件的数据块以便与日志的记录一致)。当一个事务提交时,Oracle先写日志,稍后才写实际的数据块。Oracle定期地执行检查点,以保证数据文件的内容符合日志为提交事务所做的记录。    ·在响应用户的请求时,Oracle需要将数据块读到高速缓存内,但是缓存内没有富余的空间,这个时候根据最近最少使用原则将某些数据块写入磁盘。这种顺序执行写数据块可以极大地减少在高速缓存中丢失数据的可能。    LGWR(Log Writer,日志写进程)    LGWR把日志信息从SGA中的日志缓冲区写到当前日志所有的复本中。当事务在进行是,相关的日志信息存放在SGA的日志文件缓冲区内。事务提交时,Oracle通过调用LGWR将日志信息写到磁盘作为永久保存。    SMON(System Monitor,系统监控进程)    系统监控进程为一个Oracle实例维护其整体安全性。在一个实例失败后重新启动时,SMON执行紧急灾难恢复;在Oracle并行服务器/实时应用集群中,当有多个实例同时访问同一数据库时,SMON为其中一个失败的实例进行协调并执行恢复操作。SMON还可以把数据文件中相邻的空闲内存合并为一块,并且对用于记录排序的空间,如果不需要还可以将此空间释放。    PMON(Process Monitor,进程监控进程)    PMON进程监控数据库所有用户进程。如果一个用户进程非正常中断,PMON负责释放其余所有资  源(如:内存),并且释放失败进程所加的锁。    ARCH(Archiver,归档进程)    一旦Oracle写好日志文件,归档进程将读出日志文件,并且为所有使用的日志文件建立复本,写入  到指定归档日志的目录中。    采用ARCn的记法,Oracle8i可支持的多达10个归档进程。LGWR可能会根据负载的需要启动其他的归档进程,启动的进程数目受初始化参数LOG_ARCHIVE_MAX_PROCESSES所限。    CKPT(Checkpoint,检查点进程)    检查点进程和DBWR协同工作来执行检查点。当检查点完成时,CKPT会更新控制文件和数据文件首部中的检查点数据。    RECO(Recover,恢复进程)    RECO会自动清除错误的或者挂起的分布式事务    数据字典    每个Oracle数据库包括一个被称为“元数据”的集合,或者说包含用来描述数据库有关数据结构的数据。包含这些元数据的表和视图称为Oracle数据字典。    数据字典中有前缀V$或GV$的表是动态表,它们会不断更新以反映出Oracle数据库当前的状态。静态数据字典表都有一个形如DBA_、ALL_或USER_的前缀,表示该视图中列出的对象范围。    数据库组件      数据库字典中的表和视图  数据库        V$DATABASE  表空间        DBA_TABLESPACE,DBA_DATA_FILES,  DBA_FREE_SPACE  控制文件       V$CONTROLFILE,V$PARAMETER,  V$CONTROLFILE_RECORD_SECTION  数据文件       V$DATAFILE,V$DATAFILE_HEADER,V$FILESTAT,  DBA_DATA_FILES  段          DBA_SEGMENTS  数据范围       DBA_EXTENTS  日志线程、日志组和  V$THREAD,V$LOG,V$LOGFILE  日志序列号  归档状态       V$DATABASE,V$LOG,V$ARCHIVED_LOG,  V$ARCHIVE_DEST  数据库实例      V$INSTANCE,V$PARAMETER,  V$SYSTEM_PARAMETER  内存结构       V$SGA,V$SGASTAT,V$DB_OBJECT_CACHE,V$SQL,  V$SQLTEXT,V$SQLAREA  后台进程       V$BGPROCESS,V$SESSION
请登录后再发表评论! 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
SQLSERVER如何向表中插入数据
下载积分:1500
内容提示:SQLSERVER如何向表中插入数据
文档格式:DOC|
浏览次数:518|
上传日期: 17:52:34|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
SQLSERVER如何向表中插入数据
关注微信公众号2009年7月 Oracle大版内专家分月排行榜第二2009年6月 Oracle大版内专家分月排行榜第二2004年4月 Oracle大版内专家分月排行榜第二
2004年3月 Oracle大版内专家分月排行榜第三
2009年7月 Oracle大版内专家分月排行榜第二2009年6月 Oracle大版内专家分月排行榜第二2004年4月 Oracle大版内专家分月排行榜第二
2004年3月 Oracle大版内专家分月排行榜第三
2009年7月 Oracle大版内专家分月排行榜第二2009年6月 Oracle大版内专家分月排行榜第二2004年4月 Oracle大版内专家分月排行榜第二
2004年3月 Oracle大版内专家分月排行榜第三
2009年5月 Oracle大版内专家分月排行榜第二
2009年5月 Oracle大版内专家分月排行榜第二
2009年5月 Oracle大版内专家分月排行榜第二
2009年5月 Oracle大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。14:18 提问
oracle怎么把一个表的数据插入到另一个表中
oracle数据库中有两个表A、B,表的结构不一样。A表比B表多两个字段,然后我需要把B表的数据插入到A表中,但同时也需要插入A表中多的两个字段,请问这个SQL语句应该怎么写呀? 大神们请指教,,谢谢!
按赞数排序
insert into a select bb.第一个字段,...bb.最后一个字段,' ',' '
字段要和a表的字段对应 a表中b 表没有的字段插入空值,这个位置要和你a表位置对应不一定在我写的最后 ,视情况而定
A表中有A1,A2,A3,A4,A5,A6,假设A中多余字段为A1,A2
B表中有B1,B2,B3,B4,
创建临时表C
CREATE TABLE C AS
SELECT A1,A2 FROM A
SELECT B1,B2,B3,B4 FROM B
此时C表中未A1,A2,B1,B2,B3,B4
一样的问题?
insert into A(字段1,字段2,多出的字段1,多出的字段2) select 字段1,字段2,'多出的字段值1','多出的字段值2' from B
其他相关推荐

我要回帖

更多关于 sqlserver和oracle 的文章

 

随机推荐