SQL命令大全

1、查看数据文件信息:

col file_name for a55
select tablespace_name,file_name,bytes/1024/1024/1024 gb,AUTOEXTENSIBLE from dba_data_files where tablespace_name='AM_DATA';
alter tablespace UNDOTBS1 add datafile '+DATA' size 30G;

2、查看ASM磁盘组信息:

select group_number,name,total_mb/1024 total_gb,free_mb/1024 free_gb,TYPE from v$asm_diskgroup;
---调整ASM磁盘均衡级别

ALTER DISKGROUP DATA REBALANCE POWER 10;

3、查看ASM磁盘组磁盘的信息

set lin 1000 pagesize 999
col PATH for a33
col NAME for a15
col FAILGROUP for a15
select GROUP_NUMBER,DISK_NUMBER,TOTAL_MB/1024,FREE_MB/1024,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk where GROUP_NUMBER='1';
4、查看表空间大小:

SELECT a.tablespace_name,round(total/1024/1024/1024) "Total g",
round(free/1024/1024/1024) "Free g",ROUND((total-free)/total,4)*100 "USED%"
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
ORDER BY 4;
5、查某个表空间内的前五个大表

ol TABLE_NAME for a30
set pagesize 200
set linesize 200
col TABLE_NAME for a30
set linesize 200
select * from (select TABLESPACE_NAME,OWNER,SEGMENT_NAME "TABLE_NAME",to_number(decode(substr(BYTES/1024/1024,1,1),'.','0'||BYTES/1024/1024,BYTES/1024/1024)) total_MB
from dba_segments where TABLESPACE_NAME ='&tablespacename' and SEGMENT_TYPE='TABLE' order by total_MB desc ) where rownum<=5;

SELECT * FROM (SELECT OWNER,SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'SYSTEM' GROUP BY SEGMENT_NAME,OWNER ORDER BY 3 DESC) WHERE ROWNUM <=5;

OWNER SEGMENT_NAME MB


SYS XX_RECNAME_RB_IX 11136
SYS XXXXX_ORIGINNOTE_IX 9152
SYS XXXXX_ABSTRACT_IX 6388
SYS XXX_PAYDATE_NU_NC 5490

SELECT OWNER,SEGMENT_NAME ,segment_type FROM DBA_SEGMENTS WHERE segment_name in ('PAYMENTS_RECNAME_RB_IX','XXXXX_ORIGINNOTE_IX','XXXXX_ABSTRACT_IX','XXX_PAYDATE_NU_NC');

OWNER SEGMENT_NAME SEGMENT_TYPE


SYS XXX_PAYDATE_NU_NC INDEX
SYS XXXXX_ORIGINNOTE_IX INDEX
SYS XXXXX_ABSTRACT_IX INDEX
SYS XXXMENTS_RECNAME_RB_IX INDEX

6、查看shared_pool的大小

select sum(bytes)/1024/1024/1024 from v$sgastat where pool='shared pool';
查看空闲的

select * from v$sgastat where name = 'free memory' and pool = 'shared pool';

7、查看占用内存100k的sql语句:

select sql_text ,sharable_mem from v$sql where sharable_mem > '100000' order by sharable_mem
8、查看字符集

select userenv('language') from dual;
select * from nls_database_parameters;
9、Oracle查询temp表空间的名字和位置

select tablespace_name,file_name from dba_temp_files;
col FILE_NAME for a55
select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024/1024 total_gb,USER_BYTES/1021/1024/1024 gb from dba_temp_files;

create temporary tablespace temp1 tempfile '/rhzxdata/tempdata/pbc/temp01.dbf' size 20G autoextend on maxsize 30G

--Oracle查询temp表空间的使用率
select tablespace_name,round(free_space/1024/1024/1024,2) "free(GB)",round(tablespace_size/1024/1024/1024,2) "total(GB)",round(nvl(free_space,0)*100/tablespace_size,3) "Free percent"
from dba_temp_free_space;

--注意:Primary 端涉及到的临时表空间创建维护、临时文件创建的操作是不会传导到 standby 端的。
10、查看数据库版本

set line 150
col ACTION_TIME for a30
col ACTION for a8
col NAMESPACE for a8
col VERSION for a10
col BUNDLE_SERIES for a5
col COMMENTS for a20
select * from dba_registry_history;
11、查看补丁版本:

