1、创建表空间(数据 + 索引分离)
表空间是 Oracle 存储数据的逻辑单元,将「数据(表)」和「索引」分开存储(ORACLEHZS_TAB 存表,ORACLEHZS_INX 存索引),可提升 IO 性能(避免数据和索引争用磁盘 IO)
DATAFILE:指定表空间对应的物理数据文件路径,需确保路径存在且 Oracle 用户有读写权限(如 /data/app/oracle/oradata/oraclehzs/ 需提前创建,权限为 oracle:oinstall)
SIZE:初始大小,建议根据业务预估设置(5GB/2GB 是合理的初始值)
-- 优化版(自动扩展,最大10GB)
CREATE TABLESPACE ORACLEHZS_TAB
DATAFILE '/data/app/oracle/oradata/oraclehzs/oraclehzs_tab01.dbf'
SIZE 5120M
AUTOEXTEND ON NEXT 100M MAXSIZE 10240M; -- 满了自动加100MB,最大10GB
2、创建业务用户
-- 创建yjhzs用户,密码yjhzs,默认表空间ORACLEHZS_TAB,临时表空间TEMP
create user yjhzs
identified by yjhzs
default tablespace ORACLEHZS_TAB
temporary tablespace TEMP
profile DEFAULT;
-- 创建erpdata用户,密码erphzsdata,配置同上
create user erpdata
identified by erphzsdata
default tablespace ORACLEHZS_TAB
temporary tablespace TEMP
profile DEFAULT;
3、用户授权
connect:基础权限(登录数据库、创建会话); resource:业务核心权限(创建表、索引、触发器等); create any table:允许创建任意模式下的表(谨慎授予); dba:超级管理员权限(包含所有权限,生产环境不建议直接授予,需最小化授权)
-- 给yjhzs授权:创建任意表、DBA权限、资源权限、连接权限
grant create any table,dba,resource,connect to yjhzs;
grant create any table,dba,resource,connect to erpdata;
-- 最小化授权示例
grant connect, resource to yjhzs;
grant create index, create view, alter any table to yjhzs; -- 按需添加
-- 若需指定索引存储到ORACLEHZS_INX表空间,需额外授权
grant unlimited tablespace to yjhzs; -- 允许使用表空间无限制(或指定配额)
4、删除用户(含对象)
cascade:必须加!否则若用户有对象(如表),删除会报错 ORA-01922: CASCADE must be specified to drop 'YJHZS';
-- 级联删除yjhzs用户及所有对象(表/索引/视图等)
drop user yjhzs cascade;
drop user erpdata cascade;
若删除时报错 ORA-01940: cannot drop a user that is currently connected,需先杀死用户会话:
-- 查找用户会话
select sid, serial# from v$session where username='YJHZS';
-- 杀死会话(替换sid/serial#)
alter system kill session '123,456';
5、删除表空间
-- 删除表空间,同时删除其包含的所有内容(数据文件需手动删除)
drop tablespace ORACLEHZS_TAB including contents;
若需同时删除物理数据文件,添加 and datafiles:
-- 级联删除表空间+内容+物理数据文件(谨慎执行)
drop tablespace ORACLEHZS_TAB including contents and datafiles;
6、验证配置
-- 验证用户默认表空间
select username, default_tablespace from dba_users where username in ('YJHZS','ERPDATA');
-- 验证表空间状态
select tablespace_name, status, contents from dba_tablespaces where tablespace_name in ('ORACLEHZS_TAB','ORACLEHZS_INX');
-- 验证数据文件
select file_name, bytes/1024/1024 MB, autoextensible from dba_data_files where tablespace_name='ORACLEHZS_TAB';
Categories:
数据库运维