2009年4月12日星期日

Oracle - Create a Database

创建一个Oracle 数据库


-由于Oracle是大型的关系型数据库系统(RDBMS),所以在创建数据库时需要设置许多环境参数,有时候这些设置环境的准备工作会让人觉得很繁琐, 问题出得也很多,但也正是Oracle公司给出了让用户能灵活的设置数据库环境参数的做法,使得Oracle变得很灵活和高效,能适应不同档次的机器、操 作系统。(这里只给出了最基本的步骤,因为在实际中有许多细节,如参数文件的设置等...)

计划和组织创建数据库是DBA应该关心的。


创建数据库的步骤(Unix平台):

准备创建数据库

通过表空间组织数据库内容
设计数据库机构以减少数据竞争和碎片
为数据库创建准备操作系统环境
拷贝并编辑参数文件
启动例程
执行SQL脚本create database
通过生成两个以上的Redo log文件和控制文件来保证数据库的安全
定义数据字典和视图来监视数据库
定义和创建回退段来保证读一致性


实际的创建数据库的步骤:

决定数据库结构
Oracle 数据库被分成称为表空间的逻辑单元,一个表空间可以包含多个物理数据文件。一般情况一个Oracel数据库应建立至少以下几个表空间:
APP_DATA(主要的数据表存放)
TEMP(临时数据表存放)
APP_INDX(索引存放)
RBS(回退段存放)

设计文件存放在系统的位置


创建参数文件
参数文件一般是一个init.ora文件,存放在$ORACLE_HOME/dbs/下,Oracle有一个sample例子,你可以拷贝它,然后编辑里面的参数,例子里的参数都有详细说明,其中必须指定的有
DB_NAME
CONTROL_FILE
INIT_SQL_FILES
LOG_ARCHIVE_DEST
LOG_ARCHIVE_FORMAT
USER_DUMP_DEST
BACKGROUND_DUMP_DEST

决定一个唯一的例程名称
使用适当的系统操作命令设置Oracle例程名
Unix下是: $ORACLE_SID=sidname

启动例程到NOMOUNT状态
调用SQL*DBA,以internal连进Oracle
$sqldba lmode=y
SQLDBA>connect internal
connected

创建数据库
启动例程并创建数据库
SQLDBA>startup nomount
SQLDBA>create database test
2>datafile 'system.dbs' size 10M
3>logfile '/u01/oracle/testdb/log1.rdo' size 500K,
4>logfile '/u02/oracle/testdb/logl2.rdo' size 500K ;

创建数据字典
执行一系列的SQL脚本
SQLDBA>@?/rdbms/admin/catalog --创建常用的数据字典
SQLDBA>@?/rdbms/admin/expview.sql --创建用于运行export和import工具所需的试图

还有其他sql脚本....,不一一列举


必要时,增加另外的Redo log文件和control文件
创建表空间
SQLDBA>create tablespace class datafile '/u01/ORACLE/testdb/class01.dbf size 300M;
SQLDBA>create tablespace classinx datafile '/u01/ORACLE/testdb/classinx1.dbf size 200M;
SQLDBA>create tablespace rbs datafile '/u01/ORACLE/testdb/rbs01.dbf size 100M;
SQLDBA>create tablespace temp datafile '/u01/ORACLE/testdb/class01.dbf size 100M;


创建回退段
SQLDBA>create rollback segment rbl tablespace rbs ;


以上的是在Unix下用命令行方式建立数据库的方法,当然,你也可以用SQL*DBA或Server manager等Oracle 提供的界面工具来交互的建立数据库。



在NT下,通常是通过各种工具来建立数据库

在Oracle 8i中,提供了多种工具,简化了以上烦琐的步骤
这些工具有:
Oracle Database Configuration Assistant
Instance Manager
Server Manager
Oracle Administration Assistant for Windows NT
Data Management Wizards 等。


手工创建数据库的全部脚本及说明


系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:D:\ORACLE

