core-jgi/db/database/Startup/db2/CheckDB.sql

94 lines
3.7 KiB
MySQL
Raw Normal View History

2006-11-17 10:06:54 +07:00
/*************************************************************************
* The contents of this file are subject to the Adempiere License. You may
* obtain a copy of the License at http://www.adempiere.org/license.html
* Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the License for details. Code: Adempiere ERP+CRM
* Copyright (C) 1999-2003 Jorg Janke, ComPiere, Inc. All Rights Reserved.
*************************************************************************
* $Id: CheckDB.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
***
* Title: TabeSpace Sizing
* Description:
* Make sure, that Tablespace
* USERS is 150 MB, 10 MB Autoextend
* INDX is 100 MB, 10 MB Autoextend
* TEMP is 100 MB, 10 MB Autoextend
* Set SGA Size (optional)
* Executed with System user and parameter %ADEMPIERE_DB_USER% from RUN_Env
************************************************************************/
-- Check existance
SELECT 'Tablespace USERS does not exist - You need to create it first' AS Missing FROM DUAL
WHERE NOT EXISTS (SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='USERS');
SELECT 'Tablespace INDX does not exist - You need to create it first' AS Missing FROM DUAL
WHERE NOT EXISTS (SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='INDX');
SELECT 'Tablespace TEMP does not exist - You need to create it first' AS Missing FROM DUAL
WHERE NOT EXISTS (SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='TEMP');
/*****
* Changing System Parameters
* directly - (e.g. 400 MB for 10 Users)
ALTER SYSTEM SET SGA_MAX_SIZE=400M COMMENT='400MB' SCOPE=SPFILE;
ALTER SYSTEM SET SHARED_POOL_SIZE=100M SCOPE=SPFILE;
ALTER SYSTEM SET DB_CACHE_SIZE=200M SCOPE=SPFILE;
ALTER SYSTEM SET JAVA_POOL_SIZE=40M SCOPE=SPFILE;
ALTER SYSTEM SET LARGE_POOL_SIZE=10M SCOPE=SPFILE;
** indirectly - sqlplus "system/manager@adempiere AS SYSDBA"
CREATE PFile='pfileAdempiere.ora' FROM SPFile;
* creates file in $ORACLE_HOME\database or $ORACLE_HOME/dbs
* edit file and then overwrite the fila via
CREATE SPFile FROM PFile='pfileAdempiere.ora';
*****/
-- Create System Record - OK, if it fails
-- Schema is parameter.
INSERT INTO &1..AD_System
(AD_System_ID,AD_Client_ID,AD_Org_ID,
IsActive,Created,CreatedBy,Updated,UpdatedBy,
Name, UserName, Info)
SELECT 0,0,0,'Y', SysDate,0,SysDate,0, '?','?','?'
FROM Dual
WHERE NOT EXISTS
(SELECT * FROM &1..AD_System WHERE AD_System_ID=0);
-- Add Info - OK, if fails
UPDATE &1..AD_System
SET Info = (SELECT SYS_CONTEXT('USERENV', 'DB_DOMAIN')
|| ',' || SYS_CONTEXT('USERENV', 'DB_NAME')
|| ',IP=' || SYS_CONTEXT('USERENV', 'IP_ADDRESS')
|| ',' || SYS_CONTEXT('USERENV', 'HOST')
|| ',' || SYS_CONTEXT('USERENV', 'INSTANCE')
|| ',UID=' || SYS_CONTEXT('USERENV', 'CURRENT_USER')
|| ',' || SYS_CONTEXT('USERENV', 'CURRENT_USERID')
|| ',C#=' || (SELECT COUNT(*) FROM &1..AD_Client)
FROM DUAL),
Updated=SysDate;
COMMIT;
set serveroutput on
-- Correct sizing
DECLARE
CURSOR Cur_TS IS
SELECT FILE_NAME, Tablespace_Name, Bytes/1024/1024 as MB
FROM DBA_DATA_FILES
WHERE (TABLESPACE_NAME='USERS' AND BYTES < 100*1024*1024)
OR (TABLESPACE_NAME='INDX' AND BYTES < 100*1024*1024)
OR (TABLESPACE_NAME='TEMP' AND BYTES < 100*1024*1024);
v_CMD VARCHAR2(300);
BEGIN
DBMS_OUTPUT.PUT_LINE('Resize:');
FOR ts IN Cur_TS LOOP
v_CMD := 'ALTER DATABASE DATAFILE ''' || ts.FILE_NAME
|| ''' RESIZE 100M';
DBMS_OUTPUT.PUT_LINE(' executing: ' || v_CMD);
EXECUTE IMMEDIATE v_CMD;
v_CMD := 'ALTER DATABASE DATAFILE ''' || ts.FILE_NAME
|| ''' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED';
DBMS_OUTPUT.PUT_LINE(' executing: ' || v_CMD);
EXECUTE IMMEDIATE v_CMD;
END LOOP;
END;
/
EXIT