Admin Scripts
Admin Scripts
-- Description
-- Description
memory pools.
-- Description
NUMBER := NULL;
v$database.dbid%TYPE;
v$instance.instance_number%TYPE;
UTL_FILE.file_type;
VARCHAR(50);
BEGIN
SELECT dbid
INTO
l_dbid
FROM
v$database;
SELECT instance_number
INTO
l_instance_number
FROM
v$instance;
-- Description
classes.
log_history,
comments
FROM
dba_scheduler_job_classes
ORDER BY job_class_name;
-- Description
programs.
SELECT owner,
program_name,
program_type,
program_action,
number_of_arguments,
enabled,
comments
FROM
dba_scheduler_programs
ORDER BY owner, program_name;
-- Description
schedules.
-- Description
-- Description
running jobs.
job_name,
running_instance,
elapsed_time
FROM
dba_scheduler_running_jobs
ORDER BY owner, job_name;
-- Author
: DR Timothy S Hall
-- Description
segment.
:=
:=
:=
:=
'SEGMENT_ADVISOR_TASK';
UPPER('&1');
UPPER('&2');
UPPER('&3');
DBMS_ADVISOR.create_task (
advisor_name
=> 'Segment Advisor',
task_name
=> l_task_name);
DBMS_ADVISOR.create_object (
task_name
=> l_task_name,
object_type => l_object_type,
attr1
=> l_attr1,
attr2
=> l_attr2,
attr3
=> NULL,
attr4
=> 'null',
attr5
=> NULL,
object_id
=> l_object_id);
DBMS_ADVISOR.set_task_parameter (
task_name => l_task_name,
parameter => 'RECOMMEND_ALL',
value
=> 'TRUE');
DBMS_ADVISOR.execute_task(task_name => l_task_name);
FROM
dba_advisor_findings f
JOIN dba_advisor_objects o ON f.object_id =
o.object_id AND f.task_name = o.task_name
WHERE f.task_name = l_task_name
ORDER BY f.impact DESC)
LOOP
DBMS_OUTPUT.put_line('..');
DBMS_OUTPUT.put_line('Type
: ' || cur_rec.type);
DBMS_OUTPUT.put_line('Attr1
: ' || cur_rec.attr1);
DBMS_OUTPUT.put_line('Attr2
: ' || cur_rec.attr2);
DBMS_OUTPUT.put_line('Message
: ' || cur_rec.message);
DBMS_OUTPUT.put_line('More info
: ' || cur_rec.more_info);
END LOOP;
DBMS_ADVISOR.delete_task(task_name => l_task_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Error
: ' ||
DBMS_UTILITY.format_error_backtrace);
DBMS_ADVISOR.delete_task(task_name => l_task_name);
END;
/
-- Description
services.
-- Description
session waits.
-- Description
SGA.
-- Description
window groups.
-- Description
windows.
resource_plan,
enabled,
active,
comments
FROM
dba_scheduler_windows
ORDER BY window_name;
11g
-- ----------------------------------------------------------------------------------- File Name
: http://www.oraclebase.com/dba/11g/identify_trace_file.sql
-- Author
: DR Timothy S Hall
constraints...
-- ---------------------------------------------------------------------------------SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL temp.sql
SELECT 'ALTER TABLE "' || a.table_name || '" DISABLE CONSTRAINT "' ||
a.constraint_name || '";'
FROM
all_constraints a
WHERE a.constraint_type = 'C'
AND
a.owner
= UPPER('&2');
AND
a.table_name
=
DECODE(UPPER('&1'),'ALL',a.table_name,UPPER('&1'));
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL temp.sql
SELECT 'ALTER TABLE "' || a.table_name || '" ENABLE PRIMARY KEY;'
FROM
all_constraints a
WHERE a.constraint_type = 'P'
AND
a.owner
= Upper('&2')
AND
a.table_name
=
DECODE(Upper('&1'),'ALL',a.table_name,Upper('&1'));
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
miscellaneous...
-- ----------------------------------------------------------------------------------- File Name
: http://www.oraclebase.com/dba/miscellaneous/analyze_all.sql
-- Author
: DR Timothy S Hall
-- Description : Outdated script to analyze all tables for the
specified schema.
-- Comment
: Use DBMS_UTILITY.ANALYZE_SCHEMA or
DBMS_STATS.GATHER_SCHEMA_STATS if your server allows it.
-- Call Syntax : @ananlyze_all (schema-name)
-- Last Modified: 26/02/2002
-- ---------------------------------------------------------------------------------SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL temp.sql
SELECT 'ANALYZE TABLE "' || table_name || '" COMPUTE STATISTICS;'
FROM
all_tables
WHERE owner = Upper('&1')
ORDER BY 1;
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT TABLES MISSING IN REMOTE SCHEMA:
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name from user_TAbles where table_name not like '&prex.%'
minus
select table_name from user_tables@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT COLUMNS MISSING IN THIS SCHEMA FOR COMMON TABLES
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name,column_name from user_tab_columns@&prex.lnk
where table_name in
(select table_name from &prex.common_tables)
minus
select table_name,column_name from user_tab_columns
where table_name in
(select table_name from &prex.common_tables);
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT COLUMNS MISSING IN REMOTE SCHEMA FOR COMMON TABLES
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name,column_name from user_tab_columns
where table_name in
(select table_name from &prex.common_tables)
minus
select table_name,column_name from user_tab_columns@&prex.lnk
where table_name in
(select table_name from &prex.common_tables);
create table &prex.diff_cols1
( TABLE_NAME
VARCHAR2(30),
COLUMN_NAME
VARCHAR2(30),
DATA_TYPE
VARCHAR2(9),
DATA_LENGTH
NUMBER,
DATA_PRECISION
NUMBER,
DATA_SCALE
NUMBER,
NULLABLE
VARCHAR2(1),
COLUMN_ID
NUMBER,
DEFAULT_LENGTH
NUMBER,
DATA_DEFAULT
varchar2(2000));
create table &prex.diff_cols2
( TABLE_NAME
VARCHAR2(30),
COLUMN_NAME
VARCHAR2(30),
DATA_TYPE
VARCHAR2(9),
DATA_LENGTH
NUMBER,
DATA_PRECISION
NUMBER,
DATA_SCALE
NUMBER,
NULLABLE
VARCHAR2(1),
COLUMN_ID
NUMBER,
DEFAULT_LENGTH
NUMBER,
DATA_DEFAULT
varchar2(2000));
declare
cursor c1 is
select
l.TABLE_NAME ,
l.COLUMN_NAME,
l.DATA_TYPE ,
l.DATA_LENGTH,
l.DATA_PRECISION ,
l.DATA_SCALE ,
l.NULLABLE,
l.COLUMN_ID ,
l.DEFAULT_LENGTH ,
l.DATA_DEFAULT
from user_tab_columns l,&prex.common_tables c
where c.table_name=l.table_name ;
TYPE rec is record (
TABLE_NAME
VARCHAR2(30),
COLUMN_NAME
VARCHAR2(30),
DATA_TYPE
VARCHAR2(9),
DATA_LENGTH
NUMBER,
DATA_PRECISION
NUMBER,
DATA_SCALE
NUMBER,
NULLABLE
VARCHAR2(1),
COLUMN_ID
NUMBER,
DEFAULT_LENGTH
NUMBER,
DATA_DEFAULT
varchar2(2000)
);
c rec;
begin
open c1;
loop
fetch c1 into c;
exit when c1%NOTFOUND;
insert into &prex.diff_cols1 values
(c.table_name,c.column_name,c.data_type,c.data_length,
c.DATA_PRECISION, c.DATA_SCALE, c.NULLABLE, c.COLUMN_ID,
c.DEFAULT_LENGTH, c.DATA_DEFAULT);
end loop;
end;
/
declare
cursor c1 is
select
l.TABLE_NAME ,
l.COLUMN_NAME,
l.DATA_TYPE ,
l.DATA_LENGTH,
l.DATA_PRECISION ,
l.DATA_SCALE ,
l.NULLABLE,
l.COLUMN_ID ,
l.DEFAULT_LENGTH ,
l.DATA_DEFAULT
from user_tab_columns@&prex.lnk l,&prex.common_tables c
where c.table_name=l.table_name ;
to_char(l.DATA_PRECISION),to_char(r.DATA_PRECISION)
from &prex.diff_cols1 l, &prex.diff_cols2 r
where l.table_name=r.table_name and
l.column_name=r.column_name and l.DATA_PRECISION !=
r.DATA_PRECISION
union
select l.table_name,l.column_name,'DATA_SCALE',to_char(l.DATA_SCALE),
to_char(r.DATA_SCALE)
from &prex.diff_cols1 l, &prex.diff_cols2 r
where l.table_name=r.table_name and
l.column_name=r.column_name and l.DATA_SCALE != r.DATA_SCALE
union
select l.table_name,l.column_name,'NULLABLE',l.NULLABLE,r.NULLABLE
from &prex.diff_cols1 l, &prex.diff_cols2 r
where l.table_name=r.table_name and
l.column_name=r.column_name and l.NULLABLE != r.NULLABLE
union
select l.table_name,l.column_name,'COLUMN_ID',to_char(l.COLUMN_ID),
to_char(r.COLUMN_ID)
from &prex.diff_cols1 l, &prex.diff_cols2 r
where l.table_name=r.table_name and
l.column_name=r.column_name and l.COLUMN_ID != r.COLUMN_ID
union
select
l.table_name,l.column_name,'DEFAULT_LENGTH',to_char(l.DEFAULT_LENGTH),
to_char(r.DEFAULT_LENGTH)
from &prex.diff_cols1 l, &prex.diff_cols2 r
where l.table_name=r.table_name and
l.column_name=r.column_name and l.DEFAULT_LENGTH !=
r.DEFAULT_LENGTH
order by 1,2
/
create table &prex.common_indexes as
select table_name, index_name from user_indexes@&prex.lnk
where table_name in (select table_name from &prex.common_tables)
intersect
select table_name, INdex_name from user_indexes
where table_name in (select table_name from &prex.common_tables);
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT INDEXES MISSING IN THIS SCHEMA FOR COMMON TABLES
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name, index_name from user_indexes@&prex.lnk
where table_name in (select table_name from &prex.common_tables)
minus
select table_name, index_name from &prex.common_indexes;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT INDEXES MISSING IN REMOTE SCHEMA FOR COMMON TABLES
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
user_ind_columns@&prex.lnk b
where (a.table_name,a.index_name) in
(select table_name,index_name from &prex.common_indexes)
and b.index_name = a.index_name
and b.table_name = a.table_name
and a.column_name = b.column_name
and a.column_position != b.column_position;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT CONSTRAINTS MISSING IN THIS SCHEMA FOR COMMON TABLES
PROMPT (WORKS ONLY FOR CONSTRAINT WITH NON SYSTEM GENERATED NAMES)
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name,constraint_name from user_constraints@&prex.lnk
where constraint_name not like 'SYS%' and table_name in
(select table_name from &prex.common_tables)
minus
select table_name,constraint_name from user_constraints
where constraint_name not like 'SYS%' and table_name in
(select table_name from &prex.common_tables);
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT CONSTRAINTS MISSING IN REMOTE SCHEMA FOR COMMON TABLES
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select table_name,constraint_name from user_constraints
where constraint_name not like 'SYS%' and table_name in
(select table_name from &prex.common_tables)
minus
select table_name,constraint_name from user_constraints@&prex.lnk
where constraint_name not like 'SYS%' and table_name in
(select table_name from &prex.common_tables);
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT COMMON CONSTRAINTS, TYPE MISMATCH
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select a.constraint_name,a.constraint_type local_type,
b.constraint_type remote_type
from user_constraints a, user_constraints@&prex.lnk b where
a.table_name = b.table_name and
a.constraint_name=b.constraint_name and
a.constraint_type !=b.constraint_type;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT COMMON CONSTRAINTS, TABLE MISMATCH
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dbms_output.put_line('.
'||c2.col);
end loop;
i:=1;
dbms_output.put_line('. Remote columns:');
for c3 in (select column_name col
from user_cons_columns@&prex.lnk
where constraint_name=c.constraint_name
)
loop
dbms_output.put_line('.
'||c3.col);
end loop;
end loop;
end;
/
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT DIFFERENCES IN CHECK CONSTRAINT DEFS
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set serveroutput on
declare
cursor c1 is select constraint_name,constraint_type,table_name
from &prex.comcons where constraint_type='C';
cons varchar2(50);
tab1 varchar2(50);
tab2 varchar2(50);
search1 varchar2(32000);
search2 varchar2(32000);
begin
dbms_output.enable(100000);
for c in c1 loop
select search_condition into search1 from user_constraints
where constraint_name=c.constraint_name;
select search_condition into search2 from user_constraints@&prex.lnk
where constraint_name=c.constraint_name;
if search1 != search2 then
dbms_output.put_line('Check constraint '||c.constraint_name||
' defined differently!');
dbms_output.put_line('. Local definition:');
dbms_output.put_line('. '||search1);
dbms_output.put_line('. Remote definition:');
dbms_output.put_line('. '||search2);
end if;
end loop;
end;
/
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT TRIGGERS MISSING IN REMOTE SCHEMA
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select trigger_name from user_Triggers minus
select trigger_name from user_Triggers@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT TRIGGERS MISSING IN THIS SCHEMA
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select trigger_name from user_Triggers@&prex.lnk minus
select trigger_name from user_Triggers@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT TRIGGER DEFINITION DIFFERENCES ON COMMON TRIGGERS
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set serveroutput on
declare
cursor c1 is select
TRIGGER_NAME,TRIGGER_TYPE,TRIGGERING_EVENT,
TABLE_NAME,REFERENCING_NAMES,rtrim(WHEN_CLAUSE,' '),STATUS,
rtrim(replace(description,'"&thisuser".',null),' ') DESCRIPTION,
TRIGGER_BODY from user_Triggers;
nam1 varchar2(30);
type1 varchar2(16);
event1 varchar2(26);
table1 varchar2(30);
ref1 varchar2(87);
when1 varchar2(2000);
status1 varchar2(8);
desc1 varchar2(2000);
body1 varchar2(32000);
type2 varchar2(16);
event2 varchar2(26);
table2 varchar2(30);
ref2 varchar2(87);
when2 varchar2(2000);
status2 varchar2(8);
desc2 varchar2(2000);
body2 varchar2(32000);
pr_head boolean;
begin
dbms_output.enable(100000);
open c1;
loop
fetch c1 into nam1,type1,event1,table1,ref1,when1,status1,desc1,body1;
exit when c1%notfound;
begin
select
TRIGGER_TYPE,TRIGGERING_EVENT,
TABLE_NAME,REFERENCING_NAMES,rtrim(WHEN_CLAUSE,' '),STATUS,
rtrim(replace(description,upper('"&remoteschema".'),null),' ')
DESCRIPTION,
TRIGGER_BODY
into type2,event2,table2,ref2,when2,status2,desc2,body2
from user_Triggers@&prex.lnk
where trigger_name=nam1;
pr_head := FALSE;
if table1 != table2 then
dbms_output.put_line('T R I G G E R : '||nam1);
dbms_output.put_line('------------------------------------------------'||
'-----------------------');
pr_head := TRUE;
dbms_output.put_line('
');
dbms_output.put_line('DEFINED ON DIFFERENT TABLES!');
dbms_output.put_line('.
This table_name : '||table1);
dbms_output.put_line('.
Remote table_name: '||table2);
end if;
if event1 != event2 then
if not pr_head then
dbms_output.put_line('T R I G G E R : '||nam1);
dbms_output.put_line('------------------------------------------------'||
'-----------------------');
pr_head := TRUE;
end if;
dbms_output.put_line('
');
dbms_output.put_line('DEFINED FOR DIFFERENT EVENTS!');
dbms_output.put_line('.
This event: '||event1);
dbms_output.put_line('. Remote event: '||event2);
end if;
if type1 != type2 then
if not pr_head then
dbms_output.put_line('T R I G G E R : '||nam1);
dbms_output.put_line('------------------------------------------------'||
'-----------------------');
pr_head := TRUE;
end if;
dbms_output.put_line('
');
dbms_output.put_line('DIFFERENT TYPES!');
dbms_output.put_line('.
This type: '||type1);
dbms_output.put_line('.
Remote: '||type2);
end if;
if ref1 != ref2 then
if not pr_head then
dbms_output.put_line('T R I G G E R : '||nam1);
dbms_output.put_line('------------------------------------------------'||
'-----------------------');
pr_head := TRUE;
end if;
dbms_output.put_line('
');
dbms_output.put_line('DIFFERENT REFERENCES!');
dbms_output.put_line('.
This ref: '||ref1);
dbms_output.put_line('.
Remote: '||ref2);
end if;
if when1 != when2 then
dbms_output.put_line('
');
if not pr_head then
dbms_output.put_line('T R I G G E R : '||nam1);
dbms_output.put_line('------------------------------------------------'||
'-----------------------');
pr_head := TRUE;
end if;
dbms_output.put_line('DIFFERENT WHEN CLAUSES!');
dbms_output.put_line('. Local when_clause:');
dbms_output.put_line(when1);
dbms_output.put_line('. Remote when_clause: ');
dbms_output.put_line(when2);
end if;
if status1 != status2 then
dbms_output.put_line('
');
dbms_output.put_line('DIFFERENT STATUS!');
dbms_output.put_line('. Local status: '||status1);
dbms_output.put_line('. Remote status: '||status2);
end if;
if replace(desc1,chr(10),'') != replace(desc2,chr(10),'') then
dbms_output.put_line('
');
dbms_output.put_line('DIFFERENT DESCRIPTIONS!');
dbms_output.put_line('Local definition: ');
dbms_output.put_line(desc1);
dbms_output.put_line('Remote definition: ');
dbms_output.put_line(desc2);
end if;
if body1 != body2 then
dbms_output.put_line('
');
dbms_output.put_line('THE PL/SQL BLOCKS ARE DIFFERENT! ');
dbms_output.put_line('
');
end if;
exception when NO_DATA_FOUND then null;
when others then raise_application_error(-20010,SQLERRM);
end;
end loop;
end;
/
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT MISSING PROCEDURES/PACKAGES/FUNCTIONS IN REMOTE SCHEMA
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select distinct name,type from user_source minus
select distinct name,type from user_source@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT MISSING PROCEDURES/PACKAGES/FUNCTIONS IN LOCAL SCHEMA
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select distinct name,type from user_source@&prex.lnk minus
select distinct name,type from user_source;
create table &prex.comcod as
select distinct name,type from user_source intersect
select distinct name,type from user_source@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT PROCEDURES/PACKAGES/FUNCTIONS WITH DIFFERENT DEFINITIONS
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select distinct q.name Object_name,q.type Object_type from
(select a.name,a.type,a.line,a.text
from user_source a, &prex.comcod b
where a.name=b.name union
select a.name,a.type,a.line,a.text
from user_source@&prex.lnk a, &prex.comcod b
where a.name=b.name
minus
(select a.name,a.type,a.line,a.text
from user_source a, &prex.comcod b
where a.name=b.name
intersect
select a.name,a.type,a.line,a.text
from user_source@&prex.lnk a, &prex.comcod b
where a.name=b.name )) q;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT VIEWS MISSING IN THIS SCHEMA:
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
create table &prex.common_views as
select view_name from user_views@&prex.lnk
intersect
select view_name from user_views;
select view_name from user_views@&prex.lnk
minus
select view_name from &prex.common_views;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT VIEWS MISSING IN REMOTE SCHEMA:
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select view_name from user_views
minus
select view_name from user_views@&prex.lnk;
PROMPT
PROMPT
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PROMPT VIEWS WITH DIFFERENCES IN THE DEFINITION
PROMPT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
declare
def1 varchar2(32000);
def2 varchar2(32000);
len1 number;
len2 number;
i number;
undef
undef
undef
undef
undef
undef
undef
undef
undef
prefx
a
thisuser
b
REMOTESCHEMA
REMOTEPASSW
connstring
c
todaysdate
= 'PACKAGE BODY'
= 'INVALID'
= Decode(Upper('&&1'), 'ALL',a.owner,
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL temp.sql
SELECT 'ALTER PROCEDURE
COMPILE;'
FROM
all_objects a
WHERE
a.object_type =
AND
a.status
=
AND
a.owner
=
Upper('&&1'));
'PROCEDURE'
'INVALID'
Decode(Upper('&&1'), 'ALL',a.owner,
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
-- ----------------------------------------------------------------------------------- File Name
: http://www.oraclebase.com/dba/miscellaneous/compile_all_specs.sql
-- Author
: DR Timothy S Hall
-- Description : Compiles all invalid package specifications for
specified schema, or all schema.
-- Call Syntax : @compile_all_specs (schema-name or all)
-- Last Modified: 28/01/2001
-- ---------------------------------------------------------------------------------SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL temp.sql
SELECT 'ALTER PACKAGE
COMPILE;'
FROM
all_objects a
WHERE
a.object_type
AND
a.status
AND
a.owner
Upper('&&1'));
= 'PACKAGE'
= 'INVALID'
= Decode(Upper('&&1'), 'ALL',a.owner,
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
= 'TRIGGER'
= 'INVALID'
= Decode(Upper('&&1'), 'ALL',a.owner,
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
SPOOL OFF
-- Comment out following line to prevent immediate run
@temp.sql
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
IN
IN
NUMBER,
NUMBER) RETURN VARCHAR2;
IN
IN
VARCHAR2,
NUMBER DEFAULT 16) RETURN NUMBER;
FUNCTION to_hex(p_dec
IN
FUNCTION to_bin(p_dec
IN
FUNCTION to_oct(p_dec
IN
END conversion_api;
/
SHOW ERRORS
-- Author
: DR Timothy S Hall
-- Description : Provides some base conversion functions.
-- Ammedments
:
-When
Who
What
-=========== ========
=================================================
-10-SEP-2003 Tim Hall Initial Creation
-- -------------------------------------------------------------------------
-- --------------------------------------------------------------------------FUNCTION to_base(p_dec
IN NUMBER,
p_base IN NUMBER) RETURN VARCHAR2 IS
-- --------------------------------------------------------------------------l_str
VARCHAR2(255) DEFAULT NULL;
l_num
NUMBER
DEFAULT p_dec;
l_hex
VARCHAR2(16) DEFAULT '0123456789ABCDEF';
BEGIN
IF (TRUNC(p_dec) <> p_dec OR p_dec < 0) THEN
RAISE PROGRAM_ERROR;
END IF;
LOOP
l_str := SUBSTR(l_hex, MOD(l_num,p_base)+1, 1) || l_str;
l_num := TRUNC(l_num/p_base);
EXIT WHEN (l_num = 0);
END LOOP;
RETURN l_str;
END to_base;
-- ---------------------------------------------------------------------------
-- ---------------------------------------------------------------------------
IN
IN
IN
VARCHAR2,
VARCHAR2,
VARCHAR2);
VARCHAR2(5)
:= ',';
UTL_FILE.file_type;
VARCHAR2,
VARCHAR2,
VARCHAR2) AS
BEGIN
l_cursor := DBMS_SQL.open_cursor;
DBMS_SQL.parse(l_cursor, p_query, DBMS_SQL.native);
DBMS_SQL.describe_columns (l_cursor, l_col_cnt, l_desc_tab);
FOR i IN 1 .. l_col_cnt LOOP
DBMS_SQL.define_column(l_cursor, i, l_buffer, 32767 );
END LOOP;
l_rows := DBMS_SQL.execute(l_cursor);
l_file := UTL_FILE.fopen(p_dir, p_file, 'w', 32767);
-- Output the column names.
FOR i IN 1 .. l_col_cnt LOOP
IF i > 1 THEN
UTL_FILE.put(l_file, g_sep);
END IF;
UTL_FILE.put(l_file, l_desc_tab(i).col_name);
END LOOP;
UTL_FILE.new_line(l_file);
-- Output the data.
LOOP
EXIT WHEN DBMS_SQL.fetch_rows(l_cursor) = 0;
FOR i IN 1 .. l_col_cnt LOOP
IF i > 1 THEN
UTL_FILE.put(l_file, g_sep);
END IF;
DBMS_SQL.COLUMN_VALUE(l_cursor, i, l_buffer);
UTL_FILE.put(l_file, l_buffer);
END LOOP;
UTL_FILE.new_line(l_file);
END LOOP;
UTL_FILE.fclose(l_file);
EXCEPTION
WHEN OTHERS THEN
IF UTL_FILE.is_open(l_file) THEN
UTL_FILE.fclose(l_file);
END IF;
IF DBMS_SQL.is_open(l_cursor) THEN
DBMS_SQL.close_cursor(l_cursor);
END IF;
RAISE;
END generate;
END csv;
/
SHOW ERRORS
-- ------------------------------------------------------------------------PROCEDURE logs_on IS
-- ------------------------------------------------------------------------BEGIN
g_logs_on := TRUE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE logs_off IS
-- ------------------------------------------------------------------------BEGIN
g_logs_on := FALSE;
END;
-- -------------------------------------------------------------------------
p_prefix,
p_data,
p_error_level,
SYSDATE,
p_error_user);
COMMIT;
END IF;
END;
-- -------------------------------------------------------------------------
SHOW ERRORS
IN
NUMBER);
IN
IN
IN
VARCHAR2);
PROCEDURE file_output_off;
FUNCTION get_last_prefix
RETURN VARCHAR2;
FUNCTION get_last_data
RETURN VARCHAR2;
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
line
line
line
line
HH24:MI:SS.FF');
(p_data
(p_data
(p_data
(p_data
p_format
IN
IN
IN
IN
IN
VARCHAR2);
NUMBER);
BOOLEAN);
DATE,
VARCHAR2 DEFAULT 'DD-MON-YYYY
IN
IN
IN
IN
IN
IN
IN
IN
IN
VARCHAR2,
VARCHAR2);
VARCHAR2,
NUMBER);
VARCHAR2,
BOOLEAN);
VARCHAR2,
DATE,
VARCHAR2 DEFAULT 'DD-MON-YYYY
END dsp;
/
SHOW ERRORS
:=
:=
:=
:=
:=
:=
:=
:=
:=
FALSE;
FALSE;
TRUE;
255;
'DD-MON-YYYY HH24:MI:SS.FF';
NULL;
NULL;
NULL;
NULL;
-- Hidden Methods
PROCEDURE display (p_prefix IN VARCHAR2,
p_data
IN VARCHAR2);
PROCEDURE wrap_line (p_data IN VARCHAR2);
PROCEDURE output (p_data IN VARCHAR2);
-- Exposed Methods
-- ------------------------------------------------------------------------PROCEDURE reset_defaults IS
-- ------------------------------------------------------------------------BEGIN
g_show_output := FALSE;
g_show_date
:= FALSE;
g_line_wrap
:= TRUE;
g_max_width
:= 255;
g_date_format := 'DD-MON-YYYY HH24:MI:SS.FF';
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE show_output_on IS
-- ------------------------------------------------------------------------BEGIN
g_show_output := TRUE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE show_output_off IS
-- ------------------------------------------------------------------------BEGIN
g_show_output := FALSE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE show_date_on IS
-- ------------------------------------------------------------------------BEGIN
g_show_date := TRUE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE show_date_off IS
-- ------------------------------------------------------------------------BEGIN
g_show_date := FALSE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE line_wrap_on IS
-- ------------------------------------------------------------------------BEGIN
g_line_wrap := TRUE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE line_wrap_off IS
-- ------------------------------------------------------------------------BEGIN
g_line_wrap := FALSE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE file_output_off IS
-- ------------------------------------------------------------------------BEGIN
g_file_dir := NULL;
g_file_name := NULL;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------FUNCTION get_last_prefix
RETURN VARCHAR2 IS
-- ------------------------------------------------------------------------BEGIN
RETURN g_last_prefix;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------FUNCTION get_last_data
RETURN VARCHAR2 IS
-- ------------------------------------------------------------------------BEGIN
RETURN g_last_data;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------BEGIN
display (NULL, p_data);
END;
-- -------------------------------------------------------------------------
-- -------------------------------------------------------------------------
g_last_prefix := p_prefix;
g_last_data
:= p_data;
IF g_show_output THEN
IF l_data IS NULL THEN
l_data := '<NULL>';
END IF;
IF p_prefix IS NOT NULL THEN
l_data := p_prefix || ' : ' || l_data;
END IF;
IF g_show_date THEN
l_data := TO_CHAR(SYSTIMESTAMP, g_date_format) || ' : ' ||
l_data;
END IF;
IF Length(l_data) > g_max_width THEN
IF g_line_wrap THEN
wrap_line (l_data);
ELSE
l_data := SUBSTR(l_data, 1, g_max_width);
output (l_data);
END IF;
ELSE
output (l_data);
END IF;
END IF;
END;
-- -------------------------------------------------------------------------
ELSE
DECLARE
l_file UTL_FILE.file_type;
BEGIN
l_file := UTL_FILE.fopen (g_file_dir, g_file_name, 'A');
UTL_FILE.put_line(l_file, p_data);
UTL_FILE.fclose (l_file);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.fclose (l_file);
END;
END IF;
END;
-- ------------------------------------------------------------------------END dsp;
/
SHOW ERRORS
PROCEDURE logs_off;
PROCEDURE set_date_format (p_date_format IN VARCHAR2 DEFAULT 'DD-MONYYYY HH24:MI:SS');
PROCEDURE line (p_prefix
p_data
p_error_level
p_error_user
IN
IN
IN
IN
VARCHAR2,
VARCHAR2,
NUMBER
DEFAULT 5,
VARCHAR2 DEFAULT USER);
IN
IN
IN
VARCHAR2,
NUMBER
DEFAULT 5,
VARCHAR2 DEFAULT USER);
IN
IN
IN
IN
NUMBER
VARCHAR2
DATE
DATE
DEFAULT
DEFAULT
DEFAULT
DEFAULT
NULL,
NULL,
NULL,
NUll);
SHOW ERRORS
g_reply
g_binary
g_debug
g_convert_crlf
t_string_table := t_string_table();
BOOLEAN := TRUE;
BOOLEAN := TRUE;
BOOLEAN := TRUE;
IN
VARCHAR2);
return l_conn;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE logout(p_conn
IN OUT NOCOPY UTL_TCP.connection,
p_reply IN
BOOLEAN := TRUE) AS
-- ------------------------------------------------------------------------BEGIN
send_command(p_conn, 'QUIT', p_reply);
UTL_TCP.close_connection(p_conn);
END;
-- -------------------------------------------------------------------------
l_bfile
BFILE;
l_data
BLOB;
BEGIN
DBMS_LOB.createtemporary (lob_loc => l_data,
cache
=> TRUE,
dur
=> DBMS_LOB.call);
l_bfile := BFILENAME(p_dir, p_file);
DBMS_LOB.fileopen(l_bfile, DBMS_LOB.file_readonly);
IF DBMS_LOB.getlength(l_bfile) > 0 THEN
DBMS_LOB.loadfromfile(l_data, l_bfile,
DBMS_LOB.getlength(l_bfile));
END IF;
DBMS_LOB.fileclose(l_bfile);
RETURN l_data;
END;
-- -------------------------------------------------------------------------
RETURN l_data;
EXCEPTION
WHEN OTHERS THEN
UTL_TCP.close_connection(l_conn);
RAISE;
END;
-- -------------------------------------------------------------------------
-- get_reply(p_conn);
EXCEPTION
WHEN OTHERS THEN
UTL_TCP.close_connection(l_conn);
RAISE;
END;
-- -------------------------------------------------------------------------
p_to_dir
IN
VARCHAR2,
p_to_file
IN
VARCHAR2) IS
-- ------------------------------------------------------------------------l_conn
UTL_TCP.connection;
l_out_file
UTL_FILE.file_type;
l_amount
PLS_INTEGER;
l_buffer
VARCHAR2(32767);
l_raw_buffer RAW(32767);
BEGIN
l_conn := get_passive(p_conn);
send_command(p_conn, 'RETR ' || p_from_file, TRUE);
IF g_binary THEN
l_out_file := UTL_FILE.fopen(p_to_dir, p_to_file, 'wb', 32767);
ELSE
l_out_file := UTL_FILE.fopen(p_to_dir, p_to_file, 'w', 32767);
END IF;
BEGIN
LOOP
IF g_binary THEN
l_amount := UTL_TCP.read_raw (l_conn, l_raw_buffer, 32767);
UTL_FILE.put_raw(l_out_file, l_raw_buffer, TRUE);
ELSE
l_amount := UTL_TCP.read_text (l_conn, l_buffer, 32767);
IF g_convert_crlf THEN
l_buffer := REPLACE(l_buffer, CHR(13), NULL);
END IF;
UTL_FILE.put(l_out_file, l_buffer);
END IF;
UTL_FILE.fflush(l_out_file);
END LOOP;
EXCEPTION
WHEN UTL_TCP.END_OF_INPUT THEN
NULL;
WHEN OTHERS THEN
NULL;
END;
UTL_FILE.fclose(l_out_file);
UTL_TCP.close_connection(l_conn);
EXCEPTION
WHEN OTHERS THEN
IF UTL_FILE.is_open(l_out_file) THEN
UTL_FILE.fclose(l_out_file);
END IF;
RAISE;
END;
-- -------------------------------------------------------------------------
p_to_file
IN
VARCHAR2) IS
-- ------------------------------------------------------------------------l_conn
UTL_TCP.connection;
l_bfile
BFILE;
l_result
PLS_INTEGER;
l_amount
PLS_INTEGER := 32767;
l_raw_buffer RAW(32767);
l_len
NUMBER;
l_pos
NUMBER := 1;
ex_ascii
EXCEPTION;
BEGIN
IF NOT g_binary THEN
RAISE ex_ascii;
END IF;
l_conn := get_passive(p_conn);
send_command(p_conn, 'STOR ' || p_to_file, TRUE);
l_bfile := BFILENAME(p_from_dir, p_from_file);
DBMS_LOB.fileopen(l_bfile, DBMS_LOB.file_readonly);
l_len := DBMS_LOB.getlength(l_bfile);
WHILE l_pos <= l_len LOOP
DBMS_LOB.READ (l_bfile, l_amount, l_pos, l_raw_buffer);
debug(l_amount);
l_result := UTL_TCP.write_raw(l_conn, l_raw_buffer, l_amount);
l_pos := l_pos + l_amount;
END LOOP;
DBMS_LOB.fileclose(l_bfile);
UTL_TCP.close_connection(l_conn);
EXCEPTION
WHEN ex_ascii THEN
RAISE_APPLICATION_ERROR(-20000, 'PUT_DIRECT not available in ASCII
mode.');
WHEN OTHERS THEN
IF DBMS_LOB.fileisopen(l_bfile) = 1 THEN
DBMS_LOB.fileclose(l_bfile);
END IF;
RAISE;
END;
-- -------------------------------------------------------------------------
-- -------------------------------------------------------------------------
utl_tcp.close_connection(l_conn);
get_reply (p_conn);
END;
-- -------------------------------------------------------------------------
-- -------------------------------------------------------------------------
-- Name
: http://www.oracle-base.com/dba/miscellaneous/ftp.pks
-- Author
: DR Timothy S Hall
-- Description : Basic FTP API. For usage notes see:
-http://www.oraclebase.com/articles/misc/FTPFromPLSQL.php
-- Requirements : UTL_TCP
-- Ammedments
:
-When
Who
What
-=========== ========
=================================================
-14-AUG-2003 Tim Hall Initial Creation
-10-MAR-2004 Tim Hall Add convert_crlf procedure.
-Make get_passive function visible.
-Added get_direct and put_direct procedures.
-03-OCT-2006 Tim Hall Add list, rename, delete, mkdir, rmdir
procedures.
-15-Jan-2008 Tim Hall login: Include timeout parameter (suggested
by Dmitry Bogomolov).
-12-Jun-2008 Tim Hall get_reply: Moved to pakage specification.
-22-Apr-2009 Tim Hall nlst: Added to return list of file names
only (suggested by Julian and John Duncan)
-- ------------------------------------------------------------------------TYPE t_string_table IS TABLE OF VARCHAR2(32767);
FUNCTION login (p_host
IN
p_port
IN
p_user
IN
p_pass
IN
p_timeout IN
RETURN UTL_TCP.connection;
VARCHAR2,
VARCHAR2,
VARCHAR2,
VARCHAR2,
NUMBER := NULL)
IN OUT NOCOPY
IN OUT NOCOPY
IN
UTL_TCP.connection)
UTL_TCP.connection,
BOOLEAN := TRUE);
IN OUT NOCOPY
IN
IN
IN OUT NOCOPY
IN
IN
UTL_TCP.connection,
VARCHAR2,
BOOLEAN := TRUE);
UTL_TCP.connection);
VARCHAR2,
VARCHAR2)
IN
IN
IN OUT NOCOPY
IN
VARCHAR2,
VARCHAR2)
VARCHAR2)
IN OUT NOCOPY
IN
VARCHAR2)
IN
IN
IN
CLOB,
VARCHAR2,
VARCHAR2);
IN
IN
IN
BLOB,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN
IN
VARCHAR2,
CLOB);
IN OUT NOCOPY
IN
IN
VARCHAR2,
BLOB);
IN OUT NOCOPY
IN
IN
IN
UTL_TCP.connection,
VARCHAR2,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN
IN
IN
UTL_TCP.connection,
VARCHAR2,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN
IN
IN
UTL_TCP.connection,
VARCHAR2,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN
IN
IN
UTL_TCP.connection,
VARCHAR2,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN OUT NOCOPY
UTL_TCP.connection);
IN OUT NOCOPY
UTL_TCP.connection);
UTL_TCP.connection);
IN OUT NOCOPY
IN
OUT
UTL_TCP.connection,
VARCHAR2,
t_string_table);
IN OUT NOCOPY
IN
OUT
UTL_TCP.connection,
VARCHAR2,
t_string_table);
IN OUT NOCOPY
IN
IN
UTL_TCP.connection,
VARCHAR2,
VARCHAR2);
IN OUT NOCOPY
IN
UTL_TCP.connection,
VARCHAR2);
IN OUT NOCOPY
IN
UTL_TCP.connection,
VARCHAR2);
IN OUT NOCOPY
IN
UTL_TCP.connection,
VARCHAR2);
IN
BOOLEAN);
END ftp;
/
SHOW ERRORS
NUMBER,
NUMBER DEFAULT 1)
SELECT column_value
FROM
TABLE(get_pivot(17,2));
SELECT *
FROM
v$recovery_status;
SELECT *
FROM
v$recover_file;
SELECT *
FROM
v$recovery_file_status;
SELECT *
FROM
v$recovery_log;
SELECT username,
command,
status,
module
FROM
v$session;
in_out AS "In/Out",
default_value
FROM
user_arguments
WHERE package_name = UPPER('&1')
AND
object_name = DECODE(UPPER('&2'), 'ALL', object_name,
UPPER('&2'))
ORDER BY object_name, overload, sequence;
SET PAGESIZE 14
SET LINESIZE 80
PROCEDURE add_parameter(p_request
p_name
p_type
p_value
FUNCTION invoke(p_request
p_url
p_action
RETURN t_response;
IN
IN
IN
VARCHAR2,
VARCHAR2,
VARCHAR2 DEFAULT 'SOAP-ENV')
IN OUT NOCOPY
IN
IN
IN
IN OUT NOCOPY
IN
IN
FUNCTION get_return_value(p_response
p_name
p_namespace
RETURN VARCHAR2;
t_request,
VARCHAR2,
VARCHAR2,
VARCHAR2);
t_request,
VARCHAR2,
VARCHAR2)
IN OUT NOCOPY
IN
IN
t_response,
VARCHAR2,
VARCHAR2)
END soap_api;
/
SHOW ERRORS
-- -------------------------------------------------------------------------
-- -------------------------------------------------------------------FUNCTION new_request(p_method
IN VARCHAR2,
p_namespace
IN VARCHAR2,
p_envelope_tag IN VARCHAR2 DEFAULT 'SOAP-ENV')
RETURN t_request AS
-- -------------------------------------------------------------------l_request t_request;
BEGIN
l_request.method
:= p_method;
l_request.namespace
:= p_namespace;
l_request.envelope_tag := p_envelope_tag;
RETURN l_request;
END;
-- --------------------------------------------------------------------
-- -------------------------------------------------------------------PROCEDURE add_parameter(p_request
IN OUT NOCOPY t_request,
p_name
IN
VARCHAR2,
p_type
IN
VARCHAR2,
p_value IN
VARCHAR2) AS
-- -------------------------------------------------------------------BEGIN
p_request.body := p_request.body||'<'||p_name||'
xsi:type="'||p_type||'">'||p_value||'</'||p_name||'>';
END;
-- --------------------------------------------------------------------
'<'||p_request.method||' '||p_request.namespace||'
'||p_request.envelope_tag||':encodingStyle="http://schemas.xmlsoap.org/
soap/encoding/">' ||
p_request.body ||
'</'||p_request.method||'>' ||
'</'||p_request.envelope_tag||':Body>' ||
'</'||p_request.envelope_tag||':Envelope>';
END;
-- --------------------------------------------------------------------
'xmlns:'||p_response.envelope_tag||'="http://schemas.xmlsoap.org/soap/e
nvelope/').getstringval();
RAISE_APPLICATION_ERROR(-20000, l_fault_code || ' - ' ||
l_fault_string);
END IF;
END;
-- --------------------------------------------------------------------
-- -------------------------------------------------------------------FUNCTION get_return_value(p_response
IN OUT NOCOPY t_response,
p_name
IN
VARCHAR2,
p_namespace IN
VARCHAR2)
RETURN VARCHAR2 AS
-- -------------------------------------------------------------------BEGIN
RETURN
p_response.doc.extract('//'||p_name||'/child::text()',p_namespace).gets
tringval();
END;
-- -------------------------------------------------------------------END soap_api;
/
SHOW ERRORS
IN
END;
/
VARCHAR2);
SHOW ERRORS
IN
IN
CLOB,
VARCHAR2 DEFAULT ',')
END string_api;
/
SHOW ERRORS
l_array.delete;
IF l_text IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'P_TEXT parameter cannot be NULL');
END IF;
WHILE l_text IS NOT NULL LOOP
l_idx := INSTR(l_text, p_delimeter);
l_array.extend;
IF l_idx > 0 THEN
l_array(l_array.last) := SUBSTR(l_text, 1, l_idx - 1);
l_text := SUBSTR(l_text, l_idx + 1);
ELSE
l_array(l_array.last) := l_text;
l_text := NULL;
END IF;
END LOOP;
RETURN l_array;
END split_text;
-- --------------------------------------------------------------------------END string_api;
/
SHOW ERRORS
-- ----------------------------------------------------------------------------------- File Name
: http://www.oraclebase.com/dba/miscellaneous/string_agg.sql
-- Author
: DR Timothy S Hall (based on an a method suggested by
Tom Kyte).
-http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:2296
14022562
-- Description : Aggregate function to concatenate strings.
-- Call Syntax : Incorporate into queries as follows:
-COLUMN employees FORMAT A50
--SELECT deptno, string_agg(ename) AS employees
-FROM
emp
-GROUP BY deptno;
--DEPTNO EMPLOYEES
----------- -------------------------------------------------10 CLARK,KING,MILLER
-20 SMITH,FORD,ADAMS,SCOTT,JONES
-30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
--- Last Modified: 20-APR-2005
-- ---------------------------------------------------------------------------------CREATE OR REPLACE TYPE t_string_agg AS OBJECT
(
g_string VARCHAR2(32767),
IN OUT
IN OUT
IN
IN OUT
IN
t_string_agg)
t_string_agg,
VARCHAR2 )
IN
OUT
IN
VARCHAR2,
NUMBER)
t_string_agg,
t_string_agg)
);
/
SHOW ERRORS
IN OUT
t_string_agg)
t_string_agg,
VARCHAR2 )
VARCHAR2,
NUMBER)
SHOW ERRORS
SELECT a.table_name
FROM
user_tables a
WHERE a.table_name =
Decode(Upper('&&1'),'ALL',a.table_name,Upper('&&1'));
CURSOR c_table1 (p_table_name
IN VARCHAR2,
p_column_name IN VARCHAR2) IS
SELECT a.column_name,
a.data_type,
a.data_length,
a.data_precision,
a.data_scale,
a.nullable
FROM
user_tab_columns a
WHERE a.table_name = p_table_name
AND
a.column_name = NVL(p_column_name,a.column_name);
CURSOR c_table2 (p_table_name
IN VARCHAR2,
p_column_name IN VARCHAR2) IS
SELECT a.column_name,
a.data_type,
a.data_length,
a.data_precision,
a.data_scale,
a.nullable
FROM
user_tab_columns@pdds a
WHERE a.table_name = p_table_name
AND
a.column_name = NVL(p_column_name,a.column_name);
v_owner1
v_owner2
v_data
v_work
VARCHAR2(10) := 'DDDS2';
VARCHAR2(10) := 'PDDS';
c_table1%ROWTYPE;
BOOLEAN := FALSE;
BEGIN
Dbms_Output.Disable;
Dbms_Output.Enable(1000000);
FOR cur_tab IN c_tables LOOP
v_work := FALSE;
FOR cur_rec IN c_table1 (cur_tab.table_name, NULL) LOOP
v_work := TRUE;
OPEN c_table2 (cur_tab.table_name, cur_rec.column_name);
FETCH c_table2
INTO v_data;
IF c_table2%NOTFOUND THEN
Dbms_Output.Put_Line(cur_tab.table_name || '.' ||
cur_rec.column_name || ' : Present in ' || v_owner1 || ' but not in '
|| v_owner2);
ELSE
IF cur_rec.data_type != v_data.data_type THEN
Dbms_Output.Put_Line(cur_tab.table_name || '.' ||
cur_rec.column_name || ' : DATA_TYPE differs between ' || v_owner1 || '
and ' || v_owner2);
END IF;
Dbms_Output.Put_Line(cur_tab.table_name || '.' ||
cur_rec.column_name || ' : NULLABLE differs between ' || v_owner2 || '
and ' || v_owner1);
END IF;
END IF;
CLOSE c_table1;
END LOOP;
IF v_work = FALSE THEN
Dbms_Output.Put_Line(cur_tab.table_name || ' does not exist!');
END IF;
END LOOP;
END;
/
SPOOL OFF
PROMPT
SET FEEDBACK ON
IN
IN
IN
IN
VARCHAR2,
VARCHAR2,
NUMBER
DEFAULT 5,
VARCHAR2 DEFAULT USER);
IN
IN
IN
IN
NUMBER
VARCHAR2
DATE
DATE
DEFAULT
DEFAULT
DEFAULT
DEFAULT
NULL,
NULL,
NULL,
NUll);
SHOW ERRORS
-- ------------------------------------------------------------------------PROCEDURE trace_on IS
-- ------------------------------------------------------------------------BEGIN
g_trace_on := TRUE;
END;
-- -------------------------------------------------------------------------
-- ------------------------------------------------------------------------PROCEDURE trace_off IS
-- ------------------------------------------------------------------------BEGIN
g_trace_on := FALSE;
END;
-- -------------------------------------------------------------------------
p_prefix,
p_data,
p_trc_level,
Sysdate,
p_trc_user);
COMMIT;
END IF;
END;
-- -------------------------------------------------------------------------