ORACLE数据库使用的常见问题(二)

21. 查询当前用户对象?
Select * FROM USER_OBJECTS;
Select * FROM DBA_SEGMENTS;

22. 如何获取错误信息?
Select * FROM USER_ERRORS

23. 如何获取dblink链接状况?
Select * FROM DBA_DB_LINKS

24. 查看数据库字符状况?
Select * FROM NLS_DATABASE_PARAMETERS;
Select * FROM V$NLS_PARAMETERS;

25. 查询表空间信息?
Select * FROM DBA_DATA_FILES

26. oracle的INTERAL用户要口令?
修改 SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES=(NTS)

27. 如何给表、列加注释?
SQL>comment on table 表 is ‘表注释’;
注释已创建。
SQL>comment on column 表.列 is ‘列注释’;
注释已创建。
SQL> select * from user_tab_comments where comments is not null;

28. 如何查看各个表空间占用磁盘情况?
SQL> col tablespace format a20
SQL> select
b.file_id 文件ID号,
b.tablespace_name 表空间名,
b.bytes 字节数,
(b.bytes-sum(nvl(a.bytes,0))) 已使用,
sum(nvl(a.bytes,0)) 剩余空间,
sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id

29. 如把ORACLE设置为MTS或专用模式?
#dispatchers=”(PROTOCOL=TCP) (SERVICE=SIDXD”
加上就是MTS,注释掉就是专用模式,SID是指实例名。

30. 如何才能得知系统当前的SCN号 ?
select max(ktuxescnw * power(2,32) + ktuxescnb) from x$ktuxe;

31. 请问如何在ORACLE中取毫秒?
9i之前不支持,9i开始有timestamp。
9i可以用select systimestamp from dual;

32. 如何在字符串里加回车?
select ‘Welcome to visit’||chr(10)||’www.CSDN.NET’ from dual;

33. 中文是如何排序的?
oracle9i之前,中文是按照二进制编码进行排序的。
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT(SQL> select * from nls_database_parameters;)值:
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序

34. 怎样修改oracel数据库的默认日期?
alter session set nls_date_format=’yyyymmddhh24miss’;
或可以在init.ora中加上一行 nls_date_format=’yyyymmddhh24miss’

35. 如何将小表放入keep池中?
alter table xxx storage(buffer_pool keep);

36. 如何使select语句的查询结果自动生成序号?
select rownum,COL from table;

37. 如何知道数据库中某个表所在的tablespace?
select tablespace_name from user_tables where table_name=’TEST’;
select * from dba_segments where …;

38. 怎么可以快速做一个和原表一样的备份表?
create table new_table as (select * from old_table);

39. 请问如何修改一张表的主键?
alter table aaa drop constraint aaa_key ;
alter table aaa add constraint aaa_key primary key(a1,b1) ;

40. 如何修改oracle数据库的用户连接数?
修改initSID.ora,将process加大,重启数据库。



无觅相关文章插件,快速提升流量

“ORACLE数据库使用的常见问题(二)”3 条评论

commenter

怎样把经常使用的小表存放在KEEP缓冲区中
1)分配keep缓冲区
alter system set db_keep_cache_size = 20m;
2)把表存放在keep中
create table test (a number) storage (buffer_pool keep); 或者
alter table test storage(buffer_pool keep);
3)查看进行了几次物理读,并且在哪个缓冲区里读:
select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics where name=’KEEP’;
4)查询几次表记录,然后观察进行了几次物理读,并且在哪个缓冲区里读:
select * from test;
select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics where name=’KEEP’;
1)对表test访问时都在db_cache_pool操作。如果没有分配db_keep_cache_size则不会放在keep缓冲区中。
2)如果在把表的内容放入KEEP缓冲区之前,已经对表就行访问,这时数据会放在DB_CACHE_SIZE中。则每次进行数据读取的时候,都从DB_CACHE_SIZE中读取,可以使用如下命令,把DB_CACHE_SIZE中数据清空:
ALTER SYSTEM FLUSH BUFFER_CACHE;
3)alter system flush shared_pool;使用命令刷新共享池,会造成重新分析sql语句。

commenter

如何从表中取出第m条到第n条的记录:(Not In 版本)
SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))
–从TABLE表中取出第m到n条记录 (Exists版本)
SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists
(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )
Order by id
–m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,
Select Top n-m+1 * From Table
Where Id>(Select Max(Id) From
(Select Top m-1 Id From Table Order By Id Asc) Temp)

commenter

thanks for share!