对于一个习惯使用oracle11g的数据库管理员,开始接触安装oracle12c后,第一个问题就是怎么连基本的用户都创建不了,连DBA权限都不管用。
原来oracle11的DB变为了CDB(Container Database)和PDB(Pluggable Database)两个概念,CDB就相当于oracle11以前创建的数据库,而PDB则是oracle12引入的插接式数据库,可创建多个挂载在CDB下,这就意味着你无法在CDB中创建普通用户,所创建的用户前必须加上“C##”来显示这是CDB级的用户才能成功创建,
例:create user C##joker identified by "joker"; ----“C##joker”为用户名,“joker”为密码
所以对于用惯了oracle11的同志来说,要创建普通用户需要在PDB环境中这么添加。
在安装好oracle12后,
首先以 SYS as SYSDBA@ORCL登录,相当于进入CDB;
然后,创建PDB挂载在CDB下:
在windows中,直接进入“Database Configuration Assistant”添加PDB;
在Linux中创建PDB,参考如下:
http://jingyan.baidu.com/article/f71d6037ac90101ab641d1d1.html
可使用如下sql查询你所创建的PDB:
select pdb_id,pdb_name,dbid,status,creation_scn from dba_pdbs;----查询pdb有哪些
之后,在CDB环境中进入PDB,sql如下:
alter session set container=JOKERPDB;---开启PDB数据库连接
alter pluggable database JOKERPDB open;----打开PDB数据库
之后,手动配置PDB的tnsnames.ora
JOKERPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = JOKERPDB)
)
)
之后,进入tns配好的PDB数据库,并在PDB下创建PDB用户,sql如下:
create user JOKER identified by "joker";
grant DBA to JOKER;---给用户DBA权限;友情提示:权限大小酌情
之后,给用户创建表空间,sql如下:
create tablespace JOKERSPACE
logging
datafile 'D:/oracle12/oradata/joker/datafile/JOKER.dbf'
size 524288000
autoextend on
next 104857600 maxsize 32767M
extent management local;
alter user JOKER default tablespace JOKERSPACE;---用户绑定表空间
alter user JOKER quota unlimited on JOKERSPACE;---限制表空间,unlimited表示不限制
最后附上导入DMP数据:
windows在cmd中执行,linux用"su oracle"执行
imp username/password@pdb file=D:/joker.dmp fromuser=JOKER touser=JOKER log=imp.log buffer=100000000
username/password@pdb----依次是PDB用户名,密码,数据库名
log----------------------生成导入日志,地址自己定义
buffer-------------------缓冲区,防止数据过大
Oracle12C 连接数据库 "jdbc:oracle:thin:@localhost:1521/JOKERPDB";(端口号跟斜线,不再是冒号)