数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ORACLE常用傻瓜问题1000问全集(二)


发布日期:2023年09月15日
 
ORACLE常用傻瓜问题1000问全集(二)

如何搜索出前N条记录?

SELECT * FROM empLOYEE WHERE ROWNUM < n

ORDER BY empno;

102. 如何知道机器上的Oracle支持多少并发用户数?

SQL>conn internal

SQL>show parameter processes

db_block_size可以修改吗?

一般不可以﹐不建议这样做的

如何统计两个表的记录总数?

select (select count(id) from aa)+(select count(id) from bb) 总数 from dual

怎样用Sql语句实现查找一列中第N大值?

select * from

(select t*dense_rank() over (order by sal) rank from employee)

where rank = N

如何在给现有的日期加上年?(

select add_months(sysdate) from dual

USED_UBLK为负值表示什么意思?

It is harmless

Connect string是指什么?

应该是tnsnamesora中的服务名后面的内容

怎样扩大REDO LOG的大小?

建立一个临时的redolog组然后切换日志删除以前的日志建立新的日志

tablespace 是否不能大于G?

没有限制

返回大于等于N的最小整数值?

SELECT CEIL(N) FROM DUAL

返回小于等于N的最小整数值?

SELECT FLOOR(N) FROM DUAL

返回当前月的最后一天?

SELECT LAST_DAY(SYSDATE) FROM DUAL

如何不同用户间数据导入?

IMP SYSTEM/MANAGER FILE=AADMP FROMUSER=USER_OLD TOUSER=USER_NEW ROWS=Y INDEXES=Y

如何找数据库表的主键字段的名称?

SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE=P and table_name=TABLE_NAME

两个结果集互加的函数?

SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW

SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW

SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW

两个结果集互减的函数?

SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW

如何配置Sequence?

建sequence seq_custid

create sequence seq_custid start incrememt by

建表时

create table cust

{ cust_id smallint not null

}

insert 时

insert into table cust

values( seq_custnextval)

日期的各部分的常用的的写法

取时间点的年份的写法

SELECT TO_CHAR(SYSDATEYYYY) FROM DUAL

取时间点的月份的写法

SELECT TO_CHAR(SYSDATEMM) FROM DUAL

取时间点的日的写法

SELECT TO_CHAR(SYSDATEDD) FROM DUAL

取时间点的时的写法

SELECT TO_CHAR(SYSDATEHH) FROM DUAL

取时间点的分的写法

SELECT TO_CHAR(SYSDATEMI) FROM DUAL

取时间点的秒的写法

SELECT TO_CHAR(SYSDATESS) FROM DUAL

取时间点的日期的写法

SELECT TRUNC(SYSDATE) FROM DUAL

取时间点的时间的写法

SELECT TO_CHAR(SYSDATEHHMISS) FROM DUAL

日期时间形态变为字符形态

SELECT TO_CHAR(SYSDATE) FROM DUAL

将字符串转换成日期或时间形态

SELECT TO_DATE(//) FROM DUAL

返回参数的星期几的写法

SELECT TO_CHAR(SYSDATED) FROM DUAL

返回参数一年中的第几天的写法

SELECT TO_CHAR(SYSDATEDDD) FROM DUAL

返回午夜和参数中指定的时间值之间的秒数的写法

SELECT TO_CHAR(SYSDATESSSSS) FROM DUAL

返回参数中一年的第几周的写法

SELECT TO_CHAR(SYSDATEWW) FROM DUAL

虚拟字段

CURRVAL 和 nextval

为表创建序列

CREATE SEQUENCE EMPSEQ

SELECT empseqcurrval FROM DUAL

自动插入序列的数值

INSERT INTO emp

VALUES (empseqnextval LEWIS CLERK

SYSDATE NULL )

ROWNUM

按设定排序的行的序号

SELECT * FROM emp WHERE ROWNUM <

ROWID

返回行的物理地址

SELECT ROWID ename FROM emp WHERE deptno =

将N秒转换为时分秒格式?

set serverout on

declare

N number =

ret varchar()

begin

ret = trunc(n/) || 小时 || to_char(to_date(mod(n)sssss)fmmiss)

dbms_outputput_line(ret)

end

如何查询做比较大的排序的进程?

SELECT btablespace bsegfile# bsegblk# bblocks asid aserial# ausername aosuser astatus

FROM v$session av$sort_usage b

WHERE asaddr = bsession_addr

ORDER BY btablespace bsegfile# bsegblk# bblocks

如何查询做比较大的排序的进程的SQL语句?

select /*+ ORDERED */ sql_text from v$sqltext a

where ahash_value = (

select sql_hash_value from v$session b

where bsid = &sid and bserial# = &serial)

order by piece asc

如何查找重复记录?

SELECT * FROM TABLE_NAME

WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D

WHERE TABLE_NAMECOL=DCOL AND TABLE_NAMECOL=DCOL)

如何删除重复记录?

DELETE FROM TABLE_NAME

WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D

WHERE TABLE_NAMECOL=DCOL AND TABLE_NAMECOL=DCOL)

如何快速编译所有视图?

SQL >SPOOL VIEWSQL

SQL >SELECT ALTER VIEW ||TNAME||

COMPILE FROM TAB

SQL >SPOOL OFF

然后执行VIEWSQL即可

SQL >@VIEWSQL

ORA SNAPSHOT TOO OLD的解决办法

增加MINEXTENTS的值增加区的大小设置一个高的OPTIMAL值

事务要求的回滚段空间不够表现为表空间用满(ORA错误)回滚段扩展到达参数 MAXEXTENTS的值(ORA)的解决办法

向回滚段表空间添加文件或使已有的文件变大增加MAXEXTENTS的值

如何加密ORACLE的存储过程?

下列存储过程内容放在AASQL文件中

create or replace procedure testCCB(i in number) as

begin

dbms_outputput_line(输入参数是||to_char(i))

end

SQL>wrap iname=asql

PL/SQL Wrapper Release Production on Tue Nov

Copyright (c) Oracle Corporation All Rights Reserved

Processing AAsql to AAplb

运行AAplb

SQL> @AAplb

如何监控事例的等待?

select eventsum(decode(wait_Time)) Prev

sum(decode(wait_Time)) Currcount(*) Tot

from v$session_Wait

group by event order by

如何回滚段的争用情况?

select name waits gets waits/gets Ratio

from v$rollstat C v$rollname D

where Cusn = Dusn

如何监控表空间的 I/O 比例?

select Btablespace_name name Bfile_name file Aphyrds pyr Aphyblkrd pbr Aphywrts pyw Aphyblkwrt pbw

from v$filestat A dba_data_files B

where Afile# = Bfile_id

order by Btablespace_name

如何监控文件系统的 I/O 比例?

select substr(Cfile#) # substr(Cname) Name Cstatus Cbytes Dphyrds Dphywrts

from v$datafile C v$filestat D

where Cfile# = Dfile#

如何在某个用户下找所有的索引?

select user_indexestable_name user_indexesindex_nameuniqueness column_name

from user_ind_columns user_indexes

where user_ind_columnsindex_name = user_indexesindex_name

and user_ind_columnstable_name = user_indexestable_name

order by user_indexestable_type user_indexe

上一篇:不同平台的数据库异步I/O的使用

下一篇:介绍Oracle使用游标触发器存储实操