LIUCX:/app/product/11.2.0/db/OPatch$opatch lsinventory
12、查看锁表

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 vsession s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial# ;
查出锁定表的 session 的 sid, serial#,os_user_name, machine name, terminal 和执行的语句:

SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
l.os_user_name,s.machine, o.object_name,s.terminal,a.sql_text, a.action
FROM vsession s, v$locked_object l,all_objects o
WHERE l.session_id = s.sid
AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;
13、查看视图对应的表

select * from dba_dependencies where NAME='视图名' and TYPE='VIEW';
14、杀会话命令

alter system kill session 'sid,serial#';
15、查看表大小

select TABLESPACE_NAME,OWNER,SEGMENT_NAME,sum(BYTES)/1024/1024 total_mb
from dba_segments where TABLESPACE_NAME='NEWCAR02' group by TABLESPACE_NAME,OWNER,SEGMENT_NAME;
16、查看 GI 兼容版本

select name,compatibility,database_compatibility from v$asm_diskgroup;

18、用户相关操作

select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
create user agriproduct identified by product default tablespace users;
grant conncet,resource,create view to product;
--解锁用户
set linesize 500
col USERNAME for a15
col ACCOUNT_STATUS for a15
select USERNAME,ACCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE,DEFAULT_TABLESPACE from dba_users where USERNAME ='SQLMON';
alter user SQLMON identified by "SQLMON" account unlock;
alter user SQLMON account unlock;
alter user SQLMON identified by "SQLMON";
conn SQLMON/SQLMON

查看用户具有的权限

1、查询用户有哪些角色:
select * from dba_role_privs where grantee='&username';
2、查询角色包含哪些权限:
select * from role_sys_privs where role='&role';
3、查询用户系统权限:
select * from dba_sys_privs where grantee='&username';
select * from dba_tab_privs where grantee='&username';

--创建 dblink 权限
grant create database link to user ;
grant create public database link to user ;

删除用户:drop user XXX cascade;
解锁用户
alter user muar_rb account unlock identified by &PASSWORD;

查看表空间下的用户
select distinct s.owner from dba_segments s where s.tablespace_name ='&TBSNAME'
19、查看数据量:

select sum(bytes)/1024/1024/1024 Gb from dba_segments;
20、查看 REDOLOG 大小

select group#,members,bytes/1024/1024,status from v$log
23、AIX 下按用户查看占用多少内存

svmon -U grid -w |more
svmon -U oracle -w | more
24、AIX 下查看用户下有多少进程

svmon -PO unit=GB |grep aioserver |wc
svmon -PO unit=GB |grep oracle |wc

lsvg |lsvg -i -p
lsdev -c disk
25、查看服务器底层用的存储类型:

lscfg -vpl hdisk40
26、生成AWR报告

----某个节点的 AWR
@?/rdbms/admin/awrrpti.sql
-----AWR报告
@?/rdbms/admin/awrrpt.sql
-- AWR 两个时间段的比较报告
@?/rdbms/admin/awrddrpt.sql
-----ASH报告
@ORACLE_HOME/rdbms/admin/ashrpti.sql

关于physical reads ,db block gets 和 consistent gets 这三个参数之间有一个换算公式:
数据缓冲区的使用命中率=1 - ( physical reads / (db block gets + consistent gets) )。
用以下语句可以查看数据缓冲区的命中率:
SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets','physical reads');

查询出来的结果 Buffer Cache 的命中率应该在 90% 以上,否则需要增加数据缓冲区的大小。
27、查看ASM磁盘挂载时间:

set lines 500 pages 2000
col g_name format a10
col g_n format 99
col d_n format 999
col m_status format a7
col mo_status format a7
col h_status format a11
col name format a20
col path format a20
col failgroup format a15
select g.group_number g_n,
g.disk_number d_n,
g.name name,
g.failgroup,
g.mount_status m_status,
g.header_status h_status,
g.mode_status mo_status,
g.path ,
to_char(g.mount_date, 'YYYY/MM/DD HH24:MI:SS') m_date
from v$asm_disk g
order by g_n, d_n
28、查看某个用户所拥有的角色

select * from dba_role_privs where grantee='LIUCX';
29、查看某个角色所拥有的权限

select * from dba_sys_privs where grantee='SKDATA';
30、修改LINUX操作系统/dev/shm文件系统大小

