时间:2011-06-10 博客:http://blog.csdn.net/wwwwgou --============================================== --1.行转列...行转列字段值固定. --1.case when SELECT [name], [type1] = SUM(CASE [type] WHEN N'type1' THEN [amount] ELSE 0...行转列字段值不固定,只能拼SQL了. --1.case when DECLARE @sql NVARCHAR(MAX) SET @sql = N'' SELECT @sql = @sql + N', '...= N'SELECT [name]' + @sql SET @sql = @sql + CHAR(10) + N'FROM #temp GROUP BY [name]' EXEC(@sql) --2...) --2.列转行 IF OBJECT_ID('tempdb..
问题: 想合并两个结果集,并将它们转置为两列,另外还想给各组添加列“标题”。...--------+-------------+ 实现: select max(case when flag2 = 0 then it_dept else '' end) research, -- 行转列...from ( select 1 flag1, 0 flag2, case id when 2 then a else concat(' ',b) end it_dept,a,id,rn -- 标题行替换..., (select 1 id union select 2) y) t -- 笛卡尔积制造2倍的行数 where rn 行
转储为pfile然后从pfile启动 并生成新的spfile,不过该操作方式代价太高,需要重新启动数据库。...(无pfile情况下)转储为pfile文件,将local_listener参数置空,然后使用pfile文件启动数据库后重新生成spfile 可以采用下面的方法来转储,如下 [oracle@odbp...dispatchers='(PROTOCOL=TCP) (SERVICE=odbpXDB)' *.job_queue_processes=10 *.local_listener='LISTENER_ODBP' --将改行注释掉或置空.../admin/odbp/udump' SQL> startup nomount pfile='/u01/app/oracle/10g/dbs/initodbp.ora'; ORACLE instance...SQL> startup force; ORACLE instance started.
/admin/orcl/udump' 解决 SQL> vim /u01/app/oracle/10g/dbs/initorcl.ora --由于没有备份的参数文件,在此新建一个pfile...._1和log_archive_dest_2清空 --也可以将log_archive_dest和log_archive_duplex_dest置空,因为这是两种不同的归档方式,互不兼容 SQL> ho...----------------------- spfile string /u01/app/oracle/10g/dbs/spfile orcl.ora SQL> show parameter.../10g/dbs/spfile orcl.ora SQL> desc v$spparameter Name Null?...> select distinct isspecified from v$spparameter; ISSPEC ------ TRUE --第一行为true 可以知道数据库使用spfile参数启动
其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。...对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。...4、不同版本数据库之间数据互导 如将11g数据库的数据导入导10g数据库的服务器上 首先在11g服务器上导出 EXPDP USERID='SYS/cuc2009@cuc as sysdba' schemas...datafile 3; 将数据文件设置为online并查看状态 SQL> alter database datafile 2 online; SQL> select file#,status form...置为1 8、删除备份文件 删除无效备份。
结果排查发现客户在导入数据后并未重新收集统计信息,SQL使用绑定变量,窥探的变量刚好是越界,导致SQL第一次硬解析生成的执行计划走错。再加上10G的库导致接下来的执行计划直接沿用内存中的执行计划。...,字段上有直方图信息,在10g里面也会由于绑定变量窥探从而使SQL大部分变量的执行计划走错。...这里将内存中的执行计划置为失效,这里方法有很多种,暂不做一一介绍: ? 从上面可以看出rows和bytes值都有差异,如果数据差异大,cost也会变化。...,可以修改隐含参数"_optim_peek_user_binds"为FALSE禁用变量窥探(可能会引起性能问题),不过11g中引入自适应游标共享后这个问题得到了改善,在10g中直方图和变量窥探是相互矛盾的...下面执行where条件为name的SQL: ? 再只执行一次查询,执行两次收集统计信息就会收集直方图信息 ?
以下为正文 无论是老版本exp还是数据泵expdp,Oracle都提供了QUERY的功能,这使得查询表中部分记录的功能可以实现,但是QUERY只能过滤行,而不能过滤列,Oracle数据泵会读取表中全部列的...在12c中,Oracle为数据泵提供了VIEW功能,使得导出的时候可以根据视图的定义来导出表中的数据: SQL>select banner from v$version; BANNER-------...**************************************************************************C##U1.SYS_EXPORT_TABLE_01的转储文件集为...通过将外部表导出的 external_table.dp 文件拷贝到目标环境对应的目录下,根据上面的定义重建外部表,注意目标环境创建过程由于已经拷贝了导出的数据,因此语法截至到 location 语句就结束了...OL$NODESSYSTEM HELP SYSTEM 所以对于11g和10g
答:在V$LOCK中,当TYPE列的值为TM锁时,则ID1列的值为DBA_OBJECTS.OBJECT_ID,ID2列的值为0;当TYPE列的值为TX锁时,则ID1列的值为视图V$TRANSACTION...当SESSION是ACTIVE的时候,ALTER SYSTEM KILL SESSION只是将SESSION的状态标识为KILLED,SERVER变为PSEUDO状态,但可能并不会立即释放SESSION...另外,由于变为KILLED状态的会话的PADDR列都变成了另外一个值,因此,通过平常的连接方式就没有办法关联到后台进程,在Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,...对于Oracle 10g可以通过特殊的SQL找到后台的进程号。...Oracle 10g可以使用如下的脚本: SELECT INST_ID, SPID, PROGRAM,'KILL -9 '|| SPID KILL9 FROM GV$PROCESS A WHERE
查看了这些对象主要表现在之前写法不严格的SQL语法导致了这些package无法成功编译,诸如select查询列中不能使用混淆的列名称等。...---------------------------------------- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL...dba_tab_columns where data_type like '%LOB%' and owner='GOEX_ADMIN'; no rows selected --在错误提示地方,如30行处发现了为...select 查询列使用了wm_concat函数,尝试注视该列,Pckage编译成功,看来是这个函数是罪魁祸首 --关于这个函数在10.2.0.3的表现为返回为VARCHAR2数据类型,如下: SQL...select 查询列使用了to_char函数来进行转换(wm_concat(col_name)) b、或者修改union 为union all --下面给一个示例供大家参考(10.2.0.5环境),仅仅是执行
,从10g及以后版本,一般用SQL_ID表明一条SQL。...这样看,HASH_VALUE和SQL_ID都可以表明一条SQL,但由于10g以后,HASH_VALUE的算法有了不同,因此10g的V$SQL中还多了一个OLD_HASH_VALUE字段,为的就是向下兼容...译文: 将SQL_ID解释为一个13个字节的base-32编码数值,然后取其中的低4个字节(base-256的4个字节),作为HASH_VALUE。 SQL_ID是库缓存对象名的另一种HASH值。...从10g开始,算法变更为: 1) Oracle使用MD5对库缓存对象名进行哈希,产生一个128位的哈希值。...“ 再重新叙述上面的转换过程,就是Oracle计算SQL文本的MD5哈希值,取后64位作为SQL_ID,这里使用base-32编码进行转换,其中base-32转码的可见字符是0123456789abcdfghjkmnpqrstuvwxyz
如果这些数据总共有 100 列,统计一列时只要读 1% 的数据量,可能也就只有 10G,这样有 10 块硬盘就能在数秒内扫描一遍了,这点配置对于现代服务器集群而言是个小菜,再大 10 倍也不是问题。...Oracle 采用行式存储时,基本上要把这 100 列都要读一遍,而采用列式存储的 AP 数据库,只要读 2 列就可以,这个读取量就会差了几十倍。...除了列存比行存外,还可能发生的是集群比单机,内存比外存等,就是比 Oracle 多用了数倍资源后跑出更快速度。总之,都是胜之不武。...事实上,Oracle 的优化器很强,如果不占列存和资源的便宜,很多专业 AP 数据库还不见得能跑得过 Oracle,特别基于 Hadoop 的的技术。...SPL 论坛上有个国家天文台的例子,数据只有 11 个 50 万行的表,总共不到 10G,但某分布式数据库动用了 100 个 CPU 算了 3.8 小时。
SET NULL: 子表中相应的列置空 如果子表在建外键时,该列的数据并不在父表,则无法创建该约束。...--从表中deptno为的被置为NULL SQL> SELECT * FROM tb_constraint_2; EMPNO ENAME EMAIL SAL DEPTNO ----------...以及一个check约束并将其置为禁用模式 SQL> ALTER TABLE tb_cons2 2 ADD comm NUMBER(4) CONSTRAINT ck_cons2_comm CHECK...(ROBINSON.PK_TB_CUST_CUSTID) violated --将约束置为实时启用 SQL> SET CONSTRAINT pk_tb_cust_custid IMMEDIATE...CONNECT BY PRIOR) SQL 基础--> 视图(CREATE VIEW) Oracle 常用目录结构(10g)
添加额外的空间以应对数据库对象的增长,并在DML操作后存储更新的行版本。 动态调整大小的最小值为128 MB。...在SQL * Plus或SQL Developer中,使用管理权限登录数据库。 2. 将 INMEMORY_SIZE 初始化参数设置为非零值。 最小设置为100M。...例如,以下语句将In-Memory Area大小设置为10 GB: ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE; 3....示例3-1启用IM列存储 假设 INMEMORY_SIZE 初始化参数设置为0.以下SQL * Plus示例将 INMEMORY_SIZE 设置为10 GB,关闭数据库实例,然后重新打开数据库以使更改生效...SQL> STARTUP ORACLE instance started.
从Oracle 10g开始,Oracle引入了ASH新特性,也就是活动Session历史信息记录(Active Session History,ASH)。...这一算法在Oracle 10g的不同版本中,可能不同。 根据这个算法,这里采样系统分配的ASH Buffers为6MB: ? 另外一个生产系统中,这一内存分配为8MB: ?...根据这些参数,可以知道等待发生在哪些对象或资源上,对于不同的等待事件,P1/P2/P3列信息被完整地记录在案,在Oracle 10g之前,我们是无法在事后获得这部分信息的: ?...这在Oracle 10g之前都需要DBA去跟踪、捕获,现在Oracle帮助我们完成了这一切。...接下来列出了数据库未使用绑定变量的SQL示例(Top SQLUsing Literals),看来Oracle将绑定变量的重要性进一步提高了: ?
EXP-00056: 遇到 ORACLE 错误 6550 ORA-06550: 第 1 行, 第 41 列: PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件 ORA-06550...: 第 1 行, 第 15 列: PL/SQL: Statement ignored EXP-00000: 导出终止失败 规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件...正在将 SCOTT 的对象导入到 TEST . . 正在导入表 "ACCOUNT"导入了 5 行 . ....正在将 SCOTT 的对象导入到 TEST . . 正在导入表 "ACCOUNT"导入了 5 行 . ....id=465310 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。
本文摘自我近期翻译的《Oracle Database In-Memory 官方使用指南》 在将表或物化视图填充到In-Memory Column Store之前,必须为数据库启用 In-Memory Column...在SQL * Plus或SQL Developer中,使用管理员权限登录数据库。 2. 将 INMEMORY_SIZE 初始化参数设置为非零值。最小设置为100M。...例如,使用以下语句将In-Memory Area大小设置为10 GB: ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE; 3....以下示例将 INMEMORY_SIZE 设置为10 GB,关闭数据库实例,然后重新打开数据库以使更改生效: SQL> SHOW PARAMETER INMEMORY_SIZE NAME...SQL> STARTUP ORACLE instance started.
Oracle自发布12.1之后,就一直声称要全面转云,在之后的三四年里,一直杳无音信,大家都在猜测,Oracle又在憋什么大招,果然,2017阳春三月,大招来了!...根据白求恩对中国的Oracle用户使用Oracle数据库现状分析,在10g以前的版本中,有部分用户在使用裸设备作为数据库存储方式,11g以后已经很少见,12c已结没有人使用裸设备了。...在12.2的IM中,支持三种格式的数据存储:关系型数据,虚拟列和JSON格式。并且可以将JSON对象的虚拟列直接存放在IM的虚拟列,使得针对JSON对象的操作非常方便。...1、扫描Vehicles表,并将满足条件的行解压并发送到hash 连接 2、使用vehicles中获取的做连接的列创建hash列表 3、扫描sales表,过滤出符合条件的行 4、解压过滤得到的行,并发送至...使用join group后的连接访问方式如下: 1、扫描vehicles表,将符合条件的以压缩的方式发送至hash 连接 2、对上步中压缩的结果中的不同值创建数组 3、扫描sales表 4、将匹配的行以压缩的方式发至
Oracle 10g还提供了另一个初始化参数sga_max_size。...对于Oracle 10g来说,我们为自动调整大小的内存组件设置了值,则会以我们设置的值作为自动调整的最小值。...也就是说,假设sga_target为4GB,而我们将shared_pool_size设置为600MB,则MMAN在进行自动调整时,永远不会将shared pool设置为600MB以下。...ASMM管理(将AMM切换到ASMM管理,即不启用11G的AMM特性,退化到10G的ASMM特性,当sga_target=0那么其下面的share_pool,buffer_cache就要手动管理,这样适合比较有经验的...创建出pfile之后,将显示赋值为0的MEMORY_TARGET和MEMORY_MAX_TARGET记录行删除掉。再利用pfile启动数据库,重建spfile。
-->将表t2列obj_id置空 -->注:在Oracle 10g中空字符串等同于null值 scott@ORCL> update t2 set obj_id='' where...-->更新表上的列,使之obj_id为1的行占绝大多数 scott@ORCL> update t2 set obj_id=1 where obj_id is not null; 11620 rows...-->更新表,使之obj_id为0的行占少部分 scott@ORCL> update t2 set obj_id = 0 where obj_id is null; 99 rows updated....个,因为所有非0值的全部被置NULL。...3、如果NULL值不可避免也不能使用缺省值,应考虑为该常用列使用nvl函数创建索引,或使用伪列来创建索引以提高查询性能。
比如分区表orders按地区area进行了分区,P1分区只有几千行,而P2分区有200万行数据。...对于Oracle 10g来说,默认的策略能够满足大部分需求,但是默认的收集策略会过多地收集列上的直方图。...由于绑定变量与直方图固有的矛盾,为保持性能稳定,对使用绑定变量的列,不收集列上的直方图;对的确需要收集直方图的列,在SQL中该列上的条件就不要用绑定变量。...SQL Profile是Oracle 10g之后的新功能,此处不再介绍,请参考相应的文档。...除此之外,可以调整一些参数避免潜在的问题,比如将"_btree_bitmap_plans"参数设置为FALSE(这个参数请参考互联网上的文章或Oracle文档)。