当前位置: 首页 > news >正文

常用命令总结

1、增加表空间:
 (1)、查看表空间对应数据文件(包括哪些文件,具体大小,是否允许自动扩展)
 SQL> select file_name,bytes/1024/1024 as mb,  AUEXTENSIBLE  from dba_data_files where tablespace_name='APPS_TS_TX_DATA';
 
 (2)、根据具体情况添加数据文件
 SQL> ALTER TABLESPACE APPS_TS_TX_IDX ADD DATAFILE  '+DATA' SIZE 10240M AUEXTEND OFF;  
 
 ALTER TABLESPACE PCBAMES_X ADD DATAFILE  '/u01/app/oracle/oradata/PCBATEST/mes_idx04.dbf' SIZE 8192M AUEXTEND OFF;
 
 
 
 alter database  datafile '+DATA/prod/datafile/apps_ts_tx_idx.621.995105027' auextend on;  
 
 
 
 ALTER TABLESPACE TS_SCC_EKPTEST ADD DATAFILE '/ekp_databak/ekp_db_backup/20161107data/data/ekp_data113.dbf'    size 32767m  AUEXTEND OFF;

 ALTER TABLESPACE APPS_TS_TX_DATA ADD DATAFILE  '/u02/ASCP/oraascp/db/apps_st/data/a_txn_data15.dbf' SIZE 16720M AUEXTEND OFF;

 
 
         
 
 扩展表空间的方法:
 https://blog.csdn.net/luxiaopengpeng/article/details/50424148

2、创建direcry目录
SQL> create or replace direcry DIRECRY_NAME as 'PATH';
SQL> grant write,read on direcry DIRECRY_NAME  USERNAME;
SQL> select * from dba_direcries where direcry_name='EXPDPOGG';

3、控制文件科学计数处理
SQL> set num 50
SQL> select CURRENT_SCN from v$database;


3、恢复目录script
https://www.cnblogs.com/eastsea/p/4181114.html   

4、view report  group_name查看进程运行状态(日志所在位置为./dirrpt/...)

5、备份归档日志,删除两个小时前的归档
backup archivelog all format '/u03/prod/backupset/ARC_%s_%T' ;
delete noprompt archivelog all completed before 'SYSDATE-2/24' ;

6、查看用户下的所有表和视图
SELECT OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME LIKE 'SCC_%' AND OBJECT_TYPE='TABLE' AND OWNER='SCCMES' ;
SELECT OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME LIKE 'SCC_%' AND OBJECT_TYPE='TABLE' AND OWNER='VIEW' ;


6、恢复归档日志
RAC环境下需要加上Thread Number,不加默认是Thread 1
 RMAN> restore archivelog from sequence 112 thread 2;

恢复全部归档日志文件 
RMAN> restore archivelog all;

恢复Sequence范围 
RMAN> restore archivelog from sequence 90 until sequence 98;
RMAN> restore archivelog sequence between 20 and 35;

恢复从第5个归档日志起 

RMAN> restore archivelog from sequence 5;
 RMAN> restore archivelog low sequence 5; 

恢复7天内的归档日志 

RMAN> restore archivelog from time 'sysdate-7';
RMAN> restore archivelog until sequence 110;
RMAN> restore archivelog high sequence 108; 

改变恢复到另外路径下 则可用下面语句 

set archivelog destination  '/u01/backup'; 

RMAN> run
 2> {allocate channel c1 type disk;
 3> set archivelog destination  '/u01/backup';
 4> restore archivelog all;
 5> release channel c1;
 6> } 


根据时间查看需要的备份集: 
RMAN> list backup of archivelog time between "to_date('2014-04-24 11:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2014-04-24 14:30','yyyy-mm-dd hh24:mi:ss')";
 
恢复指定时间段 

RMAN> run {
 set archivelog destination  '/u01/backup';
 SQL 'ALTER SESSION SET NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
 restore archivelog time between '2014-04-24 11:00:00' and '2014-04-24 15:00:00';
 }

7、查看用户权限及角色
https://www.cnblogs.com/zhangkaimin/p/7919327.html
查看一个用户的所有权限及角色
select privilege from dba_sys_privs where grantee='TQCS'
union
select privilege from dba_sys_privs where grantee in 
(select granted_role from dba_role_privs where grantee='TQCS' );


查看用户拥有的角色
select * from dba_role_privs where GRANTEE='ERP';    


 

8、删除无效备份
crosscheck backup;
delete noprompt expired backup ;

crosscheck archivelog all;
delete noprompt expired archivelog all;

9、查看表结构

https://blog.csdn.net/newhappy2008/article/details/34823339(DBMS_METADATA.GET_DDL用法大全)

https://www.iteye.com/blog/czmmiao-1267194    (dbms_metadata.get_ddl的用法)


SQL> SET LONG 3000
SQL> SET PAGESIZE 0
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_NAME','USER_NAME') FROM DUAL;


SELECT DBMS_METADATA.GET_DDL('TABLE','PANEL_BLOCK_TRACE','PCBAMES') FROM DUAL;

PCBAMES.PANEL_BLOCK_TRACE
 
select dbms_metadata.get_ddl('INDEX','INDEX_NAME','USER_NAME') from dual;

导出某个用户下的指定表的索引
set pagesize 0
set long 90000
set feedback off
set echo off
spool get_index_ddl.sql
SELECT _char(DBMS_METADATA.GET_DDL('INDEX',u.index_name)) FROM USER_INDEXES u  where u.table_name in (''); 
spool off

导出某个用户下的指定表
set pagesize 0
set long 90000
set feedback off
set echo off
spool get_index_ddl.sql
SELECT _char(DBMS_METADATA.GET_DDL('TABLE',u.table_name))FROM USER_TABLES u where table_name in ('');
spool off

查看oracle单个数据表包含的索引
select * from dba_indexes where table_name='' and owner='' ;


select INDEX_TYPE,INDEX_NAME,uniqueness from dba_indexes where owner='SCOTT' and table_name='EMP';

根据索引名查看索引包含的字段
select * from dba_ind_columns where index_name = 'INDEXS_NAME'  and index_owner='';

select INDEX_NAME from dba_indexes where table_name='INDEXS_NAME' and owner='' ;

col uniquenes for a50;
col column_name for a60;

SELECT i.index_name,
i.index_type,
i.table_name,
i.uniqueness,
i.status,
c.column_name
FROM dba_indexes i, dba_ind_columns c
WHERE i.index_name = c.index_name  and  i.table_name='EMP' and i.owner='SCOTT';

select table_name,column_name from dba_ind_columns  where index_name='PK_APPLOG' and index_owner='ZTEAS04';


select TABLE_NAME,INDEX_NAME,COLUMN_NAME from  user_ind_columns where TABLE_NAME='T_BD_CUSTOMER';

10、nohup ,jogs,fg,bg
https://blog.csdn.net/q_l_s/article/details/44117969
nohup sh 1.sh > 1.log 2>&1  &
jogs 查看后台执行的job
jogs -l 查看后台执行的job(命令的序号)
fg %n 让后台运行的进程n到前台来("n"通过jobs命令查到的后台正在执行的命令的序号(不是pid)) 
bg %n 让进程n到后台去 ("n"通过jobs命令查到的后台正在执行的命令的序号(不是pid))
solaris:sp %num
redhat:kill %num  (通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid )

11、oracle 查看表空间有哪些用户 :                                                                                               
select distinct s.owner from dba_segments s where s.tablespace_name ='PCBAMES_D';
select distinct s.owner from dba_segments s where s.tablespace_name ='PCBAMES_X'

查询表空间包含的对象
SELECT t.owner, t.segment_name,SUM(bytes)/1024/1024 From dba_segments t    
WHERE t.tablespace_name = 'PCBAMES_D'  
GROUP BY t.owner,t.segment_name   
ORDER BY SUM(bytes) desc;    

13、空间查询
https://blog.csdn.net/jzw230726/article/details/78542673

查询某个具体的表所占空间的大小
select t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) "占用空间(M)"
 from dba_segments t
 where t.segment_type='TABLE'
 and t.segment_name='AD_DATA_FILES'
 group by OWNER, t.segment_name, t.segment_type;
 
 查询某个具体的索引所占空间的大小
 select t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) "占用空间(M)"
 from dba_segments t
 where t.segment_type='TABLE'
 and t.segment_name='AD_DATA_FILES'
 group by OWNER, t.segment_name, t.segment_type;
 
 
 14、oracle字符集
 
 15关于数据库的无效对象
 https://www.cnblogs.com/kerrycode/p/3723715.html

15、nomount报错怎么解决
从RAC集群复制过来的Oracle程序目录,在变成单节点的时候,需要数据库用户执行这些步骤

使用一个已经安装了AIX 6.1+HACMP+ORACLE RAC 10.2.0.5 环境创建备份,然后在一个新的POWER 5上使用这个备份进行操作系统全恢复.系统恢复后,ORACLE的环境已经有了,现在需要在这个环境下建立一个single db(单实例DB).
 
笔者尝试通过手工建立单实例DB的方法,启动数据库实例到nomount状态时,报错:
 
SQL> startup nomount;
 
ORA-29702: error occurred in Cluster Group Service operation
 
无法进行下面的数据库创建工作.
 
fix:
 
Relink Oracle  disable Parallel Server Option:
 
$ cd $ORACLE_HOME/rdbms/lib
 
$ make -f ins_rdbms.mk no_parropt
 
$ make -f ins_rdbms.mk install


16、Solaris中获取硬件以及系统配置信息


http://haibing.org/?p=89  (最全面)


机器型号
#showrev

CPU
# prtdiag -v 查看CPU及内存总数, 在 /usr/platform/sun4v/sbin 路径下使用root用户查看

双核的会显示
CPU socket #0
CPU socket #1

而单核的只会显示一个

#mpstat 显示CPU逻辑核心数(线程)
#psrinfo 显示CPU逻辑核心数(线程)
#psrinfo -v 具体CPU逻辑核心详细信息
#psrinfo -p 物理CPU数
#psrinfo -vp 物理CPU详细信息

内存
# prtconf|head -n 5
# prtconf|grep 'Memory'
#prtconf | grep -i mem

硬盘
# iostat -E

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

#showrev   ##查看服务器型号
#psrinfo   ##逻辑cpu个数

https://www.cnblogs.com/leipei2352/archive/2011/06/02/2068576.html
https://blog.csdn.net/kbkiss_1/article/details/5500090
https://www.cnblogs.com/emanlee/p/3587571.html     --linux查看

关于超线程
http://www.91ctc.com/article/article-360.html

17、rac日常检查
https://www.cnblogs.com/polestar/p/4198727.html

18、用户profile设置  dba_profiles   
http://blog.itpub.net/29457434/viewspace-1101738/

19、避免使用科学计数法显示的方法:
SQL> set numwidth 11
selec current_scn from v$database;

20、日期转换
select _char(sysdate,'yyyy-mm-dd hh24:mi:ss') as sysdate from dual;

21、add extract e_test,tranlog,begin now
add extract 命令结束后抽取开始
https://www.linuxidc.com/Linux/2014-11/109028.htm

add exttrail  /u07/ogg/dirdat/test,extract e_test

add extract p_test,exttrailsource /u07/ogg/dirdat/test
add rmttrail  /u01/ogg/dirdat/pq,extract p_tqs  


    add extract ext_tqs,tranlog,begin now
    add exttrail /u07/ogg/dirdat/tq,extract ext_tqs


add extract p_tqs,exttrailsource /u07/ogg/dirdat/tq
add rmttrail  /u01/ogg/dirdat/pq,extract p_tqs  


22、闪回查询
http://blog.itpub.net/17013648/viewspace-1167134/


23、
 你好!
 --检查请求“接收事务处理处理器”参数只有BATCH, ,的这个状态为运行中的。。。         
 --采购接收锁表sql kill用户为工号登录的并且状态为INACTIVE的(让该用户关掉界面也可以),看看以上请求再运行几分钟是否可以运行完成


SELECT --sess.INST_ID,
sess.LOGON_TIME,Ao.Object_Name,sess.MODULE,
Sess.CLIENT_IDENTIFIER 登录名,ppv.last_name 用户,fu.description 用户说明,
sess.STATUS,sess.MACHINE,'alter system kill session ''' || sess.sid || '' || ',' || sess.serial# || '''' || ' immediate' || ';' killsql,
Sess.Sid,SESS.PROCESS,Sess.Serial#,round((SYSDATE - sess.LOGON_TIME) * 24 * 60) ,
round(sess.SECONDS_IN_WAIT / 60),Sess.Action,Lo.Locked_Mode
FROM GV$locked_Object Lo, Dba_Objects Ao, GV$session Sess,
apps.PER_PEOPLE_V7 ppv,apps.FND_USER fu
WHERE Ao.Object_Id = Lo.Object_Id
AND Lo.Session_Id = Sess.Sid
and Sess.CLIENT_IDENTIFIER = ppv.employee_number(+)
and sess.CLIENT_IDENTIFIER = fu.USER_NAME(+)
and object_name in ( 
'PO_HEADERS_ALL','PO_LINES_ALL','PO_LINE_LOCATIONS_ALL','PO_REQUISITION_LINES_ALL','PO_DISTRIBUTIONS_ALL','PO_NOTE_REFERENCES','RCV_TRANSACTIONS','RCV_TRANSACTIONS_INTERFACE','MTL_SUPPLY'
)
order by Ao.Object_Name,sess.MODULE
   ;

 select s.status,s.CLIENT_IDENTIFIER,d.object_name,s.machine,s.sid,s.serial#,l.locked_mode
   from Gv$locked_object l,dba_objects d,Gv$session s 
    where l.object_id = d.object_id and l.session_id=s.sid  and d.object_name='GUIDED_FLOW_ACTION';

SELECT SESS.INST_ID,
       SESS.LOGON_TIME,
       'alter system kill session ''' || SESS.SID || '' || ',' ||
       SESS.SERIAL# || '''' || ' immediate' || ';',
       SESS.SID,
       SESS.MACHINE,
       SESS.PROCESS,
       SESS.SERIAL#,
       SESS.CLIENT_IDENTIFIER,
       SESS.MODULE,
       AO.OBJECT_NAME,
       SESS.LOGON_TIME,
       SESS.STATUS,
       ROUND((SYSDATE - SESS.LOGON_TIME) * 24 * 60),
       ROUND(SESS.SECONDS_IN_WAIT / 60),
       SESS.ACTION,
       LO.LOCKED_MODE
  FROM GV$LOCKED_OBJECT LO, DBA_OBJECTS AO, GV$SESSION SESS
 WHERE AO.OBJECT_ID = LO.OBJECT_ID
   AND LO.SESSION_ID = SESS.SID
   
   
SELECT SESS.INST_ID,
       SESS.LOGON_TIME,
       'alter system kill session ''' || SESS.SID || '' || ',' ||
       SESS.SERIAL# || '''' || ' immediate' || ';',
       SESS.SID,
       SESS.MACHINE,
       SESS.PROCESS,
       SESS.SERIAL#,
       SESS.CLIENT_IDENTIFIER,
       SESS.MODULE,
       AO.OBJECT_NAME,
       SESS.LOGON_TIME,
       SESS.STATUS,
       ROUND((SYSDATE - SESS.LOGON_TIME) * 24 * 60),
       ROUND(SESS.SECONDS_IN_WAIT / 60),
       SESS.ACTION,
       LO.LOCKED_MODE
  FROM GV$LOCKED_OBJECT LO, DBA_OBJECTS AO, GV$SESSION SESS
 WHERE AO.OBJECT_ID = LO.OBJECT_ID
   AND LO.SESSION_ID = SESS.SID 
     --and sess.STATUS='ACTIVE'
      --and sess.STATUS = 'INACTIVE'
   AND (AO.OBJECT_NAME LIKE '%WIP_DISCRE%'); --WIP_DISCRE  WIP_REQUIREMENT_OPERATIONS
   --and sess.MODULE like 'e:BOM:frm:SCCITEM%LOCK'
   
   
   
   
   
   select s.inst_id,s.process,s.module,d.owner,d.object_name,s.CLIENT_IDENTIFIER,s.machine,s.sid,s.status,s.logon_time,s.serial#,l.locked_mode,'alter system kill session ''' || s.sid || '' || ',' || s.serial# || '''' || ' immediate' || ';' killsql 
 from Gv$locked_object l,dba_objects d,Gv$session s 
    where l.object_id = d.object_id and l.session_id=s.sid 
   
   
   
   
 --看看计划管理器锁的哪些表,再查询这些表的锁定者

     SELECT --sess.INST_ID,
sess.LOGON_TIME,
Ao.Object_Name,
sess.MODULE,
Sess.CLIENT_IDENTIFIER,ppv.last_name,
sess.STATUS,
sess.MACHINE,
'alter system kill session ''' || sess.sid || '' || ',' ||
sess.serial# || '''' || ' immediate' || ';',
Sess.Sid,
SESS.PROCESS,
Sess.Serial#,
Sess.Logon_Time,
round((SYSDATE - sess.LOGON_TIME) * 24 * 60),
round(sess.SECONDS_IN_WAIT / 60),
Sess.Action,
Lo.Locked_Mode

FROM GV$locked_Object Lo, Dba_Objects Ao, GV$session Sess,
PER_PEOPLE_V7 ppv
WHERE Ao.Object_Id = Lo.Object_Id
AND Lo.Session_Id = Sess.Sid
and Sess.CLIENT_IDENTIFIER = ppv.employee_number(+)
--and sess.MODULE like   '%MRCRLF' --看看计划管理器锁的哪些表,再查询这些表的锁定者
--and sess.CLIENT_IDENTIFIER = 'SYSADMIN'
and object_name in (
'MRP_MESSAGES_TMP',
'WIP_DISCRETE_JOBS',
'WIP_REQUIREMENT_OPERATIONS'
)

order by Ao.Object_Name,sess.MODULE

查看操作系统进程:
select * from gv$process where addr in (select paddr from  gv$session where sid in('123','456','789','...');
select spid from gv$process where addr in (select paddr from  gv$session where sid in('21'));


alter system kill session '8938,19255' immediate;

select spid from gv$process where addr in (select paddr from  gv$session where sid='10121');
ps -ef | grep spid   (LOCAL=NO的可以kill,LOCAL=YES的不能kill)
SELECT s.sid, p.spid,s.sql_id FROM gv$session s, gv$process p WHERE s.paddr = p.addr AND p.spid = '225433'


24、查看用户信息
select count(*) from v$session;--查询oracle的连接数
select count(*) from v$session where status='ACTIVE';--查询oracle的并发连接数

select username,count(username) from v$session where username is not null group by username;       --查看不同用户的连接数

select * from all_users;--查看所有用户:

25、ORA-00372此时无法修改文件5 ORA-01110数据文件5'M:\WWFDATA.dbf'
select t.online_status,t.file_name,t.tablespace_name from dba_data_files t where t.file_id in ('5');
https://www.cnblogs.com/Snowfun/p/5829628.html
https://blog.csdn.net/huangliang0703/article/details/17526855

26、检查网卡
mii-ol eth0  检查是否插网线(link ok)
ethol  eth0   检查是网络是否正常

27、alter table rename old_name  new_name;
create table xxx as select * from XCCC;


28、select _char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual; 

29、虚拟机的ip可以跟实体机不在同一个网段,重点看实体机的网卡有几个,可以连哪些网段的ip


30、run{   
allocate channel c1 type disk;  
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk; 
backup full tag 'dbfull' format '/90.50/20181211/ascp_data%U' database   
include current controlfile;   
sql ‘alter system archive log current’; #在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档
backup filesperset 3 format ‘/backup/arch%u_%s_%p’#filesperset 3设定每个备份集里文件不超过3个  
archivelog all delete input; #备份归档可选,可以单独定期备份   
release channel c1;    
}  


31、mount -F nfs -o rw,hard,nointr,noac,vers=3,rsize=32768,wsize=32768 10.10.90.50:/u05/bak1 /90.50


32、
将Oracle数据库设置为归档模式及非归档模式
一、将Oracle数据库设置为归档模式
1)sql>shutdown normal/immediate;
2)sql>startup mount;
3)sql>alter database archivelog;
4)sql>alter database open;
5)archive log list;