开机自启动:
tmpfs /dev/shm tmpfs defaults,size=20G 0 0
立即生效:
mount -t tmpfs shmfs -o size=20g /dev/shm
31、trace 追踪监听文件

$ ps aux |sort -rnk3 |more

侦听器进程的Pstack / Truss / Strace / Tusc 注意110888.1如何跟踪Unix系统调用
Pstack

Sun:truss -aefdDo /tmp/truss-lsnr.log -p
Linux:strace -frT -o /tmp/strace-lsnr.log -p
HP:tusc -aef -o /tmp/tusc-lsnr.log -T“%H:%M:%S” -p
32、删除当前目录下十天前 *.dmp 文件

find ./ -name '*.dmp' -mtime +10 -exec rm -f {}
33、根据归档号从带库恢复归档日志

rman target /
run
{
Allocate channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
restore archivelog sequence between 63145 and 63149 thread 1;
restore archivelog sequence between 62697 and 62700 thread 2;
Release channel t1;
}
34、JDBC 连接串

jdbc:Oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(HOST=10.1XX.XXX.XXX)(PROTOCOL=TCP)(PORT=1521))(ADDRESS=(HOST=10.1XX.XXX.XXX)(PROTOCOL=TCP)(PORT=1521)))(LOAD_BALANCE=yes)(FAILOVER=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Jieker)))
35、数据泵导入

impdp user/password dumpfile=temp.dmp directory=dump remap_tablespace=[old_table_space]:[new_table_space]
old是指server1机器上的tablespace_name,new是指server2上的
36、切换日志打检查点,关闭实例时使用

alter system switch logfile;
alter system switch logfile;
alter system checkpoint;
37、修改内存

alter system set memory_max_target=0 scope=spfile;
alter system set memory_target =0 scope=spfile;
alter system set sga_max_size=13G scope=spfile;
alter system set sga_target=13G scope=spfile;
alter system set pga_aggregate_target=6G scope=spfile;
38、停 oem 杀会话

停 oem 服务再停数据库
/app/oms/bin/emctl start/stop oms
Ps -ef | grep -i local=no | grep -v grep | awk '{print $2}'| xargs kill -9
39、ASM 掉盘重新挂盘重启 crsd 进程

su - grid
crsctl query crs softwareversion --查看集群版本
asmcmd
lsdg
mount ocr
exit
crsctl start res ora.crsd -init
40、Linux 6 下查看数据库有哪些 IP 连接进来

netstat -anop | grep ESTABLISHED | awk '$4 ~/:1521/'
--解压 10g 的 cpio 类型安装软件
cpio -idmvc <*.cpio //cpio解压
41、清理垃圾文件

cd &DIR
find ./ -ctime +3 |xargs rm
查看大于20M的文件
find / -type f -size +20M -print0 | xargs -0 du -h | sort -nr
42、查看备库进程

set pages 9999
set lines 200
select process,client_process,sequence#,thread#,status from v$managed_standby;

---mrp0当前正在应用的日志序列
select process,status,sequence# from v$managed_standby;

---查询dg应用情况
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');
43、查询数据库负载

