oracle本地环境搭建-公共库私有库

UAT-C2环境

一、本地数据库导入目标数据库数据的前期准备

1、win + r 输入cmd 打开命令提示符窗口

本地创建一个mysql数据库 搭建本地数据库_数据库

2、进入Oracle数据库

sqlplus 回车 登录有dba权限的用户

本地创建一个mysql数据库 搭建本地数据库_数据库_02

3、删除c2comapp用户(这一步非必须 前提时你确认这个用户不存在):

drop user c2comapp cascade;

例:

本地创建一个mysql数据库 搭建本地数据库_数据库_03

4、创建用户:

create user c2comapp identified by c2comapp default tablespace users temporary tablespace temp;

例:

本地创建一个mysql数据库 搭建本地数据库_本地创建一个mysql数据库_04

5、给用户授权:

grant connect,resource,create view,create table,create sequence,create synonym,create database link to c2comapp;

例:

本地创建一个mysql数据库 搭建本地数据库_私有库_05


6、修改用户的配额限制:

alter user c2comapp quota unlimited on com_data;

例:

本地创建一个mysql数据库 搭建本地数据库_dba_06

alter user c2comapp quota unlimited on com_idx;

例:

本地创建一个mysql数据库 搭建本地数据库_数据库_07

7、授权:

grant read,write on directory data_pump_dir to c2comapp;

例:

本地创建一个mysql数据库 搭建本地数据库_oracle_08

8、用户c2comapp创建完毕
将例中的AA替换为要创建的用户名即可
9、重复3~7创建用户
公共库用户:c2comapp/c2omapp
私有库用户:(用户名密码)
c2glmsapp/c2glmsapp、c4glmsapp/c4glmsapp、c6glmsapp/c6glmsapp、 c8glmsapp/c8glmsapp
–删除“用户名”用户
drop user 用户名cascade;
–创建用户 为用户分配表空间
create user 用户名 identified by 密码 default tablespace users temporary tablespace temp;
–给用户授权
grant connect,resource,create view,create table,create sequence,create synonym,create database link to 用户名;
–修改用户的配额限制

alter user 用户名quota unlimited on com_data;
alter user 用户名quota unlimited on com_idx;
–授权
grant read,write on directory data_pump_dir to 用户名;

注:若是表空间不存在就创建
create tablespace 表空间 datafile ‘D:\Oracle\data\表空间.DBF’ size 1024m autoextend on next 50M maxsize unlimited;
若是表空间不足扩表空间
ALTER TABLESPACE 表空间 ADD DATAFILE 'D:\Oracle\data\表空间.DBF’size 1024M;

二、本地数据库导入目标数据库数据

1、Xshell连接远程服务器:

本地创建一个mysql数据库 搭建本地数据库_oracle_09


本地创建一个mysql数据库 搭建本地数据库_oracle_10

2、导出目标数据库的dmp文件

–导出数据泵

expdp 账号/密码@服务器地址:网段/实例 schemas=导出用户 dumpfile=导出数据库文件名.dmp DIRECTORY=数据泵目录名称 logfile=导出日志名.log compression=ALL REUSE_DUMPFILES=Y version=11.2.0.4.0 exclude=statistics

本地创建一个mysql数据库 搭建本地数据库_oracle_11


本地创建一个mysql数据库 搭建本地数据库_oracle_12

3、打开本地Oracle数据库连接工具dbvis ——连接之前创建的本地用作公共库的数据库

执行 select * from all_directories; 获取本地Oracle数据库的数据泵

本地创建一个mysql数据库 搭建本地数据库_oracle_13

4、将目标数据库生成的dmp文件拉取到本地数据泵目录下

本地创建一个mysql数据库 搭建本地数据库_本地创建一个mysql数据库_14

5、将目标数据库dmp文件导入到本地对应数据库中

① 进入本地数据泵目录下

本地创建一个mysql数据库 搭建本地数据库_oracle_15

② 在地址栏输入cmd回车

本地创建一个mysql数据库 搭建本地数据库_dba_16

本地创建一个mysql数据库 搭建本地数据库_本地创建一个mysql数据库_17

③ 执行导入dmp文件语句

–导入数据泵(断开vpn)

