oracle常用查询类

1.查看Oracle字符集
--数据库服务器
select * from nls_database_parameters;
--客户端字符集
select * from nls_instance_parameters;
--会话(实例字符集)
select * from nls_session_parameters;
--oracle server端的字符集
select userenv('language') from dual;
 
--dmp文件(oracel server端的字符集、oracle client端的字符集、dmp文件的字符集都一致才能正确导入)
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然后用上述SQL也可以得到它对应的字符集。
 
2.相关视图
v$parameter:oracle参数
  select value from v$parameter where name ='processes';  --数据库允许的最大连接数
  alter system set processes = 1000 scope = spfile;  --修改最大连接数:
  select value from v$parameter where name ='sessions';  --数据库允许的最大会话数
  alter system set sessions= 1528 scope = spfile;  --修改最大连接数:
 
v$process:oracle服务进程(服务端)
  数据库相关进程 不常用
v$session:oracle连接信息(client端)
  select count(*) from v$session;  --当前的session连接数
  select count(*) from v$session v where v.STATUS='ACTIVE' --并发连接数
 
3.分析表与索引
analyze table tablename compute statistics;
 
4.表记录被另一个用户锁住

select Distinct 'alter system kill session '||chr(39)||b.sid||','||b.serial#||chr(39)||';'
As cmd,b.username,b.logon_time
from v$locked_object a,v$session b
where a.session_id=b.sid;

 

5.查询逻辑目录
select * from dba_directories;
 
6.查询DBA权限用户
select * from dba_role_privs where granted_role='DBA';
DBA授权:
grant dba to exim1104;
回收DBA权限:
revoke dba from exim1104;

查询Oracle正在执行的sql语句及kill被锁的表

https://www.cnblogs.com/gavinYang/p/11197983.html

便于剪藏,引用这位大佬的整理:

查询Oracle正在执行的sql语句及执行该语句的用户
SELECT b.sid oracleID,
b.username 登录Oracle用户名,
b.serial#,
spid 操作系统ID,
paddr,
sql_text 正在执行的SQL,
b.machine 计算机名
FROM v$process a, v$session b, v$sqlarea c
WHERE a.addr = b.paddr
AND b.sql_hash_value = c.hash_value

查看正在执行sql的发起者的发放程序
SELECT OSUSER 电脑登录身份,
PROGRAM 发起请求的程序,
USERNAME 登录系统的用户名,
SCHEMANAME,
B.Cpu_Time 花费cpu的时间,
STATUS,
B.SQL_TEXT 执行的sql
FROM V$SESSION A
LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS
AND A.SQL_HASH_VALUE = B.HASH_VALUE
ORDER BY b.cpu_time DESC

--锁表查询SQL
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

--释放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';

 

posted on 2018-11-16 14:43  云卷云舒灬  阅读(211)  评论(0)    收藏  举报

导航