重建oracle测试库步骤

学习目标:

重建测试库,目的只是自己看数据库的包体,函数那些,就自己弄着玩的,导出的元数据只有表结构,包体,函数等等那些,但是不含表数据,所以,表空间给个10M就行了。

数据库已经安装好了,可以参考我linux上安装数据库的文章。


学习内容:

--(1)、正式库数据库导出

这一部不需要执行,原数据已经导出。

sql 复制代码
expdp system/123123 dumpfile=NETSC_FULL_DATA.dmp directory=expdmp logfile=NETSC_FULL_DATA.log full=Y COMPRESSION=ALL exclude=STATISTICS

2)、测试库创建表空间

--------------------------------------------------查询表空间语句-------------------------------------------

sql 复制代码
SELECT T.TABLESPACE_NAME,
       T.DATAFILE# "# of datafile",
       TO_CHAR(T.TOTAL, '999,999,999,999') "Total (M)",
       TO_CHAR(F.FREE, '999,999,999,999') "Free (M)",
       TO_CHAR(100 * (1 - F.FREE / T.TOTAL), '90.00') "Used %"
  FROM (SELECT TABLESPACE_NAME,
               SUM(BYTES) / 1024 / 1024 TOTAL,
               COUNT(*) DATAFILE#
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T,
       (SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 FREE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F
 WHERE T.TABLESPACE_NAME = F.TABLESPACE_NAME
 ORDER BY 1 ASC;

--------------------------------------------------查询表空间语句--------------------------------------------

--先查询正式库中的表空间大小

sql 复制代码
SELECT T.TABLESPACE_NAME,
       T.DATAFILE# "# of datafile",
       TO_CHAR(T.TOTAL, '999,999,999,999') "Total (M)",
       TO_CHAR(F.FREE, '999,999,999,999') "Free (M)",
       TO_CHAR(100 * (1 - F.FREE / T.TOTAL), '90.00') "Used %"
  FROM (SELECT TABLESPACE_NAME,
               SUM(BYTES) / 1024 / 1024 TOTAL,
               COUNT(*) DATAFILE#
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) T,
       (SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 FREE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F
 WHERE T.TABLESPACE_NAME = F.TABLESPACE_NAME
 AND T.TABLESPACE_NAME NOT IN ('SYSAUX','SYSTEM','UNDOTBS1','USERS')
 ORDER BY 1 ASC;
---

----有些表空间超过了32G,需要多加几个数据文件,可以用下面的查询

sql 复制代码
SELECT FILE_NAME, TABLESPACE_NAME, BYTES / 1024 / 1024 AS "Total (M)"
  FROM DBA_DATA_FILES
 WHERE TABLESPACE_NAME IN ('AUDITDATA',
                           'FRAME',
                           'IDX',
                           'IDX_HIS',
                           'LMIS',
                           'LMIS_HIS',
                           'P001',
                           'P002',
                           'P003',
                           'P004',
                           'P005',
                           'P006',
                           'P007',
                           'P008',
                           'WMS')
 ORDER BY FILE_NAME

--------------------------------------------创建表空间的前的工作--------------------------------------------

--这4个表空间是数据库默认就有的不用创建

--SYSAUX SYSTEM UNDOTBS1 USERS

--对比你测试库和正式库的表空间,排除默认的表空间 SYSAUX SYSTEM UNDOTBS1 USERS,剩下的就是业务数据需要创建的表空间,文件路径自行定义更改

--AUDITDATA FRAME IDX IDX_HIS LMIS LMIS_HIS P001 P002 P003 P004 P005 P006 P007 P008 WMS

--AUDITDATA

----linux中改变目录的所有者和组 sudo chown oracle:oinstall /direstory#

sql 复制代码
CREATE  TABLESPACE  AUDITDATA datafile '/u01/app/oracle/oradata/orcl/AUDITDATA.DBF' SIZE 1024M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--FRAME
create tablespace FRAME datafile '/u01/app/oracle/oradata/orcl/FRAME01.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--IDX
create tablespace IDX datafile '/u01/app/oracle/oradata/orcl/IDX01.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--IDX_HIS
create tablespace IDX_HIS datafile '/u01/app/oracle/oradata/orcl/IDX_HIS01.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--LMIS
create tablespace LMIS datafile '/u01/app/oracle/oradata/orcl/LMIS01.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--LMIS_HIS
create tablespace LMIS_HIS datafile '/u01/app/oracle/oradata/orcl/LMIS_HIS01.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P001
create tablespace P001 datafile '/u01/app/oracle/oradata/orcl/P001A.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P002
create tablespace P002 datafile '/u01/app/oracle/oradata/orcl/P002A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P003
create tablespace P003 datafile '/u01/app/oracle/oradata/orcl/P003A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P004
create tablespace P004 datafile '/u01/app/oracle/oradata/orcl/P004A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P005
create tablespace P005 datafile '/u01/app/oracle/oradata/orcl/P005A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P006
create tablespace P006 datafile '/u01/app/oracle/oradata/orcl/P006A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P007
create tablespace P007 datafile '/u01/app/oracle/oradata/orcl/P007A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--P008
create tablespace P008 datafile '/u01/app/oracle/oradata/orcl/P008A.DBF' SIZE 5120M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;
--WMS
create tablespace WMS datafile '/u01/app/oracle/oradata/orcl/WMS01.DBF' SIZE 30720M AUTOEXTEND ON  NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL  AUTOALLOCATE SEGMENT  SPACE  MANAGEMENT  AUTO;

--这里是表空间的数据文件不够装数据之后需要手动添加数据文件或者更改数据文件大小(可以预先查看正式库的数据文件大小,多做几个数据文件)

--添加表空间

sql 复制代码
alter tablespace IDX add datafile '/u01/app/oracle/oradata/orcl/IDX02.DBF' SIZE 30720M;     
alter tablespace IDX_HIS add datafile '/u01/app/oracle/oradata/orcl/IDX_HIS02.DBF' SIZE 30720M;
alter tablespace IDX_HIS add datafile '/u01/app/oracle/oradata/orcl/IDX_HIS03.DBF' SIZE 30720M;
alter tablespace IDX_HIS add datafile '/u01/app/oracle/oradata/orcl/IDX_HIS04.DBF' SIZE 30720M;
alter tablespace WMS add datafile '/u01/app/oracle/oradata/orcl/WMS02.DBF' SIZE 30720M;
alter tablespace WMS add datafile '/u01/app/oracle/oradata/orcl/WMS03.DBF' SIZE 30720M;
alter tablespace WMS add datafile '/u01/app/oracle/oradata/orcl/WMS04.DBF' SIZE 30720M;
alter tablespace WMS add datafile '/u01/app/oracle/oradata/orcl/WMS05.DBF' SIZE 30720M;
alter tablespace LMIS_HIS add datafile '/u01/app/oracle/oradata/orcl/LMIS_HIS02.DBF' SIZE 30720M;
alter tablespace LMIS add datafile '/u01/app/oracle/oradata/orcl/LMIS02.DBF' SIZE 30720M;
alter tablespace P001 add datafile '/u01/app/oracle/oradata/orcl/P001B.DBF' SIZE 30720M;
alter tablespace P001 add datafile '/u01/app/oracle/oradata/orcl/P001C.DBF' SIZE 30720M;

(3)、创建用户及授权DBA角色权限,已经测试过不需要自行创建用户,导入之后会自动创建,密码和你被导入的库密码一样

(其实就是你导入了数据文件,这些用户就会自动创建)

sql 复制代码
create user FRAME identified by frame default tablespace FRAME temporary tablespace TEMP profile DEFAULT;
grant dba to FRAME;

create user BAK identified by bak default tablespace WMS temporary tablespace TEMP profile DEFAULT;
grant dba to BAK;

create user EXWMS  identified by exwms  default tablespace WMS  temporary tablespace TEMP profile DEFAULT;
grant dba to EXWMS;

create user EXWMS_DBLINK identified by exwms_dblink  default tablespace WMS  temporary tablespace TEMP  profile DEFAULT;
grant dba to EXWMS_DBLINK;

create user GGS identified by ggs default tablespace USERS  temporary tablespace TEMP profile DEFAULT;
grant dba to GGS;

create user LC001 identified by lc001 default tablespace P001  temporary tablespace TEMP profile DEFAULT;
grant dba to LC001;

create user LC002  identified by lc002 default tablespace P002 temporary tablespace TEMP profile DEFAULT;
grant dba to LC002;

create user LC003 identified by lc003 default tablespace P003 temporary tablespace TEMP profile DEFAULT;
grant dba to LC003;

create user LC004 identified by lc004 default tablespace P004 temporary tablespace TEMP profile DEFAULT;
grant dba to lc004;

create user LC005  identified by lc005 default tablespace P005 temporary tablespace TEMP profile DEFAULT;
grant dba to LC005;

create user LC006 identified by lc006 default tablespace P006 temporary tablespace TEMP profile DEFAULT;
grant dba to LC006;

create user LC007 identified by lc007 default tablespace P007 temporary tablespace TEMP profile DEFAULT;
grant dba to LC007;

create user LC008 identified by lc008 default tablespace P008 temporary tablespace TEMP profile DEFAULT;
grant dba to LC008;

create user LMIS identified by lmisnettest default tablespace LMIS temporary tablespace TEMP profile DEFAULT quota unlimited on wms;
grant dba to LMIS;

create user LMIS_HIS identified by lmishis default tablespace LMIS_HIS temporary tablespace TEMP profile DEFAULT  quota unlimited on lmis_his;
grant dba to LMIS_HIS;

create user LMIS_HYS identified by lmis_hys  default tablespace LMIS temporary tablespace TEMP profile DEFAULT;
grant dba to LMIS_HYS;

create user RPT identified by rpt default tablespace WMS temporary tablespace TEMP profile DEFAULT; 
grant dba to RPT;

create user SCMY identified by scmy default tablespace WMS temporary tablespace TEMP profile DEFAULT;
grant dba to SCMY;

create user SF_RSCD identified by sf_rscd default tablespace LMIS temporary tablespace TEMP profile DEFAULT;
grant dba to SF_RSCD;

create user TPL identified by tpl default tablespace WMS temporary tablespace TEMP profile DEFAULT quota unlimited on wms;
grant dba to TPL;

create user TPLSN  identified by tplsn default tablespace WMS temporary tablespace TEMP profile DEFAULT quota unlimited on wms;
grant dba to TPLSN;

create user WCS identified by wcs  default tablespace WMS  temporary tablespace TEMP profile DEFAULT;
grant dba to WCS;

--# 创建数据泵目录

sql 复制代码
---mkdir -p /u01/app/oracle/dmpdir
--chown oracle:oinstall /u01/app/oracle/dmpdir
---chmod 775 /u01/app/oracle/dmpdir
复制代码
# 登录数据库创建目录对象


---sqlplus / as sysdba 
---CREATE DIRECTORY CS_DMP AS '/u01/app/oracle/dmpdir';
--GRANT READ, WRITE ON DIRECTORY CS_DMP TO system;
sql 复制代码
root 用户下将DMP_MEDATA.DMP组改成oracle,

sudo chown oracle:oinstall /u01/app/oracle/dmpdir/DMP_MEDATA.DMP
 ‌验证权限
ls -l /u01/app/oracle/dmpdir/DMP_MEDATA.DMP

输出应显示 oracle 为所有者:
-rw-r--r-- 1 oracle oinstall 106614784 Jan 14 17:05 /u01/app/oracle/dmpdir/DMP_MEDATA.DMP
导入数据 只能在oracle用户下执行
sql 复制代码
impdp system/123123 directory=CS_DMP dumpfile=DMP_MEDATA.DMP full='Y'

--(5)、导入策略控制

--在正式库查看原有的策略

--SELECT * FROM dba_context

--在测试库对照生成策略

--在LMIS用户下执行,如果导入之前不自己建用户,默认会自动导入原有库的策略,可能不需要修改

sql 复制代码
--create or replace context CTX_OWNERS	using PKG_POLICY;   /* create or replace context CTX_OWNERS	using LMIS.PKG_POLICY;*/

--create or replace context  CTX_OWNER	using PKG_POLICY;
--create or replace context  CTX_LC	using PKG_POLICY;
--create or replace context  CTX_DRUG_CATE	using PKG_POLICY;

--(6)、修改用户默认策略密码过期不限制,如果原有库有用户策略,导入时也会自带,可能不需要修改

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

---授权指定包执行权限

sql 复制代码
GRANT EXECUTE ON DBMS_RLS TO lmis  ----这个就需要执行,上下文执行需要的

记得编译。

相关推荐
墨香幽梦客2 小时前
数据库选型对比:MySQL、Oracle与PostgreSQL的企业应用场景分析
数据库·mysql·oracle
wei_shuo2 小时前
多模一体破局:金仓数据库引领文档数据库国产化新征程
数据库·金仓数据库
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-数据库 表结构 & 完整外键依赖关系梳理
java·数据库·人工智能·软件工程
清风拂山岗 明月照大江2 小时前
MySQL进阶
数据库·sql·mysql
努力进修2 小时前
金仓数据库:多模融合内核驱动,重构国产化文档数据库新生态
数据库·重构
Miss_Chenzr2 小时前
Springboot企业人事管理系统mi130(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
大猫会长3 小时前
postgresql内的RLS规则
数据库·postgresql
YIN_尹3 小时前
【MySQL】表的约束(上)
android·数据库·mysql
云和数据.ChenGuang3 小时前
运维故障之MySQL 连接授权错误
运维·数据库·人工智能·mysql