1. Shutdown数据库,让所有的用户退出。
2. 启动数据库,用管理员的用户登入。
3. 运行菜单36.16.10.1 (License Registration)或程序lvreq.p,出现界面如下图,选择edit,将原来的license code改成新的license code即可。
4. 用root登入linux/UNIX系统,在progress安装目录下运行proupdt,如下图所示:
按enter继续
再按enter继续
5.输入progress的license code即可。
2008年10月10日星期五
关于Odbc连MFG时出现219901 的解决方法
首先确保 Mfg/Pro-Progress 有对Odbc开放端口,允许通过Odbc连接.
在新建系统Odbc中加入对应的资料. 测试连接时出现 "[DataDirect][ODBC PROGRESS Driver][PROGRESS]-219901"
那么要在环境变量中设一个SQL_CLIENT_CHARSET值為 GB2312(簡體) 或 BIG-5(繁體)或是其它.即可.
在新建系统Odbc中加入对应的资料. 测试连接时出现 "[DataDirect][ODBC PROGRESS Driver][PROGRESS]-219901"
那么要在环境变量中设一个SQL_CLIENT_CHARSET值為 GB2312(簡體) 或 BIG-5(繁體)或是其它.即可.
AIX下自动备份数据库程序
mkdir /backup/db/`date +%y%m%d`
/app/progress/91e/bin/procopy 数据库路径 /backup/db/`date +%y%m%d`/mfgprod > /backup/db/log/procp`date +%y%m%d`.log
/app/progress/91e/bin/procopy 数据库路径/admprod /backup/db/`date +%y%m%d`/admprod >> /backup/db/log/procp`date +%y%m%d`.log
/app/progress/91e/bin/procopy 数据库路径/hlpprod /backup/db/`date +%y%m%d`/hlpprod >> /backup/db/log/procp`date +%y%m%d`.log
proutil /app/mfgpro/eb21/db/mfgpro.db -C trunc BI
/app/progress/91e/bin/procopy 数据库路径 /backup/db/`date +%y%m%d`/mfgprod > /backup/db/log/procp`date +%y%m%d`.log
/app/progress/91e/bin/procopy 数据库路径/admprod /backup/db/`date +%y%m%d`/admprod >> /backup/db/log/procp`date +%y%m%d`.log
/app/progress/91e/bin/procopy 数据库路径/hlpprod /backup/db/`date +%y%m%d`/hlpprod >> /backup/db/log/procp`date +%y%m%d`.log
proutil /app/mfgpro/eb21/db/mfgpro.db -C trunc BI
2008年10月9日星期四
数据库新分卷操作步骤
1) 关闭所有的数据库
2) 用更换到MFG拥护
3) 检查硬盘空间是否足够
4) 备份数据库
5) 建立数据库结构文件
例如数据库的第7,25,35的分区已经达到2G左右,增加add.st文档,格式如下:
d "TRANSACTION":7,64 ./db
d "TRHIST":25,64 ./db
d "GLTRHIST"":35,64 ./db
6) 对数据库进行BI 截取操作,例如对数据库mfgeb2操作如下:
# proutil mfgeb2 -C truncate bi - 0
7) 建立需要增加的数据库分区(例如对mfgeb2进行分区),操作如下:
# prostrct add mfgeb2 add.st
8) 完成以上步骤即可启动DB.
2) 用更换到MFG拥护
3) 检查硬盘空间是否足够
4) 备份数据库
5) 建立数据库结构文件
例如数据库的第7,25,35的分区已经达到2G左右,增加add.st文档,格式如下:
d "TRANSACTION":7,64 ./db
d "TRHIST":25,64 ./db
d "GLTRHIST"":35,64 ./db
6) 对数据库进行BI 截取操作,例如对数据库mfgeb2操作如下:
# proutil mfgeb2 -C truncate bi - 0
7) 建立需要增加的数据库分区(例如对mfgeb2进行分区),操作如下:
# prostrct add mfgeb2 add.st
8) 完成以上步骤即可启动DB.
维护程序模板简化
/* DISPLAY TITLE */{mfdtitle.i "2+ "}
define variable del-yn like mfc_logical initial no.
define variable fldname like code_fldname initial "txt_tax_type".
/* DISPLAY SELECTION FORM */
form
code_value label "Tax Type" colon 25 format "x(16)" skip(1)
code_desc colon 25
with frame a side-labels width 80 attr-space.
/* SET EXTERNAL LABELS */setFrameLabels(frame a:handle).
/* DISPLAY */
view frame a.
mainloop:repeat with frame a:
prompt-for code_value with frame a editing: /* FIND NEXT/PREVIOUS RECORD */ {mfnp01.i code_mstr code_value code_value fldname " code_mstr.code_domain = global_domain and code_fldname " code_fldval} if recno <> ? then display code_value code_desc. end.
/* ADD/MOD/DELETE */
find code_mstr
where code_mstr.code_domain = global_domain and code_fldname = fldname and code_value = input code_value exclusive-lock no-error.
if not available code_mstr then do: {pxmsg.i &MSGNUM=1 &ERRORLEVEL=1} create code_mstr. code_mstr.code_domain = global_domain. assign code_value. code_fldname = fldname. end.
display code_value code_desc.
ststatus = stline[2]. status input ststatus. del-yn = no.
seta: do on error undo, retry:
set code_desc go-on (F5 CTRL-D).
/* DELETE */ if lastkey = keycode("F5") or lastkey = keycode("CTRL-D") then do:
del-yn = yes. {pxmsg.i &MSGNUM=11 &ERRORLEVEL=1 &CONFIRM=del-yn} if del-yn = no then undo, retry. delete code_mstr. clear frame a. next mainloop.
end.
end. /* seta: */
release code_mstr.
end. /* mainloop: */
define variable del-yn like mfc_logical initial no.
define variable fldname like code_fldname initial "txt_tax_type".
/* DISPLAY SELECTION FORM */
form
code_value label "Tax Type" colon 25 format "x(16)" skip(1)
code_desc colon 25
with frame a side-labels width 80 attr-space.
/* SET EXTERNAL LABELS */setFrameLabels(frame a:handle).
/* DISPLAY */
view frame a.
mainloop:repeat with frame a:
prompt-for code_value with frame a editing: /* FIND NEXT/PREVIOUS RECORD */ {mfnp01.i code_mstr code_value code_value fldname " code_mstr.code_domain = global_domain and code_fldname " code_fldval} if recno <> ? then display code_value code_desc. end.
/* ADD/MOD/DELETE */
find code_mstr
where code_mstr.code_domain = global_domain and code_fldname = fldname and code_value = input code_value exclusive-lock no-error.
if not available code_mstr then do: {pxmsg.i &MSGNUM=1 &ERRORLEVEL=1} create code_mstr. code_mstr.code_domain = global_domain. assign code_value. code_fldname = fldname. end.
display code_value code_desc.
ststatus = stline[2]. status input ststatus. del-yn = no.
seta: do on error undo, retry:
set code_desc go-on (F5 CTRL-D).
/* DELETE */ if lastkey = keycode("F5") or lastkey = keycode("CTRL-D") then do:
del-yn = yes. {pxmsg.i &MSGNUM=11 &ERRORLEVEL=1 &CONFIRM=del-yn} if del-yn = no then undo, retry. delete code_mstr. clear frame a. next mainloop.
end.
end. /* seta: */
release code_mstr.
end. /* mainloop: */
2008年10月8日星期三
报表程序模板
/* mmrcsomtrp.p v 1.0 hubo 2008.1.10*//*客户订单详细*/
{mfdtitle.i "1.0"}
/*定义使用的变量*/
define variable 变量 like sod_start_eff[1] .
define variable 变量 as char .
/*定义查询条件FROM*/
form
变量 colon 15
变量1 label {t001.i} colon 47 cust colon 15
with frame a attr-space side-labels width 80.
setFrameLabels(frame a:handle).
{wbrp01.i}
repeat:
if 变量 = low_date then rdate = ?.
if 变量1 = hi_char then cust1 = "".
if c-application-mode <> "WEB" then
update 变量 变量1 with frame a.
{wbrp06.i &command = update
&fields = "变量 变量1 "
&frm = "a"}
if (c-application-mode <> "WEB") or
(c-application-mode = "WEB" and
(c-web-request begins "DATA"))
then do:
{mfquoter.i 变量 }
{mfquoter.i 变量1 }
if 变量 = ? then rdate = low_date.
if 变量1 = "" then cust1 = hi_char.
/*定义打印输出可以默认不用改*/
{gpselout.i &printType = "printer"
&printWidth = 132
&pagedFlag = " "
&stream = " "
&appendToFile = " "
&streamedOutputToTerminal = " "
&withBatchOption = "yes"
&displayStatementType = 1
&withCancelMessage = "yes"
&pageBottomMargin = 6
&withEmail = "yes"
&withWinprint = "yes"
&defineVariables = "yes"}
{mfphead.i}
/*定义查询语句*/
for each ........
each ........
find........
end.
/*定义输出*/
display
.......
{mfrtrail.i}
end.
{wbrp04.i &frame-spec = a}
{mfdtitle.i "1.0"}
/*定义使用的变量*/
define variable 变量 like sod_start_eff[1] .
define variable 变量 as char .
/*定义查询条件FROM*/
form
变量 colon 15
变量1 label {t001.i} colon 47 cust colon 15
with frame a attr-space side-labels width 80.
setFrameLabels(frame a:handle).
{wbrp01.i}
repeat:
if 变量 = low_date then rdate = ?.
if 变量1 = hi_char then cust1 = "".
if c-application-mode <> "WEB" then
update 变量 变量1 with frame a.
{wbrp06.i &command = update
&fields = "变量 变量1 "
&frm = "a"}
if (c-application-mode <> "WEB") or
(c-application-mode = "WEB" and
(c-web-request begins "DATA"))
then do:
{mfquoter.i 变量 }
{mfquoter.i 变量1 }
if 变量 = ? then rdate = low_date.
if 变量1 = "" then cust1 = hi_char.
/*定义打印输出可以默认不用改*/
{gpselout.i &printType = "printer"
&printWidth = 132
&pagedFlag = " "
&stream = " "
&appendToFile = " "
&streamedOutputToTerminal = " "
&withBatchOption = "yes"
&displayStatementType = 1
&withCancelMessage = "yes"
&pageBottomMargin = 6
&withEmail = "yes"
&withWinprint = "yes"
&defineVariables = "yes"}
{mfphead.i}
/*定义查询语句*/
for each ........
each ........
find........
end.
/*定义输出*/
display
.......
{mfrtrail.i}
end.
{wbrp04.i &frame-spec = a}
2008年10月7日星期二
2008年10月6日星期一
Progress数据库管理几个要点
1、 数据备份
A、 数据存放位置:/app/mfgpro/eb2/db目录下,数据库有三个(mfgdemo、mfgtrain、mfgprod),其中mfgprod为正式数据库。
B、 数据备份存放位置:/backup目录下,根据用户的实际情况创建相应的备份目录
C、 数据备份一般采用copy的方式进行,备份前要事先关闭数据保证数据的完整性。数据库备份的命令在/database/progress/91d/bin目录下的procopy
D、 例如要将mfgprod数据备份到/backup/prod0812目录下,备份的数据库名为prodbk步骤如下:
a)、先确认/backup目录下是否有创建prod0812的目录,如果没有在/backup先创建一个prod0812的目录(创建目录的命令mkdir)。
b)、系统切换到/database/progress/91d/bin目录下,执行下面的命令:
./procopy /app/mfgpro/eb2/db/mfgprod /backup/prod0812/prodbk
系统即可开始备份
1、 数据库监控
A、 数据监控命令是promon,文件位于/database/progress/91d/bin目录下,监控数据必须是在数据启动状态下。
B、 使用方法可以系统切换到/database/progress/91d/bin目录下,执行下面的命令:(以监控mfgprod数据库为例)
./promon /app/mfgpro/eb2/db/mfgprod
A、 主要使用选项1、4、8选择1、User Control主要了解那些用户在使用数据库及用户用户相应的User Number,选择1之1
A、 在画面的第一列就是代表用户的User Number,这里同时也记录数据启动的用户。在这个画面上按Q即可退到第一个画面。
选择4、Record Locking Table
在这个画面上继续选择1、Display all entries
在这个画面上体现对表锁的情况。画面上按Q即可退到第一画面
选择8、Shut Down Database
在这个画面上可以直接体现用户的在线情况,如果要将用户断线可以选择1、Disconnect a User系统会出现如下的画面,之后输入用户的User Number即可实现用户断线
1、 Linux常用的命令主要有如下几个
A)、ls—列出文件名
B)、pwd—查看当前的所处的目录
C)、cd --切换路径
D)、who—查看当前在线用户
E)、rmdir—创建目录
F)、rm—删除文件
G)、ps—查看用户进程
A、 数据存放位置:/app/mfgpro/eb2/db目录下,数据库有三个(mfgdemo、mfgtrain、mfgprod),其中mfgprod为正式数据库。
B、 数据备份存放位置:/backup目录下,根据用户的实际情况创建相应的备份目录
C、 数据备份一般采用copy的方式进行,备份前要事先关闭数据保证数据的完整性。数据库备份的命令在/database/progress/91d/bin目录下的procopy
D、 例如要将mfgprod数据备份到/backup/prod0812目录下,备份的数据库名为prodbk步骤如下:
a)、先确认/backup目录下是否有创建prod0812的目录,如果没有在/backup先创建一个prod0812的目录(创建目录的命令mkdir)。
b)、系统切换到/database/progress/91d/bin目录下,执行下面的命令:
./procopy /app/mfgpro/eb2/db/mfgprod /backup/prod0812/prodbk
系统即可开始备份
1、 数据库监控
A、 数据监控命令是promon,文件位于/database/progress/91d/bin目录下,监控数据必须是在数据启动状态下。
B、 使用方法可以系统切换到/database/progress/91d/bin目录下,执行下面的命令:(以监控mfgprod数据库为例)
./promon /app/mfgpro/eb2/db/mfgprod
A、 主要使用选项1、4、8选择1、User Control主要了解那些用户在使用数据库及用户用户相应的User Number,选择1之1
A、 在画面的第一列就是代表用户的User Number,这里同时也记录数据启动的用户。在这个画面上按Q即可退到第一个画面。
选择4、Record Locking Table
在这个画面上继续选择1、Display all entries
在这个画面上体现对表锁的情况。画面上按Q即可退到第一画面
选择8、Shut Down Database
在这个画面上可以直接体现用户的在线情况,如果要将用户断线可以选择1、Disconnect a User系统会出现如下的画面,之后输入用户的User Number即可实现用户断线
1、 Linux常用的命令主要有如下几个
A)、ls—列出文件名
B)、pwd—查看当前的所处的目录
C)、cd --切换路径
D)、who—查看当前在线用户
E)、rmdir—创建目录
F)、rm—删除文件
G)、ps—查看用户进程
订阅:
博文 (Atom)