Oracle你知道什么是超大型数据库吗?它就是啦!
用Sql产生一个月内的日历
[
2010/09/08 16:47 | by fubin ]
2010/09/08 16:47 | by fubin ]
select
min(to_char(day, 'yyyymm')) month,
min(decode(weekday, 1, day)) "星期日",
min(decode(weekday, 2, day)) "星期一",
min(decode(weekday, 3, day)) "星期二",
min(decode(weekday, 4, day)) "星期三",
min(decode(weekday, 5, day)) "星期四",
min(decode(weekday, 6, day)) "星期五",
min(decode(weekday, 7, day)) "星期六"
from (select day,
month,
decode(sign(rn - weekday), 1, week + 1, week) week,
weekday,
rn
from (select day,
to_char(day, 'mm') month,
to_char(day, 'w') week,
to_char(day, 'd') weekday,
row_number() over(partition by to_char(day, 'mm'), to_char(day, 'w') order by day) rn
from (select trunc(sysdate, 'yyyy') + level - 1 day
from dual
connect by rownum <= trunc(sysdate+365,'yyyy')-trunc(sysdate,'yyyy')))) a
group by a.month, a.week
order by a.month, a.week;
min(to_char(day, 'yyyymm')) month,
min(decode(weekday, 1, day)) "星期日",
min(decode(weekday, 2, day)) "星期一",
min(decode(weekday, 3, day)) "星期二",
min(decode(weekday, 4, day)) "星期三",
min(decode(weekday, 5, day)) "星期四",
min(decode(weekday, 6, day)) "星期五",
min(decode(weekday, 7, day)) "星期六"
from (select day,
month,
decode(sign(rn - weekday), 1, week + 1, week) week,
weekday,
rn
from (select day,
to_char(day, 'mm') month,
to_char(day, 'w') week,
to_char(day, 'd') weekday,
row_number() over(partition by to_char(day, 'mm'), to_char(day, 'w') order by day) rn
from (select trunc(sysdate, 'yyyy') + level - 1 day
from dual
connect by rownum <= trunc(sysdate+365,'yyyy')-trunc(sysdate,'yyyy')))) a
group by a.month, a.week
order by a.month, a.week;
oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图
[
2010/07/22 10:39 | by fubin ]
2010/07/22 10:39 | by fubin ]
dba_开头
dba_users 数据库用户信息
dba_segments 表段信息
dba_extents 数据区信息
dba_objects 数据库对象信息
dba_tablespaces 数据库表空间信息
dba_data_files 数据文件设置信息
dba_temp_files 临时数据文件信息
dba_rollback_segs 回滚段信息
dba_ts_quotas 用户表空间配额信息
dba_free_space 数据库空闲空间信息
dba_profiles 数据库用户资源限制信息
dba_sys_privs 用户的系统权限信息
dba_tab_privs 用户具有的对象权限信息
dba_col_privs 用户具有的列对象权限信息
dba_role_privs 用户具有的角色信息
dba_audit_trail 审计跟踪记录信息
dba_stmt_audit_opts 审计设置信息
dba_audit_object 对象审计结果信息
dba_audit_session 会话审计结果信息
dba_indexes 用户模式的索引信息
user_开头
user_objects 用户对象信息
user_source 数据库用户的所有资源对象信息
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
关于这个还涉及到两个常用的例子如下:
1、oracle中查询某个字段属于哪个表
Sql代码
1.select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');
select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');
2、oracle中查询某个表的列数
Sql代码
1.select count(*) from user_tab_columns where table_name= upper('sys_operate');
select count(*) from user_tab_columns where table_name= upper('sys_operate');
注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的
user_constraints 用户的对象约束信息
user_sys_privs 当前用户的系统权限信息
user_tab_privs 当前用户的对象权限信息
user_col_privs 当前用户的表列权限信息
user_role_privs 当前用户的角色权限信息
user_indexes 用户的索引信息
user_ind_columns 用户的索引对应的表列信息
user_cons_columns 用户的约束对应的表列信息
user_clusters 用户的所有簇信息
user_clu_columns 用户的簇所包含的内容信息
user_cluster_hash_expressions 散列簇的信息
v$开头
v$database 数据库信息
v$datafile 数据文件信息
v$controlfile 控制文件信息
v$logfile 重做日志信息
v$instance 数据库实例信息
v$log 日志组信息
v$loghist 日志历史信息
v$sga 数据库SGA信息
v$parameter 初始化参数信息
v$process 数据库服务器进程信息
v$bgprocess 数据库后台进程信息
v$controlfile_record_section 控制文件记载的各部分信息
v$thread 线程信息
v$datafile_header 数据文件头所记载的信息
v$archived_log 归档日志信息
v$archive_dest 归档日志的设置信息
v$logmnr_contents 归档日志分析的DML DDL结果信息
v$logmnr_dictionary 日志分析的字典文件信息
v$logmnr_logs 日志分析的日志列表信息
v$tablespace 表空间信息
v$tempfile 临时文件信息
v$filestat 数据文件的I/O统计信息
v$undostat Undo数据信息
v$rollname 在线回滚段信息
v$session 会话信息
v$transaction 事务信息
v$rollstat 回滚段统计信息
v$pwfile_users 特权用户信息
v$sqlarea 当前查询过的sql语句访问过的资源及相关的信息
v$sql 与v$sqlarea基本相同的相关信息
v$sysstat 数据库系统状态信息
all_开头
all_users 数据库所有用户的信息
all_objects 数据库所有的对象的信息
all_def_audit_opts 所有默认的审计设置信息
all_tables 所有的表对象信息
all_indexes 所有的数据库对象索引的信息
session_开头
session_roles 会话的角色信息
session_privs 会话的权限信息
index_开头
index_stats 索引的设置和存储信息
伪表
dual 系统伪列表信息
oracle最重要的9个动态性能视图
v$session + v$session_wait (在10g里功能被整合,凑合算1个吧.)
v$process
v$sql
v$sqltext
v$bh (更宁愿是x$bh)
v$lock
v$latch_children
v$sysstat
v$system_event
按组分的几组重要的性能视图
1. System 的 over view
v$sysstat , v$system_event , v$parameter
2. 某个session 的当前情况
v$process , v$session , v$session_wait ,v$session_event , v$sesstat
3. SQL 的情况
v$sql , v$sqlarea , v$SQL_PLAN , V$SQL_PLAN_STATISTICS, v$sqltext_with_newlines
3. Latch / lock /ENQUEUE
v$latch , v$latch_children , v$latch_holder , v$lock ,V$ENQUEUE_STAT ,V$ENQUEUE_LOCK
4. IO 方面的
v$segstat , v$filestat , v$tempstat ,v$datafile , v$tempfile
5. shared pool / Library cache
v$Librarycache , v$rowcache , x$ksmsp
6. 几个advice也不错
v$db_cache_advice , v$PGA_TARGET_ADVICE, v$SHARED_POOL_ADVICE
dba_users 数据库用户信息
dba_segments 表段信息
dba_extents 数据区信息
dba_objects 数据库对象信息
dba_tablespaces 数据库表空间信息
dba_data_files 数据文件设置信息
dba_temp_files 临时数据文件信息
dba_rollback_segs 回滚段信息
dba_ts_quotas 用户表空间配额信息
dba_free_space 数据库空闲空间信息
dba_profiles 数据库用户资源限制信息
dba_sys_privs 用户的系统权限信息
dba_tab_privs 用户具有的对象权限信息
dba_col_privs 用户具有的列对象权限信息
dba_role_privs 用户具有的角色信息
dba_audit_trail 审计跟踪记录信息
dba_stmt_audit_opts 审计设置信息
dba_audit_object 对象审计结果信息
dba_audit_session 会话审计结果信息
dba_indexes 用户模式的索引信息
user_开头
user_objects 用户对象信息
user_source 数据库用户的所有资源对象信息
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
关于这个还涉及到两个常用的例子如下:
1、oracle中查询某个字段属于哪个表
Sql代码
1.select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');
select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');
2、oracle中查询某个表的列数
Sql代码
1.select count(*) from user_tab_columns where table_name= upper('sys_operate');
select count(*) from user_tab_columns where table_name= upper('sys_operate');
注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的
user_constraints 用户的对象约束信息
user_sys_privs 当前用户的系统权限信息
user_tab_privs 当前用户的对象权限信息
user_col_privs 当前用户的表列权限信息
user_role_privs 当前用户的角色权限信息
user_indexes 用户的索引信息
user_ind_columns 用户的索引对应的表列信息
user_cons_columns 用户的约束对应的表列信息
user_clusters 用户的所有簇信息
user_clu_columns 用户的簇所包含的内容信息
user_cluster_hash_expressions 散列簇的信息
v$开头
v$database 数据库信息
v$datafile 数据文件信息
v$controlfile 控制文件信息
v$logfile 重做日志信息
v$instance 数据库实例信息
v$log 日志组信息
v$loghist 日志历史信息
v$sga 数据库SGA信息
v$parameter 初始化参数信息
v$process 数据库服务器进程信息
v$bgprocess 数据库后台进程信息
v$controlfile_record_section 控制文件记载的各部分信息
v$thread 线程信息
v$datafile_header 数据文件头所记载的信息
v$archived_log 归档日志信息
v$archive_dest 归档日志的设置信息
v$logmnr_contents 归档日志分析的DML DDL结果信息
v$logmnr_dictionary 日志分析的字典文件信息
v$logmnr_logs 日志分析的日志列表信息
v$tablespace 表空间信息
v$tempfile 临时文件信息
v$filestat 数据文件的I/O统计信息
v$undostat Undo数据信息
v$rollname 在线回滚段信息
v$session 会话信息
v$transaction 事务信息
v$rollstat 回滚段统计信息
v$pwfile_users 特权用户信息
v$sqlarea 当前查询过的sql语句访问过的资源及相关的信息
v$sql 与v$sqlarea基本相同的相关信息
v$sysstat 数据库系统状态信息
all_开头
all_users 数据库所有用户的信息
all_objects 数据库所有的对象的信息
all_def_audit_opts 所有默认的审计设置信息
all_tables 所有的表对象信息
all_indexes 所有的数据库对象索引的信息
session_开头
session_roles 会话的角色信息
session_privs 会话的权限信息
index_开头
index_stats 索引的设置和存储信息
伪表
dual 系统伪列表信息
oracle最重要的9个动态性能视图
v$session + v$session_wait (在10g里功能被整合,凑合算1个吧.)
v$process
v$sql
v$sqltext
v$bh (更宁愿是x$bh)
v$lock
v$latch_children
v$sysstat
v$system_event
按组分的几组重要的性能视图
1. System 的 over view
v$sysstat , v$system_event , v$parameter
2. 某个session 的当前情况
v$process , v$session , v$session_wait ,v$session_event , v$sesstat
3. SQL 的情况
v$sql , v$sqlarea , v$SQL_PLAN , V$SQL_PLAN_STATISTICS, v$sqltext_with_newlines
3. Latch / lock /ENQUEUE
v$latch , v$latch_children , v$latch_holder , v$lock ,V$ENQUEUE_STAT ,V$ENQUEUE_LOCK
4. IO 方面的
v$segstat , v$filestat , v$tempstat ,v$datafile , v$tempfile
5. shared pool / Library cache
v$Librarycache , v$rowcache , x$ksmsp
6. 几个advice也不错
v$db_cache_advice , v$PGA_TARGET_ADVICE, v$SHARED_POOL_ADVICE
修改任意用户密码为:WELCOME
[
2009/11/03 22:25 | by fubin ]
2009/11/03 22:25 | by fubin ]
rem
rem Alters given user's password to "WELCOME", and creates script to revert password to
rem original setting
rem
set heading off
set verify off
set feedback off
prompt
accept username char prompt 'Enter username to hack into: '
prompt
prompt Creating revert.sql in the current working directory
prompt
set termout off
spool revert.sql
select 'alter user &&username identified by values '||
''''||
password||
''''||
';'
from sys.dba_users
where username = upper('&&username')
/
spool off
set termout on
prompt
prompt Altering user password to 'welcome'
prompt
set termout off
alter user &&username
identified by welcome
/
set termout on
prompt
prompt *************************************************
prompt The file revert.sql is in the current working
prompt directory. Run it to reset the password.
prompt *************************************************
prompt
prompt
rem Alters given user's password to "WELCOME", and creates script to revert password to
rem original setting
rem
set heading off
set verify off
set feedback off
prompt
accept username char prompt 'Enter username to hack into: '
prompt
prompt Creating revert.sql in the current working directory
prompt
set termout off
spool revert.sql
select 'alter user &&username identified by values '||
''''||
password||
''''||
';'
from sys.dba_users
where username = upper('&&username')
/
spool off
set termout on
prompt
prompt Altering user password to 'welcome'
prompt
set termout off
alter user &&username
identified by welcome
/
set termout on
prompt
prompt *************************************************
prompt The file revert.sql is in the current working
prompt directory. Run it to reset the password.
prompt *************************************************
prompt
prompt
查看Oracle备份文件
[
2009/11/02 22:08 | by fubin ]
2009/11/02 22:08 | by fubin ]
select b.file# "File No"
, d.name "File Name"
, d.bytes "Size (bytes)"
, b.status "Backup Status"
, to_char(b.time,'DD-MON-YY HH24:MI:SS') "Start Time"
from v$backup b
, v$datafile d
where b.file# = d.file#
order by b.time
, d.name "File Name"
, d.bytes "Size (bytes)"
, b.status "Backup Status"
, to_char(b.time,'DD-MON-YY HH24:MI:SS') "Start Time"
from v$backup b
, v$datafile d
where b.file# = d.file#
order by b.time
查看Oracle JOB的状态
[
2009/11/02 20:11 | by fubin ]
2009/11/02 20:11 | by fubin ]
select job
, to_char(last_date, 'DD-MON-YY HH24:MI') last_date
, trunc(last_date) hidden_last_date
, to_char(this_date, 'DD-MON-YY HH24:MI') this_date
, to_char(next_date, 'DD-MON-YY HH24:MI') next_date
, broken
, failures
, what
from sys.dba_jobs
order by 2
, to_char(last_date, 'DD-MON-YY HH24:MI') last_date
, trunc(last_date) hidden_last_date
, to_char(this_date, 'DD-MON-YY HH24:MI') this_date
, to_char(next_date, 'DD-MON-YY HH24:MI') next_date
, broken
, failures
, what
from sys.dba_jobs
order by 2
查询备份文件的空间利用值
[
2009/10/27 23:48 | by fubin ]
2009/10/27 23:48 | by fubin ]
select
substr(to_char(100 * headroom, '999999999.0'), 2) || '%' min_headroom,
round(arch_time * 24 * 60, 2) archival_minutes,
round(arch_window * 24 * 60, 2) archival_window
from
( select
b.next_time - a.next_time arch_window,
a.completion_time - a.next_time arch_time,
(b.next_time - a.next_time) / (a.completion_time - a.next_time) - 1
headroom
from
sys.v_$thread t,
sys.v_$archived_log a,
sys.v_$archived_log b
where
a.completion_time > a.next_time and
b.sequence# = a.sequence# + t.groups - 1
order by
3
)
where
rownum = 1
substr(to_char(100 * headroom, '999999999.0'), 2) || '%' min_headroom,
round(arch_time * 24 * 60, 2) archival_minutes,
round(arch_window * 24 * 60, 2) archival_window
from
( select
b.next_time - a.next_time arch_window,
a.completion_time - a.next_time arch_time,
(b.next_time - a.next_time) / (a.completion_time - a.next_time) - 1
headroom
from
sys.v_$thread t,
sys.v_$archived_log a,
sys.v_$archived_log b
where
a.completion_time > a.next_time and
b.sequence# = a.sequence# + t.groups - 1
order by
3
)
where
rownum = 1
select username,sid,serial# from v$session;
alter system kill session'55,10839';
alter system kill session'55,10839';
一个简单的oracle函数返回数组的例子
[
2009/07/21 17:37 | by fubin ]
2009/07/21 17:37 | by fubin ]
create or replace type t_ret_table is table of varchar2(20);
create or replace function f_test(var_num in integer) return t_ret_table is
var_out t_ret_table;
begin
var_out := t_ret_table();
var_out.extend(var_num);
for i in 1..var_num loop
var_out(i) := i;
end loop;
return var_out;
end f_test;
/
set serverout on
declare
aa t_ret_table;
begin
aa := f_test(10);
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/
一个分隔字符串的例子:
把'a|||b|||c'字符串分隔成
a
b
c
create or replace function f_test(var_str in string) return t_ret_table is
var_out t_ret_table;
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
var_out := t_ret_table();
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
var_out.extend(1);
var_out(var_out.count) := var_element;
end loop;
var_out.extend(1);
var_out(var_out.count) := var_tmp;
return var_out;
end f_test;
/
set serverout on
declare
aa t_ret_table;
begin
aa := f_test('a|||b|||c');
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/
create or replace function f_test(var_str in string) return t_ret_table PIPELINED
as
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
pipe row(var_element);
end loop;
pipe row(var_tmp);
return;
end f_test;
/
select * from table(f_test('a|||b|||c'));
另外一个分割字符串的例子:
分割字符串问题!
问题源自http://www.itpub.net/626418.html
/*
怎样支掉字符串中逗号间重复的字符
如 ',1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,'怎样支掉字符串中逗号间重复的字符,并将字符升序排列,得到
',1,2,3,5,9,'
百思不得其解,是高手的试一下。
解答:
select col from(
select sys_connect_by_path(col,',')||',' col,level from(
select col,row_number() over(order by rownum) rn from (
select distinct substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum )
)
connect by prior rn = rn -1 order by level desc
) where rownum=1
*/
这个问题的解决办法中的一部分(按照固定分隔符分割字符串)可以解决http://www.itpub.net/515354.html
/*
要求用pl/sql写一个函数, 实现根据分割符把原字符串分成若干个字符串功能.
输入: string(字符串) 和 Delimiter (分隔符)
输出: substr1, ..., substrn (根据分割后的字符串排序, 不是子串在原字符串中的顺序)
解答:
select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum
*/
create or replace function f_test(var_num in integer) return t_ret_table is
var_out t_ret_table;
begin
var_out := t_ret_table();
var_out.extend(var_num);
for i in 1..var_num loop
var_out(i) := i;
end loop;
return var_out;
end f_test;
/
set serverout on
declare
aa t_ret_table;
begin
aa := f_test(10);
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/
一个分隔字符串的例子:
把'a|||b|||c'字符串分隔成
a
b
c
create or replace function f_test(var_str in string) return t_ret_table is
var_out t_ret_table;
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
var_out := t_ret_table();
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
var_out.extend(1);
var_out(var_out.count) := var_element;
end loop;
var_out.extend(1);
var_out(var_out.count) := var_tmp;
return var_out;
end f_test;
/
set serverout on
declare
aa t_ret_table;
begin
aa := f_test('a|||b|||c');
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/
create or replace function f_test(var_str in string) return t_ret_table PIPELINED
as
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
pipe row(var_element);
end loop;
pipe row(var_tmp);
return;
end f_test;
/
select * from table(f_test('a|||b|||c'));
另外一个分割字符串的例子:
分割字符串问题!
问题源自http://www.itpub.net/626418.html
/*
怎样支掉字符串中逗号间重复的字符
如 ',1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,'怎样支掉字符串中逗号间重复的字符,并将字符升序排列,得到
',1,2,3,5,9,'
百思不得其解,是高手的试一下。
解答:
select col from(
select sys_connect_by_path(col,',')||',' col,level from(
select col,row_number() over(order by rownum) rn from (
select distinct substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum
)
connect by prior rn = rn -1 order by level desc
) where rownum=1
*/
这个问题的解决办法中的一部分(按照固定分隔符分割字符串)可以解决http://www.itpub.net/515354.html
/*
要求用pl/sql写一个函数, 实现根据分割符把原字符串分成若干个字符串功能.
输入: string(字符串) 和 Delimiter (分隔符)
输出: substr1, ..., substrn (根据分割后的字符串排序, 不是子串在原字符串中的顺序)
解答:
select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum
*/
每月5号执行的Oracle Job
[
2009/06/15 20:41 | by fubin ]
2009/06/15 20:41 | by fubin ]
begin
sys.dbms_job.submit(job => :job,
what => 'Fin_Sys_Create_Job;',
next_date => to_date('05-07-2009', 'dd-mm-yyyy'),
interval => 'trunc(add_months(sysdate,1),''mm'')+4');
commit;
end;
/
sys.dbms_job.submit(job => :job,
what => 'Fin_Sys_Create_Job;',
next_date => to_date('05-07-2009', 'dd-mm-yyyy'),
interval => 'trunc(add_months(sysdate,1),''mm'')+4');
commit;
end;
/
将某个表的某个字段的外键全部导出到一个文件
[
2009/05/25 07:13 | by fubin ]
2009/05/25 07:13 | by fubin ]
accept column_name prompt "Enter a column name : "
accept table_name prompt "Enter the column's table name : "
prompt
prompt working...
set termout off
spool ffkr.txt
select chr(10) || 'Foreign key references for column '
|| upper ('&column_name')
|| ', table '
|| upper ('&table_name')
|| ' (owner '
|| user
|| ') :'
from dual
/
declare
h_count number;
begin
select count(*)
into h_count
from user_tab_columns
where column_name = upper ('&column_name')
and table_name = upper ('&table_name');
if h_count = 0 then
dbms_output.put_line ('=====================================');
dbms_output.put_line ('>>> COLUMN / TABLE DOES NOT EXIST <<<');
dbms_output.put_line ('=====================================');
dbms_output.put_line (chr(10));
end if;
end;
/
select 'table_name ------ ' || ucc.table_name || chr(10) ||
'constraint_name - ' || uc.constraint_name || chr(10) ||
'column_name ----- ' || ucc.column_name || chr(10) ||
'status ---------- ' || uc.status
from user_constraints uc,
user_cons_columns ucc,
user_cons_columns ucc2
where ucc2.table_name = upper ('&table_name')
and ucc2.column_name = upper ('&column_name')
and uc.constraint_type = 'R'
and uc.constraint_name = ucc.constraint_name
and uc.r_constraint_name = ucc2.constraint_name
and ucc.position = ucc2.position
order by ucc.table_name,
uc.constraint_name,
ucc.position
/
spool off
set heading on
set pagesize 24
set verify on
set feedback 6
set termout on
prompt
pause Done... Press ENTER to view results
edit ffkr.txt
accept table_name prompt "Enter the column's table name : "
prompt
prompt working...
set termout off
spool ffkr.txt
select chr(10) || 'Foreign key references for column '
|| upper ('&column_name')
|| ', table '
|| upper ('&table_name')
|| ' (owner '
|| user
|| ') :'
from dual
/
declare
h_count number;
begin
select count(*)
into h_count
from user_tab_columns
where column_name = upper ('&column_name')
and table_name = upper ('&table_name');
if h_count = 0 then
dbms_output.put_line ('=====================================');
dbms_output.put_line ('>>> COLUMN / TABLE DOES NOT EXIST <<<');
dbms_output.put_line ('=====================================');
dbms_output.put_line (chr(10));
end if;
end;
/
select 'table_name ------ ' || ucc.table_name || chr(10) ||
'constraint_name - ' || uc.constraint_name || chr(10) ||
'column_name ----- ' || ucc.column_name || chr(10) ||
'status ---------- ' || uc.status
from user_constraints uc,
user_cons_columns ucc,
user_cons_columns ucc2
where ucc2.table_name = upper ('&table_name')
and ucc2.column_name = upper ('&column_name')
and uc.constraint_type = 'R'
and uc.constraint_name = ucc.constraint_name
and uc.r_constraint_name = ucc2.constraint_name
and ucc.position = ucc2.position
order by ucc.table_name,
uc.constraint_name,
ucc.position
/
spool off
set heading on
set pagesize 24
set verify on
set feedback 6
set termout on
prompt
pause Done... Press ENTER to view results
edit ffkr.txt



