oracle 12+ 变化
oracle从12c开始增加了增加了CDB和PDB的概念,数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系
1. 准备
- 以dba角色登陆
sqlplus sys as sysdba;
或者
sqlplus / sysdba;
或者
sqlplus / as sysdba;
windows登录
Linux登录
2.查看容器
show con_name;
windows和linux一致
3. 查看PDB
select name,open_mode from v$pdbs;
切记不可少了结尾的分号,会出现第二行一个 2
- 切换链接
Linux
alter session set container=ORACLEPDB;
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> select name,open_mode from v$pdbs;
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY
ORACLEPDB
READ WRITE
SQL> alter session set container=ORACLEPDB;
Session altered.
windows
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
SQL> alter session set container=ORCLPDB;
会话已更改。
Linux注意:
数据库中回退键会转成 H^
修改方案
vi ~/.bashrc
stty erase ^H -------添加该条目
source ~/.bashrc
1. 创建表空间
Windows
-- 先创建临时表
create temporary tablespace TESTDEVTEM tempfile 'F:\Soft\Oracle\oradata\ORCL\orclpdb\TESTDEVTEM.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;
-- 再创建表空间
CREATE TABLESPACE TESTDEV DATAFILE 'F:\Soft\Oracle\oradata\ORCL\orclpdb\TESTDEV.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE unlimited;
SQL> create temporary tablespace IBMSDEVTEM tempfile 'F:\Soft\Oracle\oradata\ORCL\orclpdb\IBMSDEVTEM.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;
表空间已创建。
SQL> CREATE TABLESPACE IBMSDEV DATAFILE 'F:\Soft\Oracle\oradata\ORCL\orclpdb\IBMSDEV.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE unlimited;
表空间已创建。
Linux
-- 先创建临时表
create temporary tablespace TESTDEVTEM tempfile '/opt/oracle/oradata/ORACLEDB/ORACLEPDB/TESTDEVTEM.dbf'
size 50m autoextend on next 50m maxsize 20480m extent management local;
-- 再创建表空间
CREATE TABLESPACE TESTDEV DATAFILE '/opt/oracle/oradata/ORACLEDB/TESTDEV.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 32M MAXSIZE unlimited;
- TESTDEV 表明
- TESTDEV.dbf文件,可不与表名相同
- /opt/oracle/oradata/TESTDEV.dbf 需要实际目录
- SIZE 100M 初始化大小
- AUTOEXTEND ON 开启自动扩容
- NEXT 32M 每次大小
- MAXSIZE unlimited; 最大空间,可以不设置。
3. 创建用户
--创建用户
create user TESTDEV identified by Orcl#2022 default tablespace TESTDEV temporary tablespace TESTDEVTEM;
--赋权
grant connect,resource,dba to TESTDEV;
grant create session to TESTDEV;
SQL> create user IBMSDEV identified by Syh#2022 default tablespace IBMSDEV temporary tablespace IBMSDEVTEM;
用户已创建。
SQL> grant connect,resource,dba to IBMSDEV;
授权成功。
SQL>
SQL> grant create session to IBMSDEV;
授权成功。
- 创建用户 TESTDEV
- 密码设置为 Orcl#2022
- 默认表空间 TESTDEV
- 默认的暂存空间 TESTDEVTEM### 2. 操作用户 (无需操作)
-- 创建用户
--create user 用户名 identified by 口令[即密码];
-- 如创建一个用户名和口令均为 TESTDEV 的用户
create user TESTDEV identified by TESTDEV;
-- 更改用户
--alter user 用户名 identified by 口令[新口令];
-- 如修改用户口令为 123456
alter user TESTDEV identified by 123456;
-- 删除用户
--drop user 用户名;
-- 如删除 TESTDEV
drop user TESTDEV;
-- 查看用户
select USERNAME, USER_ID, ACCOUNT_STATUS, DEFAULT_TABLESPACE from dba_users WHERE USERNAME = 'TESTDEV';
-- 手工设置过期
alter user TESTDEV password expire;
-- 解锁用户
alter user TESTDEV account unlock;
-- 锁定用户就是修改密码
alter user TESTDEV identified by 123456;
4. 添加权限
创建的用户没有任何权限, 连登陆数据库的权限都没有.Oracle 为了兼容以前的版本, 提供了三种标准角色: connect、resource 和 dba
- connect (连接角色): 这种角色下只可以登录 Oracle, 不可用创建实体, 也不可用创建数据库结构, 即只能对其他人创建的表中的数据进行操作.
- resource(资源角色): 该角色可以创建实体, 但是不可以创建数据库结构. 可以创建表、序列 (sequence)、运算符 (operator)、过程 (procedure)、触发器 (trigger)、索引 (index)、类型 (type) 和簇 (cluster).
- dba (数据库管理员权限): 该角色拥有系统最高权限, 只有 DBA 才可以创建数据库结构. 包括无限制的空间限额和给其他用户授予各种权限的能力, system 由 dba 用户拥有.
- 对于普通用户来说, 授予 connect 和 resource 权限即可, 只对 dba 授予拥有 connect、resource 和 dba 权限.
-- 授权
grant connect,resource,dba to TESTDEV;
# 创建链接
grant create session to TESTDEV;
-- 撤销授权
revoke connect, resource from 用户名;
-- 如撤销 TESTDEV 的权限
revoke connect, resource from TESTDEV;
4. 删除表
1、删除无任何数据对象的表空间:
用drop tablespace xxx ,删除需要删除的表空间。
2、删除有任何数据对象的表空间
使用drop tablespace xxx including contents and datafiles;