Impdp 账号/密码 DIRECTORY=本地数据泵目录 dumpfile=导出数据文件名.dmp logfile=导出日志文件名.log REMAP_SCHEMA=导出的dmp文件属于那个用户:要导入到那个用户下 remap_tablespace=导出用户表空间:导入用户表空间,导出用户表空间:导入用户表空间 (EXCLUDE=VIEW,SYNONYM 跳过视图和同义词 如果导入时卡在视图同义词可以添加)

本地创建一个mysql数据库 搭建本地数据库_本地创建一个mysql数据库_18

④ 导入之后 查询结果

执行查询语句: select * from user_tables;

本地创建一个mysql数据库 搭建本地数据库_私有库_19

⑤ dmp文件导入成功

6、重复步骤2~5导出、导入目标私有库

目标数据库名:账号/密码@服务器地址:网段/实例

UAT-C2私有库: c2glmsapp/c2glmsapp@服务器地址:网段/实例

UAT-C4私有库: c4glmsapp/c4glmsapp@服务器地址:网段/实例

UAT-C6私有库: c6glmsapp/c6glmsapp@服务器地址:网段/实例

UAT-C8私有库: c8glmsapp/c8glmsapp@服务器地址:网段/实例

–导出数据泵

expdp 账号/密码@服务器地址:网段/实例 schemas=导出用户 dumpfile=导出数据库文件名.dmp DIRECTORY=数据泵目录名称 logfile=导出日志名.log compression=ALL REUSE_DUMPFILES=Y version=11.2.0.4.0 exclude=statistics

–导入数据泵(断开vpn)

Impdp 账号/密码 DIRECTORY=本地数据泵目录 dumpfile=导出数据文件名.dmp logfile=导出日志文件名.log REMAP_SCHEMA=导出的dmp文件属于那个用户:要导入到那个用户下 remap_tablespace=导出用户表空间:导入用户表空间,导出用户表空间:导入用户表空间 (EXCLUDE=VIEW,SYNONYM 跳过视图和同义词 如果导入时卡在视图同义词可以添加)

三、数据导入之后数据库之间的操作

1、修改用户的dblink(dblink无法修改只能删除重建)

数据库用户c2comapp/c2comapp(总账系统-UATC2-本地公共库)

和 数据库用户c2glmsapp/c2glmsapp(总账-UAT-C2-本地私有库)

和 数据库用户c4glmsapp/c4glmsapp(总账-UAT-C4-本地私有库)

和 数据库用户c6glmsapp/c6glmsapp(总账-UAT-C6-本地私有库)

和 数据库用户c8glmsapp/c8glmsapp(总账-UAT-C8-本地私有库)

–查询用户下的dblink:select * from user_db_links;

本地创建一个mysql数据库 搭建本地数据库_数据库_20

select ‘drop database link ‘|| OBJECT_NAME ||’;’ from user_objects t where t.object_type=‘DATABASE LINK’ ;

本地创建一个mysql数据库 搭建本地数据库_私有库_21

修改dblink(将地址修改为本地地址)

create database link C2GLMSAPP connect to C2GLMSAPP identified by “c2glmsapp” USING ‘localhost:1521/xe’;

create database link C4GLMSAPP connect to C4GLMSAPP identified by “c4glmsapp” USING ‘localhost:1521/xe’;

create database link C6GLMSAPP connect to C6GLMSAPP identified by “c6glmsapp” USING ‘localhost:1521/xe’;

create database link C8GLMSAPP connect to C8GLMSAPP identified by “c8glmsapp” USING ‘localhost:1521/xe’;

本地创建一个mysql数据库 搭建本地数据库_私有库_22

数据库用户c2glmsapp/c2glmsapp(总账-UAT-C2-本地私有库)

删除操作相同

创建dblink:create database link C2COMAPP connect to C2COMAPP identified by “c2comapp” USING ‘localhost:1521/xe’;

数据库用户c4glmsapp/c4glmsapp(总账-UAT-C4-本地私有库)

删除操作相同

创建dblink:create database link C2COMAPP connect to C2COMAPP identified by “c2comapp” USING ‘localhost:1521/xe’;

数据库用户c6glmsapp/c6glmsapp(总账-UAT-C6-本地私有库)

删除操作相同

创建dblink:create database link C2COMAPP connect to C2COMAPP identified by “c2comapp” USING ‘localhost:1521/xe’;

数据库用户c8glmsapp/c8glmsapp(总账-UAT-C8-本地私有库)

删除操作相同

