Oracle 系统表大全
数据字典dict总是属于Oracle用户sys的。 1、用户: select username from dba_users; 改口令 alter user spgroup identified by spgtest; 2、表空间: select * from dba_data_files; select * from dba_tablespaces;//表空间 select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//空闲表空间 select * from dba_data_files where tablespace_name='RBS';//表空间对应的数据文件 select * from dba_segments where tablesp
Oracle行列转换问题
--列转行CREATE TABLE t_col_row(ID INT,c1 VARCHAR2(10),c2 VARCHAR2(10),c3 VARCHAR2(10));INSERT INTO t_col_row VALUES (1, 'v11', 'v21', 'v31');INSERT INTO t_col_row VALUES (2, 'v12', 'v22', NULL);INSERT INTO t_col_row VALUES (3, 'v13', NULL, 'v33');INSERT INTO t_col_row VALUES (4, NULL, 'v24', 'v34');INSERT INTO t_col_row VALUES (5, 'v15', NULL, NULL);INSERT INTO t_col_row VALUES (6, NULL, NULL, 'v35');INSERT INTO t_col_row VALUES (7, NULL, NULL, NULL);COMMIT;SELECT * FROM t_col_row;SELECT id, 'c1
oracle rowid举例
1.创建一临时表 create table test_rowid (id number, row_id rowid); 2.插入一行记录 insert into test_rowid values(1,null); 3.修改刚插入的记录 update test_rowid set row_id = rowid where id = 1; 4.查看rowid select rowid,row_id from test_rowid; 返回结果为: rowid row_id AAAO0DAAJAAAAMYAAA AAAO0DAAJAAAAMYAAA Oracle的物理扩展ROWID有18位,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。 ROWID具体划分可
Oracle面试题集锦-技术篇
本文是Oracle技术人员求职面试题集锦,答案仅供参考…… 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但
关于字符串中存在中文字符的问题
现在需要查找某个字段上的值是否存在非数字类型的字符,可以通过LENGTH和LENGTHB来判断。如果返回值不同则该字段中存在中文字符。LENGTH(string1) 返回以字符为单位的长度.LENGTHB(string1) 返回以字节为单位的长度.11:33:47 SQL> select lengtHB('鱼3423432342_余YCZ'), lengTH('鱼3423432342_余YCZ') from dual;LENGTHB('鱼3423432342_余YCZ' LENGTH('鱼3423432342_余YCZ')---------------------------- ----------------------------20 16Executed in 0.08 seconds如果需要截除非数字类的字符,目前只找到这样类型的才可以用以下的方
oralce定时执行存储过程任务设置步骤详细
oralce定时执行存储过程任务设置步骤详细:【 功 能 描 述】:每隔一分钟自动向getSysDate表中插入当前的系统时间。【一、创测试表】create table getSysDate(test date);【二、创要定时执行的存储过程】create or replace procedure insertSysDate as begin insert into getSysDate values (sysdate);end ;【三、创建JOB,即创建待执行的定时任务过程】variable job1 number;begindbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate+1/1440');end;【四、启动JOB,即启动并运行定时任务过程】begindbms_job.run(:job1);e
Sequences 的作用
create sequence seq2 start with 0 --起始值 increment by 1 --步长 maxvalue 4999 --最大值 minvalue 0 --最小值 cycle --循环 cache 4 --缓存4个数 create table testa( ins number(4) primary key, nm varchar2(20)); -- Created on 2007-10-17 by YCZ declare -- Local variables here i integer;begin -- Test statements here for i in 1..5000 loop begin insert into testa(ins,nm) values (seq2.nextval,'N'); com
oracle中几个特殊的函数
1、全角转半角函数 TO_SINGLE_BYTE 2、数字转英文,利用to_char、to_date 3、sys_guid()1、全角转半角函数 TO_SINGLE_BYTESQL> select TO_SINGLE_BYTE('oracle') from dual;TO_SINGLE_BYTE('ORACLE')------------------------------oracle2、数字转英文,利用to_char、to_dateSQL> select to_char(to_date('12345','J'),'Jsp') en from dual;en----------------------------------------Twelve Thousand Three Hundred Forty-Five不过有限制:一是长度的限制,二是不能转换带小数的SQL> select to_char(to_date('888
SQL*PLUS命令的使用大全
Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于
用sqlplus进行copy数据的问题
今天用sqlplus进行copy数据,发现这个Error: ORA-01653: unable to extend table SX97.JNSX_JYZ by 128 in tablespace TB_93_03。意思是说不能对表进行扩展,怀疑是表空间TB_93_03的空间不够。既然在不能对TB_93_03表空间进行扩展的情况下,是否可以将从CMPR库中的表SX_JYZ指定给SXBK库的特定一个表空间?一、先在SXBK库中找出所有表空间的情况:select TABLESPACE_NAME, sum(bytes)/1024/1024 from dba_free_space group by TABLESPACE_NAME;TB_93_03 32.1875TB_97_01 239.125TB_97_02 44.75TB_97_04 2205TB_97_05 80.625现发现TB_97_01有
Oracle数据的导入和导出(Excel)
一般导入数据到Oracle有几种方法!这可是经验之谈哦!分类: Coder 前几天搞了下将excel表导入oracle数据库的问题,连查带问带自己摸索,将自己弄过的方法写出来和大家交流。这些方法也可以用于将其它格式的数据导入到oracle中,这里只是以excel为例。方法一,使用SQL*Loader这个是用的较多的方法,前提必须oracle数据中目的表已经存在。大体步骤如下:1 将excel文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的control.ctl时要将字段终止符改为','(field
查看掐掉的进程的回滚信息
select a.USED_UREC from v$transaction a ,v$session b where a.SES_ADDR=b.SADDR and b.SID='98'SID为Session中的SID[@more@]
Oracle下Kill进程的方法
1:先在oracle数据库中找到锁住的对象:select xidusn, object_id, session_id, locked_mode from v$locked_object;2:得到session_id。再根据session_id找到v$session对应的sid号和serial#:select username,sid,serial# from v$session where sid=session_id;3:用oracle的slq kill掉相关的session sql语句:alter system kill session 'sid,serial#';4:如果不能kill掉,报ora-00031错:说明之前有kill过,这样找到这个进程spid slq语句:select pro.spid from v$session ses,v$process pro where ses.sid=129 and ses.paddr=pro.addr;5:
外企面试题目
The following are the questionsPlease try to answer following PL/SQL, SQL and database question。1) Can we declare a column having number data type and its scale is larger than pricesion?ex: column_name NUMBER(10,100), column_name NUMBAER(10,-84) ?2) Explain the usage of WHERE CURRENT OF clause in cursors ?3) What is Overloading of procedures ?4) What is Pragma EXECPTION_INIT ? Explain the usage ?5) What are the return values of functions SQLCODE and SQLERRM ?6) Is it possibl
JOIN用法
在我叙述JOIN的用法前,我先引用数据库设计中最常见的范式资料。第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。 例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号,姓名,所在系,系名称,系地址。 关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。 原因:关系中存在传递依赖造成的。
关于Execution Plan
Name:Oracle的优化器(Optimizer) From:http://www.dbonline.cn/source/oracle/20040415/PERFORMANCE_optimizer.htm[@more@]content:Oracle的优化器(Optimizer) 本文的目的:1、说一说Oracle的Optimizer及其相关的一些知识。 2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。 3、如果你对 FIRST_ROWS、 ALL_ROWS这两种模式有疑惑时也可以看一下这篇文章。 开始吧: Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(O
Oracle nvl函数的用法
通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value另一个有关的有用方法declare i integerselect nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1[@more@]
批量建表或存储过程
test.sql内容:create or replace procedure ptest001 isbeginnull;end ptest001;/create or replace procedure ptest002 isbeginnull;end ptest002;/create or replace procedure ptest003 isbeginnull;end ptest003;/create or replace procedure ptest004 isbeginnull;end ptest004;/create or replace procedure ptest005 isbeginnull;end ptest005;/test.bat内容:sqlplus user_name/password@connectstr @c:test.sql双击后执行,成功创建多个存储过程[@more@]
判断字段中是否含有中文字符
length是字的长度,lengthb是字节的长度,字符集为UTF8SQL> create table test(a varchar2(20));Table createdSQL> insert into test values('2');1 row insertedSQL> insert into test values('12');1 row insertedSQL> insert into test values('四大皆空');1 row insertedSQL> commit;Commit completeSQL> select * from test;A--------------------212四大皆空SQL> select a from test where length(a)!=lengthb(a);A--------------------四大皆空SQL> select a from test where asciistr(a) not like '%%';A