离职都一段时间了,也算是真正休息了好一段时间。感觉整个人好轻松,但很快新的工作要开始了,真舍不得这个自己给的假期,但人要生活,没办法,下周要去惠州公司报到了。
不过,这次换工作,总算找到了我喜欢的工作,那边准备上sap,刚好用到oracle数据库,项目为期一年,从07年10月1日至08年10月1日,相信通过这个项目,能使自己得到充实,把oracle和unix再深入学习!
事情过去一个多月了,回头想想,觉得因为自己的冲动,还是挺对不起PM的,但事已如此,我会努力做一名优秀的DBA的!
惠州到虎门来回要8个小时的车程,以后可能很少有机会过来看虎门的这些朋友了!不过我相信有缘自会再相见的!
今天28号了,31号就可以办理离职手续,昨天下午我们PM走过来跟我讲,让我给部门的同事做一个关于ORACLE二次开发工具使用的培训。本来介于近几天发生的一些不愉快的事情我是有些想法,但最后还是答应了。
今天上午9点,几个同事都上来了,投影接好后,我把整个开发过程拉通给大家讲了一遍,做了一个示例的报表,后来让他们把不懂的地方再一起交流一下,后来有一个问题,就是弹性域,讨论了很久!毕竟弹性域是功能方面用得比较多,所以他们几个开发的同事接触的少一点!
这应该是在UNIT的最后一篇日记了,以后空了再写吧!
#按照策略进行备份,这里设置一个星期中的每一天的备份级别
#!/bin/bash
# rman.sh:
# This program is used to backup database ,carrying out backup's strategy.
#
# How to use this shell script
# cd /home/orapord/scripts/DB;sh rman.sh 2>/home/oraprod/output/rman_`date +%m%d%y`.error.log
#
#
# Authors:
#
# History:
#
. /u01/prod/oraprod/proddb/9.2.0/PROD_erp.env
PATH=$PATH:/home/oraprod/proddb/9.2.0/appsutil/scripts/PROD_erp
export PATH;
weekN=`date |awk '{print $1}'`
dateN=`date +\%m\%d\%y`
pathN=/home/oraprod
retain=/u02/retain
prodrman=/u02/prodrman
export weekN dateN pathN retain prodrman
cd $pathN/scripts/DB
case $weekN in
"Sun")
echo "Starting Incremental Level 0 Backup"
sh dbL0.sh 2>$pathN/output/dbL0_$dateN.error.log
sh movebackupset.sh
;;
"Mon")
echo "Starting Incremental Level 2 Backup"
sh dbL2.sh 2>$pathN/output/dbL2_$dateN.error.log
sh movebackupset.sh
;;
"Tue")
echo "Starting Incremental Level 2 Cumulative Backup"
sh dbL2C.sh 2>$pathN/output/dbL2C_$dateN.error.log
sh movebackupset.sh
;;
"Wed")
echo "Starting Incremental Level 1 Backup"
sh dbL1.sh 2>$pathN/output/dbL1_$dateN.error.log
sh movebackupset.sh
;;
"Thu")
echo "Starting Incremental Level 2 Backup"
sh dbL2.sh 2>$pathN/output/dbL2_$dateN.error.log
sh movebackupset.sh
;;
"Fri")
echo "Starting Incremental Level 2 Cumulative Backup"
sh dbL2C.sh 2>$pathN/output/dbL2C_$dateN.error.log
sh movebackupset.sh
;;
"Sat")
echo "Starting Incremental Level 2 Cumulative Backup"
sh dbL2C.sh 2>$pathN/output/dbL2C_$dateN.error.log
sh movebackupset.sh
;;
*)
echo "This script run failure"
;;
esac
exit 0
再写几个按照备份级别备份数据库的简单脚本,例如:
# Database Incremental Level 0 Backup
rman target / log $pathN/output/dbL0_$dateN.log<<EOF
run
{
backup incremental level 0 tag 'dbL0' database;
sql 'alter system archive log current';
backup archivelog all tag 'dblog' delete all input;
}
exit
EOF
再写一个脚本或者用备份软件把备份集移动到你的存储上就OK了!
这么做确实简单吧!呵呵,
不过很多公司还是使用专业的备份软件来备份数据库,我个人觉得这样做对了解数据库是有好处的。有机会用到的朋友可以效仿一下!
ice feng
2007-07-17 上午11时38分
目前,Oracle Workflow支持SMTP协议(默认端口是25)处理出站消息、IMAP4协议(默认端口是143)处理进站消息,这也是Oracle Workflow对Mail服务器的要求。可以使用Microsoft Exchange作为Mail服务器,简单点,我们使用Imail。
IMAP4是Oracle Workflow Server对Mail Server的要求,对于用户,其客户端可以使用不支持IMAP4的Foxmail。
查看全文 因为在oracle ebs的11.5.10.2版本里面,XML报表默认输出格式是PDF,有时候需要改为EXCEL格式,
请修改function(apps.fnd_request.add_layout),将最后一行改为P_OUTPUT_FORMAT:='EXCEL';
但请注意,这种改法是锁定了输出的格式,其他格式就无法再使用。
Abstract |
OWC Summary:
---------------
The customer explains the following:
1. when view the output files in excel format of concurrent program defined with xml output format,
will come out error: 'ORA-01403: no data found'.
This issue is described in Note: 341442.1 'ORA-01403: No Data Found' Error When Viewing Excel Output.
2. explained to customer how to apply Patch 4676589 11i.ATG_PF.H.RUP4 which will fixed the issue described in the note.
Note 404808.1 Order To Apply Patches And Prerequisites For 4676589
3. since this patch is very large for customer, he needs to consider for sometime and then update the
SR.
ISSUE CLARIFICATION
====================
On 11.5.10.2 in Production:
When attempting to view the output files in excel format of concurrent program defined wi
th xml output format,
the following error occurs.
ERROR
-----------------------
'ora-01403: no data found'
.
ISSUE VERIFICATION
===================
Verified the issue as noted below:
On OWC session
不能用CGI方式登录,错误代码:APP-FND-01542:
此应用服务器没权访问此服务器,附图
服务器=EBS 11.5.10 ON linux AS 4 客户端=windows 2003
在客户端上打开ie,输入 http://xxxxxx:8000之后可以正常登录.
解决方案:
修改$APPL_TOP/admin/<SID>_<hostname>.xml,将appserverid_authentication修改为off
然后运行app的autoconfig command
重新启动应用,搞定
>将光标定位至需要打开的弹性域位置;
>帮助--->诊断--->检查(需要输入apps的密码);
>通过块和字段,然后在块中选择$DESCRIPTIVE_FLEXFIELD$;
>在字段中查找当前弹性域的字段;
>通过复制 “值” 在设置--->oracle财务--->弹性域--->说明性--->段;
>在标题栏粘贴刚才复制的内容;
>查询到我们需要的弹性域;
>选择段,打开详细信息,设置好以后记得编译。
>完成!
2007年4月7日星期六
地点:广州
讲师:魏
记录:Ice Feng
这两天住在广州的一个宾馆里,哎,我这人特别叉床,不是有句俗话叫做:金窝银窝,不如自己的狗窝嘛
所以没有休息好,上了一个星期的班,周末有接着学习,真的是挺累的.
昨天晚上本港英文台放了一部电影叫做《夜魔侠》,真的很精彩,上个星期就看到它的预告,我期待很久了。
下午课完就要回东莞,哎,最讨厌坐车了。我想到公司可能已经很晚了。明天还得接着上班。
用户管理:
User schema
DB
Tablespace Tablespace User(schema) (tableindex)
> 一个方案可以把对象建立到N个表空间上。
>ORACLE中只有一个DB,两个实例对应一个DB的叫做群集系统
INSTANCE DB
INSTANCE
INSTANCE DB RAC
创建用户:
Create user username identified by password;
给用户赋权:grant create session,create table to username;
Grant unlimited tablespace to username;
系统权限:create session,create table……
对象权限:select,insert,update,execute,all;收回权限时,同时收回所有授出权限。
创建私有同义词:Create synonym synonym_name for user.table_name;
公共同义词:create public synonym syno_name for user.table_name;
更改用户登陆后的schema:
Create or replace trigger logon_trg
After logon on database
begin
execute immediate ‘Alter session set current_schema=user’;
end
系统权限
对象权限 角色 用户
预定义role:connect、resource、dba等
Connect角色,在10g中只包括create session;9i中还包括其他create的权限;
打开角色:set role role_name;
角色可以包含系统权限和对象权限,也可以包含角色;
角色可以用密码控制角色是否打开:identified by password
外部授权:
Sysdba:(sysopen、sysdba、sysoper)的授权、不完全恢复
Sysoper:启动、关闭、备份、完全恢复数据库
OS认证:以dba组的OS系统用户登陆以后,不需要密码便可以as sysdba登陆,(数据库认证被忽略)
监听器断口: 默认1521
Service port: 随机的端口(1024到65000之间)
RAC的监听器状态:
HOST1 LISTENER1HOST2 LISTENER2
监听器的配置都放在listener.ora文件中
监听器修改方法: 1修改listener.ora文件 2lsnrctl控制台 3netca(图形化) 4netmgr(图形化)
向监听器注册实例(INSTANCE): 自动注册-----本机listener 且端口为1521
-------实例参数
Alter system set local_listener=’ (ADDRESS = (PROTOCOL = TCP)(HOST =host_name)(PORT = 1521))’
Alter system set remote_listener=’ (ADDRESS = (PROTOCOL = TCP)(HOST =host_name)(PORT = 1521))’
手工配置-------使用net manager配置,(在listener文件中多一段SID_LIST_listener)
注册监听器: alter system regsiter
添加service_name的别名:
Alter system set service_name=’别名’
客户机连接方式:
1 本地命名-----在tnsname.ora文件中添加连接字(包括listener地址和port和实例SID或服务名)
2 easy connect(10g)
3 主机命名(前提:端口是1521,global_dbname和主机名一样)
更改系统到归档模式:
Alter database archivelog;
切换日志文件:
Alter system switch log;
设置快速恢复区的大小和位置:
Alter system set db_recovery_file_dest_size=10g
Alter system set db_recovery_file_dest=’c:files’
查看快速恢复区: Select * from v$recovery_file_dest;
2007年4月8日星期日
课题:ORACLE的备份与恢复
备份:
非归档备份
将数据库shutdown ,复制所有的文件
归档备份
恢复:
完全恢复:需要:all_backup+archivelog+redolog_file
1 mount 状态下
2 open 状态下
3 mountàopen
*select * from v$recover_file; 查看哪些文件需要恢复
*select * from v$recovery_log; 查询恢复需要哪些文件
target DB
不完全恢复:(整个数据库)
1 RMAN
控制未损坏的情况
2 RMAN包
控制文件完全损坏
Channel 通道
RMAN :服务器管理下的备份与恢复
BACKUP SETpiecepiece DISK TAPE 快速恢复区
用RMAN之前必须做以下配置:
1 NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’
2 能以pwfile认证,能以as sysdba登陆
3 设置归档日志的路径(在RMAN下用show all 查看)
设置备份参数:RMAN>configure channel device type disk format 'c:backup%U.bak';
下一步:可以开始备份:run{backup database;}
RMAN对控制文件的自动备份:设置参数:
EXP(导出):full(全部)
Schema
Table
Tablespace
IMP(导入):
Full
schema
Table
tablespace
EXPDB(数据磅:):(以BLOCK为单位导出)
时间:2007年4月5日、6日
主题:ORACLE ERP开发培训
讲师:
课题:使用Developer工具开发Forms
记录:ICE FENG
数据块:
数据块可以手工创建也可以使用向导创建,在打开模版后,第一步要将数据块中BLOCKNAME和DETAILBLOCK这两个数据块删除,然后再创建自己的数据块。
向导创建:
选择 下一步>
选择 下一步>
在这里输入或者选择你的数据表,(请注意,FORMS开发中最好使用源数据表,不要使用视图);
再选择下一步,再选择完成。
数据块的关系:
在有头和行之分的Form中,需要建立数据块之间的关系,可以手工创建,也可以使用向导创建。
画布:
在新建画布前也必须把模版自带的BLOCKNAME画布删除,然后用手工或者向导创建自己的画布。
新建画布后要修改画布的子类信息为CANVAS。
在数据块向导创建数据块之后,会马上弹出创建布局向导。
第一:选择新画布后点击下一步;
第二:选择刚刚创建的数据块,并将其需要显示的列选择到右边来,点击下一步;
第三:修改每个字段的提示名字;
第四:选择表格或者列表
第五步,输入框架标题后选择完成。
LOV:
使用LOV向导创建,1、选择基于查询的新纪录组或者现有纪录组,下一步;
2、输入查询SQL语句,下一步;
3、将需要的列从纪录组列选择到LOV列,下一步;
4、更改标题,选择返回项,下一步;
5、输入标题、高度、宽度,下一步;
6、输入一次检索的行数,下一步;
7、将返回项选择到右边的分配的项,然后下一步,再完成。
窗口:
新建窗口应该放在第一个窗口的位置,更改属性中的子类信息。在画布中将窗口选择为需要显示到的窗口。
编译程序:
选择程序菜单》编译》全部
挂载form程序:
一、将源文件(*.fmb)上传到$AU_TOPformsZHS下;
二、用系统管理员责任进入系统
三、定义表单
四、定义功能
五、将功能添加到菜单
六、将菜单放到相应的请求组下
这样具有那个请求组的用户就可以使用这个新开发的form程序了。
小技巧:
Form程序的名字一般为8位大写英文字母;
如果是新建的数据库表,则应该按照oracle的规范来建立,必须包括一些必要的字段;
cat /etc/oratab
ps -ef|grep ora
grep ORA- alert_ds1.log|tail -10
mv alert_ds1.log alert_ds1.log.0325
show parameter background
select * from dba_tables;
select * from dba_objects where owner='SCOTT';
select * from dba_indexes where owner='SCOTT';
select * from user_tables;
select TABLE_NAME from dict where table_name like 'USER%';
select TABLE_NAME from dict where table_name like '%TABLE%';
select * from v$fixed_table;
select * from v$sga;
select * from v$pgastat;
select machine,program from v$session;
select * from v$process;
select paddr,machine,username,program from v$session where username='SCOTT';
select * from v$sgastat;
select spid from v$process where addr='...'
select * from v$version;
select * from v$option;
select * from v$parameter;
select * from v$database;
select * from v$controlfile;
select * from v$datafile;
select * from v$tempfile;
select * from v$log;
select * from v$logfile;
show parameter control_files
select * from v$controlfile;
alter system set control_files=
'D:ORACLEPRODUCT10.2.0ORADATAORACLECONTROL01.CTL',
'D:ORACLEPRODUCT10.2.0ORADATAORACLECONTROL02.CTL'
scope=spfile;
select * from v$log;
alter system switch logfile;
select * from v$log_history;
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
alter system checkpoint;
ALTER DATABASE ADD LOGFILE GROUP 4 ( 'D:ORACLEPRODUCT10.2.0ORADATAORACLEredo4.log', 'D:ORACLEPRODUCT10.2.0ORADATAORACLEredo14.log') SIZE 51200K;
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE ADD LOGFILE MEMBER 'D:ORACLEPRODUCT10.2.0ORADATAORACLEREDO11.LOG' TO GROUP 1;
SHUTDOWN ABORT
STARTUP MOUNT
SELECT MEMBER FROM V$LOGFILE;
ALTER DATABASE RENAME FILE 'D:ORACLEPRODUCT10.2.0ORADATAORACLEREDO4.LOG'
TO 'D:ORACLEPRODUCT10.2.0ORADATAORACLEREDO04.LOG';
sqlplus / as sysdba
select host_name,instance_name from v$instance;
set ORACLE_SID=oracle
select username,account_status from dba_users;
alter user scott account unlock;
alter user scott identified by tiger;
select * from tab;
desc dept
set line 200
set pagesize 200
<n> l a c del i edit ed
define _editor=vi
save c:emp.sql
get c:emp.sql
@ c:emp
spool c:emp.txt
select * from emp;
spool off
select 'select count(*) from '||tname||';' from tab;
D:oracleproduct10.2.0db_1installportlist.ini
isqlplusctl start|stop
http://192.168.0.1:5560/isqlplus/
emctl start|stop dbconsole
http://192.168.0.1:1158/em
select sql_text from v$sqlarea where sql_text like '%from scott.emp%';
var a number
exec :a=7900
select sql_text from v$sqlarea where sql_text like '%from scott.emp%';
show parameter pool
show parameter cache
select pool,sum(bytes)/1024 k from v$sgastat
group by pool;
select name,pool,bytes from v$sgastat where pool is null;
alter system set sga_target=0 scope=spfile;
alter system set shared_pool_size=80m scope=spfile;
alter system set db_cache_size=48m scope=spfile;
startup force
alter system set sga_target=160m;
ORACLE ERP 培训总结
1、多节点安装时(使用同一配置文件),先安装数据库,并将该配置文件拷贝到安装应用服务的服务器上;再使用该配置文件安装应用服务。
2、养成良好习惯(文件命名要能反映出实际意义)
3、ORACLE ERP 布局:
①用户
数据库用户ora
应用用户appl
②目录结构
数据库层常用目录:
$ORACLE_HOME ,dbs/-------启动参数文件(注意:processes,sessions这两个限制参数)
应用层常用目录:
$ORACLE_HOME----------应用层软件支持;
$APPL_TOP ---------------应用层的顶级目录,该目录包含其他目录($ORACLE_HOME之外),如$AU_TOP,$AD_TOP等
$AU_TOP------------------标准的基本应用源程序(客户化的基本源程序一般放在$CUX_TOP下),如forms/目录下存放forms源程序,resource/目录存放共享的库文件等
$AD_TOP ----------------常用脚本,如adadmin,adpatch,adctrl等等
4、AD常用工具(主要用于应用层发生变化后的维护工作,使用前提是数据库及监听处于open状态,应用处于关闭状态)
adadmin 工具,常用于激活/停止维护模式,激活多语言,重新编译所有对象,编译无效对象,从新生成form和report文件等工作
adpatch 工具,常用于打补丁,应用补丁通常分四类:uXXX.drv、cXXX.drv、dXXX.drv、gXXX.drv
adctrl 工具,常用于显示adadmin和adpatch的工作状态,以便针对具体问题做进一步的处理
5、规范化
如打补丁的流程,数据库及应用层的修改流程
6、ORACLE ERP 的启动与停止
启动:先启数据库和监听
#su - oraprod
$sqlplus "/as sysdba"
SQL>startup
SQL>exit
$lsnrctl start PROD
或者使用脚本启动数据库及监听:(/u01/prod/oraprod/proddb/
$addlctl.sh start
再启应用(/u01/prod/applprod/prodcomn/admin/scripts/PROD_erp目录下)
#su - applprod
$adstrtal.sh apps/apps
检查并发
$ps -ef|grep FNDLIBR
停止:先停应用
#su - applprod
$adstpall.sh apps/apps
再停数据库及监听
#su - oraprod
$sqlplus "/as sysdba"
SQL>shutdown immediate
SQL>exit
$lsnrctl stop PROD
或者使用脚本停止数据库及监听(/u01/prod/oraprod/proddb/
$addlctl.sh stop
7、克隆ORACLE ERP(前提是数据库及监听处于open状态,应用处于关闭状态)
a>检查系统工具,如perl、unzip、zip等
b>分别在数据库层和应用层做pre-clone
c>以root身份拷贝所有文件到目标服务器
d>创建相应数据库管理用户和组,更改相关目录名和权限
e>创建相应应用管理用户和组,更改相关目录名和权限
补充步骤
f>在目标服务器中,以数据库管理用户登陆,到$ORACLE_HOME/appsutil/clone/bin目录进行perl adcfgclone.pl dbTier,做数据库层次的clone。这个过程中会被提示输入新系统的对应信息,例如SID,HOST,PORT,文件路径等等 .
g>在完成上个步骤之后,目标服务器中的数据库已经被启动,停止数据库,在init参数文件中增加一条参数。然后启动数据库和监听器
h>在目标服务器上以应用管理用户登陆,到$COMMON_TOP/clone/bin目录进行
perl adcfgclone.pl appsTier