oracle备忘录

1.登录linux服务器
执行:su - oracle
执行:sqlplus 用户名/密码
使用dab登录命令,执行:sqlplus / as sysdba
dba授权执行:grant dba to QXT_USER;
(注:QXT_USER是用户名)

2.查看表空间使用情况

SELECT a.tablespace_name "表空间名", 
total "表空间大小", 
free "表空间剩余大小", 
(total - free) "表空间使用大小", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name;

SELECT a.tablespace_name,total/(1024 * 1024 * 1024),free/(1024 * 1024 * 1024) FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;

3.查询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

4.查看正在执行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;

5.查出oracle当前的被锁对象

SELECT l.session_id sid,
       s.serial#,
       l.locked_mode 锁模式,
       l.oracle_username 登录用户,
       l.os_user_name 登录机器用户名,
       s.machine 机器名,
       s.terminal 终端用户名,
       o.object_name 被锁对象名,
       s.logon_time 登录数据库时间
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id
   AND l.session_id = s.sid
ORDER BY sid, s.serial#;
  1. kill掉当前的锁对象可以为(注:结合上面的查询)
alter system kill session 'sid, s.serial#';
示例:alter system kill session '144, 8720';

7.查询正在执行的SQL语句

select a.program, a.sid,a.SERIAL#,b.spid, c.sql_text,c.SQL_ID
  from v$session a, v$process b, v$sqlarea c
 where a.paddr = b.addr
   and a.sql_hash_value = c.hash_value
   and a.username is not null order by c.sql_tex

8.linux启动oracle数据库服务
1)以oracle用户登录
#su - oracle
2)使用sysdba角色登录sqlplus,启动数据库实例
$sqlplus / as sysdba
SQL>startup
SQL>alter user qxt_user account unlock;
SQL>Alter system set “_undo_autotune” = false;
SQL>exit
3)打开Oracle监听
$lsnrctl start
4)查看oracle进程
$ps -ef|grep oracle
5)关闭数据库实例
SQL>shutdown immediate
SQL>exit
6)关闭监听
$lsnrctl stop

9.查询所以的表所占空间的大小,排倒叙,单位“兆”

select t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) M
from dba_segments t
where t.segment_type='TABLE'
group by OWNER, t.segment_name, t.segment_type
order by M desc;

10.查询用户为QXT_USER下所有的触发器,object_name为触发器的名称

select * from all_objects where object_type = 'TRIGGER' and owner='QXT_USER' order by object_name;

11.查询用户为QXT_USER下所有的序列,object_name为序列的名称

select * from all_objects where object_type = 'SEQUENCE' and owner='QXT_USER' order by object_name;

12.查询所有的作业

select * from all_objects where object_type = 'JOB' and owner='QXT_USER' order by object_name;

13.查询当前用户下所有的数据库类型

select table_name,num_rows from user_tables;

14.避免system空间不足的报错,可关闭审计功能,并重启数据库

alter system set audit_trail=none scope=spfile;

查看

show parameter audit_trail;

15.临时表空间
查询语句:select d.file_name,d.tablespace_name,d.autoextensible from dba_temp_files d;
或者:select * from dba_temp_files d;
增加临时表空间执行(dba权限执行):

    su - oracle
	sqlplus / as sysdba
	alter tablespace temp add tempfile '/user/oracle/oradata/temp02.dbf' size 4G autoextend on next 128M;
说明:/user/oracle/oradata/temp02.dbf为存放路径
修改临时表空间执行(dba权限执行),增大临时文件大小执行:
alter database tempfile '/user/oracle/oradata/temp02.dbf' RESIZE 4096M;
--将临时数据文件设为自动扩展
alter database tempfile '/user/oracle/oradata/temp02.dbf' autoextend on next 10m maxsize 4096M;

16.oracle 等同于mysql的insert ignore into 数据量大时,有问题,慎用

insert /*+IGNORE_ROW_ON_DUPKEY_INDEX(t_car_wz_task_122,T_CAR_WZ_TASK_122_U3)*/ into t_car_wz_task_122(carid,motor,carstyle) select carid,motor,carstyle from t_custdb where codeid in('1001124','10011','44');

17.查看当前的数据库连接数

select count(*) from v$process ;    --当前的数据库连接数

18.oracle 忽略唯一键或主键的写法,有bug, 执行 如果插入200条记录,则不会报错。如果插入的数据量达到1000,则会引发ORA-600错误。

insert /*+IGNORE_ROW_ON_DUPKEY_INDEX(表名01,唯一键的名)*/ into 
 表名01(id,name) 
 select sys_guid(),name from 表名02
 出现问题:ORA-00600: 内部错误代码, 参数: [qerltcInsertSelectRop_bad_state], [], [], [], [], [], [], [], [], [], [], []

19.ORA-28000 账号被锁定的解决办法
检查已经被锁定的用户
SQL> select username,account_status from dba_users;

解锁被锁定的账户(QXT_USER为上面语句中username的值)
SQL> alter user QXT_USER account unlock;

20.CPU高的SQL

select Cpu_Time,sql_text from v$sql order by cpu_time desc;

21.逻辑读多的SQL

select * from (select buffer_gets, sql_text
   from v$sqlarea
   where buffer_gets > 500000
   order by buffer_gets desc) where rownum<=30;

22.执行次数多的SQL

select sql_text,executions from
  (select sql_text,executions from v$sqlarea order by executions desc)
   where rownum<81;

23.读硬盘多的SQL

select disk_reads,sql_text from
   (select sql_text,disk_reads from v$sqlarea order by disk_reads desc)
   where rownum<21;

24.列出使用频率最高的5个查询

select executions,sql_text
   from (select sql_text,executions,
   rank() over
    (order by executions desc) exec_rank
   from v$sql)
   where exec_rank <=5;

添加链接描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
个月前开发了基于Oracle Olap服务的应用,趁着没有完全忘记赶紧记录下来。<br>1、很早以前就针对Oracle 8里面的Express Server作了开发,当时是使用dml的C接口,在Java<br><br>里面通过JNI访问,虽然只有一个命令接口,但是着实费力,同时JNI对J2EE Application <br><br>Server也有所影响。<br>2、这一次支持的是Oracle 9i与10g 的Olap Server,虽然Oracle提供了Java Olap API但是<br><br>还存在一些版本差别,应该是release 4以上才比较一致把。9i低版本需要注意<br><br>oracle.express.mdm.MdmMetadataProvider与<br><br>oracle.olapi.metadata.mdm.MdmMetadataProvider之间的转换,可使用<br><br>oracle.express.mdm.MdmMetadataProvider.getNewMdmMetadataProvider()方法将<br><br>Express的Provider对象转换为Olapi的对象.<br>3、Oracle BI Beans为开发提供了一定的便利,但是由于我们需要比较原始的逻辑,BI Beans不<br><br>适合。<br>4、Oracle Olap API虽与JOlap不兼容,但是两者的概念非常类似,他们与其他API最大的不同之<br><br>处是非常强调元数据与数据的区别,这一点从两者的文档中可以直观的看到:直接的对象体系及操作是<br><br>没有办法拿到任何数据的,包括维度、成员、层次、属性等;必须首先获得描述这些数据的元数据的<br><br>Source属性对象,才能够通过Cursor访问到数据。这一点很欣赏。仔细学习可以领会很多olap元数据的实现思路。<br><br>5、开发时直接使用Rolap测试数据就行了,analysis workspace是使用物化视图模拟Molap,两者在开发编程方面完全一致,而后者还额外需要一些处理步骤才能够被Java Olap API访问到,不必麻烦。<br><br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄哥007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值