Oracle 常用运维SQL整理,改字段类型改表名创建基础用户授权等

1. 批量生成【表名转大写】SQL(仅生成,不执行)

sql 复制代码
-- 批量修改表名为大写(生成SQL,手动执行更安全)
SELECT 'ALTER TABLE "' || TABLE_NAME || '" RENAME TO ' || UPPER(TABLE_NAME) || ';' AS 修改SQL
FROM USER_TABLES
WHERE TABLE_NAME != UPPER(TABLE_NAME);

2. 批量执行【所有表字段名转大写】(自动执行)

sql 复制代码
-- 批量修改所有表的字段名为大写(直接运行即可)
BEGIN
    -- 遍历当前用户所有表
    FOR tab IN (SELECT table_name FROM user_tables) LOOP
        -- 遍历表中小写/混合大小写字段
        FOR col IN (SELECT column_name 
                    FROM user_tab_columns 
                    WHERE table_name = tab.table_name 
                      AND column_name != UPPER(column_name)
                    ORDER BY column_id)
        LOOP
            -- 动态修改字段名为大写
            EXECUTE IMMEDIATE 
                'ALTER TABLE ' || tab.table_name || 
                ' RENAME COLUMN "' || col.column_name || '" TO ' || UPPER(col.column_name);
        END LOOP;
    END LOOP;
END;
/

3. 刷新Oracle缓存

sql 复制代码
-- 刷新共享池、数据缓冲区(解决缓存导致的查询异常)
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;

4. 查看当前连接的PDB/CDB名称

sql 复制代码
-- 查看当前容器名(PDB/CDB)
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') AS 当前容器名 FROM DUAL;

5. 创建表空间(规范完整版)

sql 复制代码
-- 创建自定义表空间(修改 表空间名、文件路径 即可使用)
CREATE TABLESPACE 表空间名
DATAFILE 'D:\oracle\oradata\ORCL\orclpdb\表空间名.dbf'
SIZE 1G 
AUTOEXTEND ON NEXT 100M 
MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL 
SEGMENT SPACE MANAGEMENT AUTO;

6. 基础权限授权

sql 复制代码
-- 给用户授予基础权限(连接、建表、序列、视图、无限表空间)
GRANT CREATE SESSION TO 用户名;
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO 用户名;
GRANT UNLIMITED TABLESPACE TO 用户名;

-- 如需存储过程、触发器,追加:
-- GRANT CREATE PROCEDURE, CREATE TRIGGER TO 用户名;

7. 【指定单张表】字段名转大写

sql 复制代码
-- 仅修改指定表的字段为大写(替换 表名 为大写)
BEGIN
    FOR rec IN (SELECT column_name 
                FROM user_tab_columns 
                WHERE table_name = '表名'  -- 表名必须大写
                  AND column_name != UPPER(column_name)
                ORDER BY column_id)
    LOOP
        EXECUTE IMMEDIATE 'ALTER TABLE 表名 RENAME COLUMN "' || rec.column_name || '" TO ' || UPPER(rec.column_name);
    END LOOP;
END;
/

8. 安全修改字段类型(字符串转数字,无数据丢失)

sql 复制代码
-- 字段类型安全改造: VARCHAR2 → NUMBER(18,4)
-- 1. 新增目标类型字段
ALTER TABLE 表名 ADD 字段名_new NUMBER(18,4);

-- 2. 数据迁移(空值自动转0)
UPDATE 表名 SET 字段名_new = NVL(TO_NUMBER(TRIM(原字段名)), 0);
COMMIT;

-- 3. 旧字段备份
ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 原字段名_old;

-- 4. 新字段替换为正式字段
ALTER TABLE 表名 RENAME COLUMN 字段名_new TO 原字段名;

-- 5. 刷新表统计信息
ANALYZE TABLE 表名 COMPUTE STATISTICS;

9. 解锁用户账号

sql 复制代码
-- 解锁账号(通用语法)
ALTER USER 用户名 ACCOUNT UNLOCK;

-- 示例:解锁system账号
ALTER USER system ACCOUNT UNLOCK;

10. 完整创建【表空间 + 用户 + 授权】

sql 复制代码
-- 1. 创建表空间
CREATE TABLESPACE 表空间名
DATAFILE 'D:\ORACLE\ORADATA\ORCL\ORCLPDB\表空间名.dbf'
SIZE 500M
AUTOEXTEND ON NEXT 100M
MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

-- 2. 创建用户(指定默认表空间)
CREATE USER 用户名 IDENTIFIED BY "密码"
DEFAULT TABLESPACE 表空间名
TEMPORARY TABLESPACE TEMP;

-- 3. 基础授权
GRANT CREATE SESSION TO 用户名;
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO 用户名;
GRANT UNLIMITED TABLESPACE TO 用户名;

11. 批量执行【指定多张表】表名转大写

sql 复制代码
-- 批量修改指定表名为大写(IN中填写需要修改的表名)
BEGIN
    FOR t IN (
        SELECT TABLE_NAME 
        FROM USER_TABLES 
        WHERE TABLE_NAME IN ('表名1','表名2','表名3') -- 填写目标表名
    ) LOOP
        EXECUTE IMMEDIATE 'ALTER TABLE "'||t.TABLE_NAME||'" RENAME TO '||UPPER(t.TABLE_NAME);
    END LOOP;
END;
/

重要使用说明

  1. 表名/字段名大小写 :Oracle 元数据默认全大写,小写表/字段必须加双引号,建议统一转大写避免报错。
  2. 执行注意 :修改表名、字段、类型属于DDL操作,会自动提交事务,生产环境建议先备份。
  3. PDB环境 :12c+版本必须切换到PDB内执行表空间、用户、表相关操作。
  4. 结尾 / :PL/SQL块(BEGIN-END)结尾必须加 / 才能执行。

总结

这份整理好的SQL覆盖了表/字段大小写转换、表空间创建、用户授权、字段类型修改、账号解锁 等高频运维场景,直接替换中文占位符即可使用,语法规范无错误,适配Oracle 11g/12c/19c主流版本。

相关推荐
xxjj998a2 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
流觞 无依2 小时前
Linux下SQLite数据库空间管理 查看表占用空间+清理优化
java·jvm·oracle
光泽雨2 小时前
查询语句select
数据库·sql·mysql
哆啦code梦2 小时前
MySQL EXPLAIN 详解:读懂执行计划,优化查询性能
数据库·mysql·explain
普通网友2 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
softshow10262 小时前
在 Ubuntu 下进行磁盘分卷
linux·数据库·ubuntu
ofoxcoding2 小时前
Redis 缓存穿透怎么解决?3 种方案实测 + 踩坑全记录(2026)
数据库·redis·缓存·ai
布谷歌2 小时前
高效查询商户日终余额:一个SQL的优化实践
数据库·sql
添柴少年yyds2 小时前
信贷表关联字段
数据库·sql·mysql