RMS系统用户创建

RMS系统用户的创建非常繁琐,而且需要后台处理,这里总结步骤如下:

1、在数据库后台创建DB用户。

2、对创建的用户授予角色权限、系统权限。

以上两步可使用以下SQL脚本完成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*==================================================
  Copyright (C) HAND Enterprise Solutions Co.,Ltd.
             AllRights Reserved
  ==================================================*/
/*==================================================
  Program Name:
      CREATE RMS USER
  Description:
      This program create Oracle rms db user and grant all privileges .
  History:
      1.00  2008-11-10  Kenneth.shao    Creation
      2.00  2008-11-10  Kenneth.shao    Modified
            修改角色授权,增加选择角色功能,可以支持授权多个角色,用“,”号分割
            如:developer,select_catalog_role
  Version:
      2.00
  ==================================================*/
DECLARE
  l_user_name VARCHAR2(30) := '&USER_NAME' ;
  l_roles     VARCHAR2(400) := '&ROLE' ;
  l_crt_user varchar2(300) := 'create user '|| l_user_name ||'
  identified by "' || l_user_name || '"
  default tablespace RETEK_DATA
  temporary tablespace TEMP
  profile DEFAULT
  quota unlimited on lob_data
  quota unlimited on retek_data
  quota unlimited on retek_index';
  l_grant VARCHAR2(4000) ;
BEGIN
  --Create user
  EXECUTE IMMEDIATE l_crt_user ;
 
  --Grant directory
  l_grant := 'grant read on directory SYS.OUTPUT_WORKING to '||l_user_name;
  EXECUTE IMMEDIATE l_grant ;
  l_grant := 'grant read on directory SYS.UTL_FILE_DIR to '||l_user_name||' with grant option';
  EXECUTE IMMEDIATE l_grant ;
 
  --Grant role privileges
  l_grant := 'grant ' || l_roles || ' to '||l_user_name ;
  EXECUTE IMMEDIATE l_grant ;
 
  --Grant system privileges
  l_grant := 'grant alter session
    , analyze any
    , create any context
    , create any procedure
    , create any synonym
    , create any table
    , create any type
    , create database link
    , create library
    , create materialized view
    , create procedure
    , create public database link
    , create public synonym
    , create sequence
    , create session
    , create synonym
    , create table
    , create trigger
    , create view
    , debug connect session
    , delete any table
    , drop any procedure
    , drop any synonym
    , drop any table
    , execute any procedure
    , execute any type
    , insert any table
    , query rewrite
    , select any sequence
    , select any table
    , update any table to '||l_user_name ;
  EXECUTE IMMEDIATE l_grant ;
END

3、为新建DB用户创建RMS12DEV(现行环境下的用户)下对象的同义词。可使用如下脚本执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*==================================================
  Copyright (C) HAND Enterprise Solutions Co.,Ltd.
             AllRights Reserved
  ==================================================*/
/*==================================================
  Program Name:
      CREATE RMS SYNONYM
  Description:
      This program create all synonym for rms12dev to rms new user .
  History:
      1.00  2008-11-10  Kenneth.shao    Creation
  Version:
      1.00
  ==================================================*/
DECLARE
  l_user VARCHAR2(30) := '&USER_NAME';
BEGIN
  FOR syn_r IN (SELECT DISTINCT 'create or replace synonym '|| l_user || '.' || object_name ||  ' for rms12dev.' || object_name   syn
                  FROM dba_objects
                 WHERE owner = 'RMS12DEV'
                   AND object_name NOT LIKE 'BIN$%'
                   AND object_type IN ('SEQUENCE'
                                      ,'PROCEDURE'
                                      ,'PACKAGE'
                                      ,'LOB'
                                      ,'LIBRARY'
                                      ,'MATERIALIZED VIEW'
                                      ,'TABLE'
                                      ,'VIEW'
                                      ,'FUNCTION'
                                      ,'TYPE')
                ) LOOP
    BEGIN
    EXECUTE IMMEDIATE syn_r.syn ;
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line(syn_r.syn||'-----'||SQLERRM) ;
    END ;
  END LOOP;                
END ;

4、在RMS系统中设置用户属性,位置:启动->控制->设置->用户属性->新建。

5、设置用户组,位置:启动->控制->系统->地点/产品安全性->用户/组链接->编辑。(设置之前必须保证组已经建立并赋予一定的权限,这里不详细讲述)。

到这里为止,用户已经成功创建,只要组已经设置并赋权,用户便可以使用。

Makefile的编写

现在项目上需要编写PRO*C,在UNIX系统上通常都会使用makefile来统一管理、编译C/C++等程序,下面从网上找了一片文章来介绍makefile的编写,需要的同事研究以下。


什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。


http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile