大家好,我是一直默默努力的大龄程序媛大丫姨,今天领导让我迁移一个Oracle的测试库,要迁出的数据库版本为Oracle12c,要迁入的数据库版本为Oracle19c,关于《【oracle数据库】如何在CentOS 7.9安装Oracle19c的操作步骤》后面有时间再整理。关于如何导入导出数据库,请见《【oracle数据库】从Oracle 12c导入到Oracle19c》
Oracle19c数据库当前环境
基本情况
已经有同事安装好了Oracle19c数据库,并创建了多个实例,分配给我操作的实例名为tssh(注意大小写)。
1、切换实例
export ORACLE_SID=tssh
最开始没有注意用了大写,在后面创建表空间时,直接报错
ORA-01034: ORACLE not available
实例名修改用小写tssh后,问题解决
2、dba登录
sqlplus / as sysdba
3、切换容器到TSSHPDB
为啥要切换到PDB容器,容器是什么,不切换会怎么样,可见【oracle】Oracle19c的CDB和PDB新特性
alter session set container=tsshpdb;
查询当前CDB容器
show con_name
查询PDB数据库名称
select name,open_mode from v$pdbs;
操作步骤
1、创建表空间
明确表空间目录为/data/app/oracle/oradata/实例名称/表空间名称_01.dbf,分配给我创建的表空间名为TSSH_15_DATA_MIN*
- 创建表空间
CREATE TABLESPACE TSSH_15_DATA_MIN DATAFILE
'/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_01.dbf' SIZE 4096M autoextend on;
需要确保“/data/app/oracle/oradata/实例名称”路径存在
-增加表空间数据文件
ALTER TABLESPACE TSSH_15_DATA_MIN ADD DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_02.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M;
ALTER TABLESPACE TSSH_15_DATA_MIN ADD DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_PDB_16.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M;
create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=(‘E:\app\administrator\oradata\ORCL\pdbseed’,‘E:\app\administrator\oradata\ORCL\pdb1’);
--删除表空间数据文件
ALTER TABLESPACE USERS DROP DATAFILE '/data/app/oracle/oradata/TSSH/TSSH_15_DATA_MIN_02.dbf'
- 删除表空间
drop tablespace TSSH_15_DATA_MIN including contents and datafiles
2、创建用户并授权
创建的用户名为tssh,密码可做修改,使用的命名空间为上述所建的TSSH_15_DATA_MIN
create user tssh identified by "XXXXX" default tablespace TSSH_15_DATA_MIN temporary tablespace TEMP ;
创建用户时会报错ORA-65096:公用用户名或角色名无效,此时可见【oracle】Oracle19c的CDB和PDB新特性
授权用户
GRANT RESOURCE,CONNECT TO tssh;
GRANT SELECT ANY DICTIONARY,SELECT ANY TABLE,UNLIMITED TABLESPACE,CREATE DATABASE LINK,CREATE SEQUENCE,CREATE MATERIALIZED VIEW,CREATE VIEW TO tssh;
GRANT IMP_FULL_DATABASE,EXP_FULL_DATABASE TO tssh;
GRANT create public database link to tssh;
删除用户
drop user tssh cascade;
3、创建导出目录
创建导出目录
create directory expdir as '/home/oracle/12328/expdir';
导出目录
select * from dba_directories;
授权用户
grant read,write on directory expdir to tssh;