创建dblink:create database link C2COMAPP connect to C2COMAPP identified by “c2comapp” USING ‘localhost:1521/xe’;

2、将公共库用户下的表和私有库用户下的表分别授查询权限给对方

①将公共库表的查询权限授予私有库用户

在c2comapp/c2comapp(总账系统-UATC2-本地公共库)执行

select ’ grant select on ‘||table_name ||’ to c2glmsapp;’ from user_tables;

(在公共库中将查询权限授予用户c2glmsapp/c2glmsapp(总账-UAT-C2-本地私有库))

本地创建一个mysql数据库 搭建本地数据库_oracle_23

粘贴到当前用户下执行

本地创建一个mysql数据库 搭建本地数据库_数据库_24

同样将查询权限授予
c4glmsapp/c4glmsapp(总账-UAT-C4-本地私有库)
select ’ grant select on ‘||table_name ||’ to c4glmsapp;’ from user_tables;
c6glmsapp/c6glmsapp(总账-UAT-C6-本地私有库)
select ’ grant select on ‘||table_name ||’ to c6glmsapp;’ from user_tables;
c8glmsapp/c8glmsapp(总账-UAT-C8-本地私有库)
select ’ grant select on ‘||table_name ||’ to c8glmsapp;’ from user_tables;
②私有库创建公共库表格的同义词
在c2comapp/c2comapp(总账系统-UATC2-本地公共库)下执行
select ‘create synonym ’ || table_name ||’ for c2comapp.’||TABLE_NAME ||’;’ from user_tables;

粘贴到c2glmsapp/c2glmsapp(总账-UAT-C2-本地私有库)下执行

本地创建一个mysql数据库 搭建本地数据库_oracle_25

粘贴到c4glmsapp/42glmsapp(总账-UAT-C4-本地私有库)下执行

图:略

粘贴到c6glmsapp/c6glmsapp(总账-UAT-C6-本地私有库)下执行

图:略

粘贴到c8glmsapp/c8glmsapp(总账-UAT-C8-本地私有库)下执行

图:略

注意:如果执行创建同义词报错如下则删除再建

本地创建一个mysql数据库 搭建本地数据库_数据库_26

删除操作

本地创建一个mysql数据库 搭建本地数据库_私有库_27


本地创建一个mysql数据库 搭建本地数据库_私有库_28

3、公共库创建私有库视图
注:③~⑤中要带逗号
分6步:wps word 均可
①.在私有库下执行查询创建视图语句;
②.替换 ^p -> ,
③.替换 REPLACETOAS, - > AS
④.替换 REPLACETOUNIONALL, -> UNION ALL
⑤.替换 REPLACETONEXTLINE, -> ;^p
⑥.将替换后的结果在公共库下执行
私有库执行 将结果集复制到 word wps 替换
select
case
when b.id=0 and a.COLUMN_ID = b.min_column_id then ‘CREATE OR REPLACE VIEW ‘||a.table_name||’ ( ‘|| a.COLUMN_NAME
when b.id=0 and a.COLUMN_ID = b.max_column_id then a.COLUMN_NAME||’ ’ ||’) REPLACETOAS’
when b.id=0 and a.COLUMN_ID <> b.max_column_id and a.COLUMN_ID <> b.min_column_id then a.COLUMN_NAME

when b.id=1 and a.COLUMN_ID = b.min_column_id then ’ SELECT ‘||’"’|| a.COLUMN_NAME|| ‘"’
when b.id=1 and a.COLUMN_ID = b.max_column_id then ‘"’||a.COLUMN_NAME||’"’||’ FROM ‘||a.table_name ||’@C2GLMSAPP’||‘REPLACETOUNIONALL’
when b.id=1 and a.COLUMN_ID <> b.max_column_id and a.COLUMN_ID <> b.min_column_id then ‘"’||a.COLUMN_NAME||’"’

when b.id=2 and a.COLUMN_ID = b.min_column_id then ’ SELECT ‘||’"’|| a.COLUMN_NAME|| ‘"’
when b.id=2 and a.COLUMN_ID = b.max_column_id then ‘"’||a.COLUMN_NAME||’"’||’ FROM ‘||a.table_name ||’@C4GLMSAPP’||‘REPLACETOUNIONALL’
when b.id=2 and a.COLUMN_ID <> b.max_column_id and a.COLUMN_ID <> b.min_column_id then ‘"’||a.COLUMN_NAME||’"’