et pages 9999
set lines 200
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SELECT *
FROM ( SELECT A.INSTANCE_NUMBER,
A.SNAP_ID,
B.BEGIN_INTERVAL_TIME + 0 BEGIN_TIME,
B.END_INTERVAL_TIME + 0 END_TIME,
ROUND(VALUE - LAG( VALUE, 1 , '0')
OVER(ORDER BY A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME"
FROM (SELECT B.SNAP_ID,
INSTANCE_NUMBER,
SUM(VALUE ) / 1000000 / 60 VALUE
FROM DBA_HIST_SYS_TIME_MODEL B
WHERE B.DBID = (SELECT DBID FROM VDATABASE)
AND B.INSTANCE_NUMBER = A.INSTANCE_NUMBER)
WHERE TO_CHAR(BEGIN_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE , 'YYYY-MM-DD')
ORDER BY BEGIN_TIME;
44、连接数相关查看

show parameter process
--查看最大连接数
select value from v$parameter where name ='processes';

--查两个节点连接数
select INST_ID,count(*) from gv$session group by inst_id;

--查看起库以来最大连接数
select resource_name,MAX_UTILIZATION,LIMIT_VALUE from v$resource_limit where resource_name in ('processes','sessions');

--查看并发连接数
Select INST_ID,count(*) from gv$session where status='ACTIVE' group by inst_id;

--查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username;
45、查当前的等待事件

col wait_class for a20
set lines 200 pages 200
col event for a60
select event,count(*),wait_class from v$session_wait group by event,wait_class order by 3;
46、查看归档是否有错误

select dest_name,error from v$archive_dest;
47、查看数据库运行时间

select to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') '启动时间',
TRUNC(sysdate-(startup_time))||'天'||TRUNC(24((sysdate-startup_time)-TRUNC(sysdate-startup_time)))
||'小时'||MOD(TRUNC(1440
((SYSDATE-startup_time)-TRUNC(sysdate-startup_time))),60)
||'分'||MOD(TRUNC(86400*((SYSDATE-STARTUP_TIME)-TRUNC(SYSDATE-startup_time))),60)||'秒' '运行时间'
from gv$instance;
48、查询dg同步延迟

select ceil((sysdate-next_time)2460) "M" from vARCHIVED_LOG WHERE applied='YES');
49、查询数据库安装时间

select a.name,to_char(a.created,'yyyy.mm.dd'),b.instance_name from gvinstance b where a.inst_id=b.inst_id;
50、查看 sys 用户使用情况

select b.username,h.machine,to_char(h.sample_time,'yyyymmdd hh24:mi:ss') time,count(*)
from dba_hist_active_sess_history h ,dba_users b
where h.user_id=b.user_id and b.username in('SYSTEM','SYS') and h.MACHINE not in (select host_name from gv$instance)
and h.sample_time>to_date('20210208','yyyymmdd')
group by b.username,h.machine,to_char(h.sample_time,'yyyymmdd hh24:mi:ss');
51、查询redo每天切换次数

select trunc(FIRST_TIME,'dd'),count(1)
from v$log_history
where trunc(FIRST_TIME,'dd')>sysdate-10
group by trunc(FIRST_TIME,'dd')
order by 1;
52、查看每天归档产生数据量 归档量

--按天计算
select trunc(FIRST_TIME,'dd') Time,sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024 Total_GB from v$archived_log
group by trunc(FIRST_TIME,'dd') order by 1;

--按小时计算
select trunc(FIRST_TIME,'hh') Time,sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024 Total_GB from v$archived_log
group by trunc(FIRST_TIME,'hh') order by 1;
53、redo日志产生频率

select a.recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss') begin_time,
b.recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss') end_time,
round((b.first_time-a.first_time)2460,2) minutes
from vlog_history b
where b.recid = a.recid+1 and to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss') >=to_char(sysdate-10,'yyyy-mm-dd hh24:mi:ss') ;

desc dba_hist_active_sess_history; ----可以查询执行过的sql的主机
54、AIX 查看僵尸进程

ps -ef | grep defunct
55、清理LOCAL=NO连接

ps -ef | grep LOCAL=NO | grep -v grep | awk '{print $2}' |xargs kill -9
56、AIX 系统查看错误

errpt | head -20
57、rman查看归档备份

rman target /
list backup of archivelog all;
58、查看 rman 备份进度

et line 200 pages 1000
col MESSAGE for a60
col TARGET for a20
select sid,SERIAL#,TARGET,START_TIME,ELAPSED_SECONDS,TIME_REMAINING,MESSAGE,ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
from v$session_longops
where 1=1 --and sid=2983 and SERIAL#=5
and TIME_REMAINING>0 ;
59、查询创建用户的日期

select t.username, t.account_status, t.created, t.default_tablespace from DBA_USERS t
where username= 'ABASE' order by t.created desc;
60、rman全库备份

run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
allocate channel c4 type disk ;
backup as compressed backupset database format '/backup/%d_%I_%s_%p.bak';
backup as compressed backupset archivelog all format '/backup/%d_%I_%s_%p.arc';
backup current controlfile for standby format '/backup/%d_%I_%s_%p.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

--压缩全库备份
backup database format='/u01/app/backup/rman/eweaverstb_%s.bak' filesperset 4;
run{
backup as compressed backupset database format='/u01/app/backup/ewverstb_%s.bak' plus archivelog delete input skip inaccessible;
}

61、数据泵导入导出相关命令

--expdp导入导出
select * from dba_directories where directory_name ='DATA_PUMP_DIR';
如果目录过小或者不存在,则
create directory expdp_dir as '/u01/app/backup/expdp_dir';
grant read,write on directory expdp_dir to public;
expdp '/ as sysdba' directory=expdp_dir dumpfile=full_bak.dmp full=y;

impdp '/ as sysdba' directory=expdp_dir dumpfile=full_bak.dmp full=y;

impdb '/ as sysdba' DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

--使用 par 文件全库导出
more full_expdp_query.par
directory=exp_dir1
logfile=full_new_exclude.log
dumpfile=full_new_exclude_%U.dmp
exclude=table:"in('LOGSAVE2017','LOGSAVE_20210115')"
query=ECARGO.POLICYATTACHMENTS:"where createtime>=to_date('20200901','YYYYMMDD')"
exclude=statistics
full=y
parallel=8
cluster=N

nohup expdp "/ as sysdba" parfile=full_expdp_query.par &

--导入
more full_impdp_query.par
directory=imp_dir1
logfile=impdp_full_query.log
dumpfile=full_expdp_query_%U.dmp
CLUSTER=N
parallel=8

nohup impdp "/ as sysdba" parfile=full_impdp_query.par &

expdp '/ as sysdba' directory=expdp_dir dumpfile=tbs_bak.dmp tables=(XXX,XXX)

expdp '/ as sysdba' directory=expdp_dir dumpfile=tbs_bak.dmp tables=(YHZXPROD.SU_ACTUALCOMPEMRESPONINFO,YHZXPROD.SU_BASICINFO,YHZXPROD.SU_SENDXML,YHZXPROD.SU_SENDXMLBATCH) fromuser=xxx touser=xxx log=tab.log

expdp '/ as sysdba' directory=ANTIF_DP dumpfile=PICCATSSIX_20190808.DMP logfile=PICCATSSIX_20190809.log fromuser=PICCATSSIX touser=ATS

expdp '/ as sysdba' directory=expdp_dir dumpfile=bbruser.dmp logfile=bbruser.log fromuser=bbruser touser=bbinfo

--只导出全库索引
expdp ' / as sysdba ' directory=exp_dir dumpfile=index.dmp logfile=out_index.log cluster=n include=INDEX full=y
Export: Release 11.2.0.3.0 - Production on Wed Feb 3 14:45:50 2021

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
;;;
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
FLASHBACK automatically enabled to preserve database integrity.
Starting "SYS"."SYS_EXPORT_FULL_01": "/******** AS SYSDBA" directory=exp_dir dumpfile=index.dmp logfile=out_index.log cluster=n include=INDEX full=y
Estimate in progress using BLOCKS method...
Total estimation using BLOCKS method: 0 KB
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/BITMAP_INDEX/INDEX
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/BITMAP_INDEX/INDEX_STATISTICS
Master table "SYS"."SYS_EXPORT_FULL_01" successfully loaded/unloaded


Dump file set for SYS.SYS_EXPORT_FULL_01 is:
/oracle/soft/index.dmp
Job "SYS"."SYS_EXPORT_FULL_01" successfully completed at 14:47:59

SQLFILE参数
该参数可以用于impdp,主要作用是未真实在目标端执行导入的情况下,生成sql文件包含该dmp文件的所有ddl语句,使用语法为
SQLFILE=[directory_object:]file_name
注意事项:
1.directory_object可以不和impdp的DIRECTORY参数不一致,如果是一样,directory_object可以省略
2.SQLFILE文件必须写入到磁盘之上,不能写入到ASM中
3.SQLFILE和QUERY参数冲突,不能同时使用
62、查看历史备份

set line 200
col START_TIME for a30
col END_TIME for a30
col status for a10
select SESSION_KEY,
INPUT_TYPE,
STATUS,
to_char(START_TIME, 'yyyy-mm-dd hh24:mi') START_TIME,
to_char(END_TIME, 'yyyy-mm-dd hh24:mi') END_TIME,
ELAPSED_SECONDS / 3600
from v$rman_backup_job_details
where to_char(START_TIME, 'yyyy-mm-dd hh24:mi') > to_char(sysdate-12,'yyyy-mm-dd hh24:mi')
order by SESSION_KEY;
63、查询数据库增量增长

select sum(TABLESPACE_USEDSIZE)*8/1024/1024,substr(rtime,0,10)
from DBA_HIST_TBSPC_SPACE_USAGE
where snap_id in (select max(snap_id) from DBA_HIST_TBSPC_SPACE_USAGE group by substr(rtime,0,10) ) --and TABLESPACE_ID=7
group by substr(rtime,0,10) order by 1 ;

--清空SHARED_POOL缓冲
ALTER SYSTEM FLUSH SHARED_POOL ;

--删除已备份归档
rman target /
delete archivelog all backed up 1 times to device type 'sbt_tape';

关于密码错误验证延迟特性:
密码错误验证延迟,可以通过设置EVENT="28401 TRACE NAME CONTEXT FOREVER, LEVEL 1"
alter system set events='28401 trace name context forever, level 1'; ---不需要重启
64、数据库开启归档

u - oracle
sqlplus / as sysdba
archive log list;

1、归档路径
①如果没有归档存放存储,需要操作系统挂载存储再继续操作
②如果归档存储存在,但并非所想存放的实际路径,可在相关存储下创建目录
mkdir -p /app/oracle/arch
修改归档目录权限
chown -R oracle:oinstall /app/oracle/arch

③如果归档存储存在,且路径正确,权限正确则可以直接使用

2、备份spfile文件
create pfile from spfile;
3、修改归档路径到想存放的位置,如查询出的归档路径已经是正确的位置,则不需要修改。
su - oracle
sqlplus / as sysdba
alter system set log_archive_dest_1='location=/app/oracle/arch' scope=spfile sid='*';
4、重启数据库,开启/关闭归档模式(rac两个节点均关闭,使用一个节点修改,修改完成后启动另一个节点)
shutdown immediate;
startup mount;
5、归档模式修改:
开启归档模式:
alter database archivelog;
关闭归档模式:
alter database noarchivelog;
alter database open;
如果为集群:需要停止两个节点,在一个节点操作完成后,拉起另一个节点,操作步骤如上,
rac集群启动另一个节点:startup

6、查看数据库归档路径
su - oracle
sqlplus / as sysdba
archive log list;
切换日志,查看归档目录下产生归档文件
alter system switch logfile;
7、关闭归档
shutdown immediate;
startup mount;
--开启归档模式:
--alter database archivelog;
关闭归档模式:
alter database noarchivelog;
65、RMAN 全备脚本部署。

①RMAN全备脚本部署
vi /home/oracle/full_backup.sh

ORACLE_BASE=/app/oracle
ORACLE_HOME=/app/product/11.2.0/db
ORACLE_SID=JiekeXu1
db_name=TEST
PATH=ORACLE_HOME/bin/

v_date=date +%Y%m%d
[ -d /backup/v_date ] || mkdir -p /app/backup/v_date

rman target /< /app/backup/v_date/full_$v_date.log
run{
allocate channel c1 device type disk;
backup database format '/app/backup/%d/%T/full_%d_%T_%s_%p.bak';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all delete input format '/app/backup/%d/%T/full_arch_%d_%T_%s_%p.bak';
backup current controlfile format '/app/backup/%d/%T/full_controlfile_%U';
backup spfile format '/app/backup/%d/%T/full_spfile_%d_%T_%s_%p.bak';
release channel c1;
}
EOF
66、数据库启动

A、startup nomount

非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件

B、startup mount (dbname)

安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。

C、startup open (dbname)

先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。

D、startup 等于按顺序执行以下三个命令

startup nomount

alter database mount

alter database open

E、startup restrict

约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问

F、startup force

强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令

G、startup pfile=参数文件名

带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库

H、startup EXCLUSIVE

独占和共享启动
67、关闭数据库方式

A、shutdown normal
  正常方式关闭数据库

B、shutdown immediate

 立即方式关闭数据库,在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

C、shutdown abort

直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
68、查询正在运行的SQL

select s.sid,s.serial#,s.username,spid,v$sql.sql_id,

machine,s.terminal,s.program,sql_text

FROM vsession s,v$sql

WHERE addr=paddr and s.sql_id=v$sql.sql_id

AND sql_hash_value=hash_value
69、查询会话和进程消耗的平均内存大小

select round(sum(pga_used_mem)/1024/1024,0) total_used_M,

round(sum(pga_used_mem)/count(1)/1024/1024,0) avg_used_M,

round(sum(pga_alloc_mem)/1024/1024,0) total_alloc_M,

round(sum(pga_alloc_mem)/count(1)/1024/1024,0) avg_alloc_M

from v$process
70、高CPU占用查询

select *from (select CPU_TIME/1000000,username,PARSING_USER_ID,sql_id,ELAPSED_TIME/1000000,sql_text

from v$sql,dba_users

where user_id=PARSING_USER_ID

order by CPU_TIME/1000000 desc)where rownum <=3
71、等待查询

select event,sum(decode(wait_time,0,0,1)) "之前等待次数",

sum(decode(wait_time,0,1,0)) "正在等待次数",

count(*) from v$session_wait

group by event order by 4 desc
72、查询数据文件可用占比

select b.file_id,b.tablespace_name,b.file_name,b.AUTOEXTENSIBLE,

ROUND(b.MAXBYTES/1024/1024/1024,2) ||'G' "文件最大可用总容量",

ROUND((b.bytes-sum(nvl(a.bytes,0)))/1024/1024/1024,2)||'G' "文件已用容量",

ROUND(((b.MAXBYTES/1024/1024/1024)-((b.bytes-sum(nvl(a.bytes,0)))/1024/1024/1024))/(b.MAXBYTES/1024/1024/1024),2)*100||'%' "文件可用百分比"

from dba_free_space a,dba_data_files b where a.file_id=b.file_id

and b.file_id>4 group by b.tablespace_name,b.file_name,b.file_id,b.bytes,b.AUTOEXTENSIBLE,b.MAXBYTES

order by b.tablespace_name;
73、查询UNOD表空间占用情况

select tablespace_name,status,sum(bytes)/1024/1024 M

from dba_undo_extents

group by tablespace_name,status
74、EXCEPT运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时(EXCEPT ALL),不消除重复行
75、INTERSECT运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
76、Oracle中常用的数据字典

下面列出的这些数据字典,均在 Oracle 11g R1 上,通过 Oracle Sql Developer 进行过测试的,全部通过。其中很多的数据字典都必须以 system 或者是 sysdba 用户登录才能够使用的。
---数据库实例的基本信息
desc vinstance;
--数据文件的基本信息
desc vdatafile;
desc dba_data_files;
select file_name,file_id,tablespace_name,bytes,blocks,
status,online_status
from dba_data_files;
--临时文件的基本信息
desc dba_temp_files;
select file_name,file_id,tablespace_name,status,
bytes/1024/1024 大小MB
from dba_temp_files;
--日志文件的基本信息
desc vlogfile;
--数据库的基本信息
desc vdatabase;
select dbid,name,created,resetlogs_time,log_mode,
open_mode,checkpoint_change#,archive_change#,
controlfile_created,controlfile_type,
controlfile_sequence#,controlfile_change#,
controlfile_time,protection_mode,database_role
from vparameter;
select num,name,type,value,display_value,
isdefault,isses_modifiable,
issys_modifiable,isinstance_modifiable
from vparameter;
select name,value,description from vbgprocess;
select paddr,pserial#,name,description,error from vbgprocess; --DBA 用户的所有的表的基本信息 desc dba_tables; desc dba_tab_columns; select owner,table_name,column_name,data_type,data_length, global_stats,data_upgraded,histogram from dba_tab_columns; --DBA 用户的所有的视图的基本信息 desc dba_views; select owner,view_name,read_only from dba_views; --DBA 用户的所有的同义词的基本信息 desc dba_synonyms; select owner,synonym_name,table_owner, table_name,db_link from dba_synonyms; --DBA 用户的所有的序列的信息 desc dba_sequences; select sequence_owner,sequence_name,min_value,max_value, cycle_flag from dba_sequences; --DBA 用户的所有的对象的基本信息 desc dba_objects; select owner,object_name,subobject_name, object_id,data_object_id,object_type, created,status,namespace from dba_objects; --当前用户可以访问的所有的基表 desc cat; select table_name from cat; -- 查询关于表空间的一些基本的数据字典 desc dba_tablespaces; select tablespace_name,block_size,status, logging,extent_management from dba_tablespaces; desc dba_free_space; select tablespace_name,file_id,block_id, bytes/1024/1024 大小MB,blocks,relative_fno from dba_free_space; --归档状态的一些基本信息 desc varchived_log;
select name,dest_id,blocks,block_size,
archived,status,backup_count
from vsga;
select name,value/1024/1024 大小MB from v$sga;

你可能感兴趣的:(SQL命令大全)