当前位置: 代码迷 >> SQL >> EBS惯用SQL脚本
  详细解决方案

EBS惯用SQL脚本

热度:62   发布时间:2016-05-05 11:55:28.0
EBS常用SQL脚本
界面LOV的SQL获取
DECLARE
  CURSOR cur_lov_sql(p_pre_sql_addr VARCHAR2) IS
    SELECT t.sql_text FROM v$sqltext_with_newlines t WHERE t.address = p_pre_sql_addr ORDER BY t.piece;
  --
  l_lov_sql       VARCHAR2(2400);
  l_prev_sql_addr VARCHAR2(200);
BEGIN
  BEGIN
    SELECT v.prev_sql_addr INTO l_prev_sql_addr FROM v$session v WHERE v.sid = &sid;
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('get prev sql addr error,' || SQLCODE || ':' || SQLERRM);
  END;
  --
  FOR rec IN cur_lov_sql(l_prev_sql_addr) LOOP
    l_lov_sql := nvl(l_lov_sql, '') || rec.sql_text;
  END LOOP;
  --
  dbms_output.put_line('lov查询sql为:');
  dbms_output.put_line(l_lov_sql);

END;
EBS信息
-----查询APPLICATIONID所对应的应用产品
select * from fnd_application_vl where application_id=101;

-----查询EBS系统的版本信息
select release_name from apps.fnd_product_groups;

-----查看EBS安装了哪些模块,以及这些模块的Level
select fpi.application_id,
       fav.application_name,
       fpi.status,
       fpi.patch_level 
from fnd_product_installations fpi,
     fnd_application_vl fav
where fpi.application_id=fav.APPLICATION_ID;
ORACLE信息
----查询一个对象所依赖的其它对象
select * from all_dependencies t where t.name='HZ_PARTIES';

----查询一个对象的创建信息(如表的创建者等信息)
select * from all_objects where object_name= 'XXWIP_5993_ASC_MATERIAL_VIEW';
GRANT EXECUTE ON apps.AP_INVOICE_LINES_UTILITY_PKG to xxap;

----查询(设置)当前环境的语言
SELECT USERENV('LANG') FROM DUAL;
ALTER SESSION SET NLS_LANGUAGE='AMERICAN';
ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

--查看当前用户拥有什么角色
select * from user_role_privs;

--查看当前用户拥有权限
select * from session_privs;

--查看当前用户拥有的系统权限
select * from user_sys_privs;

--查看当前用户拥有的表
select * from user_tables;

select * from user_synonyms t where t.synonym_name='RCV_TRANSACTIONS_BACK';

--查看当前用户已经使用多大的空间,允许使用的最大空间是多少
select tablespace_name,bytes,max_bytes from user_ts_quotas;

--查看都把哪些表什么权限赋予了其他用户
select * from user_tab_privs_made

--查询触发器
select * from dba_triggers t where t.trigger_name like '%CUX%';

--查询到具有sysdba权限的用户
select * from V_$PWFILE_USERS;
LOCK
SELECT p.spid,
       decode(locked_mode,
              0,
              'None',
              1,
              'Null',
              2,
              'Row share',
              3,
              'Row Exclusive',
              4,
              'Share',
              5,
              'Share Row Exclusive',
              6,
              'Exclusive') lock_type,
       a.client_identifier,
       c.object_name,
       b.session_id,
       b.oracle_username,
       b.os_user_name,
       b.locked_mode,
       a.sid,
       a.serial#,
       a.machine,
       a.action,
       to_char(a.logon_time, 'yyyy/mm/dd hh24:mi'),
       'ALTER system kill session ''' || a.sid || ',' || a.serial# || ''''
  FROM v$process p, v$session a, v$locked_object b, all_objects c
WHERE p.addr = a.paddr
   AND a.process = b.process
   AND c.object_id = b.object_id;

---Kill session
SELECT sid, serial# FROM v$session WHERE sid = &sid;

ALTER system kill session 'sid,serial#';

--ALTER system kill session '104,12418';

--锁package
SELECT s.sid, s.serial#, s.machine, 'ALTER system kill session ''' || s.sid || ',' || s.serial# || '''', t.*
  FROM v$access t, v$session s

WHERE s.sid = t.sid
   AND t.object = 'CUX_PO_CHECK_DETAIL_PKG';

SELECT b.*
  FROM v$session a, v$sqlarea b
WHERE a.sql_hash_value = b.hash_value
   AND a.sid = 9945;

SELECT b.sql_text, b.*
  FROM v$session a, v$sql b
WHERE a.sql_address = b.address
   AND a.sid = 9945
分割字符串
DECLARE
  l_text VARCHAR2(2000) := '0000,42015,19095,19098';
  TYPE bill_seq_table_type IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;
  l_length        NUMBER;
  l_start         NUMBER := 1;
  l_index         NUMBER := 1;
  l_count         NUMBER := 1;
  l_sub_text      VARCHAR2(100);
  l_bill_seq_type bill_seq_table_type;
BEGIN
  l_length := length(l_text);

  WHILE (l_start < l_length) LOOP
 
    l_index := instr(l_text, ',', l_start);
 
    IF l_index = 0 THEN
      l_sub_text := substr(l_text, l_start, l_length - 1);
      l_start    := l_length;
    ELSE
      l_sub_text := substr(l_text, l_start, l_index - l_start);
      l_start    := l_index + 1;
    END IF;
 
    l_bill_seq_type(l_count) := l_sub_text;
    l_count := l_count + 1;
  END LOOP;

  FOR i IN l_bill_seq_type.first .. l_bill_seq_type.last LOOP
    dbms_output.put_line('l_sub_text' || i || ':' || l_bill_seq_type(i));
  END LOOP;

END;
查看表空间使用情况
SELECT dbf.tablespace_name,
       dbf.totalspace "总量(M)",
       dbf.totalblocks AS 总块数,
       dfs.freespace "剩余总量(M)",
       dfs.freeblocks "剩余块数",
       (dfs.freespace / dbf.totalspace) * 100 "空闲比例"
  FROM (SELECT t.tablespace_name, SUM(t.bytes) / 1024 / 1024 totalspace, SUM(t.blocks) totalblocks
          FROM dba_data_files t
         GROUP BY t.tablespace_name) dbf,
       (SELECT tt.tablespace_name, SUM(tt.bytes) / 1024 / 1024 freespace, SUM(tt.blocks) freeblocks
          FROM dba_free_space tt
         GROUP BY tt.tablespace_name) dfs
WHERE TRIM(dbf.tablespace_name) = TRIM(dfs.tablespace_name)
   AND dbf.tablespace_name='CUXDATA';

SELECT * FROM dba_tablespace_usage_metrics t WHERE t.tablespace_name = 'CUXDATA';
  相关解决方案