when b.id=3 and a.COLUMN_ID = b.min_column_id then ’ SELECT ‘||’"’|| a.COLUMN_NAME|| ‘"’
when b.id=3 and a.COLUMN_ID = b.max_column_id then ‘"’||a.COLUMN_NAME||’"’||’ FROM ‘||a.table_name ||’@C6GLMSAPP’||‘REPLACETOUNIONALL’
when b.id=3 and a.COLUMN_ID <> b.max_column_id and a.COLUMN_ID <> b.min_column_id then ‘"’||a.COLUMN_NAME||’"’

when b.id=4 and a.COLUMN_ID = b.min_column_id then ’ SELECT ‘||’"’|| a.COLUMN_NAME|| ‘"’
when b.id=4 and a.COLUMN_ID = b.max_column_id then ‘"’||a.COLUMN_NAME||’"’||’ FROM ‘||a.table_name ||’@C8GLMSAPP’||‘REPLACETONEXTLINE’
when b.id=4 and a.COLUMN_ID <> b.max_column_id and a.COLUMN_ID <> b.min_column_id then ‘"’||a.COLUMN_NAME||’"’

else null end

from user_tab_columns a left join
( select ‘0’ as id,max(COLUMN_ID) as max_column_id ,min(COLUMN_ID) as min_column_id ,table_name from user_tab_columns where table_name in (select table_name from user_tables) and table_name not like ‘AMS%’ group by table_name union all
select ‘1’ as id,max(COLUMN_ID) as max_column_id ,min(COLUMN_ID) as min_column_id ,table_name from user_tab_columns where table_name in (select table_name from user_tables) and table_name not like ‘AMS%’ group by table_name union all
select ‘2’ as id,max(COLUMN_ID) as max_column_id ,min(COLUMN_ID) as min_column_id ,table_name from user_tab_columns where table_name in (select table_name from user_tables) and table_name not like ‘AMS%’ group by table_name union all
select ‘3’ as id,max(COLUMN_ID) as max_column_id ,min(COLUMN_ID) as min_column_id ,table_name from user_tab_columns where table_name in (select table_name from user_tables) and table_name not like ‘AMS%’ group by table_name union all
select ‘4’ as id,max(COLUMN_ID) as max_column_id ,min(COLUMN_ID) as min_column_id ,table_name from user_tab_columns where table_name in (select table_name from user_tables) and table_name not like ‘AMS%’ group by table_name
) b on a.table_name=b.table_name
where a.table_name in (select table_name from user_tables ) and a.table_name not like ‘AMS%’ and a.table_name not in (select table_name from user_tables where substr(table_name,length(table_name))>=‘0’ and substr(table_name,length(table_name))<=‘9’) and a.data_type not in (‘CLOB’,‘BLOB’)
order by a.TABLE_NAME||b.id,a.table_name ,a.COLUMN_ID;

替换完成 复制到公共库执行

(1)将上述查询语句复制到c2glmsapp/c2glmsapp(总账-UAT-C2-本地私有库)下执行 并复制 结果集

本地创建一个mysql数据库 搭建本地数据库_dba_29

(2)将复制的结果集粘贴在新建文档中wps word 均可

①替换^p -> ,

本地创建一个mysql数据库 搭建本地数据库_私有库_30

②替换 REPLACETOAS, - > AS

本地创建一个mysql数据库 搭建本地数据库_oracle_31

③替换 REPLACETOUNIONALL, -> UNION ALL

本地创建一个mysql数据库 搭建本地数据库_数据库_32

④替换 REPLACETONEXTLINE, -> ;^p

本地创建一个mysql数据库 搭建本地数据库_数据库_33

(3)将修改好的结果集复制到c2comapp/c2comapp(总账系统-UATC2-本地公共库)执行

本地创建一个mysql数据库 搭建本地数据库_数据库_34

(4)重复(1)~(3)步 修改好的结果集粘贴到公共库下执行

c4glmsapp/c4glmsapp(总账-UAT-C4-本地私有库)

本地创建一个mysql数据库 搭建本地数据库_oracle_35

c6glmsapp/c6glmsapp(总账-UAT-C6-本地私有库)

本地创建一个mysql数据库 搭建本地数据库_私有库_36

c8glmsapp/c8glmsapp(总账-UAT-C8-本地私有库)

本地创建一个mysql数据库 搭建本地数据库_数据库_37