Sequencing in REM
Hi Experts,
What are the required steps and required configuration for sequencing in MTS-REM. Can somebody plaese tell me in details?
Mil
hi
for rem, Master data is BOM, rate routing (CA21) work center, and production version. make product ccost collector for you material and production version.in KKF6N before that standard cost estimate in ck11n and then update in maerial master by CK24.
In REM it is run scheduling quantity. so remained planned order. with order type PE.
MFBF (backflushing) is nothing but confirmation with goods issues for bom material and goods reciept of finished material.
Regards
Pravin
Similar Messages
-
How to compare two oracle database schemas
hi all,
i want to compare and find out differences between two oracle databases. The comparison should be made on between table definition,table data,primary and foreign keys, packages and functions.
Is there any management console or tool embedded in the oracle enterprise manger?
it is really appreciate if anyone can point me towards wright direction asap.Hi ,
This script would help u a lot in comparing 2 schemas and generate a report on them.
Script:
This script will compare two Oracle schemas and generate a report of
discrepencies and this script has been used against Oracle 7.3.4, 8.0.5,
REM and 8.1.7 databases, but it should also work with other versions.
REM
REM Please note that the following schema object types and attributes are
REM not compared by this script at this time:
REM
REM cluster definitions
REM comments on tables and columns
REM nesting, partition, IOT, and temporary attributes of tables
REM snapshots/materialized views, logs, and refresh groups
REM foreign function libraries
REM object types
REM operators
REM indextypes
REM dimensions
REM auditing information
REM new schema attributes added for Oracle 9i
REM
REM Version 02-04-2002
REM
PROMPT
PROMPT Schema Comparison
PROMPT =================
PROMPT
PROMPT Run this script while connected to one Oracle schema. Enter the Oracle
PROMPT username, password, and SQL*Net / Net8 service name of a second schema.
PROMPT This script will compare the two schemas and generate a report of
PROMPT differences.
PROMPT
PROMPT A temporary database link and table will be created and dropped by
PROMPT this script.
PROMPT
ACCEPT schema CHAR PROMPT "Enter username for remote schema: "
ACCEPT passwd CHAR PROMPT "Enter password for remote schema: " HIDE
ACCEPT tnssvc CHAR PROMPT "Enter SQL*Net / Net8 service for remote schema: "
PROMPT
ACCEPT report CHAR PROMPT "Enter filename for report output: "
SET FEEDBACK OFF
SET VERIFY OFF
CREATE DATABASE LINK rem_schema CONNECT TO &schema IDENTIFIED BY &passwd
USING '&tnssvc';
SET TRIMSPOOL ON
SPOOL &report
SELECT SUBSTR (RPAD (TO_CHAR (SYSDATE, 'mm/dd/yyyy hh24:mi:ss'), 25), 1, 25)
"REPORT DATE AND TIME"
FROM SYS.dual;
COL local_schema FORMAT a35 TRUNC HEADING "LOCAL SCHEMA"
COL remote_schema FORMAT a35 TRUNC HEADING "REMOTE SCHEMA"
SELECT USER || '@' || C.global_name local_schema,
A.username || '@' || B.global_name remote_schema
FROM user_users@rem_schema A, global_name@rem_schema B, global_name C
WHERE ROWNUM = 1;
SET PAGESIZE 9999
SET LINESIZE 250
SET FEEDBACK 1
SET TERMOUT OFF
PROMPT
REM Object differences
REM ==================
COL object_name FORMAT a30
PROMPT SUMMARY OF OBJECTS MISSING FROM LOCAL SCHEMA
SELECT object_type, COUNT (*)
FROM
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name)
FROM user_objects@rem_schema
MINUS
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name)
FROM user_objects
GROUP BY object_type
ORDER BY object_type;
PROMPT SUMMARY OF EXTRANEOUS OBJECTS IN LOCAL SCHEMA
SELECT object_type, COUNT (*)
FROM
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name)
FROM user_objects
WHERE object_type != 'DATABASE LINK'
OR object_name NOT LIKE 'REM_SCHEMA.%'
MINUS
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name)
FROM user_objects@rem_schema
GROUP BY object_type
ORDER BY object_type;
PROMPT OBJECTS MISSING FROM LOCAL SCHEMA
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name) object_name
FROM user_objects@rem_schema
MINUS
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name) object_name
FROM user_objects
ORDER BY object_type, object_name;
PROMPT EXTRANEOUS OBJECTS IN LOCAL SCHEMA
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name) object_name
FROM user_objects
WHERE object_type != 'DATABASE LINK'
OR object_name NOT LIKE 'REM_SCHEMA.%'
MINUS
SELECT object_type,
DECODE (object_type,
'INDEX', DECODE (SUBSTR (object_name, 1, 5),
'SYS_C', 'SYS_C', object_name),
'LOB', DECODE (SUBSTR (object_name, 1, 7),
'SYS_LOB', 'SYS_LOB', object_name),
object_name) object_name
FROM user_objects@rem_schema
ORDER BY object_type, object_name;
PROMPT OBJECTS IN LOCAL SCHEMA THAT ARE NOT VALID
SELECT object_name, object_type, status
FROM user_objects
WHERE status != 'VALID'
ORDER BY object_name, object_type;
REM Table differences
REM =================
PROMPT TABLE COLUMNS MISSING FROM ONE SCHEMA
PROMPT (NOTE THAT THIS REPORT DOES NOT LIST DISCREPENCIES IN COLUMN ORDER)
SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
FROM user_tab_columns@rem_schema
WHERE table_name IN
SELECT table_name
FROM user_tables
MINUS
SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
FROM user_tab_columns
UNION ALL
SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
FROM user_tab_columns
WHERE table_name IN
SELECT table_name
FROM user_tables@rem_schema
MINUS
SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
FROM user_tab_columns@rem_schema
ORDER BY 1, 2;
COL schema FORMAT a15
COL nullable FORMAT a8
COL data_type FORMAT a9
COL data_length FORMAT 9999 HEADING LENGTH
COL data_precision FORMAT 9999 HEADING PRECISION
COL data_scale FORMAT 9999 HEADING SCALE
COL default_length FORMAT 9999 HEADING LENGTH_OF_DEFAULT_VALUE
PROMPT DATATYPE DISCREPENCIES FOR TABLE COLUMNS THAT EXIST IN BOTH SCHEMAS
SELECT table_name, column_name, 'Remote' schema,
nullable, data_type, data_length, data_precision, data_scale,
default_length
FROM user_tab_columns@rem_schema
WHERE (table_name, column_name) IN
SELECT table_name, column_name
FROM user_tab_columns
MINUS
SELECT table_name, column_name, 'Remote' schema,
nullable, data_type, data_length, data_precision, data_scale,
default_length
FROM user_tab_columns
UNION ALL
SELECT table_name, column_name, 'Local' schema,
nullable, data_type, data_length, data_precision, data_scale,
default_length
FROM user_tab_columns
WHERE (table_name, column_name) IN
SELECT table_name, column_name
FROM user_tab_columns@rem_schema
MINUS
SELECT table_name, column_name, 'Local' schema,
nullable, data_type, data_length, data_precision, data_scale,
default_length
FROM user_tab_columns@rem_schema
ORDER BY 1, 2, 3;
REM Index differences
REM =================
COL column_position FORMAT 999 HEADING ORDER
PROMPT INDEX DISCREPENCIES FOR INDEXES THAT EXIST IN BOTH SCHEMAS
SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
B.column_name, B.column_position
FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
WHERE A.index_name IN
SELECT index_name
FROM user_indexes
AND B.index_name = A.index_name
AND B.table_name = A.table_name
MINUS
SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
B.column_name, B.column_position
FROM user_indexes A, user_ind_columns B
WHERE B.index_name = A.index_name
AND B.table_name = A.table_name
UNION ALL
SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
B.column_name, B.column_position
FROM user_indexes A, user_ind_columns B
WHERE A.index_name IN
SELECT index_name
FROM user_indexes@rem_schema
AND B.index_name = A.index_name
AND B.table_name = A.table_name
MINUS
SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
B.column_name, B.column_position
FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
WHERE B.index_name = A.index_name
AND B.table_name = A.table_name
ORDER BY 1, 2, 6;
REM Constraint differences
REM ======================
PROMPT CONSTRAINT DISCREPENCIES FOR TABLES THAT EXIST IN BOTH SCHEMAS
SET FEEDBACK OFF
CREATE TABLE temp_schema_compare
database NUMBER(1),
object_name VARCHAR2(30),
object_text VARCHAR2(2000),
hash_value NUMBER
DECLARE
CURSOR c1 IS
SELECT constraint_name, search_condition
FROM user_constraints
WHERE search_condition IS NOT NULL;
CURSOR c2 IS
SELECT constraint_name, search_condition
FROM user_constraints@rem_schema
WHERE search_condition IS NOT NULL;
v_constraint_name VARCHAR2(30);
v_search_condition VARCHAR2(32767);
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_constraint_name, v_search_condition;
EXIT WHEN c1%NOTFOUND;
v_search_condition := SUBSTR (v_search_condition, 1, 2000);
INSERT INTO temp_schema_compare
database, object_name, object_text
VALUES
1, v_constraint_name, v_search_condition
END LOOP;
CLOSE c1;
OPEN c2;
LOOP
FETCH c2 INTO v_constraint_name, v_search_condition;
EXIT WHEN c2%NOTFOUND;
v_search_condition := SUBSTR (v_search_condition, 1, 2000);
INSERT INTO temp_schema_compare
database, object_name, object_text
VALUES
2, v_constraint_name, v_search_condition
END LOOP;
CLOSE c2;
COMMIT;
END;
SET FEEDBACK 1
SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
'9', NULL) constraint_name,
'Remote' schema, A.constraint_type, A.table_name,
A.r_constraint_name, A.delete_rule, A.status, B.object_text
FROM user_constraints@rem_schema A, temp_schema_compare B
WHERE A.table_name IN
SELECT table_name
FROM user_tables
AND B.database (+) = 2
AND B.object_name (+) = A.constraint_name
MINUS
SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
'9', NULL) constraint_name,
'Remote' schema, A.constraint_type, A.table_name,
A.r_constraint_name, A.delete_rule, A.status, B.object_text
FROM user_constraints A, temp_schema_compare B
WHERE B.database (+) = 1
AND B.object_name (+) = A.constraint_name
UNION ALL
SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
'9', NULL) constraint_name,
'Local' schema, A.constraint_type, A.table_name,
A.r_constraint_name, A.delete_rule, A.status, B.object_text
FROM user_constraints A, temp_schema_compare B
WHERE A.table_name IN
SELECT table_name
FROM user_tables@rem_schema
AND B.database (+) = 1
AND B.object_name (+) = A.constraint_name
MINUS
SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
'9', NULL) constraint_name,
'Local' schema, A.constraint_type, A.table_name,
A.r_constraint_name, A.delete_rule, A.status, B.object_text
FROM user_constraints@rem_schema A, temp_schema_compare B
WHERE B.database (+) = 2
AND B.object_name (+) = A.constraint_name
ORDER BY 1, 4, 2;
REM Database link differences
REM =========================
PROMPT DATABASE LINK DISCREPENCIES
COL db_link FORMAT a40
SELECT db_link, 'Remote' schema, username, host
FROM user_db_links@rem_schema
MINUS
SELECT db_link, 'Remote' schema, username, host
FROM user_db_links
UNION ALL
SELECT db_link, 'Local' schema, username, host
FROM user_db_links
WHERE db_link NOT LIKE 'REM_SCHEMA.%'
MINUS
SELECT db_link, 'Local' schema, username, host
FROM user_db_links@rem_schema
ORDER BY 1, 2;
REM Sequence differences
REM ====================
PROMPT SEQUENCE DISCREPENCIES
SELECT sequence_name, 'Remote' schema, min_value, max_value,
increment_by, cycle_flag, order_flag, cache_size
FROM user_sequences@rem_schema
MINUS
SELECT sequence_name, 'Remote' schema, min_value, max_value,
increment_by, cycle_flag, order_flag, cache_size
FROM user_sequences
UNION ALL
SELECT sequence_name, 'Local' schema, min_value, max_value,
increment_by, cycle_flag, order_flag, cache_size
FROM user_sequences
MINUS
SELECT sequence_name, 'Local' schema, min_value, max_value,
increment_by, cycle_flag, order_flag, cache_size
FROM user_sequences@rem_schema
ORDER BY 1, 2;
REM Private synonym differences
REM ===========================
PROMPT PRIVATE SYNONYM DISCREPENCIES
SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
FROM user_synonyms@rem_schema
MINUS
SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
FROM user_synonyms
UNION ALL
SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
FROM user_synonyms
MINUS
SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
FROM user_synonyms@rem_schema
ORDER BY 1, 2;
REM PL/SQL differences
REM ==================
PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
PROMPT THAT EXIST IN BOTH SCHEMAS
SELECT name, type, COUNT (*) discrepencies
FROM
SELECT name, type, line, text
FROM user_source@rem_schema
WHERE (name, type) IN
SELECT object_name, object_type
FROM user_objects
MINUS
SELECT name, type, line, text
FROM user_source
UNION ALL
SELECT name, type, line, text
FROM user_source
WHERE (name, type) IN
SELECT object_name, object_type
FROM user_objects@rem_schema
MINUS
SELECT name, type, line, text
FROM user_source@rem_schema
GROUP BY name, type
ORDER BY name, type;
PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
PROMPT THAT EXIST IN BOTH SCHEMAS (CASE INSENSITIVE COMPARISON)
SELECT name, type, COUNT (*) discrepencies
FROM
SELECT name, type, line, UPPER (text)
FROM user_source@rem_schema
WHERE (name, type) IN
SELECT object_name, object_type
FROM user_objects
MINUS
SELECT name, type, line, UPPER (text)
FROM user_source
UNION ALL
SELECT name, type, line, UPPER (text)
FROM user_source
WHERE (name, type) IN
SELECT object_name, object_type
FROM user_objects@rem_schema
MINUS
SELECT name, type, line, UPPER (text)
FROM user_source@rem_schema
GROUP BY name, type
ORDER BY name, type;
REM Trigger differences
REM ===================
PROMPT TRIGGER DISCREPENCIES
SET FEEDBACK OFF
TRUNCATE TABLE temp_schema_compare;
DECLARE
CURSOR c1 IS
SELECT trigger_name, trigger_body
FROM user_triggers;
CURSOR c2 IS
SELECT trigger_name, trigger_body
FROM user_triggers@rem_schema;
v_trigger_name VARCHAR2(30);
v_trigger_body VARCHAR2(32767);
v_hash_value NUMBER;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_trigger_name, v_trigger_body;
EXIT WHEN c1%NOTFOUND;
v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
v_trigger_body := UPPER (v_trigger_body);
v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
INSERT INTO temp_schema_compare (database, object_name, hash_value)
VALUES (1, v_trigger_name, v_hash_value);
END LOOP;
CLOSE c1;
OPEN c2;
LOOP
FETCH c2 INTO v_trigger_name, v_trigger_body;
EXIT WHEN c2%NOTFOUND;
v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
v_trigger_body := UPPER (v_trigger_body);
v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
INSERT INTO temp_schema_compare (database, object_name, hash_value)
VALUES (2, v_trigger_name, v_hash_value);
END LOOP;
CLOSE c2;
END;
SET FEEDBACK 1
SELECT A.trigger_name, 'Local' schema, A.trigger_type,
A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
A.status, B.hash_value
FROM user_triggers A, temp_schema_compare B
WHERE B.object_name (+) = A.trigger_name
AND B.database (+) = 1
AND A.table_name IN
SELECT table_name
FROM user_tables@rem_schema
MINUS
SELECT A.trigger_name, 'Local' schema, A.trigger_type,
A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
A.status, B.hash_value
FROM user_triggers@rem_schema A, temp_schema_compare B
WHERE B.object_name (+) = A.trigger_name
AND B.database (+) = 2
UNION ALL
SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
A.status, B.hash_value
FROM user_triggers@rem_schema A, temp_schema_compare B
WHERE B.object_name (+) = A.trigger_name
AND B.database (+) = 2
AND A.table_name IN
SELECT table_name
FROM user_tables
MINUS
SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
A.status, B.hash_value
FROM user_triggers A, temp_schema_compare B
WHERE B.object_name (+) = A.trigger_name
AND B.database (+) = 1
ORDER BY 1, 2, 5, 3;
REM View differences
REM ================
PROMPT VIEW DISCREPENCIES
SET FEEDBACK OFF
TRUNCATE TABLE temp_schema_compare;
DECLARE
CURSOR c1 IS
SELECT view_name, text
FROM user_views;
CURSOR c2 IS
SELECT view_name, text
FROM user_views@rem_schema;
v_view_name VARCHAR2(30);
v_text VARCHAR2(32767);
v_hash_value NUMBER;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_view_name, v_text;
EXIT WHEN c1%NOTFOUND;
v_text := REPLACE (v_text, ' ', NULL);
v_text := REPLACE (v_text, CHR(9), NULL);
v_text := REPLACE (v_text, CHR(10), NULL);
v_text := REPLACE (v_text, CHR(13), NULL);
v_text := UPPER (v_text);
v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
INSERT INTO temp_schema_compare (database, object_name, hash_value)
VALUES (1, v_view_name, v_hash_value);
END LOOP;
CLOSE c1;
OPEN c2;
LOOP
FETCH c2 INTO v_view_name, v_text;
EXIT WHEN c2%NOTFOUND;
v_text := REPLACE (v_text, ' ', NULL);
v_text := REPLACE (v_text, CHR(9), NULL);
v_text := REPLACE (v_text, CHR(10), NULL);
v_text := REPLACE (v_text, CHR(13), NULL);
v_text := UPPER (v_text);
v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
INSERT INTO temp_schema_compare (database, object_name, hash_value)
VALUES (2, v_view_name, v_hash_value);
END LOOP;
CLOSE c2;
END;
SET FEEDBACK 1
SELECT A.view_name, 'Local' schema, B.hash_value
FROM user_views A, temp_schema_compare B
WHERE B.object_name (+) = A.view_name
AND B.database (+) = 1
AND A.view_name IN
SELECT view_name
FROM user_views@rem_schema
MINUS
SELECT A.view_name, 'Local' schema, B.hash_value
FROM user_views@rem_schema A, temp_schema_compare B
WHERE B.object_name (+) = A.view_name
AND B.database (+) = 2
UNION ALL
SELECT A.view_name, 'Remote' schema, B.hash_value
FROM user_views@rem_schema A, temp_schema_compare B
WHERE B.object_name (+) = A.view_name
AND B.database (+) = 2
AND A.view_name IN
SELECT view_name
FROM user_views
MINUS
SELECT A.view_name, 'Remote' schema, B.hash_value
FROM user_views A, temp_schema_compare B
WHERE B.object_name (+) = A.view_name
AND B.database (+) = 1
ORDER BY 1, 2;
REM Job queue differences
REM =====================
COL what FORMAT a30
COL interval FORMAT a30
PROMPT JOB QUEUE DISCREPENCIES
SELECT what, interval, 'Remote' schema
FROM user_jobs@rem_schema
MINUS
SELECT what, interval, 'Remote' schema
FROM user_jobs
UNION ALL
SELECT what, interval, 'Local' schema
FROM user_jobs
MINUS
SELECT what, interval, 'Local' schema
FROM user_jobs@rem_schema
ORDER BY 1, 2, 3;
REM Privilege differences
REM =====================
PROMPT OBJECT-LEVEL GRANT DISCREPENCIES
SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
FROM user_tab_privs@rem_schema
WHERE (owner, table_name) IN
SELECT owner, object_name
FROM all_objects
MINUS
SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
FROM user_tab_privs
UNION ALL
SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
FROM user_tab_privs
WHERE (owner, table_name) IN
SELECT owner, object_name
FROM all_objects@rem_schema
MINUS
SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
FROM user_tab_privs@rem_schema
ORDER BY 1, 2, 3;
PROMPT SYSTEM PRIVILEGE DISCREPENCIES
SELECT privilege, 'Remote' schema, admin_option
FROM user_sys_privs@rem_schema
MINUS
SELECT privilege, 'Remote' schema, admin_option
FROM user_sys_privs
UNION ALL
SELECT privilege, 'Local' schema, admin_option
FROM user_sys_privs
MINUS
SELECT privilege, 'Local' schema, admin_option
FROM user_sys_privs@rem_schema
ORDER BY 1, 2;
PROMPT ROLE PRIVILEGE DISCREPENCIES
SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
FROM user_role_privs@rem_schema
MINUS
SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
FROM user_role_privs
UNION ALL
SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
FROM user_role_privs
MINUS
SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
FROM user_role_privs@rem_schema
ORDER BY 1, 2;
SPOOL OFF
SET TERMOUT ON
PROMPT
PROMPT Report output written to &report
SET FEEDBACK OFF
DROP TABLE temp_schema_compare;
DROP DATABASE LINK rem_schema;
SET FEEDBACK 6
SET PAGESIZE 20
SET LINESIZE 80 -
Sending e-mail prior to Ora 8.0 from PL/SQL
Dear peers,
I would like to e-mail from a Pl/SQL block but can't use utl_smtp because the Oracle version is prior to 8.0. Could you recommend ways of doing so?
My OS is Unix and have Perl,and PHP as well. I have little experience with any of this tools, so please be simple.
Any suggestions would be greatly appreciated.
Thanks, CIPHi,
The following article on sending mail is for Oracle 7.x as well and is specific to UNIX. It uses DBMS_PIPE PL/SQL package, a PRO*C program and UNIX sendmail utility for sending e-mail. For this, the database you are using should have DBMS_PIPE package installed.
Hope that helps,
Srinivas
ARTICLE : How to Generate E-mail within PL/SQL Routines?
References
For DBMS_PIPE/architecture, refer to the following:
"Oracle7 Server Application Developer's Guide" (A32536-1)
"Oracle8 Application Developer's Guide Release 8.0" (A58241-01)
"Oracle8i Supplied PL/SQL Packages Reference Release 2 (8.1.6)" (A76936-01)
Preparation
Perform the steps below to setup the necessary files.
Note: When testing on your machine, the code generates simple
e-mail messages for demonstration purposes.
1. Read the main comment block of maildaemon.pc and make appropriate
changes.
2. Read the main comment block of maildaemon.sql and make appropriate
changes.
3. Connect to SQL*Plus. If not already setup, GRANT EXECUTE ON DBMS_PIPE TO
where userid is public or the schema owner of the package.
4. Run maildaemon.sql to setup dependencies.
5. Copy proc.mk (demo_proc.mk on v8 databases) into directory and issue
the following make line to build the executable for maildaemon:
make -f proc.mk build EXE=maildaemon OBJS=maildaemon.o
PROCFLAGS="sqlcheck=semantics parse=full userid=scott/tiger"
Note: Replace userid=scott/tiger with the schema to build under.
6. Run the maildaemon executable.
7. To test, modify the code below and run from SQL*Plus:
declare
dummy number;
begin
maildaemon.setauditon;
dummy:= maildaemon.email_msg1( '[email protected]' );
dummy:= maildaemon.email_msg2( '[email protected]', 'scott',
to_char( sysdate, 'dd-Mon-yyyy hh:mi:ss' ));
maildaemon.setauditoff;
maildaemon.stop;
end;
maildaemon.sql
rem file: maildaemon.sql
rem last modified: 10/15/98
rem
rem This source file generates dependencies for the maildaemon executable
rem such as logging as well as the PL/SQL package interface to communicate
rem with the maildaemon Pro*C application.
rem
rem Please note: this is just a sample. You will need to modify/replace the
rem email_msg1() and email_msg2() functions in the maildaemon package.
rem Both functions have been provided as simple demonstrations on how to
rem write an interface. Consult the Application Developers Guide for more
rem information on using the DBMS_PIPE package.
rem table: emailaudit
rem purpose: contain auditing messages from the maildaemon Pro*C application
create table emailaudit
msgid number constraint msgid_pk primary key,
msgtype varchar2( 20 ),
msgstat varchar2( 100 )
rem sequence: emailmsgseq
rem purpose: to allow maildaemon Pro*C application to generate unique message
rem identifiers for opening temporary files and auditing.
create sequence emailmsgseq;
rem package: maildaemon
rem purpose: provide a PL/SQL interface to generate e-mail messages
create or replace package maildaemon as
/* setauditon( )
* procedure
* parameters: timeout: timeout factor for informing the maildaemon exe
* exceptions: -20030: error sending message to maildaemon exe
* description: turn on auditing in the maildaemon exe
procedure setauditon( timeout number default 10 );
/* setauditoff( )
* procedure
* parameters: timeout: timeout factor for informing the maildaemon exe
* exceptions: -20030: error sending message to maildaemon exe
* description: turn off auditing in the maildaemon exe
procedure setauditoff( timeout number default 10 );
/* stop( )
* procedure
* parameters: timeout: timeout factor for informing the maildaemon exe
* exceptions: -20030: error sending message to maildaemon exe
* description: shutdown the maildaemon exe
procedure stop( timeout number default 10 );
/* email_msg1( )
* function
* parameters: emailaddr: email address to send email to
* timeout: timeout factor for informing the maildaemon exe
* returns: return code from mail daemon call
* exceptions: -20010: maildaemon had an error during sending email
* -20011: error during sending message to maildaemon exe
* -20012: message returned from maildaemon other than done
* -20013: maildaemon returned an error code other than 0
* description: generic sample to demonstrate a simple interface to the
* maildaemon exe
function email_msg1( emailaddr in varchar2, timeout number default 10 ) return number;
/* email_msg2( )
* function
* parameters: emailaddr: email address to send email to
* userid: userid to place in the mail text
* timestamp: timestamp to place in the mail text
* timeout: timeout factor for informing the maildaemon exe
* returns: return code from mail daemon call
* exceptions: -20010: maildaemon had an error during sending email
* -20011: error during sending message to maildaemon exe
* -20012: message returned from maildaemon other than done
* -20013: maildaemon returned an error code other than 0
* description: generic sample to demonstrate a simple interface to the
* maildaemon exe by passing parameters
function email_msg2( emailaddr in varchar2, userid in varchar2, timestamp in varchar2,
timeout number default 10 ) return number;
end maildaemon;
create or replace package body maildaemon as
procedure setauditon( timeout number default 10 ) is
retval number;
begin
dbms_pipe.pack_message( 'AUDIT' );
retval := dbms_pipe.send_message( 'maildaemon', timeout );
if retval <> 0 then
raise_application_error( -20030,
'maildaemon: error sending audit command. Status = ' | | retval );
end if;
end setauditon;
procedure setauditoff( timeout number default 10 ) is
retval number;
begin
dbms_pipe.pack_message( 'NOAUDIT' );
retval := dbms_pipe.send_message( 'maildaemon', timeout );
if retval <> 0 then
raise_application_error( -20030,
'maildaemon: error sending noaudit command. Status = ' | | retval );
end if;
end setauditoff;
procedure stop( timeout number default 10 ) is
retval number;
begin
dbms_pipe.pack_message( 'STOP' );
retval := dbms_pipe.send_message( 'maildaemon', timeout );
if retval <> 0 then
raise_application_error( -20030,
'maildaemon: error sending stop command. Status = ' | | retval );
end if;
end stop;
function email_msg1( emailaddr in varchar2, timeout number default 10 ) return number is
retval number;
result varchar2(20);
cmdcode number;
pipenm varchar2(30);
begin
pipenm := dbms_pipe.unique_session_name;
dbms_pipe.pack_message( 'MSG1' );
dbms_pipe.pack_message( pipenm );
dbms_pipe.pack_message( emailaddr );
retval := dbms_pipe.send_message( 'maildaemon', timeout );
if retval <> 0 then
raise_application_error( -20010,
'maildaemon: error while sending email. Status = ' | | retval );
end if;
retval := dbms_pipe.receive_message( pipenm, timeout );
if retval <> 0 then
raise_application_error( -20011,
'maildaemon: error while receiving daemon response. Status = ' | | retval );
end if;
dbms_pipe.unpack_message( result );
if result <> 'done' then
raise_application_error( -20012,
'maildaemon: error code returned from daemon other than done' );
end if;
dbms_pipe.unpack_message( cmdcode );
if cmdcode <> 0 then
raise_application_error( -20013,
'maildaemon: error code returned from daemon ' | | cmdcode );
end if;
return cmdcode;
end email_msg1;
function email_msg2( emailaddr in varchar2, userid in varchar2, timestamp in varchar2,
timeout number default 10 ) return number is
retval number;
result varchar2(20);
cmdcode number;
pipenm varchar2(30);
begin
pipenm := dbms_pipe.unique_session_name;
dbms_pipe.pack_message( 'MSG2' );
dbms_pipe.pack_message( pipenm );
dbms_pipe.pack_message( em ailaddr );
dbms_pipe.pack_message( userid );
dbms_pipe.pack_message( timestamp );
retval := dbms_pipe.send_message( 'maildaemon', timeout );
if retval <> 0 then
raise_application_error( -20010,
'maildaemon: error while sending email. Status = ' | | retval );
end if;
retval := dbms_pipe.receive_message( pipenm, timeout );
if retval <> 0 then
raise_application_error( -20011,
'maildaemon: error while receiving daemon response. Status = ' | | retval );
end if;
dbms_pipe.unpack_message( result );
if result <> 'done' then
raise_application_error( -20012,
'maildaemon: error code returned from daemon other than done' );
end if;
dbms_pipe.unpack_message( cmdcode );
if cmdcode <> 0 then
raise_application_error( -20013,
'maildaemon: error code returned from daemon ' | | cmdcode );
end if;
return cmdcode;
end email_msg2;
end maildaemon;
maildaemon.pc
* file: maildaemon.pc
* last modified: 10/15/98
* This source code is written for the UNIX environment to allow PL/SQL
* to generate e-mail. Please note, the following code might not work on
* your system due to configurations of the operating system or your
* environment. Please consult your systems administrator for more
* information on specifics.
* Variables to be set prior to building:
* mailhost: the mail application to generate email queuing. Default is
* "/usr/lib/sendmail".
* mailswitch: the mail application switches to pass to $mailhost. Default
* is "-t".
* userpass: the username/password to connect to the database. Default is
* "scott/tiger"
* logfile: the logfile to write system messages to.
* Functions to be modified:
* main( ): will need to modify the message handling portion to handle the
* messages from the maildaemon package (PL/SQL). The changes that need
* to be made are in the else if( ... ) portion with handling MSG1 and
* MSG2.
* msg1( ): this is just a stub sample. Replace this with appropriate code
* and change the call in main( ).
* msg2( ): this is just a stub sample. Replace this with appropriate code
* and change the call in main( ).
* System include files
#include <stdio.h>
#include <string.h>
EXEC SQL INCLUDE sqlca;
* Global variable declaration
EXEC SQL BEGIN DECLARE SECTION;
char *mailhost = "/usr/lib/sendmail";
/* the mail host application to gen email requests */
char *mailswitch = "-t";
/* switches to pass to $mailhost */
char *userpass = "scott/tiger";
/* userid/password to connect to the database as */
char *logfile = "maildaemon.log";
/* log file to write messages to */
FILE *loghnd = NULL;
/* file pointer to log file */
int retval;
/* return value for DBMS_PIPE send */
int calval;
/* return value set from DBMS_PIPE receive */
varchar pipeid[ 30 ];
/* return pipe identifier */
char filename[ 128 ];
/* filename to use for email */
varchar command[ 20 ];
/* system command received from DBMS_PIPE receive */
char syscommand[ 2000 ];
/* hold system command for generating email request */
varchar emailaddr[ 256 ];
/* hold the email address for sending message to */
int auditing= 0;
/* set whether auditing is to be done */
varchar string1[ 256 ];
/* hold string 1 passed from server */
varchar string2[ 256 ];
/* hold string 2 passed from server */
EXEC SQL END DECLARE SECTION;
* Function definition
* conerr( )
* handle connection error
void conerr( )
char msgbuf[ 512 ]; /* message buffer */
int msglen; /* message buffer space used */
int maxmsglen; /* maximum message length */
EXEC SQL WHENEVER SQLERROR CONTINUE;
sqlglm( msgbuf, &maxmsglen, &msglen );
fprintf( loghnd, "maildaemon: error during connect to database\n" );
fprintf( loghnd, "error reported: %.*s\n", msglen, msgbuf );
fprintf( loghnd, "maildaemon: aborting...\n" );
exit( 1 );
} /* end conerr( ) */
* sqlerr( )
* handle general SQL error
* does not cause maildaemon to abort
void sqlerr( )
char msgbuf[ 512 ]; /* message buffer */
int msglen; /* message buffer space used */
int maxmsglen; /* maximum message length */
EXEC SQL WHENEVER SQLERROR CONTINUE;
sqlglm( msgbuf, &maxmsglen, &msglen );
fprintf( loghnd, "maildaemon: error during processing\n" );
fprintf( loghnd, "error reported: %.*s\n", msglen, msgbuf );
fprintf( loghnd, "maildaemon: continuing...\n" );
} /* end sqlerr( ) */
* msg1( )
* stub function example 1 for sending an email.
int msg1( )
EXEC SQL BEGIN DECLARE SECTION;
int retcode = 0; /* return code */
long msgid; /* unique message id */
FILE msghnd = NULL; / file handle to write email file */
EXEC SQL END DECLARE SECTION;
if( emailaddr.len == 0 )
{ /* null address passed */
fprintf( loghnd, "maildaemon: null address specified to msg1( )\n" );
retcode= 999;
return( retcode );
} /* end if */
/* get the next sequence number for uniqueness */
EXEC SQL WHENEVER SQLERROR GOTO sqlerror1;
EXEC SQL SELECT emailmsgseq.nextval INTO :msgid FROM dual;
/* generate the filename so it is unique and open the file */
sprintf( filename, "emailmsg.txt.%ld", msgid );
msghnd= fopen( filename, "w" );
if( msghnd == NULL )
{ /* there was an error opening the output file */
retcode= 1;
if( auditing )
{ /* set audit trail */
EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg1', 'maildaemon: status code of: ' | | :retcode );
EXEC SQL COMMIT;
} /* end if */
return( retcode );
} /* end if */
/* generate email */
fprintf( msghnd, "To: %s\n", emailaddr.arr );
fprintf( msghnd, "Subject: msg1 message type\n\n" );
fprintf( msghnd, "\tmsg1 message type was called for emailing\n" );
fprintf( msghnd, "\ngenerated by maildaemon\n" );
/* close the file */
fclose( msghnd );
/* create the command line and send the message */
sprintf( syscommand, "%s %s < %s", mailhost, mailswitch, filename );
retcode= system( syscommand );
/* remove the temporary file */
unlink( filename );
if( auditing )
{ /* set audit trail */
EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg1', 'maildaemon: status code of: ' | | :retcode );
EXEC SQL COMMIT;
} /* end if */
EXEC SQL WHENEVER SQLERROR CONTINUE;
return( retcode );
sqlerror1:
retcode= 1;
sqlerr( );
return( retcode );
} /* end msg1( ) */
* msg2( )
* stub function example 2 for sending an email.
int msg2( )
EXEC SQL BEGIN DECLARE SECTION;
int retcode = 0; /* return code */
long msgid; /* unique message id */
FILE msghnd = NULL; / file handle to write email file */
EXEC SQL END DECLARE SECTION;
if( emailaddr.len == 0 )
{ /* null address passed */
fprintf( loghnd, "maildaemon: null address specified to msg2( )\n" );
retcode= 999;
return( retcode );
} /* end if */
/* get the next sequence number for uniqueness */
EXEC SQL WHENEVER SQLERROR GOTO sqlerror2;
EXEC SQL SELECT emailmsgseq.nextval INTO :msgid FROM dual;
/* generate the filename so it is unique and open the file */
sprintf( filename, "emailmsg.txt.%ld", msgid );
msghnd= fopen( filename, "w" );
if( msghnd == NULL )
{ /* there was an error opening the output file */
retcode= 1;
if( auditing )
{ /* set audit trail */
EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg2', 'maild aemon: status code of: ' | | :retcode );
EXEC SQL COMMIT;
} /* end if */
return( retcode );
} /* end if */
/* generate email */
fprintf( msghnd, "To: %s\n", emailaddr.arr );
fprintf( msghnd, "Subject: msg2 message type\n\n" );
fprintf( msghnd, "\tmsg2 message type was called for emailing\n" );
fprintf( msghnd, "Userid of user: %s\n", string1.arr );
fprintf( msghnd, "Timestamp of transaction: %s\n", string2.arr );
fprintf( msghnd, "\ngenerated by maildaemon\n" );
/* close the file */
fclose( msghnd );
/* create the command line and send the message */
sprintf( syscommand, "%s %s < %s", mailhost, mailswitch, filename );
retcode= system( syscommand );
/* remove the temporary file */
unlink( filename );
if( auditing )
{ /* set audit trail */
EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg2', 'maildaemon: status code of: ' | | :retcode );
EXEC SQL COMMIT;
} /* end if */
EXEC SQL WHENEVER SQLERROR CONTINUE;
return( retcode );
sqlerror2:
retcode= 1;
sqlerr( );
return( retcode );
} /* end msg2( ) */
void main( )
/* open file and verify logging */
loghnd = fopen( logfile, "a" );
if( loghnd == NULL )
{ /* the logfile was unable to be opened */
printf( "maildaemon: error opening logfile (%s)\n", logfile );
exit( 1 );
} /* end if */
/* connect to the database */
EXEC SQL WHENEVER SQLERROR DO conerr( );
EXEC SQL CONNECT :userpass;
fprintf( loghnd, "maildaemon: connected.\n" );
/* loop until stop command given */
EXEC SQL WHENEVER SQLERROR DO sqlerr();
while( 1 == 1 )
{ /* inifinite loop */
/* reset values */
emailaddr.len = 0;
string1.len= 0;
string2.len = 0;
/* get type of message from 'server' */
EXEC SQL EXECUTE
begin
:calval := dbms_pipe.receive_message( 'maildaemon' );
if :calval = 0 then
dbms_pipe.unpack_message( :command );
end if;
end;
END-EXEC;
if( calval == 0 )
{ /* message received. determine the command */
command.arr[ command.len ]= '\0';
if( !strcmp(( char * ) command.arr, "STOP" ))
{ /* 'server' specified to stop */
fprintf( loghnd, "maildaemon: shutdown in progress...\n" );
break;
} /* end if */
else if( !strcmp(( char * ) command.arr, "AUDIT" ))
{ /* set auditing on */
fprintf( loghnd, "maildaemon: enable auditing...\n" );
auditing= 1;
} /* end else if */
else if( !strcmp(( char * ) command.arr, "NOAUDIT" ))
{ /* set auditing off */
fprintf( loghnd, "maildaemon: disable auditing...\n" );
auditing= 0;
} /* end else if */
else if( !strcmp(( char * ) command.arr, "MSG1" ))
{ /* call for message 1 */
/* retrieve the message */
EXEC SQL EXECUTE
begin
dbms_pipe.unpack_message( :pipeid );
dbms_pipe.unpack_message( :emailaddr );
end;
END-EXEC;
/* copy into host variable */
emailaddr.arr[ emailaddr.len ]= '\0';
/* generate the email */
retval= msg1( );
/* reply with response */
EXEC SQL EXECUTE
begin
dbms_pipe.pack_message( 'done' );
dbms_pipe.pack_message( :retval );
:retval := dbms_pipe.send_message( :pipeid );
end;
END-EXEC;
} /* end else if */
else if( !strcmp(( char * ) command.arr, "MSG2" ))
{ /* call for message 2 */
/* retrieve the message */
EXEC SQL EXECUTE
begin
dbms_pipe.unpack_message( :pipeid );
dbms_pipe.unpack_message( :emailaddr );
dbms_pipe.unpack_message( :string1 );
dbms_pipe.unpack_message( :string2 );
end;
END-EXEC;
/* copy into host variable */
emailaddr.arr[ emailaddr.len ]= '\0';
string1.arr[ string1.len ]= '\0';
string2.arr[ string2.len ]= '\0';
/* generate the email */
retval= msg2( );
/* reply with response */
EXEC SQL EXECUTE
begin
dbms_pipe.pack_message( 'done' );
dbms_pipe.pack_message( :retval );
:retval := dbms_pipe.send_message( :pipeid );
end;
END-EXEC;
} /* end else if */
else
{ /* invalid command received */
fprintf( loghnd, "maildaemon: illegal command... ignoring request.\n" );
} /* end else */
} /* end if */
else
{ /* time out error occured */
fprintf( loghnd, "maildaemon: timeout or other error while waiting for signal request.\n" );
} /* end else */
} /* end while */
/* clean up and exit */
EXEC SQL COMMIT WORK RELEASE;
fprintf( loghnd, "maildaemon: shutdown.\n" );
fclose( loghnd );
} /* end main( ) */
null -
Hello All,
What I am trying to do is use SCCM's own OSD Task Sequence / Windows PE to deploy an operating system that boots using VHD Native Boot. (C:\ = VHD File with Windows, D:\ Data drive with BCDBoot).
MDT 2013 Can do it I've been told, but I am putting off MDT until Windows 10 if I can get away with it.
TechNet VHD Native Boot on Windows 8.1:
http://technet.microsoft.com/en-us/library/hh825689.aspx
http://technet.microsoft.com/en-us/library/hh825691.aspx
The good news is it is working up to the "Apply Operating System" phase, but that apply operating system phase is reported as an error even though it completes successfully. It can't clean up the SMSTS folder it's looking for on the C:\ because
it's been moved over to the D:\ by a diskpart script. We are left with the deployment working but requiring IT staff to deal with the OOBE Personalization wizard and adding each PC to the domain manually. From that point on the SCCM client can do the rest,
which works for US before we upgrade to Windows 10 with utilizing MDT.
I am not talking about deploying an OS to a VHD file and putting that file on a network share i.e.
http://blogs.technet.com/b/configurationmgr/archive/2013/10/31/new-in-system-center-2012-r2-configuration-manager-deploying-an-operating-system-to-a-virtual-hard-drive-vhd.aspx
I reported getting the diskpart script working first here:
https://social.technet.microsoft.com/Forums/en-US/ff124f09-1d2e-4fc4-a5b6-63b683f3d208/native-vhd-boot-deployments-from-sccm-2012-r2?forum=configmanagerosd
Here it is:
rem work around any USB disk left in or any CDROM detected by PE as drive D
select volume D
assign letter=F noerr
rem select the formatted volume and reassign it's drive letter
select volume C
assign letter=D
rem create and setup VHD file
create vdisk file=D:\DEV_WIN81.VHD maximum=250000 type=expandable
select vdisk file=D:\DEV_WIN81.VHD
attach vdisk
create partition primary
active
format FS=NTFS quick label="Developer Win81 VHD"
assign letter=C
rescan
exit
(type=fixed is better for performance - we'll surely activate when we have dual boot 8.1 / Windows 10 later for the Win10 VHD's)
The Task Sequence looks like this:
I'd like to add a few more steps after apply operating system if I can, but I have to resolve this error with "Apply Operating system before I can go further."
Question:
Can an OSD guru tell me if there are any Task Sequence Variables we could throw at this to make the Apply Operating System sequence complete without error so we can do all SCCM OSD Deployment steps?
If we can, then someone (not me) gets to add a new TechNet blog post about this being possible. It's my understanding presently that only MDT can support deploying WIM files into VHDs on Workstations, that boot them.
The install image was created using dism to convert a VHD from a Hyper-V host into a wim. I know I'm meant to use SCCM to capture it, but I don't think that's causing this problem because when we are deploying from that image to a HDD without VHD we don't
get any issues.
I'm only allowed enough characters to paste the tail end of the apply operating system phase only:
<![LOG[Execution engine result code: Success (0)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:929">
<![LOG[Cleaning Up.]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:675">
<![LOG[Removing Authenticator]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:686">
<![LOG[shKey.DeleteValue( c_szRegValue_SecurityToken ), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\ccmutillib\ccmutillib.cpp,1660)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmutillib.cpp:1660">
<![LOG[Cleaning up task sequence folder]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2329">
<![LOG[Unable to delete file C:\_SMSTaskSequence\TSEnv.dat (0x80070005). Continuing.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="ccmfile.cpp:1056">
<![LOG[hr, HRESULT=80070091 (e:\nts_sccm_release\sms\framework\core\ccmcore\ccmfile.cpp,1218)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmfile.cpp:1218">
<![LOG[Failed to delete directory 'C:\_SMSTaskSequence']LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="ccmfile.cpp:1218">
<![LOG[(dwRet = ::SetNamedSecurityInfoW ((WCHAR*) pszObjectName, objectType, OWNER_SECURITY_INFORMATION, pOwnerSID, NULL, NULL, NULL)) == ERROR_SUCCESS, HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6675)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6675">
<![LOG[SetNamedSecurityInfo() failed.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6675">
<![LOG[SetObjectOwner() failed. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6687">
<![LOG[SetObjectOwner (szFName, SE_FILE_OBJECT, c_szAdministrators), HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6772)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6772">
<![LOG[RemoveFile() failed for C:\_SMSTaskSequence\TSEnv.dat. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6816">
<![LOG[RemoveDirectoryW failed (0x80070091) for C:\_SMSTaskSequence]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:6900">
<![LOG[Deleting volume ID file C:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
<![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
<![LOG[Deleting volume ID file D:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
<![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
<![LOG[Successfully unregistered Task Sequencing Environment COM Interface.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="environmentlib.cpp:910">
<![LOG[Command line for extension .exe is "%1" %*]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:228">
<![LOG[Set command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:731">
<![LOG[Executing command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:827">
<![LOG[==========[ TsProgressUI started in process 8012 ]==========]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:330">
<![LOG[Command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="0" thread="8040" file="winmain.cpp:332">
<![LOG[Unregistering COM classes]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:204">
<![LOG[Unregistering class objects]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:495">
<![LOG[Shutdown complete.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:512">
<![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:1123">
<![LOG[Successfully unregistered TS Progress UI.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2903">
<![LOG[Sending success status message]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:784">
<![LOG[MP server http://OUR-SCCM.ourcompany.com. Ports 80,443. CRL=false.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5881">
<![LOG[Setting authenticator]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5903">
<![LOG[Set authenticator in transport]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:7734">
<![LOG[Sending StatusMessage]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:4023">
<![LOG[Setting message signatures.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1295">
<![LOG[Setting the authenticator.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1325">
<![LOG[CLibSMSMessageWinHttpTransport::Send: URL: OUR-SCCM.ourcompany.com:80 CCM_POST /ccm_system/request]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:8604">
<![LOG[Request was successful.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:8939">
<![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:811">
<![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:811">
<![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:842">
<![LOG[End program: ]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:805">
<![LOG[Finalize logging request ignored from process 856]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tslogging.cpp:1737">
<![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="commandline.cpp:1123">
<![LOG[Task Sequence Manager returned code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmediawizardcontrol.cpp:2180">
<![LOG[Exiting with return code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmbootstrap.cpp:1238">
<![LOG[Execution complete.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:693">
<![LOG[hMap != 0, HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentscope.cpp,493)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentscope.cpp:493">
<![LOG[m_pGlobalScope->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,335)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:335">
<![LOG[this->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,553)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:553">
<![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="utils.cpp:811">
<![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:811">
<![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:842">
<![LOG[End program: ]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:725">
<![LOG[Finalizing logging from process 752]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1741">
<![LOG[Finalizing logs to root of first available drive]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1583">
<![LOG[Successfully finalized logs to D:\SMSTSLog]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1640">
<![LOG[Cleaning up task sequencing logging configuration.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="tslogging.cpp:584">
MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast.I have already set it to FALSE. The solution to this will be some different OSD Task Sequence variables or a statement that it can't be made to work.
I believe that setting defines what volume will be the BOOT / OS Drive Letter. Some people were getting D:\WINDOWS as their boot volume drive letter. Setting to true means whatever was the System Drive letter (usually C) in the image will remain as such
after it was was applied, setting it to false will make the system have the same drive letter arrangement as what Windows PE detects. In my case I set it to false so that no matter what the new VHD file setup as drive C will be the system drive. I'll set it
to true on the next deployment but I expect there to be no difference, because in both PE and the WIM the installation volume is the C:.
We are talking about the DRIVE LETTERS Windows PE SCCM OSD is using for it's temporary files - and how we can manipulate these locations using OSD Task Sequence Variables, so the Apply OS doesn't try and clean up files that are not there
- and fail with an error if you have added a VHD Native Boot volume.
This OSDPreserveDriveLetter setting isn't having any effect on the problem here.
I believe that Format step is setting some task variables used by the OSD Deployment process - telling it where to store it's temporary files. However between the Format Disks and Apply operating system steps the OSD Task Sequence isn't picking up on the
fact what was the C:\ after Format HDD step is now the D:\ .
A developer who has an understanding of how the OSD boot process executes in order would be able to see what's going on here.
MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast. -
MFBF and Alternative Routing Sequence
Hi;
We are using REM in PP.We confirm via MFBF. And we create routings via ca01. I want to use alternative routing sequence during confirmation.
What should I do? or Is it possible for REM?
Thanks.Hi;
Thanks for your answers. I dont want to create new production versions. But routing informations are change.
Ex: I have two machines in a production line, lets say it A and B. This line has a work center code in SAP ( lets says Line1)
When I use only machine A I produce 100 pieces in 5 minutes with 2 worker. But when I use A & B at the same time I produce 100 pieces in 3 minutes with 3 worker.
Machine A and B are connected to the same conveyor belt, so I put the pieces in the same palette. And during confirmation I use Line1 as workcenter.
What should I do to post the exact activities ?
Thanks for your information. -
T codes for production reports in REM
Dear All,
What are the std. t code for production reports in REM like daily production report,monthly production reports,shift wise production,bom reports etc.
Thanx in advance
rg
TusharHi Tushar,
Following are the standard reporting T-Codes REM
MCP9 - SFIS: Select Run Schedule
MCRM - Reporting Point Statistics: Selection
MCRP - Material Consumption Analysis: Repetitive Manufacturing
MCRK - Product Cost Analysis: Repetitive Manufacturing
MCP6 - Goods Receipt Analysis: Repetitive Manufacturing
MF26 - Display Reporting Point Quantity
MF51 - Print Production Schedule
MF52 - Display Master Production Schedule
MF57 - Coll. Display of Planning Screens
MF60 - Pull List 4.5
LAS3 - Display Sequence Schedule
If you won't find your requirement in these,you need to develop new one accordingly taking the technical consultants help.
Regards. -
What are the advantages of using SAP PP-REM?????
Hi,
Can anybody tell me the advantage of using Repetitive Manufacturing. How it will help a particular industry if implemented.
I want to know advantages involved in
Planning (MRP, Capacity), Product Cost Controlling,
WIP calculation, variance Calculation
if SAP PP-REM is implemented
PavanHello Friend ,
PP REM has advantages following advantages-
Purpose
This component can be used for production planning and control in a repetitive manufacturing environment- ie the same product is manufactured repeatedly on the same production line.
You can use repetitive manufacturing as either make-to-stock REM or make-to-order REM such as in the automotive industry, for example.
The goals of repetitive manufacturing are the following:
Creation and revision of production quantities on a period and quantity basis (reduction in individual lot and order-specific processing).
Reduction in the production control effort and simpler backflushing tools(with the option of using the full scope of the PP functionality).
Implementation considerations
You can implement Repetitive Manufacturing if the following is true of your production process:
You produce the same or similar products over a lengthy period of time.
You do not manufacture in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate per part-period.
Your products always follow the same sequence through the machines and work centers in production.
Routings tend to be simple and do not vary much.
Hope this info helps u. Award points if benefitted.
Hemant -
Logic Sequencing vs.Performer
I'm using Logic Express 7 at present, and I still prefer to sequence songs and not going to audio until I have it sequenced to my satisfaction. I go way back to the old C-Lab Creator/Notator days, and I miss some of the features of earlier Logic versions, mainly note overlap correction.
Can someone recommend the best way to go as far as sequencing features? Should I remain with Logic Express, move up to the full Logic, or heaven forbid, look into PERFORMER?
Thanks much,
CMILLE9334Hi Swathi:
In the strict order, your question is more a "concept" than a technical issue, but, I consider useful give you this remarks:
1. The scheduling process en SAP could be in both "solutions" I mean, if you are using a Discrete Manufacturing with Production Orders, you can use a schedule tools to get your production sequencing, but if you are running in a REM (Repetitive Manufacturing Scenario) then, you can use the sequencing tools like Planning Table bye sequencing.
2. Into SAP there are at least this 2 ways to make a scheduling, even, if you go to the transaction code MF50 you can get at the Scheduling Tab the next options:
Detailed Planning
Rate based planning
Sequencing
3. The deliverable in both cases, are: sku, machine (or work center) quantity, start & finish date, at least., just to name a few.
4. Sequencing is a set of at least one order firmed with dates, Scheduling is the arrangement for at least one production order.
I hope, my comments give you some clarity about your doubt.
Please let me know.
Regards
O Perea -
Hi,
what is the purpose of sequences in routing ?
normally all the operations list we can put and create routing ?
if we use sequences will the operations of all the sequences taken in to account while doing standard cost ?
are these sequences are of reporting purpose or any thing else
can any one clarify ?
regards,
Madhu KiranHi,
we use REM , no order reference
our routing have sequence 0 to sequence 11 etc.. based on operations , these are not parallel sequences
sequenec 0 is mainline operations
sequenec 1 is some sub assembly operations etc...
my doubt is when cost is run whether it will take these other sequences other than 0 also in to consideration ?
with out giving the sequences if all operations are put in to routing what will be the issue ?
one doubt with this is
sequence 2 is handling time 2 min and when we assign return operation to this sequence as operation 30 of main line where in that operation we give time as 1 min suppose
whether system takes 2+1 = 3 mins time ? or 1min only from mail line sequence ?
pl clarify
regards,
madhu kiran -
Hai PP Experts!!
I created reporting points in rate routing by assiging the control key with milestone confirmation.But in the MFBF screen during reporting point selection system shows error "reporting points are not maintained in PCC" . I also maintained suitable REM Profile (ie., i activated RP in the profile)
So pls throw some light on creation of reporting points, required customization and sequence of steps....
Advace thanks.............
GaneshrajaDear Mr.Ganesh raja,
Check in customizing-Control data for REM profile under control data 1,whether GI backflush at GR posting,if it's so deselect that and select RP backflush,then only the system allows you to use RP backflush.
You have to assign the same REM profile for the material which you want to use RP backflush.
And also in MFBF,plz include a tick mark in RP backflush field.
<b>If useful reward points.</b>
Regards
Mangal -
Hi Gurus,
Can any one throw light on Sequencing in Planning Table (MF50)?
Where do we use this?
What are pre requistites?
How is useful?
As anyone made a scenario on this.
Please reply.
SriniDear Srini,
Can any one throw light on Sequencing in Planning Table (MF50)?
Where do we use this?
What are pre requistites?
How is useful?
1) MF50 is Mostly used in REM process
2) say for example you have two PV's for one material in REM
3) Demand given for this material is 100 Nos
4) after running MRP, system will pick one PV for 100 Nos
5) Now, we can go in MF50, & we can split the qty 100 Nos between two PV's
PV 1 - 50 Nos
PV 2 - 50 Nos
6) Now you can see in MD04, for this material will be splitted ( I.e two plan orders with 50 Each Nos )
7 ) on the whole, MF50 is used to Split Demand Quantities between PV's
Your old & good Forum member
so suggest you to close all your previous threads
Plz don't misundersatnd
Regards
Madhu Kumar -
REM Planning table - Capacity requirements and Levelling.
Hi i have few queries in REM planning table.
In REM planning table MF50 my selection is based on entire plant. Here in total capacity data tab for any particular plant it will show the list of work centers which are maintained in particular plant to know the capacity details as per our requirement.
1.When i select any WC line and click on change capacity display from CRP it is giving break up with required and available capacity hours for any particular WC available time is assume 22.5 hrs per day which is given in operating time in capacity header in WC but in MF50 it is showing 23hrs.I have defined shift sequence in OP4A and assigned in capacity header grouping which have 3 shift with 30 mins break in each shift which results in 22.5 hrs working for a day so in shift sequence and operating time it is mentioned as 22.5 hrs is the time available for day but in MF50 it is showing 23 hrs available for day?
2.What is due% in MF50 total capacity data for any work center and how required time would be calculated?
Appreciate if any one has any example.
Cheers
KKHi bump for any suggestions?
i have noticed one thing the time available is a round up value actual time available as per capacity header is 22.5 but in MF50 it is showing as 23..if i change to 21.5 then it is showing 22hrs available per day is this the standard behaviour?
can anyone tell me how the required time is calculated?
Cheers
KK -
Finaly I got Oracle Model but there is no Sequences and trigers were crerated for MS SQL Identity columns.
What do I do wrong ?You may have run into
Bug No: 2649444
Sequences and triggers are in the Create.sql file, but may not be correct:
The Create.sql file is created by selecting the 'Action' menu item then 'Generate Migration Scripts'.
Old code:
REM
REM Message : Created Sequence: sa.S_13_1_ADS
REM User : system
CREATE SEQUENCE sa.S_13_1_ADS START WITH 1
REM
REM Message : Created Sequence Trigger: sa.TR_S_13_1_ADS
REM User : system
CREATE TRIGGER sa.TR_S_13_1_ADS BEFORE INSERT ON sa.ADS FOR EACH ROW
BEGIN SELECT sa.S_13_1_ADS.nextval INTO :new.ID FROM dual; END;
Should be something like...
CREATE TRIGGER sa.TR_S_13_1_ADS BEFORE INSERT ON sa.ADS FOR EACH ROW
BEGIN SELECT sa.S_13_1_ADS.nextval INTO
omwb_emulation.globalPkg.identity FROM dual;
:new.ID := omwb_emulation.globalPkg.identity; END;
This bug has been fixed in code in development and will be available in 9.2.0.1.5 .
Regards,
Turloch -
What is discrete manufacturing and REM?
Hello All,
What is discrete manufacturing and REM?
Sincerely,
KetanHi ketan,
-Discrete manufaturing is Lot based production system, Porduction order is cretaed for Every Lot and order based confirmation & Cost control is carried out.
-Repetative manufacturing is period based production system, production order concept will not work, so period based confirmation & cost control is carried out.
Below points helps to underdstand the difference between them.
- A typical characteristic of discrete manufacturing is the frequent switching from one manufactured product to another. The products are typically manufactured in individually defined lots, the sequence of work centers through production varying for each one of these. Costs are calculated on the basis of orders and individual lots.
- In Repetitive Manufacturing, products remain unchanged over a longer period and are not manufactured in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate.
- Discrete manufacturing typically involves varying the sequence of work centers through which the products can pass during production. The order of work centers is determined in routings, which can often be very complex. There can be waiting times between the individual work centers. Also, semi-finished products are frequently placed in interim storage prior to further processing.
- Repetitive Manufacturing, on the other hand, normally involves a relatively constant flow on production lines. Semi-finished products are usually processed further immediately without being put in interim storage. Routings tend to be relatively simple.
I hope u have understood if yes please reward and close the thread.
Regards
Pardeep -
REM in which industries?
Dear Gurus,
Can any one suggest what type industries can go for REM?
I have seen it in electronics, PC manufacturing, cement industries.
Any other industries where it can be used? Or is really being used.
Thanks for your replies in advance.
SriniIn beveragies industry can also implement REM and Bulb manfucturing companies.
You can implement Repetitive Manufacturing if the following is true of your production process:
You produce the same or similar products over a lengthy period of time.
You do not manufacture in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate per part-period.
Your products always follow the same sequence through the machines and work centers in production.
Routings tend to be simple and do not vary much.
Regards,
Rambabu.
Maybe you are looking for
-
What is 'Growl' and why do I need it?
My system keeps telling me to install GROWL. What is it and why do I need it? Harold
-
Multiple browser or viewer windows
I am editing a project in the timeline with A-b roll. When viewing the track and reduce the opacity on one track at a certain point, I no longer can see the other track unless I restore the opacity. What I am getting at is that the time it takes to g
-
Relinking objects in a timeline
I set up a couple of projects but want to reference them in a different folder on my computer. Can I do that without having to redo the editing I already did on the timeline?
-
Safari and Firefox keep crashing whenever I got onto the BBC Radio 1 site; specifically the chart section. So far this is the only site I have had a problem with. Under Tiger (10.4.11) both Safari and Firefox have no such issues, and neither does Fir
-
I use two methods to connect to oracle database. 1. through a JNDI datasouce. that is connect program connect to database through a app/web server. 2. directly from program through a OracleDataSource. please tell me what type of driver these two are?