常用SQL
理解概念关系
SID (实例) ← 容器
├── 用户1 (app_user)
├── 用户2 (test_user)
└── 用户3 (root)
SID是实例名,用户属于特定实例。
在现有SID(ORCLCDB)下创建新用户
-- 连接到ORCLCDB实例
sqlplus sys/your_password@192.168.222.15:1524/ORCLCDB as sysdba
-- 创建新用户
CREATE USER c##test
IDENTIFIED BY test123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
-- 授予权限
GRANT CONNECT, RESOURCE, CREATE SESSION TO c##test;
GRANT CREATE VIEW TO c##test;
GRANT CREATE SEQUENCE TO c##test;
-- 提交
COMMIT;
在Oracle 12c+多租户环境(CDB)中,普通用户必须以 C## 开头,或者需要连接到PDB(可插拔数据库)。
生产环境都是PDB用户,这里着重写PDB的相关sql
用户SQL
-- 查看所有 PDB
SELECT name, open_mode FROM v$pdbs;
-- 切换到指定的 PDB(例如:PDB1)
ALTER SESSION SET CONTAINER = ORCLPDB;
-- 查看所有用户
SELECT username, account_status, default_tablespace, temporary_tablespace
FROM dba_users
ORDER BY username;
-- 删除用户(保留对象)
DROP USER 用户名;
-- 删除用户及其所有对象
DROP USER TEST CASCADE;
创建用户
-- 创建开发者用户
CREATE USER TEST
IDENTIFIED BY "123456"
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT;
-- 授予完整权限
GRANT CONNECT TO TEST;
GRANT RESOURCE TO TEST;
GRANT CREATE VIEW TO TEST;
GRANT CREATE SEQUENCE TO TEST;
-- DML 权限(谨慎使用)
GRANT SELECT ANY TABLE TO TEST;
GRANT INSERT ANY TABLE TO TEST;
GRANT UPDATE ANY TABLE TO TEST;
GRANT DELETE ANY TABLE TO TEST;
-- 解锁用户
ALTER USER TEST ACCOUNT UNLOCK;
赋权SQL
赋予用户增删改查EMSS_CMC下所有表的权限:
SELECT 'GRANT SELECT, INSERT, UPDATE ON ' || table_name || ' TO 目标用户;' AS sql_statement
FROM all_tables
WHERE owner = 'EMSS_CMC'
ORDER BY table_name;