Oracle实用小技巧

时间:2022-03-11 16:05:22

1、 闪回

批注:delete “T_SPC_ROOM”表,但没有commit可以用以下命令还原回来。

flashback table MW_APP.T_SPC_ROOM to before drop
2、处理特殊字符

批注:插入带有&等特殊时,Oracle提示为变量。有以下两种方法:

select 'abc'||chr(38)||'efg' from dual;
select 'abc'||'&'||'efg' from dual;

3. 导入或导出

说明:导入或导出一张表

imp system/system@sgtms file=e:\datatable\t_pub_tables.dmp fromuser=(mw_app) touser=(mw_app) 

exp system/system@sgtms tables=mw_app.T_MAINTAIN_UNIT file=e:\T_MAINTAIN_UNIT121101.dmp log=e:\T_MAINTAIN_UNIT121105.log

4. 删除当前用户下某类对象

--delete all tables
select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;   

--delete all views 
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;   

--delete all seqs 
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;  

--delete all functions 
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';   

--delete all procedure 
select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';   

--delete all package 
select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';

5. 查看当前Oracle实例名

select instance_name from V$instance;

6. AWR报告获取方法

        a) SQL控制台方式下,使用sysdba用户执行如下命令

             @?/rdbms/admin/awrrpt.sql

        b) 设置所获报告为html格式

            Enter value for report_type:html

        c) 设置获取最近1天的快照(即当天)

            Enter value for num_days:1

        d) 根据第三步显示的Snap ID列表,按需设置begin_snap的值

            Enter value for begin_snap:211

        e) 根据第三步显示的Snap ID列表,按需设置end_snap的值

            Enter value for end_snap:217

        f) 设置AWR报告保存路径以及报告名称

            Enter value for report_name:e:/awrrpt_211.html(Linux环境可设置为:/root/awrrpt_211.html

7. trace文件获取方法

        a) SQL控制台方式下,使用sysdba用户执行如下命令

            oradebug setmypid

        b) 显示trace文件路径和文件名称

            oradebug hanganalyze 3

8. 检查一个会话是否被另一个会话阻塞

批注:DB更新过程中若出现某SQL文件执行过慢的现象,请检查是否存在索引或会话阻塞的情况。

select s1.username || '@' || s1.machine || '(SID='||s1.sid||') is blocking'|| s2.username ||'@'|| s2.machine||'(SID='||s2.sid||')' AS blocking_status 
       from v$lock l1,v$session s1,v$lock l2,v$session s2
       where s1.sid=l1.sid and s2.sid=l2.sid and l1.BLOCK=1 and l2.request>0
       and l1.id1=l2.id1 and l2.id2=l2.id2;

9.Linux环境下在sqlplus中查看oracle服务器的主目录路径(oracle_home):

批注:Windows环境下执行无效,注意区分大小写

host echo $ORACLE_HOME

10.查看 数据库系统运行状态:
select instance_name,host_name,startup_time,status,database_status from v$instance;