注意:show parameter log_archive_dest查看归档日志的存放位置。

二、将Oracle数据库设置为非归档模式
1)、关闭数据库 
shutdown immediate 
2)、再后面把数据库启动到mount的模式 
startup mount 
3)、关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ora-38774错误。 
alter database flashback off 
4)、接着把数据库改为非归档模式 
alter database noarchivelog; 
5)、都修改好了以后,然后打开数据库 
alter database open; 
6)、察看一下归档日志的空间大小 
select * from v$recovery_file_dest; 
接着看一下log日志的状态 
select * from v$log; 
再看一下闪回日志使用状况 
select * from v$flash_recovery_area_usage;


zip -r abc.zip abc


7za x tech_st.zip  -r -o/u04/ASCP/oraascp/db/   (-o表示后面接路径后面不能有空格)


set timing on


改数据库名字(要在mount模式下改,改完记得改参数文件中名字)
nid target=sys/oracle  dbname=test2


sys@ora10g> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
sys@ora10g> select name,completion_time,status,sequence# from gv$archived_log;


ALTER table SCC.scc_wip_issue_pr_line rename  scc_wip_issue_pr_line_1216;  (后面不用接用户名)

统计信息收集方法
https://www.cnblogs.com/rusking/p/5867712.html
https://www.cnblogs.com/Richardzhu/p/3600561.html


查看rac 节点1,节点2分发
select inst_id,count(*) from gv$session group by inst_id;


select inst_id,count(*) from gv$session WHERE status='ACTIVE' group by inst_id   ;


[root@rac02 grid]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \

然后输入:
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel


[root@localhost yum.repos.d]# cat cdrom.repo 
[cdrom]
name=cdrom
baseurl=file:///mnt/dvd/Server
enabled=1
gpgchek=0
[root@localhost yum.repos.d]# 


delete 删除可以不写日志

数据库字符集选择utf8
下面选其他

insert数据时,记得查看客户端字符集,如果没有则把以下内容加到oracle的profile文件中
NLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANG

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL> exit

数据文件创建时间
select a.file_name,a.tablespace_name,_char(b.creation_time,'yyyy-mm-dd')creation_time from dba_data_files a,v$datafile b where a.file_id=b.file# order by tablespace_name;


\\titan\质量与流程IT部\12580-李江江\program


tkprof  PROD1_ora_17841.trc 17841_sys_no.prf sys=no  sort=prsela,exeela,fchela   explain=apps/AppsPa55w0rd

allocate channel for maintenance type disk; 
DELETE  NOPROMPT OBSOLETE DEVICE TYPE DISK;


/u01/prod/db/tech_st/11.2.0/rdbms/admin/awrrpt.sql


通过操作系统PID找出相应的SQL语句
1、SELECT s.sid, p.spid,s.sql_id FROM gv$session s, gv$process p WHERE s.paddr = p.addr AND p.spid = '225433'
然后通过SID找出相应的SQL语句的具体内容:
SELECT s.sid, s.status, q.sql_text FROM gv$session s, gv$sqltext q WHERE s.sql_hash_value = q.hash_value AND s.sql_address = q.address AND s.sid = '4008' order by q.piece;

RAC启动某一个实例
srvctl start instance -d PROD -i PROD1
https://jingyan.baidu.com/article/d621e8da0fef042865913fcd.html

关RAC的步骤:1.关闭监听,2关闭db 3.关闭nodeapps 4.关闭集群crsctl sp crs

PCB_MES更新
\\goddes\IT文件\PCB_MES_更新\

\\titan\质量与流程IT部\PCB_MES_更新-郑云朋

\\itwb


改主键
SQL> ALTER TABLE pc59 RENAME CONSTRAINT SYS_C00421221  PK_PC59;
Table altered


SQL> ALTER INDEX SYS_C00421221 RENAME  PK_PC59;


Index altered

select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2  
where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED'); 

[root@SZPCBAMES1 data]# cat /etc/exports   --加上no_root_squash,root才有写的权限
/u01/fu/1231 (rw,no_root_squash)
[root@SZPCBAMES1 data]# 

mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,timeo=600,actimeo=0 10.10.90.177:/u01/fu/1231  /fu       


alter session enable parallel dml
insert /*+  append parallel(a,4) */  in test_insert a select * from test_select b;      

insert /*+  append parallel(a,4) */  in test.test1231 a select * from test.test b;  


同义词

find .  -mtime +30 -type f -exec rm -rf {} \;

 find /u01/biee/user_projects/domains/bifoundation_domain/servers/bi_server1/logs  -mtime +30 -type f -name "bi_server1.log*" -exec rm -rf {} \;    --name后的文件要加引号括起来
 
 find . -mtime +30 -type f -name "access_log*" -exec  ls -l {} \;
 
 find . -mtime +10 -type f -name "*.aud" -exec  rm -rf {} \; find . -mtime +30 -type f -name "*.trc" -exec  rm -rf {} \;


clob大对象
select * from dba_lobs d where d.OWNER='PCBAMES' and d.TABLE_NAME='SCC_ICT_CHECK_LOG'


show pdbs


alter table pcbames.SCC_WIP_RS                      rename     SCC_WIP_RS_20181231                        ;
alter table pcbames.FEEDER_WIP_MS                   rename     FEEDER_WIP_MS_20181231                     ;
alter table pcbames.SPC_TXN_OUTPUT                  rename     SPC_TXN_OUTPUT_20181231                    ;
alter table pcbames.SPC_FPY_ACTUAL                  rename     SPC_FPY_ACTUAL_20181231                    ;
alter table pcbames.PERATION_ITEM_TXN             rename     PERATION_ITEM_TXN_20181231               ;
alter table pcbames.TMANUAL_CHECK_RECORD            rename     TMANUAL_CHECK_RECORD_20181231              ;
alter table pcbames.SCC_FT_CHECK_LOG                rename     SCC_FT_CHECK_LOG_20181231                  ;
alter table pcbames.SCC_FT_CHECK_RECORD             rename     SCC_FT_CHECK_RECORD_20181231               ;
alter table pcbames.SCC_AGING_CONTROL_RECORD        rename     SCC_AGING_CONTROL_RECORD_bak          ;
alter table pcbames.PCB_READINGS                    rename     PCB_READINGS_20181231                      ;
alter table pcbames.TAU_CHECK_RECORD              rename     TAU_CHECK_RECORD_20181231                ;
alter table pcbames.SCC_ICT_CHECK_LOG               rename     SCC_ICT_CHECK_LOG_20181231                 ;
alter table pcbames.SCC_PAK_BOARD_INFO              rename     SCC_PAK_BOARD_INFO_20181231                ;
alter table pcbames.PANEL_BLOCK_TRACE               rename     PANEL_BLOCK_TRACE_20181231                 ;
alter table pcbames.SCC_ITEM_OPERATION_TIME_OUTPUT  rename     SCC_ITEM_OPERATION_TIME_1231    ;
alter table pcbames.COMP_LIST                       rename     COMP_LIST_20181231                         ;
alter table pcbames.SCC_WIP_MS                      rename     SCC_WIP_MS_20181231                        ;
alter table pcbames.SPLICING                        rename     SPLICING_20181231                          ;

--脚本

windows ftp到1.156上取文件
cmd
ftp  
open 10.10.1.156
applprod            --账号
appa55word$         --密码
cd                  --进入远程目录
lcd                 --进入本地目录
prompt             -- 开启交互模式
mget xxx        
quit


容器数据库
 select name,cdb from v$database;
 select name,con_id from v$containers;
alter session  set container=DBM011PDB1
show con_name
show pdbs

alter session  set container=PDB$SEED;

RMAN> print script db_bk_arc_prod;

printing sred script: db_bk_arc_prod
{backup archivelog all format '/u03/prod/backupset/ARC_%s_%T' ;
delete noprompt archivelog all completed before 'SYSDATE-6/24' ;
}

RMAN> 

RMAN> print script db_bk_arc_prod;

printing sred script: db_bk_arc_prod
{backup archivelog all format '/u03/prod/backupset/ARC_%s_%T' ;
}

RMAN> 


printing sred script: db_bk_lv0_prod
{backup incremental level 0 device type disk tag 'LV0' format '/u05/lv0_bak/lv0_%s_%T' database include current controlfile;
delete noprompt obsolete;
}


RMAN>  print script db_bk_lv0_prod;

printing sred script: db_bk_lv0_prod
{backup incremental level 0 device type disk tag 'LV0' format '/u05/lv0_bak/lv0_%s_%T' database include current controlfile;}

RMAN>

联机分析处理(OLAP,On-line Analytical Processing),数据量大,DML少。使用数据仓库模板
联机事务处理(OLTP,On-line Transaction Processing),数据量少,DML频繁,并行事务处理多,但是一般都很短。使用一般用途或事务处理模板。
决策支持系统(DDS,Decision support system),典型的操作是全表扫描,长查询,长事务,但是一般事务的个数很少,往往是一个事务独占系统。


Oracle查询temp表空间的使用率

select tablespace_name,round(free_space/1024/1024/1024,2) "free(GB)",round(tablespace_size/1024/1024/1024,2) "tal(GB)",round(nvl(free_space,0)*100/tablespace_size,3) "Free percent"from dba_temp_free_space;

 run{
     set archivelog destination  '/u01/database/sybo5/arch';
     restore archivelog low logseq 27;}
     
delete force archivelog all completed   before  'sysdate -6/24' ; 

delete noprompt archivelog all completed before 'SYSDATE-2/24' ;


delete force  archivelog all completed   before  'sysdate -6/24' ; 


vncserver

alter database recover backup controlfile;

在solaris下crontab -e命令出错,原来是需要设置export EDIR=vi
http://blog.sina.com.cn/s/blog_6e9bca5b0100rzxy.html

ebs用户
SELECT DISTINCT fu.user_name 用户名,
fu.user_id ,
_char(fu.creation_date,'yyyy-mm-dd hh24:mi:ss') 账号创建日期,
ppv.LAST_NAME 人员,
_char(fu.END_DATE,'yyyy-mm-dd hh24:mi:ss')  人员失效日期,
fu.description 人员说明,
frv.RESPONSIBILITY_NAME 职责,
frv.RESPONSIBILITY_ID,
_char(furgd.END_DATE,'yyyy-mm-dd hh24:mi:ss')  职责失效日期
FROM apps.FND_USER_RESP_GROUPS_DIRECT  furgd,
apps.FND_USER     fu,
apps.FND_RESPONSIBILITY_VL       frv,
apps.PER_PEOPLE_V7  ppv
WHERE furgd.user_id = fu.user_id
and furgd.RESPONSIBILITY_ID = FRV.RESPONSIBILITY_ID
and fu.employee_id = ppv.PERSON_ID(+)
/*and (fu.END_DATE is null or fu.END_DATE > sysdate )
and (furgd.END_DATE is null or furgd.END_DATE > sysdate )*/
--and frv.RESPONSIBILITY_NAME like '%总部采购员物资采购%'
--and fu.user_id = 1447
order by  fu.user_name
;


序列(id)
SCCMES.SCC_QUA_INSPEC_ITEMS_S.NEXTVAL

 insert in SCCMES.SCC_QUA_INSPEC_ITEMS(items_id,organization_id,cata_id,data_id,item_name,class_name,standard_precation,choice,sample_graph,enable_flag,creation_by,creation_date,update_by,update_date)
  select SCCMES.SCC_QUA_INSPEC_ITEMS_S.NEXTVAL,organization_id,cata_id,'4',item_name,'特殊要求',standard_precation,choice,sample_graph,enable_flag,creation_by,creation_date,update_by,update_date  
   from  SCCMES.SCC_QUA_INSPEC_ITEMS;

如果要给导入一个合理的PARALLEL值,通过测试,我认为是可用的CPU数(不管你是虚拟的还是多核的)的60-70%左右的值是一个比较好的值。当然如果有可能还是测试一下来决定一个最优的值吧。

parallel 要比filesize 小才合理(逻辑cpu一半?)
mount -o rw -t nfs 192.168.192.204:/mnt/cephfs /mnt/nfs
/mnt/cephfs 192.168.192.0/8(rw,no_root_squash)

 mount -o nolock -o rw -t nfs 10.10.110.1:/acfs/fu/bi /u01/fu
 
 
 问题 1:如何查询一个角色包括的权限?
 select GRANTEE,GRANR,PRIVILEGE from dba_tab_privs where grantee='SYSADM';
 select * from dba_sys_privs where grantee='SYSADM';
 select * from dba_role_privs where grantee='SYSADM';

a.一个角色包含的系统权限

select * from dba_sys_privs where grantee='IMES';  READUSER2024

另外也可以这样查看:

b.一个角色包含的对象权限

select * from dba_tab_privs where grantee='IMES';

c、查看角色所包含的角色
select * from dba_role_privs where grantee='IMES'; 

select owner_name,job_name ,state from dba_datapump_jobs;

 impdp fuliling/fuliling123 attach=SYS_IMPORT_SCHEMA_01   
 
 
  expdpdp ggs/ggs attach=SYS_IMPORT_FULL_01
 HELP 总结交互命令。
KILL_JOB 分离和删除作业。
PARALLEL 更改当前作业的活动 worker 的数目。
PARALLEL=. 

START_JOB 启动/恢复当前作业。
START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停止时执行的任意操作。

STATUS 在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。
STATUS[=interval] 

SP_JOB 顺序关闭执行的作业并退出客户机。
SP_JOB=IMMEDIATE 将立即关闭数据泵作业。


parfile的用法
parfile=t.par
vi t.par
EXCLUDE=TABLE:"IN ('TB_HZ_LOCATIONS','FULLLING')"  

select userenv('language') from dual;
set nls_lang=AMERICAN_AMERICA.AL32UTF8


select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

重建索引
alter index PU_VIEW.DM_PB_BURDEN_V_N1 REBUILD online nologging;
http://www.xifenfei.com/2011/12/some-indexes-or-index-subpartitions-of-table-vas-tab_pub_calllog-have-been-marked-unusable.html

查看无效对象
SELECT owner, object_name, object_type,status FROM dba_objects WHERE status = 'INVALID';

查看无效索引
select * from dba_indexes where status='UNUSABLE';

ogg修改表结构
一、目标端停止复制进程
二、目标端修改表结构
三、源端停止抽取进程
四、源端修改表结构
五、启动目标端复制进程
六、启动源端抽取进程


创建dblink:

create public database link dblink名
  connect  远程数据库用户名 identified by "远程数据库密码"
  using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'; ?
--------------------- 
例如:

ASCP正式环境:链接UAT4

create database link UAT4
  connect  APPS
 IDENTIFIED BY  apps               --uat4环境的app用户密码
  using '(DESCRIPTION=
            (ADDRESS_LIST=
                (LOAD_BALANCE=YES)
                (FAILOVER=YES)
                (ADDRESS=(PROCOL=tcp)(HOST=10.10.111.5)(PORT=1521))
                (ADDRESS=(PROCOL=tcp)(HOST=10.10.111.6)(PORT=1521))
                (ADDRESS=(PROCOL=tcp)(HOST=10.10.111.7)(PORT=1521))
            )
            (CONNECT_DATA=
                (SERVICE_NAME=uat)
            )
        )';
        
create  database link ebs.scc.com
  connect  apps identified by "AppsPa55w0rd"
  using '(DESCRIPTION= (ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROCOL=tcp)(HOST=szexadb01-vip.scc.com)(PORT=1521))(ADDRESS=(PROCOL=tcp)(HOST=szexadb02-vip.scc.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD)))'; 


验证dblink是否有效
select sysdate from dual@GTSPROD.SCC.COM      ;
        
        
        
        
        
问题 1:如何查询一个角色包括的权限?

a.一个角色包含的系统权限

select * from dba_sys_privs where grantee='SSE_ROLE'

另外也可以这样查看:

select * from role_sys_privs where role='SSE_ROLE'

b.一个角色包含的对象权限

select * from dba_tab_privs where grantee='SSE_ROLE'

c、查看角色所包含的角色
select * from role_role_privs where role='CONNECT';  


create role SSE_ROLE;
grant UNLIMITED TABLESPACE  SSE_ROLE;
grant resource,connect  SSE_ROLE;

exclude=STATISTICS


ora28040 
vi sqlnet.ora()
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8   --或 SQLNET.ALLOWED_LOGON_VERSION=8  ,如果是rac两边都要加,不用重启监听
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8


BIEE 通过配置文件 修改JDBC 数据库链接
https://blog.csdn.net/jxj807158342/article/details/79238115


select current_scn from v$database;
SQL> set numw     30
SQL> /

           CURRENT_SCN
------------------------------
        13225384958040

SQL> 

vi /u01/app/oraInvenry/ContentsXML/invenry.xml 


视图
select 'grant select on '||referenced_owner||'.'||REFERENCED_NAME||'  '||owner||'with grant option;' from DBA_DEPENDENCIES where owner=upper('&viewowner') and name=upper('&viewname') and type='VIEW' and referenced_type='TABLE';

select视图报错ORA-01031(oracle跨用户基表视图授权)
https://blog.csdn.net/dbcrocodile/article/details/51670084
https://www.cnblogs.com/CandiceW/p/6868235.html


例如grant select on sccmes.kjwol_v  inp_mi  
如果用apps账号执行报错的话,直接在sccmes下执行该赋予权限的语句。可以看到具体的报错信息。

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

--查出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#;

cell smart table scan全表扫描

1661v6gh43a9y
90brcvua88k9q
dgaj7dftbnmqs
6dc2rm88ggn7f
1b8yc463w2jjv
7r8r7bq249sq1
92qd2x7au7zq2
cuyj2772dfdbp


http://10.10.111.1:7000/


ogg正式环境

源端
10.10.111.1
cd /acfs/ogg181_ms/ogg181_ma/bin
./adminclient
connect http://10.10.111.1:7000/ deployment PROD as oggadmin password @dminc0ntr0l   (正式)

目标
10.10.90.188
prod102
cd /u02/ogg181_ms/ogg181_ma/bin
./adminclient
connect http://10.10.90.188:7000/ deployment imes as oggadmin password @dminc0ntr0l


10.30.3.10
prod121
cd /acfs/ogg181_ms/ogg181_ma/bin
./adminclient
connect http://10.30.3.10:7000/ deployment dbm01 as oggadmin password @dminc0ntr0l


ogg测试环境
10.10.111.1
cd /acfs/ogg181_ms/ogg181_ma/bin
./adminclient
connect http://10.10.111.1:7000/ deployment Deployment1 as oggadmin password @dminc0ntr0l
dblogin useridalias ggadmin domain oggadmin

10.20.8.1
目标:
r4,r5
cd /acfs/ogg/ogg181_ms/ogg181_ma/bin
./adminclient 
connect http://10.20.8.1:7000/ deployment Deployment1 as oggadmin password @dminc0ntr0l


创建awr快照
exec dbms_workload_reposity.create_snapshot();

@?/rdbms/admin/awrrpt.sql 单实例的awk报告
@?/rdbms/admin/awrgrpt.sql rac的awk报告
@?/rdbms/admin/awrddrpt.sql 单实例的awk对比报告
@?/rdbms/admin/awrgdrpt.sql  rac的awk对比报告
@?/rdbms/admin/awrsqrpt.sql 单个sql的报告

@?/rdbms/admin/ashrpt.sql
@?/rdbms/admin/awrsqrpt.sql(看sql)
@?/rdbms/admin/awrddrpt.sql  (不同时间点对比)

@?/rdbms/admin/ashrpt.sql
08/11/1620:00:00
-- 输入ASH 开始的时间,时间格式上面的示例有说明,比如我这里是2016年8月31日晚上20:00:00开始。duration是以秒为单位的

删除备份片
delete   BACKUPPIECE '/acfs/backup/backupset/lv0_PROD_391_20190212';

查看执行计划;
迁移执行计划;


