耳目一新|林林总总 涂鸦·电影·分享·碎碎念
  • db2数据库的schema和user(转载)

    2016-12-14

    数据库中Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构。还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表、视图和存储过程等命名对象。简单的说,Schema就是一个(数据库)用户所拥有的数据库的对象。

    在一个数据库中可以有多个应用的数据表,这些不同应用的表可以放在不同的schema之中,同时,每一个schema对应一个用户,不同的应用可以以不同的用户连接数据库,这样,一个大数据库就可以根据应用把其表分开来管理。不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名,也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下,每个用户只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的数据(即schema用户自己的数据).

    数据库中的User和Schema到底什么关系呢?其实User就是每个Schema的主人,如果当前操作数据库的用户有默认的Schema(在创建用户的时候指定了),那么新表被创建在默认的Schema上。 通过这样的方法,主要是方便管理。

    在DB2中的schema的概念和ORACLE中的概念有着本质的区别:在ORACLE中schema和用户是同一个;在DB2中schema不一定是用户,因为db2内部没有用户的概念,连接用户必须是操作系统用户.

    查询当前存在的Schema

    db2 "select SCHEMANAME,owner,CREATE_TIME from syscat.schemata"

    在有些情况下,当前登录用户所要访问的Schema可能并不是默认分配给他的Schema,这时查询表前就需要一个前缀来约束所要访问的Schema。

    如:

    db2 “SELECT * FROM wanted_schema_name.table_name”

    或通过下面的命令可以修改当前Schema

    SET CURRENT SCHEMA = ‘PAYROLL’
    SET SCHEMA ‘PAYROLL’

    在开发过程中,可以通过修改连接字符串来修改默认连接的Schema/Sqlid,

    以JDBC为例(最后的分号一定不能省略):

    jdbc:db2://database_server_uri:port/database_name:currentSchema=schema_name;

    db2 切换 schema 及执行脚本

    在windows 下测试过

    1、打开 cmd 命令

    2、db2cmd

    3、db2 connect to test user meta using portaldb —-连接数据库

    4、db2 select current schema from sysibm.sysdummy1 —-查看当前数据库默认的schema

    5、db2set current schema bast —设置schema

    6、db2 select current schema from sysibm.sysdummy1 —查看是否设置成功

    7、db2 -tvf d:\\meta\meta_ddl.sql –在指定的schema执行建表语句

    DB2 将schema下所有表的权限赋予一个用户

    db2 “select ‘db2 grant select on table DB2INST2.’|| tabname ||’ to db2inst1′ from syscat.tables where tabschema=’DB2INST2′”

    单独对某个Schema下的表进行授权

    C:\Users\Administrator>db2 grant select on table zssqsong.kc_team_user to user zssqding

    DB20000I SQL 命令成功完成。

    本文出自 “滴水穿石孙杰” 博客,请务必保留此出处http://xjsunjie.blog.51cto.com/999372/1306770

    作者:congwong | Categories:db2技术数据库 | Tags:
  • oracle锁表的解决方法

    2012-11-12

    转自Oracle的锁表与解锁,自己试验过没问题。

    Oracle的锁表与解锁

    SELECT /*+ rule */ s.username,
    decode(l.type,’TM’,’TABLE LOCK’,
    ‘TX’,’ROW LOCK’,
    NULL) LOCK_LEVEL,
    o.owner,o.object_name,o.object_type,
    s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
    FROM v$session s,v$lock l,dba_objects o
    WHERE l.sid = s.sid
    AND l.id1 = o.object_id(+)
    AND s.username is NOT Null Read More »

    作者:congwong | Categories:技术数据库 | Tags:
  • ORA-12154:TNS:无法解析指定的连接标识符(转)

    2012-07-05

    使用PLSQL连oracle服务器一直报“ORA-12154: TNS: 无法解析指定的连接标识符”。
    将PLSQL的安装路径改为D:\Program Files\PLSQL Developer即可解决问题。 Read More »

    作者:congwong | Categories:技术数据库 | Tags:
  • Informix存储过程 详解(转)

    2011-05-04

    一、存储过程概述
    存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成,以可以执行代码形式存储在数据库中,和表、视图、索引等一样,是数据库的一种对象。 Read More »

    作者:congwong | Categories:技术数据库 | Tags: