前言
达梦数据库用户下的模式,无法通过修改模式的方式直接进行调整模式所属数据库用户。另外,数据库实例中模式名是唯一的,无法创建相同的模式名,所以需要采用对模式导出导入或者数据迁移的方式处理。在某些情况下我们可能需要更改模式所属的用户,比如在部署应用导入或者迁移数据时,误使用SYSDBA进行操作,将业务数据库模式创建在SYSDBA用户下,而由于安全等原因,SYSDBA不建议直接给应用程序使用,所以就需要调整模式到其他普通用户下。
实现方式
方法一:新建实例,创建数据库普通用户,普通用户登录创建模式A、B,然后将原实例SYSDBA用户下的A、B模式数据迁移或者导入到普通用户下对应的模式下。
方法二:不新建实例,分别导出A、B模式数据,然后删除现有实例下的A、B模式,再创建数据库普通用户,普通用户登录创建模式A、B,然后分别导入A、B模式数据。
操作步骤
方法一 新建实例
1、新建实例,注意端口需要和现有实例端口不同(假如现有实例端口为5236)
(1)命令行创建实例
./dminit path=/xxx/xx page_size=32 extent_size=32 port_num=5237 db_name=DMAENG5237
(2)图形界面创建使用dbca工具
具体详细参考:DM 数据库快速上手指南 | 达梦技术文档 (dameng.com)
https://eco.dameng.com/docs/zh-cn/start/index.html
2、使用SYSDBA用户登录端口5237实例数据库,创建普通用户HN和表空间并授权
—创建业务数据库表空间
CREATE TABLESPACE HN_TBS DATAFILE ‘HN_01.DBF’ SIZE 500 AUTOEXTENT ON NEXT 200 MAXSIZE 200000;
ALTER TABLESPACE HN_TBS ADD DATAFILE ‘HN_02.DBF’ SIZE 500 AUTOEXTENT ON NEXT 200 MAXSIZE 200000;
—创建业务数据库用户并授权
CREATE USER HN IDENTIFIED BY “密码” default tablespace HN_TBS;
GRANT RESOURCE,PUBLIC,VTI,SOI TO HN;
GRANT BACKUP DATABASE,ADMIN JOB TO HN;
3、使用HN用户登录,创建A模式和B模式
CREATE SCHEMA A AUTHORIZATION HN;
CREATE SCHEMA B AUTHORIZATION HN;
4、使用SYSDBA用户登录端口5236实例,分别导出A模式和B模式
直接使用管理工具–模式–A/B ,右键导出。
5、导入A、B模式到5237实例上
上面模式导出完成后,使用HN用户登录端口5237实例,分别导入A模式和B模式。
使用管理工具–模式 ,然后右键导入,导入时选择模式映射,如图:
A模式导入:
B模式导入:
同A模式导入方法。
6、导入完成后,停掉原来5236端口实例以及关闭开机启动服务,使用5237端口进行访问。
7、数据导入的其他方法
关于数据导入的其他方式,也可以使用DM数据迁移工具进行迁移。
方法二 不新建实例
1、在现有实例上使用SYSDBA用户创建普通用户HN和表空间并授权
—创建业务数据库表空间
CREATE TABLESPACE HN_TBS DATAFILE ‘HN_01.DBF’ SIZE 500 AUTOEXTENT ON NEXT 200 MAXSIZE 200000;
ALTER TABLESPACE HN_TBS ADD DATAFILE ‘HN_02.DBF’ SIZE 500 AUTOEXTENT ON NEXT 200 MAXSIZE 200000;
—创建业务数据库用户并授权
CREATE USER HN IDENTIFIED BY “密码” default tablespace HN_TBS;
GRANT RESOURCE,PUBLIC,VTI,SOI TO HN;
GRANT BACKUP DATABASE,ADMIN JOB TO HN;
2、使用SYSDBA用户登录,分别导出A模式和B模式
直接使用管理工具–模式–A/B ,右键导出。
3、删除A、B模式
管理工具–模式–A/B,右键删除(级联删除)
注意:删除请确保数据已正常导出备份。
4、使用HN用户登录,创建A模式和B模式
CREATE SCHEMA A AUTHORIZATION HN;
CREATE SCHEMA B AUTHORIZATION HN;
5、导入A、B模式
导入操作与方法1相同,参考方法一的导入操作。
简单总结
默认情况下,创建数据库用户时会自动创建一个与数据库用户同名的模式作为默认模式。当用户下存在多个模式时,除了可以在程序URL连接串中指定schema属性外,还可以使用语句"ALTER USER 用户名 ON SCHEMA 模式名;" 更改指定用户登录后使用的默认模式。
由于安全等问题,不建议应用程序直接使用SYSDBA等管理员用户作为程序连接数据库的业务用户,建议单独创建业务用户,且权限不用授予DBA角色权限,对于业务用户来说,大部分情况仅仅只是访问本用户下的数据,如需访问其他用户的对象,可以单独授予对象权限,而不是直接授予一个DBA角色权限了事。所以对业务数据库用户来说,授予RESOURCE,PUBLIC,VTI,SOI角色权限已经完全满足使用。
更多资讯请上达梦技术社区了解:https://eco.dameng.com