cat /etc/oracle-release
ls -l /etc/*-release


非归档模式下rman备份必须处在mount下

ebs打应用补丁
https://www.cnblogs.com/huak/p/3535656.html


oracle hint
https://blog.csdn.net/tianlesoftware/article/details/4969702

Select /*+ OPTIMIZER_FEATURES_ENABLE('11.2.0.3')*/

查看当前sid
select sid  from v$session where sid = ( select sid from v$mystat where rownum=1);
alter session set events '10046 trace name context forever, level 12';
执行sql
alter session set events '10046 trace name context off';
tkprof jyzhao1_ora_14139.trc jyzhao1_ora_14139.txt sys=no

select inst_id,sql_id,sql_text from gv$sql where sql_text like '%/*sccfu123*/%';

select sql_id, child_number, executions from gv$sql where sql_id='9gxbguwyuckk9';
select * from table(dbms_xplan.display_cursor('9gxbguwyuckk9',0));
 select * from table(dbms_xplan.display_awr('21k9gsx0p4wv5'));
 
 select * from  dba_hist_sqlstat  where sql_id='csz0vj76t87cq';
   select * from dba_hist_snapshot where snap_id=''
https://cloud.tencent.com/developer/news/373570

alter system set "_optimizer_unnest_scalar_sq"=false

1353
366048

查看隐含参数
col parameter for a35
col "session value" for a15
col "instance value" for a15
SELECT a.ksppinm "parameter",
b.ksppstvl "session value",
c.ksppstvl "instance value"
FROM x$ksppi a, x$ksppcv b, x$ksppsv c
WHERE a.indx = b.indx
AND a.indx = c.indx
AND a.ksppinm LIKE '_optimizer_cost_based_transformation%';


数据库服务器上执行这个查询截图看看
sqlplus   /     as    sysdba
col parameter for a35
col "session value" for a15
col "instance value" for a15
SELECT a.ksppinm "parameter",
b.ksppstvl "session value",
c.ksppstvl "instance value"
FROM x$ksppi a, x$ksppcv b, x$ksppsv c
WHERE a.indx = b.indx
AND a.indx = c.indx
AND a.ksppinm in ('_b_tree_bitmap_plans','_no_or_expansion','_complex_view_merging','_optimizer_cost_based_transformation','_pred_move_around');


su - applprod
cd /u01/prod/apps/apps_st/appl/scc/12.0.0/forms/ZHS
id
ls -alt | grep SCCMISC02NEW.fmb
cp SCCMISC02NEW.fmb   SCCMISC02NEW.fmb_20200812_zhaong
frmcmp_batch SCCMISC02NEW.fmb  userid=apps/AppsPa55w0rd output_file=SCCMISC02NEW.fmx

SCCWSMORDERTMO.fmb
测试
su - appuat1
cd /u02/appuat1/apps/apps_st/appl/scc/12.0.0/forms/ZHS
ls -alt | grep SCCSOMONT_testv1.fmb
cp SCCSOMONT_testv1.fmb   SCCSOMONT_testv1.fmb_20200927_chujiangyong
frmcmp_batch SCCSOMONT_testv1.fmb  userid=apps/scc123456 output_file=SCCSOMONT_testv1.fmx

SCCWIPISSUE

ls -alt | grep SCCMISC02NEW.fmb
ls -alt |grep SCCMISC01.fmb
ls -alt |grep SCCMISCTRX.fmb
ls -alt | grep SCC_FND_MTRX_USER.fmb


SCCBOMSEARCHSUB


SCCWIPISSUE


rdf文件

/u01/prod/apps/apps_st/appl/scc/12.0.0/reports/ZHS/SCCPO_POPRINT.rdf    

根据request id找trace文件
SELECT 'Trace Name: ' || dest.value || '/' || lower(dbnm.value) || '_ora_' ||
       oracle_process_id || '.trc',
       'File Name: ' || execname.execution_file_name ||
       execname.subroutine_name
  FROM fnd_concurrent_requests    req,
       v$session                  ses,
       v$process                  proc,
       v$parameter                dest,
       v$parameter                dbnm,
       fnd_concurrent_programs_vl prog,
       fnd_executables            execname
 WHERE req.request_id = &request_id
   AND req.oracle_process_id = proc.spid(+)
   AND proc.addr = ses.paddr(+)
   AND dest.name = 'user_dump_dest'
   AND dbnm.name = 'db_name'
   AND req.concurrent_program_id = prog.concurrent_program_id
   AND req.program_application_id = prog.application_id
   AND prog.application_id = execname.application_id
   AND prog.executable_id = execname.executable_id


下面的SQL可以根据Request ID找到对应的Session信息:

select *

from v$session

where paddr in

(select addr

from v$process

where spid =

(select b.oracle_process_id

from apps.fnd_concurrent_requests b

where b.request_id = &req_number))

--或者进一步找到正在运行的SQL:

select sql_text

from v$sqltext_with_newlines

where hash_value in

(select SQL_HASH_VALUE

from v$session

where paddr in

(select addr

from v$process

where spid =

(select b.oracle_process_id

from apps.fnd_concurrent_requests b

where b.request_id = &req_number)))

order by piece;

--通过request id 和 sql id找到相关脚本:
sql一、
SELECT ses.sid,

        ses.serial# ,

        Ses.sql_id

     FROM v$session ses,

        v$process pro

        WHERE ses.paddr = pro.addr

             AND pro.spid IN (SELECT oracle_process_id

                  FROM fnd_concurrent_requests

                  WHERE request_id = <request_id>);

sql二、
SELECT req.request_id,
       req.oracle_process_id Trace_id,
       req.enable_trace Trace_Flag,
       dest.value || '/' || regexp_substr(dest.value, 'PROD0[1-2]') /* 2019-8-3 升级版,若为rac 则使用正则从文件目录中获取单节点的实例名。若非rac,需修改正则的匹配规则 */
       || '_ora_' || oracle_process_id || '.trc' "Trace_File_Name",
       prog.user_concurrent_program_name "Conc_Prog_Name",
       execname.execution_file_name || execname.subroutine_name "File_Name",
       DECODE(phase_code, 'R', 'Running') || '-' ||
       DECODE(status_code, 'R', 'Normal') "Status",
       ses.sid || ',' || ses.serial# SID_Serial,
       ses.MODULE "SID_Serial_Module"
  FROM fnd_concurrent_requests    req,
       v$session                  ses,
       v$process                  proc,
       v$parameter                dest,
       v$parameter                dbnm,
       fnd_concurrent_programs_vl prog,
       fnd_executables            execname
 WHERE req.request_id = 59916601
   AND req.oracle_process_id = proc.spid(+)
   AND proc.addr = ses.paddr(+)
   AND dest.name = 'user_dump_dest'
   AND dbnm.name = 'db_name'
   AND req.concurrent_program_id = prog.concurrent_program_id
   AND req.program_application_id = prog.application_id
   AND prog.application_id = execname.application_id(+) /*2019-8-3  根据业务提供request id ,内连接导致未找到文件,改为外连接*/

select sql_text from v$sqltext where sql_id=‘0kkhhb2w93cx0‘ order by piece
Oracle 查询表中字段里数据是否有重复

1
select 字段名,count(*) from table group by 字段名 having count(*) > 1
2、查找组合字段:

1
SELECT TEST_NAME1,TEST_NAME2,COUNT(*) FROM table GROUP BY TEST_NAME1,TEST_NAME2 HAVING COUNT(*) > 1

字段加固定值
update sccmes.scc_rfq_quotation_business set quotation_number=quotation_number||'_01'  where quotation_id in ('59381','96087','115796','131346','161819','168774','1137','60601','100475','119288','131968','161986','169630','1142','64373','101470','121911','136051','164998','76167','70200','102171','124767','155363','165540','57113','88414','109198','128254','157540','167404');
commit;


oracle linux 6.5 下  装12c
https://www.linuxidc.com/Linux/2017-11/148767.htm


Oracle 11.2.0.4 升级到 12.2.0.1 图文详解

https://www.linuxidc.com/Linux/2018-03/151559.htm

SQLServer修改表名、修改列名
https://www.cnblogs.com/121317RBN/p/8884854.html


linux 查看进程占用端口号
1、lsof -i:端口号

2、netstat -tunlp|grep 端口号

--定位异常等待事件

set pagesize 900;
set linesize 900;
select inst_id,event#,event,count(*) from gv$session where wait_class#<>6 group by inst_id,event#,event order by 1,4;


--等待事件对应sid,serial#,spid,status,login_time,sqltext,sql_id,machine,program
select b.sid,b.SERIAL#,c.SPID, b.STATUS,b.LOGON_TIME,a.SQL_FULLTEXT,a.SQL_ID,b.MACHINE,b.PROGRAM,b.P2  from gv$sqlarea a,gv$session b,gv$process c where a.sql_id=b.sql_id and c.ADDR=b.paddr  and b.EVENT='PX Deq: reap credit';


select a.sid,a.SERIAL#,a.MACHINE,a.username,a.program, b.SQL_FULLTEXT from v$session a,v$sqlarea b where a.EVENT='buffer busy waits'  and a.sql_id=b.sql_id;

select a.child_number,a.hash_value,a.EXECUTIONS,b.logon_time from v$sql a,v$session b where sql_id='&sql_id' and a.sql_id=b.sql_id

--操作系统进程对应sid,serial#,spid,status,login_time,sqltext,sql_id,machine,program
select b.sid,b.SERIAL#,c.SPID, b.STATUS,b.LOGON_TIME,a.SQL_FULLTEXT,a.SQL_ID,b.MACHINE,b.PROGRAM,b.P2  from gv$sqlarea a,gv$session b,gv$process c where a.sql_id=b.sql_id and c.ADDR=b.paddr  and c.SPID='2857'

查看sql执行计划
select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number,'advanced'));

通过下面的sql查询执行计划是否发生变化:

select a.INSTANCE_NUMBER,a.snap_id,a.sql_id,a.plan_hash_value,b.begin_interval_time

from dba_hist_sqlstat a, dba_hist_snapshot b 

where sql_id ='56s18gn1k19yp' 

and a.snap_id = b.snap_id 

order by instance_number, snap_id;

select sql_id,plan_hash_value,id,operation,options,object_owner,object_name,depth,cost,timestamp 

from DBA_HIST_SQL_PLAN

where sql_id ='56s18gn1k19yp' 

and plan_hash_value in (947531627,2658265176);

使用coe_xfr_sql_profile.sql可以发现两种执行计划的效率(AVG_ET_SECS):

SQL> @coe_xfr_sql_profile.sql


删除表格
选中shift+delete


oracle默认用户
https://blog.51c.com/hbxztc/1878925


oracle 12c 卸载

https://ywnz.com/linuxysjk/3169.html


Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\cens\ubuntu\debian等)

https://blog.csdn.net/sun120204535/article/details/78317504

https://blog.51c.com/sf1314/2096580


cens6.5安装Oracle12c
https://www.cnblogs.com/ggblog/p/9089046.html

select * from dba_users  where username='E7C6';

select * from dba_profiles where profile='DEFAULT';

select * from dba_profiles where profile='MONIRING_PROFILE';
select * from dba_profiles where profile='E7C6';

create profile E7C6 limit PASSWORD_LIFE_TIME UNLIMITED;
alter user E7C6 profile E7C6


用户权限:

select PRIVILEGE from dba_sys_privs where grantee='WJGX';
select GRANTED_ROLE from dba_role_privs where GRANTEE='WJGX';
select  PRIVILEGE from dba_tab_privs where grantee='WJGX';


select PRIVILEGE from dba_sys_privs where grantee=upper('数据中心用户名');
select GRANTED_ROLE from dba_role_privs where GRANTEE=upper('数据中心用户名');
select  PRIVILEGE from dba_tab_privs where grantee=upper('数据中心用户名');


create user helpdesk identified by helpdesk0327;
grant select any table  HELPDESK;
grant connect  HELPDESK;
grant execute on apps.SCC_ESL_PUBLIC_PKG  HELPDESK;


数据库克隆
 cd $ORACLE_HOME/oui/bin
 ./runInstaller -silent -clone  ORACLE_BASE='/u01/app/oracle'  ORACLE_HOME='/u01/app/oracle/dbhome'  ORACLE_HOME_NAME='clone'  -noConfig 
 
 https://blog.csdn.net/wish503/article/details/62231421


xshell能查到数据,而pl/sql无法查询数据的方法
alter session set nls_language = 'SIMPLIFIED CHINESE';


chage -l username  #查看用户密码信息
chage -M 99999 username

查看一周归档
select THREAD#,  
       logtime,  
       count(*),  
       round(sum(blocks * block_size) / 1024 / 1024) mbsize  
  from (select THREAD#,  
               trunc(first_time, 'dd') as logtime,  
               a.BLOCKS,  
               a.BLOCK_SIZE  
          from v$archived_log a  
         where a.DEST_ID = 1  
           and a.FIRST_TIME > trunc(sysdate - 7))  
 group by THREAD#, logtime  
 order by THREAD#, logtime desc; 
 
 
 
  allocate channel for maintenance device type 'sbt_tape' 
  allocate channel for maintenance type disk; 
  delete obsolete device type disk; 
  
并行创建索引
create index BPPF_PUB.I_T_FAS_REQ_LOG_2 on BPPF_PUB.T_FAS_REQ_LOG_REF (REQ_TIME)
? tablespace BPPF_PUB_COR_IDX parallel 12 online;

建立造成切记取消索引并行度,否则以后会出问题
alter index BPPF_PUB.I_T_FAS_REQ_LOG_2 noparallel;  
  
  
查看已经注册的目标库
 sqlplus rman/rman@rman
 SQL> select * from rc_database;
 
 SQL> /

    DB_KEY  DBINC_KEY        DBID NAME      RESETLOGS_CHANGE# RESETLOGS_TI FINAL_CHANGE#
---------- ---------- ---------- -------- ----------------- ------------ -------------
   1477441    1477442  250061959 PROD         1.0209E+13 30-JAN-14
    267001     267002 1648719750 LIVE1             945184 17-AUG-11
    808621     808622 1866428714 MYORACLE         886308 21-NOV-11
   1107981    1107982 4265648742 GTSPROD         945184 18-JUL-13
   1761421    2657050 3266390030 DW          923288504 22-MAY-15
   4549189    4549190  396063027 SCCEMCS1         945184 14-DEC-15
    895361     895362 2595162810 TESTDB          945184 04-APR-13
   2082381    2082382 3567910345 CAMBASE         945184 10-OCT-14
   2273781    2273782 1935519584 PCBA             945184 18-NOV-14
   2580561    2580562 1401858540 ORCL             945184 11-MAR-15
   2589227    2589228 4292116471 DCIP             945184 26-DEC-14
   5439961    5439962 1456057190 ORCL             945184 18-NOV-16
     56641    56642 1866561861 PCBMES          945184 03-OCT-11
   2130901    2130902 3233058068 KMPROD          945184 14-MAY-14
   2273121    2273122 2364906864 PCBME             945184 12-DEC-14
   2513281    2513282 1958442960 MES             945184 20-MAR-15
    398701    4370161  925882584 KOAPROD     1.3117E+13 18-NOV-16
   4532521    5467461 1126054827 TMS         1.0308E+13 01-JUL-17
   8063561    8063562  411054890 PROD              1 03-FEB-19
    322361     322362  829431002 INMIND          160491 16-OCT-10


 http://10.10.1.97/nagios/

RMAN> allocate channel for maintenance device type sbt parms 'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp)';
RMAN> delete noprompt obsolete; 
RMAN> delete noprompt expired backup;
RMAN> release channel ;


查看长事务
select min(start_time) from gv$transaction;


with transaction_details as
( select inst_id
  , ses_addr
  , sysdate - start_date as diff
  from gv$transaction
)
select s.username
,s.CLIENT_IDENTIFIER, _char(trunc(t.diff))
             || ' days, '
             || _char(trunc(mod(t.diff * 24,24)))
             || ' hours, '
             || _char(trunc(mod(t.diff * 24 * 60,24)))
             || ' minutes, '
             || _char(trunc(mod(t.diff * 24 * 60 * 60,60)))
             || ' seconds' as transaction_duration
, s.program
, s.terminal
, s.status
, s.sid
, s.serial#
,'alter system kill session ''' || s.sid || '' || ',' || s.serial# || '''' || ' immediate' || ';' killsql
from gv$session s
, transaction_details t
where s.inst_id = t.inst_id
and s.saddr = t.ses_addr  
and s.status='INACTIVE'
order by t.diff desc

with ltr as ( 
select _char(sysdate,'YYYYMMDDHH24MISS') TM, 
       s.sid, 
       s.sql_id, 
       s.sql_child_number, 
       s.prev_sql_id, 
       xid, 
       _char(t.start_date,'YYYYMMDDHH24MISS') start_time, 
       e.TYPE,e.block, 
       e.ctime, 
       decode(e.CTIME, 0, (sysdate - t.start_date) * 3600*24, e.ctime) el_second  
     --  q.sql_text 
  from v$transaction t, v$session s,v$transaction_enqueue e
 where t.start_date <= sysdate - interval '100' second     /*查询开始多少秒的事务*/
   and t.addr = s.taddr 
   --and s.sql_child_number = q.CHILD_NUMBER(+) 
   --and s.sql_id = q.sql_id(+) and s.prev_sql_id = q.sql_id(+) 
   and t.addr = e.addr(+) )  
  select ltr.* , (select q1.sql_text from v$sql q1 where ltr.prev_sql_id = q1.sql_id(+)
   and rownum = 1) prev_sql_text , 
  (select q1.sql_text from v$sql q1 where ltr.sql_id = q1.sql_id(+) 
   and ltr.sql_child_number = q1.CHILD_NUMBER(+)) sql_text 
   from ltr ltr;

查看ogg tail file 
https://blog.csdn.net/su377486/article/details/48439755
OGG (http://10.30.3.10:7000/ dbm01) 75> info PROD121
No EXTRACT groups found, but some coordinated threads may have been excluded

REPLICAT   PROD121   Last Started 2019-04-08 11:02   Status RUNNING
Description          ebs_prod  imes_305
INTEGRATED
Checkpoint Lag       00:00:00 (updated 00:07:13 ago)
Process ID           171212
Log Read Checkpoint  File /acfs/ogg181_ms/ogg181_deploy/var/lib/data/p0000000052
                     2019-04-09 11:39:32.621970  RBA 157149067

[oggadmin@dm01dbadm01 bin]$ ./logdump 

Oracle GoldenGate Log File Dump Utility for Oracle
Version 18.1.0.0.0 OGGCORE_18.1.0.0.0_PLATFORMS_180928.0432

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.


 
Logdump 15 >open /acfs/ogg181_ms/ogg181_deploy/var/lib/data/p0000000052
Current LogTrail is /acfs/ogg181_ms/ogg181_deploy/var/lib/data/p0000000052 
Logdump 16 >n

2019/04/09 10:17:09.818.859 FileHeader           Len  1751 RBA 0 
Name: *FileHeader* 
 3000 0319 3000 0008 4747 0d0a 544c 0a0d 3100 0002 | 0...0...GG..TL..1...  
 0006 3200 0004 2000 0000 3300 0008 02f2 ac43 019f | ..2... ...3......C..  
 01eb 3400 0002 0000 3500 0044 3500 0040 003e 7572 | ..4.....5..D5..@.>ur  
 693a 737a 6578 6164 6261 646d 3031 3a73 6363 3a63 | i:szexadbadm01:scc:c  
 6f6d 3a3a 6163 6673 3a6f 6767 3138 315f 6d73 3a6f | om::acfs:ogg181_ms:o  
 6767 3138 315f 6d61 3a62 696e 3a50 524f 4431 3231 | gg181_ma:bin:PROD121  
 3600 000d 000b 7030 3030 3030 3030 3035 3237 0000 | 6.....p00000000527..  
 
Logdump 17 >pos 157149067
Reading forward from RBA 157149067 
Logdump 18 >n

2019/04/09 11:39:24.271.179 Insert               Len   852 RBA 157149067 
Name: BOM.BOM_OPERATION_SEQUENCES  (TDR Index: 3) 
After  Image:                                             Partition 12   G  b   
 0000 0c00 0000 0800 3530 3331 3039 3338 0100 0a00 | ........50310938....  
 0000 0600 3838 3931 3934 0200 0700 0000 0300 3132 | ....889194........12  
 3803 0015 0000 0032 3031 392d 3034 2d30 393a 3131 | 8......2019-04-09:11  
 3a34 313a 3538 0400 0800 0000 0400 3934 3834 0500 | :41:58........9484..  
 1500 0000 3230 3139 2d30 342d 3039 3a31 313a 3431 | ....2019-04-09:11:41  
 3a35 3806 0008 0000 0004 0039 3438 3407 000c 0000 | :58........9484.....  
 0008 0036 3431 3731 3630 3008 000a 0000 0006 0036 | ...64171600........6  
   
Logdump 19 >


根据sql_id查看执行计划
select * from table(dbms_xplan.display_awr('crjz1p1v2ys7d'));

查看sql的执行计划次数
SELECT distinct
s.snap_id ,
s.instance_number,
PLAN_HASH_VALUE,
_char(s.BEGIN_INTERVAL_TIME,'mm/dd/yy_hh24mi')|| _char(s.END_INTERVAL_TIME,'_hh24mi') Date_Time,
SQL.executions_delta,
SQL.buffer_gets_delta/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_lio,
--SQL.ccwait_delta,
(SQL.cpu_time_delta/1000000)/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_cputime_s ,
(SQL.elapsed_time_delta/1000000)/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_etime_s,
SQL.DISK_READS_DELTA/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_pio,
SQL.rows_processed_tal/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_row,
SQL.sql_profile
FROM
dba_hist_sqlstat SQL,dba_hist_snapshot s
WHERE
SQL.dbid =(select dbid from v$database)
and s.snap_id = SQL.snap_id
and sql.instance_number = s.instance_number 
AND sql_id in ('&sql_id')
order by s.snap_id;


查询数据库中多少分钟前到现在cpu较高的十条sql
select * from (
select
     ash.SQL_ID , ash.SQL_PLAN_HASH_VALUE Plan_hash, aud.name type, 
     sum(decode(ash.session_state,'ON CPU',1,0))     "CPU", 
     sum(decode(ash.session_state,'WAITING',1,0))    - 
     sum(decode(ash.session_state,'WAITING', decode(wait_class, 'User I/O',1,0),0))    "WAIT" , 
     sum(decode(ash.session_state,'WAITING', decode(wait_class, 'User I/O',1,0),0))    "IO" , 
     sum(decode(ash.session_state,'ON CPU',1,1))     "TAL" 
from v$active_session_hisry ash, 
     audit_actions aud 
where SQL_ID is not NULL 
   and ash.sql_opcode=aud.action 
   and ash.sample_time > sysdate - &minutes /( 60*24) 
group by sql_id, SQL_PLAN_HASH_VALUE   , aud.name 
order by sum(decode(session_state,'ON CPU',1,1))   desc 
) where  rownum < 10;


dba_hist_active_sess_hisry去查看某段时间的等待事件
http://eedc1623.wiz03.com/share/s/3KT1oz3W0AIu2mX0kJ2Qya8P2XkfRq1kKACt25979z3EqkL5
如何通过dba_hist_active_sess_hisry分析数据库历史性能问题
select t.lv,
       t.iscycle,
       t.dbid,
       t.sample_id,
       t.sample_time,
       t.instance_number,
       t.session_id,
       t.sql_id,
       t.session_type,
       t.event,
       t.seq#,
       t.session_state,
       t.blocking_inst_id,
       t.blocking_session,
       t.blocking_session_status,
       t.c blocking_session_count
  from (select t.*,
               row_number() over(partition by dbid, instance_number, sample_time order by c desc) r
          from (select t.*,
                       count(*) over(partition by dbid, instance_number, sample_time, session_id) c,
                       row_number() over(partition by dbid, instance_number, sample_time, session_id order by 1) r1
                  from (select /*+ parallel 8 */
                         level              lv,
                         connect_by_isleaf  isleaf,
                         connect_by_iscycle iscycle,
                         t.*
                          from (select * from dba_hist_active_sess_hisry where SAMPLE_TIME between _TIMESTAMP ('&time_begin', 'YYYY-MM-DD HH24:MI:SS') and _TIMESTAMP ('&time_end', 'YYYY-MM-DD HH24:MI:SS')) t
                         start with blocking_session is not null
                        connect by nocycle
                         prior dbid = dbid
                               and prior sample_time = sample_time
                                  /*and ((prior sample_time) - sample_time between interval '-1'
                                  second and interval '1' second)*/
                               and prior blocking_inst_id = instance_number
                               and prior blocking_session = session_id
                               and prior
                                    blocking_session_serial# = session_serial#) t
                 where t.isleaf = 1) t
         where r1 = 1) t
 where r < 3
 order by dbid, sample_time, r;
 
 
 PARALLEL_MAX_SERVERS
 https://blog.csdn.net/scliu/article/details/82322184

10.2.0.1升级到10.2.0.5
https://blog.csdn.net/imliuqun123/article/details/79160055

screen -S psy 开启

ctrl+a+d 退出

screen -ls查看

screen -r 进程号  进入

kill -9 进程号 杀掉窗口

screen -wipe 清理连接不上的窗口

LOB字段是Oracle数据库用于存储大数据对象的字段类型,包括BLOB、CLOB、NLOB、BFILE;
当LOB字段大小超过4k时,数据库会单独为该LOB字段分配额外的BLOB Segments存储BLOB对象,存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,所以对于大于4kb的lob字段更新效率非常低;
被删除或更新的BLOB字段所占用空间不会自动批量回收,当所在表有大量的删除、更新操作时,BLOB所在Segments会迅速耗尽空间,新的INSERT需要空间时,会在高水位线上加锁后,回收曾使用但已经过期的BLOB空间,由于该操作效率很低,此时数据库就会有大量的‘enq:HW – contention’等待,相关SQL会由于该等待而串行执行,业务受影响十分严重。因此LOB字段不适合在有大批量删除、更新操作的并发场合使用;

 rpm -q redhat-release
 
 
 
 run

{

allocate channel c1 type disk;

allocate channel c2 type disk;

backup database format  '/home/oracle/rman_back/full_%n_%T_%t_%s_%p.bak';

sql 'alter system archive log current';

backup archivelog all format '/home/oracle/rman_back/arch_%d_%T_%s_%p.bak' delete input;

backup current controlfile format '/home/oracle/rman_back/ctl_%d_%T_%s_%p.bak';

release channel c1;

release channel c2;

}


OGG入门--产生lag超时,查询历史超长事务的方法
https://www.cnblogs.com/dayu-liu/p/9562198.html


OGG复制进程延迟处理思路与方法
http://www.sohu.com/a/146441785_99890213


OGG replicat复制进程的拆分

https://blog.csdn.net/datingting1/article/details/79583690

select * from v$pwfile_users; 密码文件信息

查看数据库所有表及其字段名
select table_name,column_name from dba_tab_columns where table_name in('SCC_WIPLOCK_HISRY') and owner in ('SCCMES')

stats REPLICAT PORD102 , daily, table  ERP.PLAN_DEPTPOWER 
stats REPLICAT PORD102 , hourly, table ERP.BOM_STRUCTURES_B
stats REPLICAT PORD102 , tal, table  ERP.CST_ITEM_COSTS 
stats REPLICAT  PORD102,table ERP.PLAN_DEPTPOWER


查看操作系统版本
 lsb_release -a
 
 sql server 查看无效索引
 SELECT OBJECT_ID,OBJECT_NAME(i.[object_id]) AS tableName, NAME, i.is_disabled 
FROM sys.indexes AS i WHERE i.[object_id]=OBJECT_ID('dbo.Person')

nagios软件地址

\\vdi0057\D\2019-03-11桌面\nagios

select timestamp__scn(_date('2019-05-17,03:30:59','yyyy-mm-dd,hh24:mi:ss')) scn from dual;


 select _char(scn__timestamp(13248975561522))from dual;
 
 
SQL> alter session set container=DBM011PDB4;

Session altered.

SQL> ALTER PLUGGABLE DATABASE OPEN ;

Oracle 根据SQLID查询绑定变量的传入值
select b.NAME,
       b.POSITION,
       b.DATATYPE_STRING,
       b.VALUE_STRING,
       b.LAST_CAPTURED
  from v$sql_bind_capture b
 where b.sql_id = '7npujs1a1msdd';
--查询当前

select b.name, b.datatype_string, b.value_string, b.last_captured
  from dba_hist_sqlbind b
 where b.sql_id = 'd01huhnwwf5rx'
 order by 4;
--查询历史

srvctl sp  database -d dbm01(未删除)

srvctl sp  database  -d arch(未删除)

conn apps/AppsPa55w0rd
@/home/oraprod/fu/20190402/glbalfix.sql
SCC_LEDGER  (A开头的 )
05-19
SN23050

WX2_LEDGER  (D开头的)
WX_LEDGER   B开头
NT_LEDGER   E开头
Y是只读,N是写


conn apps/AppsPa55w0rd
@/home/oraprod/fu/20190402/glbalfix.sql
WX2_LEDGER
05-19
SN23050


rpm 源
z
http://archive.kernel.org/cens-vault


ping -l 10.10.1.156 10.10.111.7

列的选择性

select a.column_name,
    b.num_rows,
    a.num_distinct Cardinality,
    round(a.num_distinct/b.num_rows*100,2) selectivity,
    a.hisgram,
    a.num_buckets
from dba_tab_col_statistics a,dba_tables b
where a.owner=b.owner
  and a.table_name=b.table_name
  and a.owner='&owner'
  and a.table_name='&table_name';
http://blog.itpub.net/31485142/viewspace-2154488/

select count(distinct column_name) from table_name;

exec DBMS_WORKLOAD_REPOSIRY.CREATE_SNAPSHOT();

10.10.110.1
su - oggadmin
cd /acfs/ogg181_ms/ogg181_ma/bin
./adminclient
connect http://10.10.111.1:7000/ deployment PROD as oggadmin password @dminc0ntr0l

solaris服务启动
 察看sendmail这个服务的状态

# svcs sendmail
# svcs -l sendmail

关闭sendmail这个服务

# svcadm disable sendmail

启动sendmail这个服务

# svcadm enable sendmail

重新启动sendmail这个服务

# svcadm restart sendmail


svcadm restart svc:/network/nrpe/tcp:default


二、勒索病毒防范及处理措施

    勒索病毒种类较多,以今天电子邮件中的勒索病毒为例,相关防范措施如下:
     1、发件箱后缀末尾为“ .casa ”,一律拒收(由IT邮件管理员进行系统设置)或删除,并清空邮箱的“废纸篓”;
        
     2、不明邮件带有附件或链接,切勿点击,除非核实清楚邮件来源;

     3、邮件内容可能会仿冒可信的公司或机构,伪造一些用户感兴趣的内容吸引收件人的关注和操作,收件人应保持警惕,可疑邮件应联系相关方核实;

     4、一旦中招,立即断网或关机(云桌面),避免病毒通过网络传染至其他用户,然后联系IT处理。
     
ebs环境:
bom.bom_operation_sequences   (1万2千行数据)

alter table scc.scc_wip_issue_pr_line enable row movement;  --1秒
alter table scc.scc_wip_issue_pr_line shrink space;      --114mi --114分钟

SQL>  create user nagios identified by qweasdqazwsx123;

User created.

SQL> grant dba  nagios;


sql 传参数
https://blog.csdn.net/leshami/article/details/8646381

windows共享
(1、共享ip: 在开始-运行中敲两个反斜线ip地址)

asm磁盘空间查看

SELECT SUM(usable_file_mb) AS avail,
           SUM(tal_mb) AS tal,
           round((sum(tal_mb) - SUM(usable_file_mb)) / SUM(tal_mb), 4) * 100 AS pre
  FROM v$asm_diskgroup
GROUP BY substr(name, 1, length(name) - 1);

Usable_file_MB为安全剩余可用空间


安全检查
\\gaea\终端信息安全管理\质量与流程IT部\深圳

AK00416757

AK00416757
Shennan Circuits Co., Ltd

cellcli -e "alter cell snmpSubscriber='"

dbmcli -e "alter dbserver snmpSubscriber='"

declare
type v_rowid is table of varchar2(100) index by binary_integer;
var_rowid v_rowid;
cursor v_cur is 
select rowid from PU_MODEL.TB_MTL_MATERIAL_TRANSACTIONS;
begin
open v_cur;
loop
fetch v_cur bulk collect
  in var_rowid limit 5000;
  forall i in 1 .. var_rowid.count
  insert in PU_MODEL.test0819 select * from PU_MODEL.TB_MTL_MATERIAL_TRANSACTIONS where rowid = var_rowid(i);
  commit;
  exit when v_cur%notfound or v_cur%notfound is null;
  end loop;
  close v_cur;
  end;
  
select * from dba_free_space where tablespace_name = 'BIDWD' order by bytes desc;


表空间碎片率

方法一:
select a.tablespace_name,sqrt(max(a.blocks)/sum(a.blocks))*(100/sqrt(sqrt(count(a.blocks)))) FSFI
from dba_free_space a,dba_tablespaces b
where a.tablespace_name=b.tablespace_name
and b.contents not in ('TEMPORARY','UNDO')
group by a.tablespace_name 
order by 2;
数字越小,表空间碎片较多,当小于30%的时候说明碎片程度很可观了。


方法二.查看dba_free_space

dba_free_space 显示的是有free 空间的tablespace,如果一个tablespace的free 空间不连续,
那每段free空间都会在dba_free_space中存在一条记录。如果一个tablespace 有好几条记录,
说明表空间存在碎片,当采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理。

SELECT a.tablespace_name, COUNT (1) 碎片量
FROM dba_free_space a, dba_tablespaces b
WHERE a.tablespace_name = b.tablespace_name
AND b.contents NOT IN ('TEMPORARY', 'UNDO', 'SYSAUX')
GROUP BY a.tablespace_name
HAVING COUNT (1) > 20
ORDER BY 2;

当插入一定量的数据后表空间总量还有剩余但是数据插入报错ora01653,通过下面的语句可看到连续free的空间变得很小
select * from dba_free_space where tablespace_name = 'BIDWD' order by bytes desc;


-- 查看碎片程度高的表
  SELECT segment_name table_name , COUNT(*) extents 
    FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name 
    HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);
    


    
    
--查看前25张高碎片的表
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
col owner for a10;
col table_name for a30;
select *
  from (SELECT owner,
               table_name,
                ROUND((blocks * 8),2)  "高水位空间 k",
               ROUND((num_rows * avg_row_len / 1024),2) "真实使用空间 k",
               ROUND((blocks * 10 / 100) * 8,2) "预留空间(pctfree) k",
                ROUND((blocks * 8),2) - ROUND((num_rows * avg_row_len / 1024),2) "浪费空间 k",
               (ROUND((blocks * 8),2) - ROUND((num_rows * avg_row_len / 1024),2))/ROUND((blocks * 8),2)*100 "浪费比例%"
          FROM dba_tables
         WHERE temporary = 'N' and owner='APPS'
           and (blocks * 8 - (num_rows * avg_row_len / 1024) - blocks * 8 * 10 / 100) is not null
         ORDER BY 6 desc)
 where rownum < 25;
 
 查看表上次收集统计信息收集统计信息时间
select table_name,last_analyzed from dba_tables where table_name = 'BPMSYSAPPLOGACL';

select max(last_analyzed) from dba_tables where owner='数据中心用户名';

begin
dbms_stats.gather_schema_stats( 
ownname=> 'SHIYANGHJ' , 
cascade=> TRUE, 
estimate_percent=> 100, 
degree=> 32,             
no_invalidate=> DBMS_STATS.AU_INVALIDATE, 
granularity=> 'AU', 
method_opt=> 'FOR ALL COLUMNS SIZE AU', 
options=> 'GATHER');
end;
/

查看统计信息收集情况
set linesize 140
col WINDOW_NAME format a17
col REPEAT_INTERVAL for a55
col DURATION for a15
select t1.window_name,t1.repeat_interval,t1.duration from 
 dba_scheduler_windows t1,dba_scheduler_wingroup_members t2  
 where t1.window_name=t2.window_name 
  and t2.window_group_name 
  in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');


查看某个用户下所有表的最新更新时间:
select max(last_analyzed) from dba_tables where owner='EAS01';

analyze table  T_AP_OTHERBILL compute statistics;

analyze table  T_AP_OTHERBILLentry compute statistics;

收集整个 Schema 中对象的统计信息

SQL> exec dbms_stats.gather_schema_stats(ownname=>'BPM');

收集某个 table 中对象的统计信息
exec dbms_stats.gather_table_stats(ownname=>'APPS',tabname=>'SCC_DEMANDS',estimate_percent=>100);
exec dbms_stats.gather_table_stats(ownname=>'META',tabname=>'EMP',estimate_percent=>10,method_opt=>'for all indexed columns');


exec dbms_stats.gather_table_stats('SNTMS','TMS_TALLY_SUMMARY',method_opt =>'for columns (SHIP_DATE)');

–收集index信息
EXEC DBMS_STATS.gather_index_stats('SCOTT', 'EMPLOYEES_PK');
EXEC DBMS_STATS.gather_index_stats('SCOTT', 'EMPLOYEES_PK', estimate_percent => 15);


TMS_TALLY_SUMMARY
"TMSTALLYSU0_"."SHIP_DATE"<=:2 AND "TMSTALLYSU0_"."SHIP_DATE">=:1)


select owner,table_name,last_analyzed from dba_tables where table_name  in('TMS_PRODUCT_CONFIG','TMS_TALLY_SUMMARY') 'SCHEMA_NAME'    ;


SNTMS

https://blog.51c.com/fengfeng688/1955137
-- 整理表,不影响DML操作
SQL> alter table TABLE_NAME enable ROW MOVEMENT;--启动行移动功能
SQL> alter table TABLE_NAME shrink space compact;  --只整理碎片 不回收空间
-- 重置高水位,此时不能有DML操作
SQL> alter table TABLE_NAME shrink space; --整理碎片并回收空间,并调整水位线。业务少时执行
SQL> alter table TABLE_NAME disable ROW MOVEMENT;--关闭行移动
也可以一步到位:
alter table TABLE_NAME shrink space; 
shrink 的优势:
    不需要重建索引。
    可以在线操作。 
不需要空闲空间,alter move需要跟当前表一样大小的空闲空间。
注意:
segment shrink执行的两个阶段:
1、数据重组(compact):
通过一系列insert、delete操作,将数据尽量排列在段的前面。在这个过程中需要在表上加RX锁,即只在需要移动的行上加锁。
由于涉及到rowid的改变,需要enable row movement.同时要disable基于rowid的trigger.这一过程对业务影响比较小。
2、HWM调整:第二阶段是调整HWM位置,释放空闲数据块。
此过程需要在表上加X锁,会造成表上的所有DML语句阻塞。在业务特别繁忙的系统上可能造成比较大的影响。
注意:shrink space语句两个阶段都执行。
shrink space compact只执行第一个阶段。
如果系统业务比较繁忙,
可以先执行shrink space compact重组数据,然后在业务不忙的时候再执行shrink space降低HWM释放空闲数据块


报警:
Service check timed out after 60.00 seconds
警告原因:nrpe进程执行某些脚本大于60秒钟,默认10秒钟。
分析:可能是脚本自身执行时间较长,也可能链路造成返回时间较长。如果检查服务器正常,可以将阀值调高点。
修改监控端/usr/local/nagios/etc/objects/commands.cfg文件

#check nrpe
define command{
        command_name check_nrpe
#      command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 60
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 70
        }

将60调高为70(修改后,对所有的被监控服务器生效;有待寻找对单个被监控服务器生效的办法)
/etc/init.d/nagios restart 重启服务


