# 基于Oracle 11G

  • 利用Docker建立一个纯净的oracle11G,然后将dmp文件拷贝到容器内
# 进入容器
docker exec -ti oracle11g /bin/bash
# root授权
chmod 777 /opt
chmod 777 /file
# 切换角色
su oracle
# 进入oracle
$ORACLE_HOME/bin/sqlplus / as sysdba
  • 进入Oracle后执行以下语句
CREATE TABLESPACE NNC_DATA01 DATAFILE '/opt/nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX01 DATAFILE '/opt/nnc_index01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE NNC_DATA02 DATAFILE '/opt/nnc_data02.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX02 DATAFILE '/opt/nnc_index02.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE NNC_DATA03 DATAFILE '/opt/nnc_data03.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX03 DATAFILE '/opt/nnc_index03.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

create user nc57 identified by jxnc57 default tablespace nnc_data01 temporary tablespace temp;

grant connect,dba to nc57;

create or replace directory PATH as '/file';
  • $ORACLE_HOME/bin下执行命令
# 如果是exp导出
./imp nc57/jxnc57 fromuser=nc57 touser=nc57 file=/file/nc57.dmp
# 如果是expdp导出
impdp nc57/jxnc57 directory=PATH dumpfile=nc57.dmp logfile=nc57.log schemas=nc57 table_exists_action=replace
  • 连接方式
spring.datasource.url=jdbc:oracle:thin:@ip:port:XE
spring.datasource.username=nc57
spring.datasource.password=jxnc57

# 基于Oracle 19C

  • 利用Docker建立一个纯净的oracle19C,然后将dmp文件拷贝到容器内
# 进入容器
docker exec -ti oracle19c /bin/bash
# 配置环境变量
# 注意和docker-compose的ORACLE_SID对应
export ORACLE_SID=ORCL
# 修改登录权限
vi $ORACLE_HOME/network/admin/sqlnet.ora
# 最后增加
# SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
# SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
# 进入oracle
$ORACLE_HOME/bin/sqlplus / as sysdba
  • 进入Oracle后执行以下语句

注意

在Oracle19C下可能提示ORA-01034错误

执行export ORACLE_SID=ORCL并在Oracle内执行alter session set container=orclpdb1;

为了防止ORA-01017错误,最好先添加配置信息

$ORACLE_HOME/network/admin/sqlnet.ora文件中增加SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8SQLNET.ALLOWED_LOGON_VERSION_SERVER=8两条配置语句

如果提示ORA-65096,invalid common user or role name

则在用户名前面加入c##或者C##

-- 注意和docker-compose文件的ORACLE_PDB参数对应
alter session set container=orclpdb1;

-- 创建表空间
CREATE TABLESPACE NNC_DATA01 DATAFILE '/file/nnc_data01.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX01 DATAFILE '/file/nnc_index01.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE NNC_DATA02 DATAFILE '/file/nnc_data02.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX02 DATAFILE '/file/nnc_index02.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE NNC_DATA03 DATAFILE '/file/nnc_data03.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
CREATE TABLESPACE NNC_INDEX03 DATAFILE '/file/nnc_index03.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

-- 创建用户、设定密码、指定表空间
create user pep identified by jxnc57 default tablespace nnc_data01 temporary tablespace temp;

-- 授权
grant connect,dba to pep;

-- 设定PATH
create or replace directory PATH as '/file';
  • $ORACLE_HOME/bin下执行命令
# 注意@符号后面的pdb名称
# 如果是exp导出
./imp pep/jxnc57@orclpdb1 fromuser=pep touser=pep file=/file/nc57.dmp
# 如果是expdp导出
impdp pep/jxnc57@orclpdb1 directory=PATH dumpfile=nc57.dmp logfile=nc57.log schemas=pep table_exists_action=replace
  • 连接方式

注意

Oracle19C的连接url后面是/,而11G是:

spring.datasource.url=jdbc:oracle:thin:@ip:port/orclpdb1
spring.datasource.username=pep
spring.datasource.password=nc57

# 总结

由于Oracle在12之后加入了CDB和PDB的概念,所以在进入数据库之后,19C需要先进入PDB,再创建表空间和用户。

并且12之前连接数据库,url是sid,而19c是pdb。

# To Be Continued!😎

Last Updated: 8/19/2022, 3:57:15 PM