建库步骤:
1、手工创建相关目录
D:\Oracle\admin\test
D:\Oracle\admin\test\adhoc
D:\Oracle\admin\test\bdump
D:\Oracle\admin\test\cdump
D:\Oracle\admin\test\create
D:\Oracle\admin\test\exp
D:\Oracle\admin\test\pfile
D:\Oracle\admin\test\udump

D:\Oracle\oradata\test
D:\Oracle\oradata\test\archive

2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:

3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,

内容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'

4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora

命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5


5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"

6、生成各种数据库对象
D:\>svrmgrl

--创建数据库
connect INTERNAL/oracle
startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
CREATE DATABASE test
LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K,
'D:\Oracle\oradata\test\redo02.log' SIZE 2048K,
'D:\Oracle\oradata\test\redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;

控制文件、日志文件在上面语句执行时生成


connect INTERNAL/oracle
--修改系统表空间
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

--创建回滚表空间
CREATE TABLESPACE RBS DATAFILE 'D:\Oracle\oradata\test\rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

--创建用户表空间
CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\test\users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

--创建临时表空间
CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\test\temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;

--创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE 'D:\Oracle\oradata\test\tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

--创建索引表空间
CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\test\indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);

--创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );

--使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;

--修改sys用户的临时表空间为TEMP
alter user sys temporary tablespace TEMP;

--创建数据字典表
@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
@D:\Oracle\Ora81\Rdbms\admin\catproc.sql
@D:\Oracle\Ora81\Rdbms\admin\caths.sql

connect system/manager
@D:\Oracle\Ora81\sqlplus\admin\pupbld.sql

connect internal/oracle
@D:\Oracle\Ora81\Rdbms\admin\catrep.sql
exit

--生成SQL*Plus帮助系统
sqlplus SYSTEM/manager
@D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql
exit

--修改system用户默认表空间和临时表空间
svrmgrl
connect internal/oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit

7、将test实例启动服务设置成自动启动方式
D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto

参考资料:开发者在线http://www.builder.com.cn/

Hyperion - 11.1.1.2 FDM: Connect to HFM

1. Create DB schema for FMD application BFDM01;

2. Create a FDM application 'BFDM01' thougthweb console;

3. Login BFDM01 in Workbench  windows client;

4. Import Adapter: FM11i-G5-B.xml or FM11i-G5-B.xml.

5. Add Machine profile

image

6. Fill Options

AppsName, Login Method, ... and so on.

image

7. Logon Shared Service console. Provision HFM application 'BTest02' to FDM login user 'dick'

image

8. Login FDM web console as 'dick', and check the connection to HFM application.

image

EPM - Hyperion 11.1.1.2 Config Sequence

Workspace must be configured after HFM or it can't open HFM applications in workspace.

在安装过程中,各个模块的Config顺序对于系统能否正常运装有很大的关系。我在安装HFM/FDM的时候,就必须按照 SharedService>CalcMgr>EPMA>HFM>WS/FR>FDM这样的顺序来配置,否则在配置后,会出现Deploy好的HFM Applicaiton打不开的问题。


在Planning的配置过程中,也可以参照这样的顺序。不过Planning的配置模块可以一起把所有需要配置的产品都选上,然后给SharedService配置一个DB Schema,其余的如CalcMgr, Essbase, Workspace等共用一个Schema,在配置的过程中,配置程序会自动按照配置顺序进行配置。当然这种多个产品共用一个Schema的方式,对于数据库维护来说不是很明了。好处就是配置时候简单方便。11.1.1.2装好之后还需要把CalcuMgr重新Reset(Stop->Start) 一下,否则在客户端一进入Application Library就会报一个错。

image


另外,在安装过程中,给每个需要在数据库建立DB Schema的产品分别建立DB Schema,这样以后查错或者做数据备份的时候比较明了。SS, CalcMgr, EPMA, HFM, WS, FDM, Essbase, Profit&Cost, Planning这几个模块都需要各自的DB Schema,EPMA的Interface Area也需要自己的Schema,暂时我所涉及的几个产品就这些了。其他的以后补充。