查询oracle正在执行的sql以及session
select
substr(s.username,1,18) username,
s.sid,s.serial#,s.machine,y.sql_text
from v$session s,v$process p,v$transaction t,v$rollstat r,v$rollname n,v$sql y
where s.paddr = p.addr
and s.taddr = t.addr (+)
and t.xidusn = r.usn (+)
and r.usn = n.usn (+)
and s.username is not null
and s.sql_address=y.address
--and s.sid=56
order by s.sid,s.serial#,s.username,s.status

查询oracle正在执行的资源
查看各种锁

 SELECT 'Lock' "Status",
a.username "用户名", a.sid "SID", a.serial# "SERIAL#",
b.type "锁类型",
DECODE(b.lmode, 1, 'No Lock', 2, 'Row Share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', 'NONE') "占用的模式",
DECODE(b.request, 1, 'No Lock', 2, 'Row Share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', 'NONE') "请求的模式",
c.object_name "对象名",
c.owner "对象所有者", c.object_type "对象类型",
b.id1 "资源ID1", b.id2 "资源ID2",b.ctime "ctime(秒) ",
'ALTER SYSTEM KILL SESSION '''||a.sid||','||a.serial#||''';' "kill Session ",
'kill -9 '||d.spid "Kill Process (Unix Linux)", 
'orakill '||f.instance_name||' '||d.spid "Kill Process (Windows)" 
FROM v$session a, v$lock b, v$locked_object b1, dba_objects c, v$process d, v$instance f
WHERE a.type <> 'BACKGROUND'
AND a.sid = b.sid
AND b.request = 0
AND d.addr = a.paddr
AND b1.session_id = a.sid
AND b1.object_id = c.object_id
AND f.status = 'OPEN'
AND f.database_status = 'ACTIVE'
--and b.type='TM'
order by b.ctime 

curl -T D:\data\bigfile.tar -u MOSuserID@company.com https://transport.oracle.com/upload/ep/issue/3-xxxxxx 
D:\data\bigfile.tar  --> 您需要上传的附件 
MOSuserID@company.com  --> mos账号 
3-xxxxxx  --> SR编号


您好,


数据库内存参数调小后,free -m查看可用内存还是跟原来一样,内存没有释放

一体机(exadata)rac环境数据库内存参数sga由32G调整到16G,pga由8G调整到6G有,free -m查看可用内存还是跟原来一样

Best regars
符礼龄
深南电路 

在输出时,控制输出结果的缓冲大小由DBMS_OUTPUT.ENABLE控制,buffer size默认为20000,每行最大的限制是32k,后面的一个例子是用来说明存储过程是在缓存了所有数据后才将结果返回。所以当我们使用游标进行输出时,如果结果很多,将会超过这个值报ORA-20000, ORU-10027: Buffer overflow, limit of <buf_limit> bytes这个错误
解决方法:
在存储过程begin后面加 : DBMS_OUTPUT.ENABLE (buffer_size=>null) 表示没有限制


tracert -d 10.30.3.10
/AppsPool/prod/inst/conc/log


ogg常见报错:
2019-09-19 16:36:09  ERROR   OGG-00212  Invalid option for MAP: map.
原因:参数文件,和target之间没有空格。或结尾缺少分号


EBS 克隆,密码大小写敏感导致白屏或报错 HTTP error 500 Internal server error
 sec_case_sensitive_logon = FALSE
 
 
根据sid查看正在执行的SQL


select sql_text from v$sqlarea where (hash_value,address)=(select sql_hash_value,sql_address from v$session where sid='242');

SELECT b.sid oracleID,  
       b.username 登录Oracle用户名,  
       b.serial#,  
       spid 操作系统ID,  
       paddr,  
       sql_text 正在执行的SQL,  
       b.machine 计算机名  
FROM gv$process a, gv$session b, gv$sqlarea c  
WHERE a.addr = b.paddr  
   AND b.sql_hash_value = c.hash_value  and b.sid in ('','')
   
ebs日志
http://blog.sina.com.cn/s/blog_4ca242030100o8se.html

清空回收站

select count(1) from dba_recyclebin
purge dba_recyclebin;
 
 
oracle时间和scn转化
select timestamp__scn(_date('2019-09-26,10:00:00','yyyy-mm-dd,hh24:mi:ss'))scn from dual;
select scn__timestamp(13293455394983) time from dual;


Oracle GoldenGate OGG 报错汇总
https://www.jianshu.com/p/93db64520609

linux清除缓存:需要root权限
$ sync
$ echo 3 >/proc/sys/vm/drop_caches

上面的echo 3 是清理所有缓存

echo 0 是不释放缓存

echo 1 是释放页缓存

ehco 2 是释放dentries和inodes缓存

echo 3 是释放 1 和 2 中说道的的所有缓存


alter package apps.SCC_WSMLBJ_PRV_PKG compile body;
alter package apps.WSMPLBMI compile body;
alter package apps.WSMPOPRN compile body;
alter procedure JLTESTC.P_T_HR_SALARYLIST compile;
ALTER FUNCTION HLNEW2.IN_LIST COMPILE;
alter  view view_name compile;

ntp时间同步
http://www.heminjie.com/system/linux/6477.html

怎么压缩表空间
create tablespace movetbs datafile '+DATAC1' size 32767m;

ALTER USER BOM QUOTA UNLIMITED ON movetbs;   #用户必须在该表空间有配额

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SELECT _date(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual;
ALTER SESSION enable PARALLEL DML;
ALTER SESSION enable PARALLEL DDL;
set timing on
PROMPT Moving BOM.BOM_REFERENCE_DESIGNARS
alter table BOM.BOM_REFERENCE_DESIGNARS move tablespace APPS_TS_TX_IDX parallel (degree 10);
PROMPT Resring BOM.BOM_REFERENCE_DESIGNARS
alter table BOM.BOM_REFERENCE_DESIGNARS move tablespace APPS_TS_TX_DATA parallel (degree 10);

PROMPT Rebuild index BOM.BOM_REFERENCE_DESIGNARS_U1
alter index BOM.BOM_REFERENCE_DESIGNARS_U1 rebuild parallel (degree 10) online nologging  compute statistics;
alter index BOM.BOM_REFERENCE_DESIGNARS_U1 logging parallel (degree 1);

PROMPT Rebuild index SCC.SCC_BOM_REFERENCE_DESI_N1
alter index SCC.SCC_BOM_REFERENCE_DESI_N1 rebuild parallel (degree 10) online nologging  compute statistics;
alter index SCC.SCC_BOM_REFERENCE_DESI_N1 logging parallel (degree 1);
 
 
查看某个表的唯一索引有哪些字段
notepad 替换 (回车替换为')
\r\n替换为'\n

删除创建表空间
create  tablespace APPS_TS_TX_DATA     datafile  '/db-file/srmprod/apps_ts_tx_data01.dbf' size 10240m auextend on;
alter   tablespace APPS_TS_TX_DATA   add  datafile  '/db-file/srmprod/apps_ts_tx_data02.dbf' size 10240m auextend on;

create  tablespace APPS_TS_TX_IDX     datafile  '/db-file/srmprod/apps_ts_tx_idx01.dbf' size 10240m auextend on;
alter   tablespace APPS_TS_TX_IDX   add  datafile  '/db-file/srmprod/apps_ts_tx_idx02.dbf' size 10240m auextend on;

drop tablespace  TBS_SRM_DATA  including contents and datafiles;
drop tablespace  TBS_SRM_IDX  including contents and datafiles;


使用配额
alter user apps quota unlimited on APPS_TS_TX_IDX;
alter user apps quota unlimited on APPS_TS_TX_DATA;


imp导入数据
SQL>  select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL> 

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

imp apps/appssrm file=prod_T.dmp full=y log=prod_T.dmp.log

修改用户默认表空间
ALTER USER biuser DEFAULT TABLESPACE TS_SCC_EKPTEST;

drop user apps cascade;
create user apps identified by appssrm;
alter user apps quota unlimited on APPS_TS_TX_IDX;
alter user apps quota unlimited on APPS_TS_TX_DATA;
ALTER USER apps DEFAULT TABLESPACE APPS_TS_TX_DATA;
grant dba  apps;
grant connect  apps;
connect apps/appssrm;


@/home/oracle/fu/20191127/FUN_prod.sql
@/home/oracle/fu/20191127/prod_S.sql
@/home/oracle/fu/20191127/prod_T.sql
@/home/oracle/fu/20191127/VIEW_prod.sql

imp导入数据
SQL>  select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

SQL> 

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

imp apps/appssrm file=prod_T.dmp full=y log=prod_T.dmp.log

http://uat2.scc.com:8014   applarch8    archtest   /backup_01/uat8/
http://uat2.scc.com:8003/  appluat6     uatscc     /backup_01/uat6/                                      
http://uat2.scc.com:8005   appluat7     query       /backup_01/uat7/


oracle psu
2118136.2

112030


    
Hello Liling, 

Here are the steps  download the Patch set from MOS. 

Please Log in  MOS i.e. https://support.oracle.com 
A. If you have the patch number. 
1. Select the Patches and Update tab after logging in  MOS. 
2. Click on Number/Name or Bug Number (Simple) 
3. Enter the patch number() & select the platform 
4. Click Search 
5. Click Download  download the patch. 

Patch # 10404530 
Description :11.2.0.3.0 PATCH SET FOR ORACLE DATABASE SERVER 

Patch # 13390677 
Description: 11.2.0.4.0 PATCH SET FOR ORACLE DATABASE SERVER 

If your not able  download the same. Kindly let us know the valid justification So that we can provide the patch on a SFTP path. 

For any Compatible or Certification issues we would request you  contact technical team. 

Note:- Oracle Database patch set, release 11.2.0.3 is a full installation of the Oracle Database software. 

This means that you do not need  install Oracle Database 11g Release 2 (11.2.0.1) before installing Oracle Database 11g Release 2 (11.2.0.3). 

This patchset has been superseded. Please see the reason stated below. 

Reason for Superseding 

The error correction for 11.2.0.3.0 Patch Set has expired. Oracle recommends upgrading  Database Patch Set release 11.2.0.4. 

Documentation for more details on Database releases and availability of 11.2.0.4 Patch Set : - Release Schedule of Current Database Releases( Doc ID 742060.1 ) 

- Database, FMW, EM Grid Control, and OCS Software Error Correction Support Policy ( Doc ID 209768.1 ) - 11.2.0.4 Patch Set - Availability and Known Issues ( Doc ID 1562139.1 ) 

Note: The most recent replacement for this patch is 13390677. 

If you are downloading patchset 10404530 because it is a prerequisite for another patch or patchset, you should verify whether or not 13390677 is suitable as a substitute prerequisite before downloading it. 

Oracle Database patch set, release 11.2.0.4 is a full installation of the Oracle Database software. This means that you do not need  install Oracle Database 11g Release 2 (11.2.0.1) before installing Oracle Database 11g Release 2 (11.2.0.4). 

Note:- Please be informed that we have processed your request with available Language,platform And media pack. 

Note :- As per our understanding we have shared the media pack. Revert back if you require any other media pack. 


oracle 12c 容器数据库data guard
https://blog.csdn.net/shiyu1157758655/article/details/79867838

oracle 12c rac查看密码文件位置:
srvctl config database -d dbm01 -a
srvctl config database -d MES -a

临时表空间
temp表空间无法扩展
https://blog.csdn.net/yingdovezuo/article/details/86471691
https://blog.csdn.net/yingdovezuo/article/details/86471691
查询单次数据量超过34424509440的sql

select *
from
(
select INSTANCE_NUMBER iid,
_char(SAMPLE_TIME,'mmdd hh24:mi:ss') SAMPLE_TIME,
_char(SQL_EXEC_START,'mmdd hh24:mi:ss') SQL_EXEC_START,
SESSION_ID sess,
SESSION_SERIAL# serial#,
machine,
snap_id,
--program,
--XID,
--event,
sql_id,
--t.snap_id
round(TEMP_SPACE_ALLOCATED/1024/1024/1024) GB,
round(TEMP_SPACE_ALLOCATED/1024/1024)-lag(round(TEMP_SPACE_ALLOCATED/1024/1024),1,0) over (partition by INSTANCE_NUMBER,SESSION_ID,SESSION_SERIAL#,machine,program,SQL_EXEC_START order by SAMPLE_TIME)  diff
from dba_hist_active_sess_hisry  t 
 where 
 SAMPLE_TIME between _TIMESTAMP ('2019-12-11 03:00:00', 'YYYY-MM-DD HH24:MI:SS') and _TIMESTAMP ('2019-12-12 11:00:00', 'YYYY-MM-DD HH24:MI:SS')
--and sql_id ='dx4nqvbtu06bx'
and TEMP_SPACE_ALLOCATED >=34424509440
order by INSTANCE_NUMBER,SAMPLE_TIME,SQL_EXEC_START
)
where  diff >=1 order by GB desc;


nagios监控data guard
https://blog.csdn.net/iteye_16695/article/details/82446920


数据库及patch包下载地址
Doc ID 2118136.2

Admin12cr2
spc
spcszsub

Admin12cr2

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office

office 
7CG7D-XC373-GYJVG-J3CGK-7YM6Z


nagios监控备份
https://blog.csdn.net/cuanxixia1496/article/details/100458089
https://blog.csdn.net/yanggd1987/article/details/62884119

查看rac中vip的名字,ip,网卡信息
 ./srvctl config vip -n rac1
 
查看rac中scan ip
srvctl config scan
 
 
 
 
create user biuser identified by biuser123;
great create view  biuser;
grant select any table  biuser;
grant connect  biuser;
GRANT CREATE ANY PROCEDURE  biuser;


一体机ilom命令
https://docs.oracle.com/cd/E95134_01/index.html

添加路由信息。
/sbin/route add -host 10.10.90.65 gw 10.10.110.254


发博文,注明出处。
Linux/Unix shell 参数传递到SQL脚本
https://blog.csdn.net/leshami/article/details/8646381

查看表大小(包含索引和lob字段)
--不包括系统表格
select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
        union
        select s.owner,
               l.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
        union
        select s.owner,
               i.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
        union
        select s.owner,
               p.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name)  
       where  owner not in ('SCOTT',
'ORACLE_OCM',
'OJVMSYS',
'SYSKM',
'XS$NULL',
'GSMCATUSER',
'MDDATA',
'SYSBACKUP',
'DIP',
'SYSDG',
'APEX_PUBLIC_USER',
'SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR',
'GSMUSER',
'AUDSYS',
'FLOWS_FILES',
'DVF',
'MDSYS',
'ORDSYS',
'DBSNMP',
'WMSYS',
'APEX_040200',
'APPQOSSYS',
'GSMADMIN_INTERNAL',
'ORDDATA',
'CTXSYS',
'ANONYMOUS',
'XDB',
'ORDPLUGINS',
'DVSYS',
'SI_INFORMTN_SCHEMA',
'OLAPSYS',
'LBACSYS',
'OUTLN',
'SYSTEM',
'SYS')
 group by owner, table_name
 order by sum(size_m) desc
 
 
--包括系统表
select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
        union
        select s.owner,
               l.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
        union
        select s.owner,
               i.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
        union
        select s.owner,
               p.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name ) and owner='EAS86'
 group by owner, table_name
 order by sum(size_m) desc
 
 
 
 

查单个表大小:
SELECT TABLE_NAME, ROUND(SUM(BYTES)/1024/1024/1024,2) AS TABLESIZE_GBytes  FROM (
SELECT  A.OWNER,A.TABLE_NAME,A.ALLSEGMENT,B.SEGMENT_TYPE,B.BYTES  FROM (
           SELECT OWNER,OWNER||'.'||TABLE_NAME AS TABLE_NAME,  TABLE_NAME allsegment  FROM DBA_TABLES  WHERE OWNER='RJKD' AND TABLE_NAME='T_BAS_ATTACHMENT'
           UNION
           SELECT OWNER,OWNER||'.'||TABLE_NAME AS TABLE_NAME  , INDEX_NAME FROM DBA_INDEXES WHERE  OWNER='RJKD' AND TABLE_NAME='T_BAS_ATTACHMENT'
           UNION
           SELECT OWNER,OWNER||'.'||TABLE_NAME AS TABLE_NAME ,SEGMENT_NAME FROM DBA_LOBS WHERE  OWNER='RJKD' AND TABLE_NAME='T_BAS_ATTACHMENT' ) A,DBA_SEGMENTS B where a.OWNER='RJKD' and b.owner='RJKD'  
           and a.owner=b.owner and  allsegment=b.SEGMENT_NAME ) TABLESIZE   GROUP BY TABLE_NAME; 


12c adg 主库归档删除告警:RMAN-08137
http://www.bubuko.com/infodetail-2587180.html 

select * from apps.org_organization_definitions  t where t.ORGANIZATION_ID=327 库存组织id对应库存组织代码

why
why

--某个包被锁住导致无法编译
SELECT s.CLIENT_IDENTIFIER,s.status ,s.sid, s.serial#
  FROM gv$session s, sys.v_$access t
 WHERE t.object = upper('Scc_So_Online_Request_For_Plan')
   AND s.sid = t.sid;
   
SELECT 

s.SID,
s.MACHINE,
s.PROCESS,
s.SERIAL#,
s.CLIENT_IDENTIFIER,
s.MODULE,
s.LOGON_TIME,
s.STATUS,
s.ACTION
  FROM v$session s, sys.v_$access t
 WHERE t.object = upper('SCC_SO_ONLINE_REQUEST_FOR_PLAN')
   AND s.sid = t.sid;

备库设置为读写模式:
Doc ID 805438.1 (10g及以上)
Doc ID 443720.1 (11g及以上)

set autrace的选项和计划报告的属性
http://blog.itpub.net/28878983/viewspace-2136001/
SQL>set autrace trace explain
--查看索引名字
SELECT INDEX_NAME,INDEX_TYPE FROM DBA_INDEXES WHRE TABLE_NAME='';
--查看索引键
select index_name,column_name,COLUMN_POSITION  from dba_ind_columns where table_name='';

create pluggable database IWMS_TEST FROM IMES102_UAT1 FILE_NAME_CONVERT = ('IMES102_UAT1', 'IWMS_TEST'); 如果该命令报错ORA-65005: missing or invalid file name pattern for file -
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/system.274.947842433就用如下命令

create pluggable database MESEXT_NT_UAT1 FROM IMES122_UAT1 FILE_NAME_CONVERT =('+DATAC1','+DATAC1');

20201125
create pluggable database IMES301_UAT1 FROM IMES302_UAT1 FILE_NAME_CONVERT = ('IMES302_UAT1', 'IMES301_UAT1');
ORA-15173: entry 'IMES301_UAT1' does not exist in direcry 'tszcdb'
ORA-15173: entry 'DATAFILE' does not exist in direcry 'IMES301_UAT1'
 
解决方法:
cd  +DATAC1/TSZCDB/
mkdir IMES301_UAT1
cd +DATAC1/TSZCDB/IMES301_UAT1
mkdir datafile

drop tablespace NNC_DATA03 including contents and datafiles; 
alter tablespace ERP_DATA rename  WMS_DATA; 

主机加入联网ip,但是还是不能上网,检查/etc/resolv.conf的内容 


oracle审计用户查看
http://blog.itpub.net/31438871/viewspace-2199360/

RMAN-08137:
select capture_name, status, captured_scn, applied_scn, capture_type from dba_capture where status='DISABLED';
exec dbms_capture_adm.drop_capture(capture_name =>'xxxx');


或dg参数修改
alter system set "_deferred_log_dest_is_valid" = FALSE scope=both;


restore archivelog sequence 17  thread 1;  恢复归档日志

select  inst_id, RECOVERY_MODE from gv$archive_dest_status --查看是否实时应用(主库、备库都可以查看)
select * from v$dataguard_stats --查看是否延时(备库上检查)

ORA-00031:标记要终止的会话
http://blog.sina.com.cn/s/blog_5ceb51480102w8et.html

select sid,serial#,username,program,machine,status from v$session;

cursor:mutex S导致的load过高的追踪过程详解
https://blog.csdn.net/csdnhsh/article/details/95739551

ORA-00020解决方案
https://www.cnblogs.com/delpy/p/10487278.html


查看对应ip地址
select USER,sid,serial#,UTL_INADDR.GET_host_ADDRESS as host,SYS_CONTEXT('USERENV','ip_ADDRESS') as local,SYSDATE
from V$session;


create tablespace srm_data datafile '/data/srmwy/data/srmwy/srm_data01.dbf' size 10240m AUEXTEND on ;
create tablespace srm_idx datafile '/data/srmwy/data/srmwy/srm_idx01.dbf' size 10240m AUEXTEND on;
create user srm identified by srmwy0427;
grant connect,resource  srm;
alter user srm quota unlimited on srm_data;
alter user srm quota unlimited on srm_idx;
ALTER USER srm DEFAULT TABLESPACE srm_data;
grant UNLIMITED TABLESPACE  srm;


备份相关视图
V$RMAN_BACKUP_JOB_DETAILS
GV$BACKUP_PIECE
GV$BACKUP_SET
V$RMAN_OUTPUT
v$rman_status

SELECT START_TIME,end_TIME,INPUT_TYPE FROM v$RMAN_BACKUP_JOB_DETAILS WHERE  status != 'COMPLETED' and status != 'RUNNING' AND start_time > sysdate-3;

python下载地址
https://www.python.org/ftp/python/

https://www.cnblogs.com/cwp-bg/p/8274379.html
  
rpm -ivh  xxx.rpm --nodeps --force       //rpm包安装冲突解决


修改数据库表结构,导入或导出正式环境数据需张学敏确认

select * from apps.org_organization_definitions  //库存组织代码和库存组织id的对应关系


下面语句清理审计表,释放系统表空间:

sqlplus / as sysdba
truncate table SYS.AUD$;

无锡环境:
wximes223.scc.com=
      (DESCRIPTION= 
            (ADDRESS_LIST=
                (LOAD_BALANCE=YES)
                (FAILOVER=YES)
                (ADDRESS=(PROCOL=tcp)(HOST=wxdbc1-scan.scc.com)(PORT=1521))
            )
            (CONNECT_DATA=
                (SERVICE_NAME=dbm011pdb2.scc.com)
            )
        )

ORA-02449 表中的唯一/主键被外键引用    
https://www.cnblogs.com/cici-new/archive/2013/03/04/2942264.html    
https://www.cnblogs.com/cici-new/archive/2013/03/04/2942264.html    
1.检查哪些表的外键引用了要删除的表的唯一/主键.    SELECT a.constraint_name FROM user_constraints a,user_cons_columns b WHERE a.constraint_type = 'R' AND a.constraint_name = b.constraint_name AND a.table_name = '大写表名字';


      select A.owner,A.constraint_name,a.r_constraint_name
       from dba_constraints A, dba_constraints B
       WHERE b.table_name = 'REV_CONTROLLED_LOB' and b.owner='PCB'     
        and a.constraint_type = 'R'
        and a.r_constraint_name = b.constraint_name;

2.生成所有引用要删除表的外键的创建语句.

      select 'select dbms_metadata.get_ddl(''REF_CONSTRAINT'',''' ||
          A.CONSTRAINT_NAME || ''',''' ||A.owner || ''') FROM DUAL;'
       from dba_constraints A, dba_constraints B
       WHERE b.table_name = 'REV_CONTROLLED_LOB' and b.owner='PCB'
        and a.constraint_type = 'R'
        and a.r_constraint_name = b.constraint_name;
     
3.执行步骤2中产生的SQL语句,获取外键定义.

      set long 3000
      set linesize 3000
      set pagesize 300
      执行步骤2产生的语句.
     
4.删除表.

      drop table mytest cascade constraints;

5.删除并重建表.

6.建立因创建该表所删除的外键约束.

      执行步骤3中获取到的sql语句.

7.检查各外键是否得到恢复,系统是否正常.


select * from v$dataguard_stats   //查看dataguard延时


删除外键
alter table 表名  drop constraint  外键名;


create table  class_inf 
(CLASSID number not null primary key );

create table student_inf 
(
    STUDENTID number not null primary key ,
    STUDENTNAME nvarchar2(20) ,
    GENDER  nvarchar2(20) ,
    IDENTIFIED_STU nvarchar2(20) ,
    ADDRESS nvarchar2(20) ,
    STUDENTIMG nvarchar2(20) ,
    CLASSID number,
    constraint fk_CLASSID foreign key(CLASSID) references class_inf(CLASSID) 
);

也可以后面加
alter table student_inf add constraint fk_CLASSID foreign key(CLASSID) references class_inf(CLASSID);


undo表空间
https://www.linuxidc.com/Linux/2015-01/112550.html
--undo表空间使用情况
select  b.tablespace_name,
       nvl(used_undo, 0) "USED_UNDO(M)",
       tal_undo "tal_undo(M)",
       trunc(nvl(used_undo, 0) / tal_undo * 100, 2) used_PCT
  from (select nvl(sum(bytes / 1024 / 1024), 0) used_undo, tablespace_name
          from dba_undo_extents
         where status in ('ACTIVE', 'UNEXPIRED')
           and tablespace_name in
               (select value from v$parameter where name = 'undo_tablespace')
         group by tablespace_name) a,
       (select tablespace_name, sum(bytes / 1024 / 1024) tal_undo
          from dba_data_files
         where tablespace_name in
               (select value from v$parameter where name = 'undo_tablespace')
         group by tablespace_name) b
         
         
--undo表空间区的状态        
select tablespace_name,status,sum(bytes)/1024/1024 MB from dba_undo_extents 
where tablespace_name like 'UNDOTBS%'
group by tablespace_name,status
order by 1


--UNDO表空间sql占用情况
select *
  from (select maxqueryid, round(sum(undoblks) * 8 / 1024) consumed_size_MB
          from gv$undostat
         group by maxqueryid
         order by consumed_size_MB desc)
 where rownum < 50
 
 
 --UNDO表空间sql占用情况
 set pagesize 999 linesize 120
col machine for a16
col program for a20
col status for a10
col sql_id for a16
col sql_text for a20
select distinct s.machine,s.program,s.sid,round(t.used_ublk*8/1024,2) undo_MB,used_urec undo_records,s.status,l.sql_text
from v$transaction t,gv$session s,v$sqlstats l
where t.ses_addr=s.saddr
and s.sql_id=l.sql_id(+)order by undo_MB;

select *  from gV$UNDOSTAT   order by begin_time 
gV$UNDOSTAT.TUNED_UNDORETENTION  //数据库真正的undo  


Hi liling, 

1. Are you using Oracle Golden Gate or Logic standby or Oracle Streams? 

2. Please refer  the following document for more details. 

How  Reclaim Space Used by LogMiner Tables ( Doc ID 456814.1 ) 
How  reduce the Highwater of LOGMNR_RESTART_CKPT$ ( Doc ID 429599.1 ) 
System.Logmnr_restart_ckpt$ Grows quite fast ( Doc ID 735071.1 ) 

3. HEATMAP Segment Size Is Large In SYSAUX Even When Heatmap=Off ( Doc ID 2024036.1 ) 

SQL> show parameter HEAT_MAP; 


关库之前 关库检查:
Doc ID 1197314.1
select owner, job_name, session_id, slave_os_process_id, running_instance from dba_scheduler_running_jobs;
BEGIN
DBMS_SCHEDULER.sp_job (job_name => 'AU_SPACE_ADVISOR_JOB', force => TRUE);
END;
/


BEGIN
DBMS_SCHEDULER.sp_job (job_name => 'GATHER_PERF_STATS', force => TRUE);
END;
/

待解决:
ORA-25319: Queue table repartitioning aborted
Oracle等待事件resmgr:cpu quantum

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process解决方法
https://blog.csdn.net/lwei_998/article/details/7094061

select capture_name, status, captured_scn, applied_scn, capture_type from dba_capture


第二种情况:
alter system set "_deferred_log_dest_is_valid" = FALSE scope=both;
Verified by note 1380368.1


https://blog.csdn.net/zhu_nana/article/details/88971206
查看数据库正在执行的sql
SELECT b.sid      oracleID,
       b.username Oracle用户,
       b.PROGRAM,
       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;

查看oracle 用户执行的sql语句历史记录
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc 
select * from v$sqlarea t where t.sql_text like '%IMES.SYS_USER_ROLE%'
 order by t.LAST_ACTIVE_TIME desc 
 

Oracle 查看库所有大表(包括大字段,索引,子分区等)
select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               s.bytes / 1024 / 1024 as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
        union
        select s.owner,
               l.table_name as table_name,
               s.bytes / 1024 / 1024 as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
        union
        select s.owner,
               i.table_name as table_name,
               s.bytes / 1024 / 1024 as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
        union
        select s.owner,
               p.table_name as table_name,
               s.bytes / 1024 / 1024 as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name)
 group by owner, table_name
 order by sum(size_m) desc

# cd sqlt/run
# sqlplus apps
SQL> START sqltxtract.sql [SQL_ID]|[HASH_VALUE] [sqltxplain_password]
SQL> START sqltxtract.sql 0w6uydn50g8cx sqltxplain_password
SQL> START sqltxtract.sql 2524255098 sqltxplain_password

sysaux表空间满
电话沟通讨论了此问题, 建议按照第一篇和第四篇文档的solution去做; 不会对您的生产系统造成影响的.     
Hi liling, 
1. Are you using Oracle Golden Gate or Logic standby or Oracle Streams? 
2. Please refer  the following document for more details. 
How  Reclaim Space Used by LogMiner Tables ( Doc ID 456814.1 ) 
How  reduce the Highwater of LOGMNR_RESTART_CKPT$ ( Doc ID 429599.1 ) 
System.Logmnr_restart_ckpt$ Grows quite fast ( Doc ID 735071.1 ) 
3. HEATMAP Segment Size Is Large In SYSAUX Even When Heatmap=Off ( Doc ID 2024036.1 ) 
SQL> show parameter HEAT_MAP; 
Thank you, 
Tim 
哪些历史数据可以被删除
https://www.linuxidc.com/Linux/2015-05/117066.htm

查看下sysaux表空间下哪个组件占用高
SELECT * FROM (SELECT SEGMENT_NAME,
               PARTITION_NAME,
               SEGMENT_TYPE,
               BYTES / 1024 / 1024
          FROM DBA_SEGMENTS
         WHERE TABLESPACE_NAME = 'SYSAUX'
         ORDER BY 4 DESC)
 WHERE ROWNUM <= 10;

uatscc报错
ORA-04030: out of process memory when trying  allocate 161331680 bytes (kxs-heap-w,krvxlogact)   (没有设置PGA_AGGREGATE_LIMIT参数)
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT                           (设置了PGA_AGGREGATE_LIMIT参数时报错)
    
Dear cusmer, 

Thanks for your updates. 

The issue is match with <EM 12c: Alert Log from Standby Database Monired by Enterprise Manager 12c Cloud Control Logs Error: ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT ( Doc ID 2215383.1 )>. 
SOLUTION 
Apply Patch 17817258  the 12.1.0.2 target database Oracle Home. 

================== ACTION PLAN 
1, Go https://updates.oracle.com/download/17817258.html 
2, Select a Release: Oracle 12.1.0.2.0, Platform or Language: Linux x86-64 
3, Download & follow "View Readme"  install 

Best Regards, 
Peng Yu (彭宇) 
Oracle Cusmer Services 

审计导出地址(可以看到系统导出的东西)
http://redmine.scc.com.cn/projects/pcbmes/issues

ORA-01720
https://blog.csdn.net/xyy511/article/details/41546209

ebs查用户
--用户、人员、职责     
SELECT DISTINCT fu.user_name 用户名,
fu.user_id ,
_char(fu.creation_date,'yyyy-mm-dd hh24:mi:ss') 账号创建日期,
ppv.LAST_NAME 人员,
_char(fu.END_DATE,'yyyy-mm-dd hh24:mi:ss')  人员失效日期,
fu.description 人员说明,
frv.RESPONSIBILITY_NAME 职责,
frv.RESPONSIBILITY_ID 职责ID,
_char(furgd.END_DATE,'yyyy-mm-dd hh24:mi:ss')  职责失效日期,
fu.last_logon_date 最后登陆时间
FROM apps.FND_USER_RESP_GROUPS_DIRECT  furgd,
apps.FND_USER     fu,
apps.FND_RESPONSIBILITY_VL       frv,
apps.PER_PEOPLE_V7  ppv
WHERE furgd.user_id = fu.user_id
and furgd.RESPONSIBILITY_ID = FRV.RESPONSIBILITY_ID
and fu.employee_id = ppv.PERSON_ID(+)
order by  fu.user_name;


1.188python脚本


odbc连接配置
https://cloud.tencent.com/developer/article/1478409


容器数据库修改字符集
https://www.cnblogs.com/cqdba/p/8bef7c432b87807c0680d6791f427b09.html


删除归档报错
SQL> alter system set "_deferred_log_dest_is_valid" = FALSE scope=both;
Doc ID 1380368.1

内存不足分析:
https://blog.csdn.net/e_wsq/article/details/79905251

计算大小
du -sh lv0*|awk '{print $1}'|awk  '{sum+=$1} END{print "sum="sum}'
du -sh lv1*|awk '{print $1}'|awk  '{sum+=$1} END{print "sum="sum}'
du -sh ARC*|awk '{print $1}'|awk  '{sum+=$1} END{print "sum="sum}'
du -sh ctl*|awk '{print $1}'|awk  '{sum+=$1} END{print "sum="sum}'

nfs挂载(解决异地nfs备份报错:ora-19504和ora-27054)
mount -o  rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.10.1.1:/lv0  /archiver


tar解压重命名,--strip-components 


https://support.oracle.com/

ebs打补丁
SELECT fpg.applications_system_name,fpg.release_name,fpg.aru_release_name FROM fnd_product_groups fpg;  --查看ebs应用版本
select * from ad_applied_patches where patch_name like '%12622310%';   --检查是否有某个补丁
1、停应用
节点一:
ps -ef | grep applprod 
adstpall.sh apps/AppsPa55w0rd
ps -ef | grep applprod | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep applprod 
su - applprod


节点二:
ps -ef | grep applprod 
adstpall.sh apps/AppsPa55w0rd
ps -ef | grep applprod | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep applprod 
su - applprod


2、启用维护模式,打补丁(先英文,后中文)
(1)启用维护模式
节点一:
adadmin (Enable Maintenance Mode),5.1.3.6
admin11gr2
AppsPa55w0rd


节点二:
adadmin (Enable Maintenance Mode)5.1.3.6
admin11gr2
AppsPa55w0rd

(2)打补丁 (先英文,后中文):

节点一:
cd  26770309
adpatch driver=u26770309.drv
26770309_EN_adpatch.log
40(Enter the number of parallel workers)
admin11gr2
AppsPa55w0rd


cd 26770309_ZHS
adpatch driver=u26770309.drv
26770309_ZHS_adpatch.log
40(Enter the number of parallel workers)
admin11gr2
AppsPa55w0rd

节点二:
cd 26770309
adpatch driver=u26770309.drv options=nocompiledb,nodatabaseportion
26770309_EN_adpatch.log
40(Enter the number of parallel workers)
admin11gr2
AppsPa55w0rd


cd 26770309_ZHS
adpatch driver=u26770309.drv options=nocompiledb,nodatabaseportion
26770309_ZHS_adpatch.log
40(Enter the number of parallel workers)
admin11gr2
AppsPa55w0rd

3、禁用维护模式
节点一:
adadmin (Disable Maintenance Mode) 5,2,3,6
admin11gr2
AppsPa55w0rd

节点二:
adadmin (Disable Maintenance Mode) 5,2,3,6
admin11gr2
AppsPa55w0rd

4、 启动应用
su - applprod
adstrtal.sh apps/AppsPa55w0rd

5、验证
ebs.scc.com:8000
adopmnctl.sh status

https://blog.csdn.net/gaobudong1234/article/details/78212489
select start_time,
       username,
       s.MACHINE,
       s.OSUSER,
       r.name,
       ubafil,
       ubablk,
       t.status,
       (used_ublk * p.value) / 1024 blk,
       used_urec,
       s1.SQL_ID,
       s1.SQL_TEXT
       from v$transaction t,
       v$rollname    r,
       v$session     s,
       v$parameter   p, v$sql         s1 where xidusn = usn and s.saddr = t.ses_addr and p.name = 'db_block_size' and s.SADDR = s1.ADDRESS(+) order by 1;
       
select BEGIN_TIME,
       end_time,
       round(maxquerylen / 60, 0) maxq, --最长sql执行时间 
       maxquerysqlid,                   --最长sql执行时间的sqlid
       undotsn,                         --最后活动的undo tablespace 编号 
       undoblks,                        --消耗的undo block size
       txncount,                        --时段内的事务数量  
       unexpiredblks,                   --未过期的  
       expiredblks,                     --时段内未过期的undp block总数 
       round(tuned_undoretention / 60, 0) Tuned   --au undoundoretention tuned之后的undo_retention
  from dba_hist_undostat
 where end_time > sysdate - 2 order by 1
 
 
solaris 压缩及解压缩文件
https://yq.aliyun.com/articles/371756/

solaris 挂载iso文件
root@uatebs.scc.com # lofiadm  -a /fu/sol-10-u11-ga-sparc-dvd.iso /dev/lofi/1
root@uatebs.scc.com # lofiadm 
Block Device             File
/dev/lofi/1              /fu/sol-10-u11-ga-sparc-dvd.iso
root@uatebs.scc.com # mount -F hsfs -o ro /dev/lofi/1 
cp -pr /mnt/solaris-10/Solaris_10/Product/SUNWi1cs /var/spool/pkg
cp -pr /mnt/solaris-10/Solaris_10/Product/SUNWi15cs /var/spool/pkg
cd /var/spool/pkg
pkgadd SUNWi1cs
pkgadd SUNWi15cs


利用STANDBY将单实例数据库升级为RAC环境(三)
http://blog.itpub.net/4227/viewspace-622299/

以RW及只读模式打开物理standby数据库并恢复为打开前状态
https://blog.csdn.net/haibusuanyun/article/details/11523597

/u01/app/grid/diag/tnslsnr/szexadbadm01/listener/trace/listener.log

alter table "XLA"."XLA_AE_HEADERS" modify partition "CST" shrink space CHECK


脚本srdc_db_ora4031jsp.sql可以查看current内存分配情况
该sql会生成一个htm文件。关键部分如下:
**************************************************************************************************************
Current memory settings:
**************************************************************************************************************
COMPONENT                                                            CURRENT_SIZE
---------------------------------------------------------------- ----------------
shared pool                                                           39996882944
large pool                                                              268435456
java pool                                                              1879048192
streams pool                                                          10200547328
DEFAULT buffer cache                                                  84020297728
KEEP buffer cache                                                               0
RECYCLE buffer cache                                                            0
DEFAULT 2K buffer cache                                                         0
DEFAULT 4K buffer cache                                                         0
DEFAULT 8K buffer cache                                                         0
DEFAULT 16K buffer cache                                                        0
DEFAULT 32K buffer cache                                                        0
Shared IO Pool                                                          536870912
Data Transfer Cache                                                             0
In-Memory Area                                                                  0
ASM Buffer Cache                                                                0

select   config_value from  imes.sys_config_item where CONFIG_TYPE='DEFAULT_ORGANIZATION_CODE';  //查看imes对象

分区表
https://blog.csdn.net/panyuxin_/article/details/80930253


Oracle查看最近最消耗CPU的SQL语句及会话信息的方法总结
http://www.zhangqiongjie.com/1866.html


重新编译包
alter package   CST_UninvoicedReceipts_PVT compile;
alter package   CST_UninvoicedReceipts_PVT compile body;
Doc ID 100530.1

--sql语句执行耗时
select a.sql_text SQL语句, 
       b.etime 执行耗时, 
       c.user_id 用户ID,
       c.SAMPLE_TIME 执行时间, 
       c.INSTANCE_NUMBER 实例数,
       u.username 用户名, a.sql_id SQL编号
       
  from dba_hist_sqltext a,
       (select sql_id, ELAPSED_TIME_DELTA / 1000000 as etime
          from dba_hist_sqlstat
         where ELAPSED_TIME_DELTA / 1000000 >= 1) b,
       dba_hist_active_sess_hisry c,
       dba_users u
 where a.sql_id = b.sql_id
 --and u.username = 'XXXX'
   and c.user_id = u.user_id
   and b.sql_id = c.sql_id
   and a.sql_id='bydwc20c4bsvs'
   --and a.sql_text like '%IN%'
 order by  SAMPLE_TIME desc, 
  b.etime desc;
  
--sql_id 与plan_hash_value的对应关系  
select m.sql_id, m.sample_time,n.plan_hash_value from  dba_hist_active_sess_hisry m, dba_hist_sqlstat n where m.sql_id=n.sql_id and n.plan_hash_value='1092854883'   order by  SAMPLE_TIME desc

统计信息收集窗口
select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
   where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');

某个表的统计信息
select LAST_ANALYZED,TABLE_NAME,OWNER,NUM_ROWS,SAMPLE_SIZE from dba_tables where TABLE_NAME IN('%MTL_SYSTEM_ITEMS_B','PRODUCT_FEATURES_TYPE_CONFIG')


查询某个表空间下的所有表的大小
select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               s.tablespace_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
           and s.tablespace_name='BIDWD'
        union
        select s.owner,
               l.table_name as table_name,
               s.tablespace_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
           and s.tablespace_name='BIDWD'
        union
        select s.owner,
               i.table_name as table_name,
               s.tablespace_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
           and s.tablespace_name='BIDWD'
        union
        select s.owner,
               p.table_name as table_name,
               s.tablespace_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name
            and s.tablespace_name='BIDWD')  
       where  owner not in ('SCOTT',
'ORACLE_OCM',
'OJVMSYS',
'SYSKM',
'XS$NULL',
'GSMCATUSER',
'MDDATA',
'SYSBACKUP',
'DIP',
'SYSDG',
'APEX_PUBLIC_USER',
'SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR',
'GSMUSER',
'AUDSYS',
'FLOWS_FILES',
'DVF',
'MDSYS',
'ORDSYS',
'DBSNMP',
'WMSYS',
'APEX_040200',
'APPQOSSYS',
'GSMADMIN_INTERNAL',
'ORDDATA',
'CTXSYS',
'ANONYMOUS',
'XDB',
'ORDPLUGINS',
'DVSYS',
'SI_INFORMTN_SCHEMA',
'OLAPSYS',
'LBACSYS',
'OUTLN',
'SYSTEM',
'SYS')
 group by owner, table_name
 order by sum(size_m) desc
 
 
select owner,segment_name,segment_type,bytes/1024/1024 as MB from dba_segments where  tablespace_name='表空间名字' and  bytes > 1000000000 order by bytes desc;
查询某个表空间下大小大于1000000000kb(约等于1g)的对象

查看某一个表的大小:
select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
        union
        select s.owner,
               l.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
        union
        select s.owner,
               i.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
        union
        select s.owner,
               p.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name)  
       where  owner  in ('&owner') AND TABLE_NAME='&table_name'
 group by owner, table_name
 order by sum(size_m) desc;
 
 
 select owner, table_name, sum(size_m)
  from (select s.owner,
               s.segment_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
        union
        select s.owner,
               l.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
        union
        select s.owner,
               i.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
        union
        select s.owner,
               p.table_name as table_name,
               (s.bytes / 1024 / 1024) as size_m
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name)  
       where  owner='EASJS2016'  AND TABLE_NAME='T_BE_BANKLOG_DUMP'
 group by owner, table_name
 order by sum(size_m) desc


删除共享内存:
export =对应相关实例
sysresv --确定对应的id ipcrm删除即可
ipcrm删除即可(Shared Memory Segments 用ipcrm -m来删除,Semaphore Arrays用ipcrm -s来删除)


shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4096(getconf PAGESIZE可得到) = 3774873。
修改 /etc/sysctl.conf
kernel.shmmax=15461882265   92771293590   123,695,058,120
kernel.shmall=3774873      22649238        3774873
kernel.msgmax=65535
kernel.msgmnb=65535


33691590656
61847529062
15099492

5798205849.6
5798205849/4096
1415577


shmmax设置应足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,可能导致系统性能的下降 。


执行 sudo sysctl -p
可以使用 ipcs -l 看结果。ipcs -u 可以看到实际使用的情况

这个问题在linux 64位平台 oracle 9.2到11.2平台都存在。
 
重新运行建库即可。

SGA、PGA与系统内存三者间的关联,目前有一个相对通用的计算规则:
对于OLTP数据库,SGA=系统内存*70%*80%,PGA=SGA*(10%~20%)
对于OLAP数据库,SGA=系统内存*80%*60%,PGA=SGA*(45%~65%)


大页(/etc/sysctl.conf中设置 ,sysctl -p生效)
vm.nr_hugepages 推荐值查询脚本Doc ID 401749.1如何设置该值大小Doc ID 361323.1

vm.min_free_kbytes推荐值设置ID 2501269.1

那么能否可以通过/proc/meminfo中的信息来确认数据库使用了hugepages,我这里举例说明:以下是一个Exadata用户的hugepages信息:
 #cat /proc/meminfo | grep -i hugepage 
HugePages_tal:?? 13007 
HugePages_Free:??? 11813 
HugePages_Rsvd:???? 3372 
HugePages_Surp:??????? 0 
Hugepagesize:?????? 2048 kB 
从上面的信息可以得出以下结论:当前hugepages一共实际使用了13007-11813=1194个pages (不包括预留的),预留了3372个pages。永远不会使用达到了11813-3372=8841个pages。每个page大小为2M,也就是说有接近16.5G的hugepages内存被浪费了(因为hugepages无法swap,所以不能被其它程序所使用)。换句话说:当前系统使用中或者即将被使用的hugepages的总和为HugePages_tal – HugePages_Free + HugePages_Rsvd=13007-11813+3372=4566个。产生这样令人困惑的结果是因为用户为了省资源,在这台主机上配置了多个数据库实例,但是只有一个实例使用了hugepages。 之所以要提这个事情,是因为在Oracle 11.2.0.3版本以前,如果当前操作系统配置了hugepages,但是数据库实例设置的SGA大小如果比hugepages总的大小还要大,则SGA无法使用hugepages的内存,然后会去使用其它非hugepages的内存,并且在alert中也没有任何信息,进而导致系统内存占用率高,数据库性能非常糟糕。

https://www.cnblogs.com/haoxiaoyu/p/77624fa6cead803b6b92083e11451490.html

Data Guard环境中的重做传输压缩(文档ID 729551.1)


临时表空间占用
select
b.tablespace
,b.segfile#
,b.segblk#
,b.blocks
,b.blocks*8/1024/1024
,a.sid
,a.serial#
,a.username
,a.osuser
,a.status
,c.sql_text,b.contents
,a.PROGRAM
from gv$session a, gv$sort_usage b, gv$sql c
where a.saddr = b.session_addr
and a.sql_address = c.address(+)
order by b.blocks desc
;


临时表空间占用(可以看到更为详细的sql信息)
select
b.tablespace
,b.segfile#
,b.segblk#
,b.blocks
,b.blocks*8/1024/1024
,a.sid
,a.serial#
,a.username
,a.osuser
,a.status
,c.sql_text,d.SQL_FULLTEXT,b.contents
,a.PROGRAM
from gv$session a, gv$sort_usage b, gv$sql c,gv$sqlarea d 
where a.saddr = b.session_addr   
and a.sql_address = c.address(+) and c.SQL_ID=d.SQL_ID 
order by b.blocks desc
;

临时表空间占用
 select *
  from (select t.sample_time,
               s.PARSING_SCHEMA_NAME,
               t.sql_id,
               t.sql_child_number as sql_child,
               round(t.temp_space_allocated / 1024 / 1024 / 1024, 2) || ' G' as temp_used,
               round(t.temp_space_allocated /
                     (select sum(decode(d.autoextensible, 'YES', d.maxbytes, d.bytes))
                        from dba_temp_files d),
                     2) * 100 || ' %' as temp_pct,
               t.program,
               t.module,
               s.SQL_TEXT
          from v$active_session_history t, v$sql s
         where t.sample_time > to_date('2023-12-14 18:00:00', 'yyyy-mm-dd hh24:mi:ss')
           and t.sample_time < to_date('2023-12-14 20:00:00', 'yyyy-mm-dd hh24:mi:ss')
           and t.temp_space_allocated is not null
           and t.sql_id = s.SQL_ID
         order by t.temp_space_allocated desc)
 where rownum < 50;
 
 
 
EBS并发管理器日志。
-bash-3.2$ cd /AppsPool/prod/inst/conc/log/
-bash-3.2$ tail -f PROD_0903.mgr 

检查监听是否正常 adalnctl.sh status 

检查并发是否正常adcmctl.sh status apps/apps密码  
https://blog.csdn.net/maxwell_fb/article/details/75415070
https://blog.csdn.net/maxwell_fb/article/details/75415070

cens 7 nfs配置
https://www.cnblogs.com/lixiuran/p/7117000.html


备库切换为主库:
停应用,锁业务账号,主库正常关库,开启主库。切换日志(多切换几次)然后检查备库是否应用完日志。
单独在备库执行如下操作:(注意不要把备库的日志传到主库上)。   
select switchover_status from v$database;
alter database commit  switchover  primary with session shutdown;


SELECT DISTINCT FCP.USER_CONCURRENT_PROGRAM_NAME 报表名称,
--fe.USER_EXECUTABLE_NAME,
fe.EXECUTION_FILE_NAME,
fcp.LAST_UPDATE_DATE
FROM apps.FND_CONCURRENT_PROGRAMS_VL  fcp,FND_EXECUTABLES_FORM_V fe
where fe.EXECUTABLE_ID = fcp.EXECUTABLE_ID
--and fcp.USER_CONCURRENT_PROGRAM_NAME like '%次数%'
--AND FE.EXECUTION_FILE_NAME LIKE '%SCC_%EKP%'
order by FCP.USER_CONCURRENT_PROGRAM_NAME;


20201029
PCB.REV_CONTROLLED_LOB.BLOB_DATA


https://blog.csdn.net/fuleidemo/article/details/71408907
实际工作中ORA-01578: ORACLE data block corrupted遇到问题的解决方式
SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS
WHERE file_id = 29 AND 1680097 BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1;


adrci> show homes
adrci> set homepath <your ADR home>
adrci> show incident
adrci> ips pack incident 421066 in /tmp
adrci> show incident -last 10

20201110
10.20.5.59
[root@wxpcbmedb cron]# ls -al /home/oracle/db_shutdown 
-rwxr-xr-x 1 oracle oinstall 930 Feb  6  2018 /home/oracle/db_shutdown
[root@wxpcbmedb cron]# chmod a-x /home/oracle/db_shutdown
[root@wxpcbmedb cron]# ls -al /home/oracle/db_shutdown 
-rw-r--r-- 1 oracle oinstall 930 Feb  6  2018 /home/oracle/db_shutdown
[root@wxpcbmedb cron]# 

dataguard 备库参数standby_file_management 设置成manual导致数据文件未同步
https://blog.csdn.net/killvoon/article/details/86672246?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control


sync;sync;sync;sync;sync;sync;sync;  --多执行几次
poweroff

闪回查询
SELECT  COUNT(1)  FROM SYSADM.PS_C_EP_APP_HDR AS OF TIMESTAMP _timestamp('2020-11-27 10:12:08', 'yyyy-mm-dd hh24:mi:ss');


ora-27102 out of memory
linux-x86-64 error 28: no space left on device

解决方法:需要修改sysctl.conf两个参数,在sysctl -p生效
select 
round(&InputPhysicalMemorySize*0.8*1024*1024*1024/(2048*1024)) as "vm.nr_hugepages",
round(&InputPhysicalMemorySize*0.8*1024*1024*1024)  as  "kernel.shmmax",
round(&InputPhysicalMemorySize*0.8*1024*1024*1024*0.9/4096) as "kernel.shmall" 
from dual;

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = linux01)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/dbhome_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROCOL = TCP)(HOST = 172.20.110.152)(PORT = 1521))
    )
  )
  

linux01 =
  (DESCRIPTION =
    (ADDRESS = (PROCOL = TCP)(HOST = 172.20.110.152)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = linux01)
    )
  )


redo日志文件及大小设置:
https://blog.csdn.net/wulinpingailxr/article/details/108280096
select GROUP#,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;
select group#,MEMBER from v$logfile;


set linesize 200;
col MEMBER for a50;
select a.GROUP#,a.BYTES/1024/1024 size_M,a.STATUS,a.ARCHIVED,b.member from v$log a,v$logfile b where a.group#=b.group#;

select sql_id,EVENT,sample_time  from V$ACTIVE_SESSION_HISRY where EVENT in ('library cache lock','cursor: pin S wait on X','enq: TX - row lock contention') and sample_time BETWEEN _DATE ('2021-01-31 14:00', 'yyyy-mm-dd hh24:mi') AND _DATE ('2021-01-31 15:00', 'yyyy-mm-dd hh24:mi');


第一步:建议配置静态监听
LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROCOL=tcp)(HOST=192.168.1.218)(PORT=1521))
      (ADDRESS=(PROCOL=ipc)(KEY=extproc))
   )
)
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=easdb)
      (ORACLE_HOME=/u01/app/oracle/product/11.2)
      (SID_NAME=easdb)
   )
)

第二步:监听重新加载,检查监听状态
lsnrctl reload
lsnrctl status 

第三步:修改local_listener参数

alter system set local_listener='(ADDRESS=(PROCOL=tcp)(HOST=192.168.1.218)(PORT=1521))'

第四步:注册监听
alter system register ;

cd $ORACLE_HOME/network/admin/下添加 如下三行:
NAMES.DIRECRY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
并对数据中心的账套在sqlplus / as sysdba下,再执行一次密码修改就好了: alter user xxxx identified by xxxx;


解决方法:

在数据库服务器上的$ORACLE_HOME/network/admin/sqlnet.ora文件添加相应参数
注:单实例或RAC都是此目录的sqlnet.ora文件

Oracle12c以下版本
SQLNET.ALLOWED_LOGON_VERSION=##

Oracle12c及以上版本
    SQLNET.ALLOWED_LOGON_VERSION_SERVER=##
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=##


查看某个用户下那些表有主键,主键字段是什么?
  select a.constraint_name,  a.column_name ,a.table_name 
from dba_cons_columns a, dba_constraints b 
where a.constraint_name = b.constraint_name 
  and b.constraint_type = 'P' and  b.owner='EAS01';
  


--查看某个表的某个约束包含的字段
select owner,COLUMN_NAME,constraint_name from dba_cons_columns where table_name='T_BAS_SYSMENUITEM' AND constraint_name='PK_SYSMENUITEM';

  
  
  -检查归档日志频率及大小_按小时
SELECT trunc(SUM(BLOCKS *BLOCK_SIZE )/1024/1024/1024) AS "Size(G)",_char(completion_time,'yyyy-mm-dd hh24' )  FROM v$archived_log  where completion_time>sysdate-15  group by _char(completion_time,'yyyy-mm-dd hh24' ) order by 2 asc;

 --检查归档日志频率及大小_按小时, 看一下02-28 16:17:40 - 2021-03-01 17:35:10间总共生成了多少个归档文件,看生成的量多不多?
SELECT trunc(SUM(BLOCKS *BLOCK_SIZE )/1024/1024/1024) AS "Size(G)",_char(completion_time,'yyyy-mm-dd hh24' )  FROM v$archived_log  where completion_time>sysdate-15  group by _char(completion_time,'yyyy-mm-dd hh24' ) order by 2 asc;


RMAN> list backup of archivelog all;
RMAN> list backup of archivelog from scn 22727871375;
RMAN> list backup of archivelog until scn 22727813497;
RMAN> list backup of archivelog from scn 22727031113 until scn 22727268951;
RMAN> list backup of archivelog from logseq 25432;
RMAN> list backup of archivelog until logseq 25432;
RMAN> list backup of archivelog from logseq 25426 until logseq 25428;


restore archivelog 的其它用法:
restore archivelog all;?? 还原全部归档日志文件
???? restore archivelog from logseq 27 ;? 还原log sequence为27之后的所有归档日志
???? restore archivelog from logseq 27 until logseq 29; 还原log sequence为27到29这几个归档日志
?? ??restore archivelog from time 'sysdate-7'; 还原七天以内的归档日志
?? ??restore archivelog until logseq 29; 还原到seqence 为29的日志文件为止
?? ??set archivelog destination  '/u01/database/sybo5/arch';设定还原日志文件到新路径,如
?? ??run{
?? ??set archivelog destination  '/u01/database/sybo5/arch';
?? ??restore archivelog low logseq 27;}

alter system set events '04031 trace name errorstack forever';


--RESOURCE包含的系统权限
select PRIVILEGE from dba_sys_privs where grantee='RESOURCE';

--RESOURCE包含哪些角色
select * from role_role_privs where role='RESOURCE'; 

--RESOURCE包含哪些对象权限
select  PRIVILEGE from dba_tab_privs where grantee='RESOURCE';

https://unclewang.blog.csdn.net/article/details/100007272
ORA-39083: Object type TYPE:"EAS02"."INLISTTABLE" failed  create with error:
ORA-02304: invalid object identifier literal

Failing sql is:
CREATE EDITIONABLE TYPE "EAS02"."INLISTTABLE"   OID 'B7C01B7AE43A5C3BE055000000000001' as table of varchar2 (2000);

导入时加上参数 transform=OID:N


查询数据库整体解析情况:
select _char(100 * sess / calls, '999999999990.00') || '%' cursor_cache_hits, 
_char(100 * (calls - sess - hard) / calls, '999990.00') || '%' soft_parses, 
_char(100 * hard / calls, '999990.00') || '%' hard_parses 
from ( select value calls from v$sysstat where name = 'parse count (tal)' ), 
( select value hard from v$sysstat where name = 'parse count (hard)' ), 
( select value sess from v$sysstat where name = 'session cursor cache hits' );


--查询未绑定的sql
SET pages 10000
SET linesize 250
column FORCE_MATCHING_SIGNATURE format 99999999999999999999999
WITH c AS
     (SELECT  FORCE_MATCHING_SIGNATURE,
              COUNT(*) cnt
     FROM     v$sqlarea
     WHERE    FORCE_MATCHING_SIGNATURE!=0
     GROUP BY FORCE_MATCHING_SIGNATURE
     HAVING   COUNT(*) > 20
     )
     ,
     sq AS
     (SELECT  sql_text                ,
              FORCE_MATCHING_SIGNATURE,
              row_number() over (partition BY FORCE_MATCHING_SIGNATURE ORDER BY sql_id DESC) p
     FROM     v$sqlarea s
     WHERE    FORCE_MATCHING_SIGNATURE IN
              (SELECT FORCE_MATCHING_SIGNATURE
              FROM    c
              )
     )
SELECT   sq.sql_text                ,
         sq.FORCE_MATCHING_SIGNATURE,
         c.cnt "unshared count"
FROM     c,
         sq
WHERE    sq.FORCE_MATCHING_SIGNATURE=c.FORCE_MATCHING_SIGNATURE
AND      sq.p                       =1
ORDER BY c.cnt DESC;


--查看日志切换频率
SET LINE 150 PAGES 9999
COL "00" FOR A3
COL "01" FOR A3
COL "02" FOR A3
COL "03" FOR A3
COL "04" FOR A3
COL "05" FOR A3
COL "06" FOR A3
COL "07" FOR A3
COL "08" FOR A3
COL "09" FOR A3
COL "10" FOR A3
COL "11" FOR A3
COL "12" FOR A3
COL "13" FOR A3
COL "14" FOR A3
COL "15" FOR A3
COL "16" FOR A3
COL "17" FOR A3
COL "18" FOR A3
COL "19" FOR A3
COL "20" FOR A3
COL "21" FOR A3
COL "22" FOR A3
COL "23" FOR A3
COL DAY FOR A15
SELECT DAY,
     _CHAR(SUM(DECODE(H, '00', T, 0))) AS "00",
     _CHAR(SUM(DECODE(H, '01', T, 0))) AS "01",
     _CHAR(SUM(DECODE(H, '02', T, 0))) AS "02",
     _CHAR(SUM(DECODE(H, '03', T, 0))) AS "03",
     _CHAR(SUM(DECODE(H, '04', T, 0))) AS "04",
     _CHAR(SUM(DECODE(H, '05', T, 0))) AS "05",
     _CHAR(SUM(DECODE(H, '06', T, 0))) AS "06",
     _CHAR(SUM(DECODE(H, '07', T, 0))) AS "07",
     _CHAR(SUM(DECODE(H, '08', T, 0))) AS "08",
     _CHAR(SUM(DECODE(H, '09', T, 0))) AS "09",
     _CHAR(SUM(DECODE(H, '10', T, 0))) AS "10",
     _CHAR(SUM(DECODE(H, '11', T, 0))) AS "11",
     _CHAR(SUM(DECODE(H, '12', T, 0))) AS "12",
     _CHAR(SUM(DECODE(H, '13', T, 0))) AS "13",
     _CHAR(SUM(DECODE(H, '14', T, 0))) AS "14",
     _CHAR(SUM(DECODE(H, '15', T, 0))) AS "15",
     _CHAR(SUM(DECODE(H, '16', T, 0))) AS "16",
     _CHAR(SUM(DECODE(H, '17', T, 0))) AS "17",
     _CHAR(SUM(DECODE(H, '18', T, 0))) AS "18",
     _CHAR(SUM(DECODE(H, '19', T, 0))) AS "19",
     _CHAR(SUM(DECODE(H, '20', T, 0))) AS "20",
     _CHAR(SUM(DECODE(H, '21', T, 0))) AS "21",
     _CHAR(SUM(DECODE(H, '22', T, 0))) AS "22",
     _CHAR(SUM(DECODE(H, '23', T, 0))) AS "23"
   FROM (SELECT _CHAR(FIRST_TIME, 'YYYY-MM-DD') DAY,
               _CHAR(FIRST_TIME, 'HH24') H,
               COUNT(1) T
             FROM V$LOG_HISRY
            WHERE FIRST_TIME > SYSDATE - 15
         GROUP BY _CHAR(FIRST_TIME, 'YYYY-MM-DD'),
                  _CHAR(FIRST_TIME, 'HH24')
         ORDER BY 1)
GROUP BY DAY
ORDER BY DAY DESC;


抽取进程
EXTRACT ******
setenv (ORACLE_SID="********")
setenv (ORACLE_HOME="*********")
USERID ********, PASSWORD "********"
EXTTRAIL **********
GETUPDATEBEFORES
CACHEMGR CACHESIZE 500MB
NUMFILES 4000
EOFDELAYCSECS 10
NOCOMPRESSDELETES
DBOPTIONS  ALLOWUNUSEDCOLUMN
NOCOMPRESSUPDATES
DYNAMICRESOLUTION
discardfile ./dirrpt/********.dsc,append, megabytes 200


传输
EXTRACT *******
USERID *******, PASSWORD "*******"
PASSTHRU
RMTHOST ********, MGRPORT *******, compress
RMTTRAIL **********
discardfile ./dirrpt/******.dsc,append, megabytes 200

复制
REPLICAT **********
setenv (ORACLE_SID="********")
setenv (ORACLE_HOME="************")
setenv (TNS_ADMIN="**********")
USERID **********, PASSWORD ***********
ASSUMETARGETDEFS
REPERROR default,discard
discardfile ./dirdat/******.dsc,append,megabytes 4096
CACHEMGR CACHESIZE 500MB
dynamicresolution
APPLYNOOPUPDATES
getupdatebefores
numfiles 3000
eofdelaycsecs 30
maxtransops 1000
report at 01:59
reportrollover at 02:00
reperror default,discard


--查看windows环境有几个数据库实例
https://blog.csdn.net/couragehope/article/details/72621784

sql server错误码查询
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc645597(v=sql.100)

清楚缓存
echo 1 > /proc/sys/vm/drop_caches;
echo 2 > /proc/sys/vm/drop_caches;
echo 3 > /proc/sys/vm/drop_caches
三句一起执行


oracle查询重复数据方法
https://blog.csdn.net/weixin_33778778/article/details/85899568

library cache lock(等待事件)
alter system set cursor_sharing=force scope=both sid='*';
shutdown immediate;
startup;

rac群集出问题如何处理?
/sbin/start_udev status
ll /dev/asm*可以看到磁盘

--查看群集状态
crs_stat -t  -v  

--停止集群
root用户模式下,cd /oracle/app/11.2.0/grid/bin; 执行命令:./crsctl sp cluster -all 


--grid日志存放位置 
grid用户下$ORACLE_HOME/log/


--查锁
查询阻塞:
select s.sid,
       s.machine,
       o.object_name,
       l.oracle_username,
       l.locked_mode,
       'ALTER  SYSTEM  KILL  SESSION  ''' || s.sid || ',  ' || s.serial# ||
       ''';' Command
  from v$locked_object l, v$session s, all_objects o
 where l.session_id = s.sid
   and l.object_id = o.object_id

--查看锁
select s.status,s.sid,
       s.machine,
       o.object_name,
       l.oracle_username,
       l.locked_mode,
       'ALTER  SYSTEM  KILL  SESSION  ''' || s.sid || ',  ' || s.serial# ||
       ''';' Command
  from v$locked_object l, v$session s, all_objects o
 where l.session_id = s.sid
   and l.object_id = o.object_id;
   
   

--查看锁,包含对应sql和对应的用户
select s.status,s.sid,a.sql_text,a.action,
       s.machine,
       o.object_name,
       l.oracle_username,
       l.locked_mode,
       'ALTER  SYSTEM  KILL  SESSION  ''' || s.sid || ',  ' || s.serial# ||
       ''';' Command
  from v$locked_object l, v$session s, all_objects o,v$sqlarea a
 where l.session_id = s.sid
   and l.object_id = o.object_id  and o.owner='数据中心用户名'  and  s.prev_sql_addr = a.address   ;
   
   

--查看锁(罗老师)
SELECT (   '节点 '|| a.inst_id|| ' session '|| a.sid|| ','|| a_s.serial#|| ' 阻塞了 节点 '|| b.inst_id|| ' session '|| b.sid|| ','|| b_s.serial#)
  blockinfo,   a.inst_id, a_s.sid, 'alter system kill session '||''''|| a.sid||','||a_s.serial#||''''||';' as KillCommand,
a_s.schemaname,  a_s.module,   a_s.status,   a.TYPE lock_type,   a.id1,a.id2,   DECODE (a.lmode,    0, 'none',  1, NULL,  2, 'row-S (SS)',  3, 'row-X (SX)',  4, 'share (S)',  5, 'S/Row-X (SSX)',  6, 'exclusive (X)')   lock_mode,'后为被阻塞信息' remark_flag,b.inst_id blocked_inst_id,b_s.sid blocked_sid,b.TYPE blocked_lock_type,DECODE (b.request,  0, 'none',  1, NULL,  2, 'row-S (SS)',  3, 'row-X (SX)',  4, 'share (S)',  5, 'S/Row-X (SSX)',
  6, 'exclusive (X)')   blocked_lock_request,b_s.schemaname blocked_schemaname,
b_s.module blocked_module,b_s.status blocked_status,b_s.sql_id blocked_sql_id,  obj.owner blocked_owner,
obj.object_name blocked_object_name,obj.object_type blocked_object_type,
CASE   WHEN b_s.row_wait_obj# <> -1   THEN   DBMS_ROWID.rowid_create (1,     obj.data_object_id,   b_s.row_wait_file#,    b_s.row_wait_block#,          b_s.row_wait_row#)
   ELSE   '-1' END   blocked_rowid,  --被阻塞数据的rowid
DECODE (obj.object_type,     'TABLE', 'select * from '   || obj.owner   || '.'   || obj.object_name
        || ' where rowid='''        || DBMS_ROWID.rowid_create (1, obj.data_object_id,     b_s.row_wait_file#,               b_s.row_wait_block#,
               b_s.row_wait_row#)      || '''',   NULL)  blocked_data_querysql FROM gv$lock a,   gv$lock b,    gv$session a_s,   gv$session b_s,
   dba_objects obj   WHERE  a.id1 = b.id1   AND a.id2 = b.id2   AND a.block > 0 --阻塞了其他人
   AND b.request > 0   AND (   (a.inst_id = b.inst_id AND a.sid <> b.sid)      OR (a.inst_id <> b.inst_id))   AND a.sid = a_s.sid   AND a.inst_id = a_s.inst_id   AND b.sid = b_s.sid
   AND b.inst_id = b_s.inst_id   AND b_s.row_wait_obj# = obj.object_id(+)ORDER BY a.inst_id, a.sid;
   
   
   
https://www.cnblogs.com/handhead/p/12579132.html(收集表的统计信息)

达梦数据库如何查看字符集?
https://blog.csdn.net/myth8860/article/details/100561238


sqlplus 获取优化建议
set long 999999
set LONGCHUNKSIZE 999999
set serveroutput on size 999999
set linesize 200set long 999999
set LONGCHUNKSIZE 999999
set serveroutput on size 999999
set linesize 200
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('TUNING_FOR_SQL308') FROM DUAL;

select table_name, _char(wm_concat(column_name)) as "ColumnName" from user_tab_columns  where table_name like 'VT%'  group by table_name ;
  --把表和字段放在同一行内   。
这个语句是用来分析  针对招商局的哪些VT表具有相同字段,并且造成库缓存争用,需要优化哪些SQL, 我今天写了一个语句,非常容易的就能找到是哪些VT表存在相同的字段


sqlplus -prelim / as sysdba


如果不是在plsql之类的工 具执行,而是sqlplus,要先执行  SET SERVEROUTPUT ON

--触发器
create table MODI_EMP1_LOG

(

modi_time TIMESTAMP(6),

table_id VARCHAR2(20),

modi_type VARCHAR2(20)


);


CREATE OR REPLACE TRIGGER MODI_EMP1_1

BEFORE UPDATE OR INSERT OR DELETE ON EMP1

REFERENCING NEW AS NEW OLD AS OLD

FOR EACH ROW

BEGIN
  
IF INSERTING THEN

INSERT IN MODI_EMP1_LOG

VALUES(SYSDATE,'EMP1','INSERT');

END IF;

IF UPDATING THEN

--IF :OLD.ENAME<>:NEW.ENAME THEN

INSERT IN MODI_EMP1_LOG

VALUES(SYSDATE,'EMP1','UPDATE');

END IF;

--END IF;

IF DELETING THEN

INSERT IN MODI_EMP1_LOG

VALUES(SYSDATE,'EMP1','DELETE');

END IF;

END;

select distinct machine  from   gv$session 
这个语句可以查到有什么机器连到数据库 
根据查到的机器名,逐一检查第三方接口


导出存储过程的语句
sqlplus / as sysdba
SET LONG 3000
SET PAGESIZE 0
select * from dba_source WHERE type='PROCEDURE' AND OWNER='TESTUSER011' AND NAME='P_NCMRECOVERYADJUSTDIFF_BYEND';


select * from dba_source WHERE type='TYPE'  AND OWNER='KINGDEE4' AND NAME='类型名称';   --导出类型的语句


查看临时表空间的使用情况
select TABLESPACE_NAME,
       TABLESPACE_SIZE / 1024 / 1024 / 1024 "TABLESPACE_SIZE_gByte",
       ALLOCATED_SPACE / 1024 / 1024 / 1024 "ALLOCATED_SPACE_SIZE_gByte",
       FREE_SPACE / 1024 / 1024 / 1024 "FREE_GByte"
  from DBA_TEMP_FREE_SPACE;


set lines 200
column tablespace_name format a29
column AutoExpandStatus format a20
column MaxGBytes format 999999999
column pct_warn format a5

--罗老师给的查表空间的语句。。。。。(比较准)
set lines 200
column tablespace_name format a29
column AutoExpandStatus format a20
column MaxGBytes format 999999999
column pct_warn format a5

select max1.tablespace_name, Total_GB,GB_used ,GB_free,trunc(pct) "UsedPercent%",trunc(maxbytes) as " MaxGBytes" ,pct_warn ,round(100*GB_used/maxbytes,2) as "growupPercent",
 (case   when ((GB_used/maxbytes)>0.9) then 'Almost Full'      else 'Will Auto Increase' end ) AutoExpandStatus
from (select T.TABLESPACE_NAME as  tablespace_name,
sum(decode(d.MAXBYTES,0,d.bytes,d.maxbytes)/1024/1024/1024) as maxbytes 
 from dba_tablespaces t, dba_data_files d where t.TABLESPACE_NAME=d.TABLESPACE_NAME group by T.TABLESPACE_NAME) max1,
 (select  tbs.tablespace_name,
        ROUND((tot.bytes/1024/1024/1024),1) Total_GB,
        ROUND(trunc(tot.bytes/1024/1024/1024-sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_used,
        ROUND(trunc(sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_free,
        (1-sum(nvl(fre.bytes,0))/tot.bytes)*100 pct,
        decode(
            greatest((1-sum(nvl(fre.bytes,0))/tot.bytes)*100, 90),
            90, '', '*'
        ) pct_warn
from    dba_free_space fre,
        (select tablespace_name, sum(bytes) bytes
        from    dba_data_files
        group by tablespace_name) tot,
        dba_tablespaces tbs
where   tot.tablespace_name    = tbs.tablespace_name
and     fre.tablespace_name(+) = tbs.tablespace_name
group by tbs.tablespace_name, tot.bytes/1024/1024/1024, tot.bytes) avail1 
where avail1.tablespace_name=max1.tablespace_name;


WRH$_ACTIVE_SESSION_HISTORY组件占用sysaux表空间多的处理办法
alter session set "_swrf_test_action" = 72;


http://t.zoukankan.com/halberd-lee-p-12907608.html
select * from v$block_change_tracking;   --检查是否开启块跟踪
Block Change Tracking(块跟踪)主要用于RMAN备份的增量备份,将自从上一次备份以来数据块的变化记录到block change tracking文件中,相关后台进程CTWR(Change Tracking Writer), 主要目的是改善增量备份性能,RMAN可以不再扫描整个文件以查找变更数据。第一个0级的增量备份扫描整个datafile。 随后的增量备份使用block changetracking file的信息,只扫描自上次备份以来被标记为change 的block,RMAN 不会对该文件进行备份。。从10g开始提供此功能。
Block change tracking 默认是禁用的,如果备份策略中使用incrementalbackup,那么建议开启block change tracking。 启用后,不需要其他的维护操作。
在备份期间,change tracking会维护已经标记为change 的block 的bitmap 信息
Oracle 块追踪

开启
alter database enable block change tracking using file '+DATA';

关闭
alter database disable block change tracking;


SQL> alter tablespace sysaux add datafile' +DATA1
size 100m autoextend on;
alter tablespace sysaux add datafile +DATA1 
size 100m autoextend on
ERROR at line 1:
DRA-19757: could not resize change tracking file to 411777 blocks
DRA- 19750: change tracking file: ' +DATA/blk.f 
DRA-17505: ksfdrsz:1 Failed to resize file to size 411777 blocks
DRA- 15041: diskgroup "DATA" space exhausted
SQL>


:%s/,/^M/g   vi中将逗号和回车互换的技巧

--查看某个表及其组件所占的各个表空间的大小

select sum(bytes) as mb, tablespace_name
  from (select sum(bytes / 1024 / 1024) as bytes,
               s.tablespace_name as tablespace_name
          from dba_segments s, dba_indexes i
         where s.owner = i.owner
           and s.segment_name = i.index_name
           and s.owner = 'EAS86'
           AND i.TABLE_NAME = 'T_BAS_CODINGRULE'
         group by s.tablespace_name
        
        union
        
        select sum(bytes / 1024 / 1024), s.tablespace_name
          from dba_segments s, dba_tables t
         where s.owner = t.owner
           and s.segment_name = t.table_name
           and s.owner = 'EAS86'
           AND t.TABLE_NAME = 'T_BAS_CODINGRULE'
         group by s.tablespace_name
        
        union
        select sum(bytes / 1024 / 1024), s.tablespace_name
          from dba_segments s, dba_lobs l
         where s.owner = l.owner
           and s.segment_name = l.segment_name
           and s.owner = 'EAS86'
           AND l.TABLE_NAME = 'T_BAS_CODINGRULE'
         group by s.tablespace_name
        
        union
        select sum(bytes / 1024 / 1024), s.tablespace_name
          from dba_segments s, dba_tab_partitions p
         where s.owner = p.table_owner
           and s.segment_name = p.partition_name
           and s.owner = 'EAS86'
           AND p.TABLE_NAME = 'T_BAS_CODINGRULE'
         group by s.tablespace_name
        
        )
 group by tablespace_name
 
 
--导出用户下的所有建索引的语句
spool 1.txt;
set pagesize 0;
set long  3000;
conn 用户名/密码
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false); 
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)||';'
  FROM USER_OBJECTS u
 where U.OBJECT_TYPE IN ('INDEX'); 
 
 
 
https://mp.weixin.qq.com/s/w24LHFbk0aYKCw0p4NDt2w
pdb学习链接

lob字段导出报错
alter system set undo_retention=172800 ;
ALTER TABLE YLJRSC.T_WFR_PROCINSTDATA MODIFY LOB(FDATAVALUE)(retention);

达梦数据库免密登录
ENABLE_LOCAL_OSAUTH参数设置为1(重启数据库生效)
针对linux 系统,达梦用户要在dmdba组才可以,可以用如下命令实现
[root@v-vlxsz-devdb01 ~]# groupadd dmdba
[root@v-vlxsz-devdb01 ~]# usermod -G dmdba dmdba
[dmdba@v-vlxsz-devdb01 DMTEST]$ id dmdba
uid=1101(dmdba) gid=1103(dinstall) groups=1103(dinstall),1107(dmdba)
[dmdba@v-vlxsz-devdb01 DMTEST]$
此时disql  / as sysdba可以不使用密码登录


达梦数据库死锁和阻塞:
https://blog.csdn.net/qq_35349982/article/details/127600330

select OWNER,TABLE_NAME,LAST_ANALYZED,LAST_ANALYZED,NUM_ROWS,blocks*8192/1024/1024 
from user_tables  where  table_name  in ('T_IM_PURINWAREHSVOUCHER','T_BD_PERIOD','T_GL_VOUCHER','T_IM_PURINWAREHSENTRY')
--查统计信息

经分析是复杂update语句无法执行成功,数据库版本是11.2.0.4, 该语句在optimizer_features_enable='10.2.0.4'时碰到oracle优化器的bug,导致执行异常,通过  alter system set optimizer_features_enable='11.2.0.4'   ,语句执行很快

2022优秀开源镜像站
https://renwole.com/archives/1367


select 'alter system kill session '||''''||sid||','||serial#||'''' ||' immediate;'  from v$session where sql_id='6r2pmsdwnvrun'

 
 

           

相关文章:

  • 安全运营中的漏洞管理和相关KPI
  • HarmonyOS NEXT仓颉开发语言实现画板案例
  • HarmonyOS NEXT仓颉开发语言实战案例:简约音乐播放页
  • IPv4网络地址分类
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • 机器学习6——线性分类函数
  • AI助力基因数据分析:用Python玩转生命密码的秘密
  • 操作系统面试知识点(1):操作系统基础
  • java枚举enum的使用示例
  • mac电脑安装vscode的力扣插件报错解决办法
  • 【Linux】基础开发工具(2)
  • 重定向攻击与防御
  • Docker 入门教程(二):Docker 的基本原理
  • 东芝e-STUDIO 2323AMW双面复印报计数器溢出故障
  • 《规则怪谈》合集
  • Kotlin环境搭建与基础语法入门
  • python pandas数据清洗
  • Python打卡:Day37
  • 黑马JVM解析笔记(四):Javap图解指令流程,深入理解Java字节码执行机制
  • 【办公类-105-01】20250626 托小班报名表-条件格式-判断双胞胎EXCLE