新闻详情

新闻详情

首页 / 资讯中心 / 详情

Oracle从入门到精通:106页实操笔记,涵盖SQL、表空间与实例管理

发布时间:2026/10/2 6:57:12来源:尧图网络
Oracle从入门到精通:106页实操笔记,涵盖SQL、表空间与实例管理
简介这份《Oracle从入门到精通》PDF面向数据库初学者与希望系统梳理Oracle知识体系的开发者帮助读者从SQL基础概念一路进阶到数据库设计与管理。内容覆盖SQL基本概念、SELECT语句语法与条件查询、SQLPLUS与SQL的关系、单行函数、数据库设计原则与schema规划以及性能优化、备份恢复和安全管理等日常运维主题目录层次清晰便于按模块查阅。资源包共1个PDF文件大小约102KB轻量便携适合作为随查随用的入门手册或复习提纲。目前已有299人学习下载说明其在入门阶段具有一定参考价值。读者可借此建立从查询语句到库表设计、再到运维管理的完整认知框架配合示例理解NULL值、别名、连接操作符、DISTINCT等细节为后续深入Oracle实践打下基础。1. 从一份 106 页的 Oracle 笔记说起它到底能帮你解决什么很多人第一次接触 Oracle 是在生产环境里被 DBA 甩过来一句“去把这个表空间查一下”然后对着 SQLPLUS 黑窗口发懵。这份《Oracle 从入门到精通》PDF 就是冲着这种场景来的——它不是官方文档的翻译而是一份 106 页的实操笔记从 SQL 基础一路铺到实例管理、表空间维护、重做日志和数据库创建。内容覆盖两大块前半部分讲 SQL 和 SQLPLUS包括 SELECT 语法、单行函数、嵌套函数、子查询、替换变量、DML 和事务后半部分讲 Management包括物理结构、实例与进程、启动关闭阶段、数据字典、表空间管理。适合谁刚入行的运维、需要自己写查询的后端、准备 OCP 但被官方教材厚度劝退的人。它不教你调优到极致但能让你在遇到ORA-报错时知道该翻哪一页。2. SQL 与 SQLPLUS从 SELECT 到脚本化的最小闭环2.1 为什么先啃 SQLPLUS 而不是图形工具新手容易犯的错是直接上 Navicat 或 SQL Developer点几下就把数据查出来了但一旦遇到“服务器上没有图形界面”或者“需要把结果 spool 到文件”就卡住。SQLPLUS 是 Oracle 自带的命令行工具任何安装了 Oracle 客户端的机器上都有它和 SQL 的关系是SQLPLUS 是容器SQL 是内容。SQLPLUS 除了执行标准 SQL还提供格式化输出、执行脚本、设置环境变量这些 SQL 本身做不到的事。这份笔记里专门有一节讲 SQLPLUS 命令的功能和查询方式我建议你先把这几个命令敲熟sqlplus / as sysdba -- 本地操作系统认证登录 sqlplus user/passorcl -- 网络服务名登录 sqlplus -S user/pass -- 静默模式不显示版本和提示登录之后先别急着写 SELECT把环境设置好能省很多事SET LINESIZE 200; -- 一行显示 200 个字符防止折行 SET PAGESIZE 100; -- 每页 100 行0 表示不分页 SET LONG 10000; -- 显示 LONG 类型字段的长度 SET TIMING ON; -- 显示每条语句执行时间 SET AUTOTRACE ON; -- 显示执行计划需要 PLAN_TABLE逻辑说明LINESIZE和PAGESIZE是 SQLPLUS 最常改的两个参数前者控制横向宽度后者控制纵向分页。TIMING和AUTOTRACE是排查慢 SQL 的起点但AUTOTRACE需要先建PLAN_TABLE笔记里没展开常见做法是跑?/rdbms/admin/utlxplan.sql。参数怎么改如果查询结果里有 CLOB 字段显示不全把LONG调大如果输出要导入 Excel用SET MARKUP CSV ON比手动拼逗号靠谱。2.2 SELECT 语句的四个隐藏细节笔记里把 SELECT 语法拆得很细但有几个点新手容易滑过去。第一NULL不是 0 也不是空字符串任何算术运算碰到NULL结果都是NULL所以SELECT sal comm FROM emp里如果comm是空整行结果就是空。要用NVL(comm, 0)兜底。第二连接操作符||可以把多个字段拼成一个但注意数字和日期要显式转换SELECT ename || : || sal FROM emp在sal是数字时 Oracle 会自动转但日期不行得用TO_CHAR。第三DISTINCT作用于整行不是单个字段SELECT DISTINCT deptno, job FROM emp是去重组合不是只去重deptno。第四spool是 SQLPLUS 命令不是 SQL写脚本时不要加分号SPOOL /tmp/emp_report.csv SELECT ename || , || sal FROM emp WHERE deptno 10; SPOOL OFF逻辑说明SPOOL把后续所有输出写到文件包括你敲错的命令和报错信息所以正式跑之前先用SET TERMOUT OFF关掉屏幕回显避免文件里混入无关内容。参数上路径要写绝对路径相对路径会落在 SQLPLUS 启动目录容易找不到。2.3 单行函数与嵌套函数别死记按数据类型分笔记里把函数分成 character、number、date 三类这个分类比按字母排序有用。字符函数里SUBSTR、INSTR、TRIM、UPPER是高频数字函数里ROUND、TRUNC、MOD是高频日期函数里SYSDATE、ADD_MONTHS、MONTHS_BETWEEN、TRUNC(sysdate)是高频。嵌套函数的关键是从内往外读比如SELECT UPPER(SUBSTR(ename, 1, 3)) FROM emp先截取前三个字符再转大写。通用函数NVL、NVL2、NULLIF、COALESCE里COALESCE最灵活可以接多个参数返回第一个非空值。条件表达式CASE和DECODE的区别是CASE是 SQL 标准DECODE是 Oracle 特有新代码建议用CASE。3. 表、视图、索引与权限把对象管理串成一条线3.1 创建表时最容易忽略的约束和注释笔记里讲 CTAS子查询建表和COMMENT加注释这两点在实际工作中比CREATE TABLE裸写更常用。CTAS 适合快速复制结构加数据CREATE TABLE emp_backup AS SELECT * FROM emp WHERE deptno 10;逻辑说明CTAS 不会复制原表的约束、索引、触发器只复制列定义和数据。如果只要结构不要数据加WHERE 12。参数上AS后面可以是任意 SELECT包括带函数的但列名会继承 SELECT 的别名。加注释是给后来人看的COMMENT ON TABLE emp IS 员工主表; COMMENT ON COLUMN emp.sal IS 月薪单位元;约束条件里NOT NULL和CHECK是列级PRIMARY KEY、FOREIGN KEY、UNIQUE可以列级也可以表级。表级约束的好处是可以给约束起名方便后续ALTER TABLE ... DROP CONSTRAINT时不用去查系统视图。3.2 视图和序列简化查询与主键生成视图不存数据只存定义适合把复杂查询封装成一张“虚表”。笔记里提到视图但没强调WITH CHECK OPTION和WITH READ ONLY。前者限制通过视图的 DML 必须满足视图定义条件后者直接禁止 DML。序列是 Oracle 生成自增主键的常用方式CREATE SEQUENCE seq_emp_id START WITH 1000 INCREMENT BY 1 NOCACHE NOCYCLE; INSERT INTO emp(empno, ename) VALUES (seq_emp_id.NEXTVAL, TEST);逻辑说明NOCACHE是为了防止实例崩溃后序列跳号但会牺牲性能如果对连续性要求不高用CACHE 20能减少NEXTVAL的磁盘争用。NOCYCLE表示到达最大值后不循环避免主键重复。CURRVAL返回当前会话最后一次NEXTVAL的值新会话里直接调CURRVAL会报错。3.3 权限与角色别直接给用户赋系统权限笔记里讲控制用户访问和角色这块是安全红线。常见做法是先建角色给角色赋系统权限和对象权限再把角色给用户。CREATE ROLE app_read; GRANT CREATE SESSION TO app_read; GRANT SELECT ON hr.emp TO app_read; GRANT app_read TO user01;逻辑说明CREATE SESSION是登录权限没有它用户连不上数据库。对象权限要带 schema 名除非在同一个 schema 下。角色可以嵌套但嵌套层数不要超过三层否则排查权限来源会很痛苦。注意GRANT后面如果跟WITH ADMIN OPTION被授权者可以把权限再授给别人生产环境慎用。4. 实例、表空间与重做日志管理篇的避坑与排查4.1 启动三个阶段NOMOUNT、MOUNT、OPEN 到底在干什么笔记里把启动过程拆成 NOMOUNT、MOUNT、OPEN 三个阶段这个顺序不能跳。NOMOUNT 阶段读参数文件启动实例分配 SGA启动后台进程但还没碰数据库文件。MOUNT 阶段根据参数文件里的CONTROL_FILES找到控制文件并打开此时可以查V$DATABASE但数据文件还没打开。OPEN 阶段根据控制文件里的信息打开数据文件和重做日志此时数据库才对外服务。切换命令STARTUP NOMOUNT; ALTER DATABASE MOUNT; ALTER DATABASE OPEN;逻辑说明不能从 NOMOUNT 直接跳到 OPEN必须经过 MOUNT。关闭过程是逆向ALTER DATABASE CLOSE关闭数据文件和重做日志ALTER DATABASE DISMOUNT关闭控制文件SHUTDOWN关闭实例。常见做法是日常用SHUTDOWN IMMEDIATE它会回滚未提交事务并断开所有会话比ABORT安全。4.2 表空间空间管理本地管理和字典管理的区别笔记里讲表空间的空间管理本地管理LOCAL用位图管理区字典管理DICTIONARY用数据字典管理区。现在新建表空间默认都是本地管理字典管理只在老版本升级上来的库里见到。查看表空间信息SELECT tablespace_name, extent_management, allocation_type FROM dba_tablespaces; SELECT file_name, bytes/1024/1024 AS mb, autoextensible FROM dba_data_files WHERE tablespace_name USERS;逻辑说明EXTENT_MANAGEMENT显示LOCAL或DICTIONARYALLOCATION_TYPE显示SYSTEM、UNIFORM或USER。AUTOEXTENSIBLE是YES表示数据文件可以自动扩展但要注意MAXBYTES限制否则可能把磁盘撑满。表空间状态有ONLINE、OFFLINE、READ ONLY把表空间置为READ ONLY可以在备份时减少锁竞争。4.3 重做日志文件维护别等归档满了才动手笔记里讲维护重做日志文件这块是生产事故高发区。重做日志是循环写的一组写完切下一组如果开了归档模式ARCn 进程要把写满的日志复制到归档目录才能被覆盖。如果归档目录满了或者 ARCn 卡住数据库会挂起。查看日志组和成员SELECT group#, sequence#, bytes/1024/1024 AS mb, status FROM v$log; SELECT group#, member FROM v$logfile;逻辑说明STATUS有CURRENT、ACTIVE、INACTIVE、UNUSED。CURRENT是正在写的ACTIVE是写完但还没归档完的INACTIVE是可以覆盖的。如果发现ACTIVE长时间不变去查V$ARCHIVE_DEST_STATUS和V$ARCHIVED_LOG。增加日志组用ALTER DATABASE ADD LOGFILE GROUP 4 (/u01/redo04.log) SIZE 200M;删除用ALTER DATABASE DROP LOGFILE GROUP 4;但只能删INACTIVE的。4.4 常见问题排查从 ORA- 报错到数据字典现象一ORA-00257: archiver error. Connect internal only, until freed.原因归档目录空间满ARCn 无法写入。 解决清理归档目录旧文件或者扩大DB_RECOVERY_FILE_DEST_SIZE然后ALTER SYSTEM ARCHIVE LOG CURRENT;触发一次归档。现象二ORA-01555: snapshot too old原因回滚段不够大或者查询跑太久构造读一致性快照时需要的 undo 数据被覆盖。 解决加大 undo 表空间或者优化查询减少执行时间。笔记里没展开 undo但这是绕不开的。现象三ORA-01652: unable to extend temp segment原因临时表空间不足常见于大排序或哈希连接。 解决查V$TEMPFILE和V$SORT_USAGE加大临时表空间或优化 SQL。现象四ORA-28000: the account is locked原因用户连续登录失败超过FAILED_LOGIN_ATTEMPTS限制。 解决ALTER USER user01 ACCOUNT UNLOCK;然后查DBA_PROFILES确认锁定策略。现象五ORA-12541: TNS:no listener原因监听器没启动或者服务名配错。 解决lsnrctl status看监听状态tnsping orcl测服务名解析。笔记里没讲 Net 配置但这是连接问题的第一站。5. 数据字典与动态性能视图把数据库变成透明盒子5.1 三类数据字典视图的区别笔记里把数据字典分成USER_、ALL_、DBA_三类这个分类决定了你能看到什么。USER_开头的是当前用户拥有的对象ALL_是当前用户可以访问的对象包括别人授权的DBA_是所有对象需要SELECT ANY DICTIONARY权限。查表信息SELECT table_name, num_rows, last_analyzed FROM user_tables WHERE table_name LIKE EMP%; SELECT owner, table_name FROM all_tables WHERE table_name EMP; SELECT owner, table_name, tablespace_name FROM dba_tables WHERE owner HR;逻辑说明NUM_ROWS和LAST_ANALYZED依赖统计信息收集如果没跑过DBMS_STATS.GATHER_TABLE_STATS这两个字段可能是空的。ALL_TABLES里OWNER是对象所有者不是当前用户。动态性能视图以V$开头底层是GV$RAC 环境下用GV$看所有实例。5.2 用动态性能视图定位会话和 SQL笔记里提到动态性能表但没有给具体查询。我一般用这几个-- 查当前活跃会话 SELECT sid, serial#, username, status, sql_id FROM v$session WHERE status ACTIVE AND username IS NOT NULL; -- 查 SQL 文本 SELECT sql_id, sql_text FROM v$sql WHERE sql_id sql_id; -- 查会话等待事件 SELECT sid, event, wait_class, seconds_in_wait FROM v$session_wait WHERE sid sid;逻辑说明V$SESSION的SQL_ID关联V$SQL的SQL_IDV$SESSION_WAIT的EVENT告诉你会话在等什么。如果WAIT_CLASS是User I/O去看V$FILESTAT如果是Concurrency去看锁。参数上sql_id是 SQLPLUS 替换变量执行时会提示输入。5.3 表空间与数据文件的空间查询笔记里讲查看表空间信息我补一个常用的空间使用率查询SELECT d.tablespace_name, ROUND(d.total_mb, 2) AS total_mb, ROUND(d.total_mb - NVL(f.free_mb, 0), 2) AS used_mb, ROUND((d.total_mb - NVL(f.free_mb, 0)) / d.total_mb * 100, 2) AS pct_used FROM (SELECT tablespace_name, SUM(bytes)/1024/1024 AS total_mb FROM dba_data_files GROUP BY tablespace_name) d LEFT JOIN (SELECT tablespace_name, SUM(bytes)/1024/1024 AS free_mb FROM dba_free_space GROUP BY tablespace_name) f ON d.tablespace_name f.tablespace_name ORDER BY pct_used DESC;逻辑说明DBA_DATA_FILES给总大小DBA_FREE_SPACE给空闲大小两者相减是已用。LEFT JOIN是因为有些表空间可能没有空闲区比如全是自动扩展的用NVL兜底。PCT_USED超过 85% 就该考虑加数据文件或开自动扩展。5.4 一个容易翻车的点TRUNC(SYSDATE)和日期格式笔记里提到TRUNC(sysdate)这个函数在按天统计时非常常用但新手容易在WHERE里写错-- 错误这样查不到今天的数据因为 SYSDATE 带时分秒 SELECT COUNT(*) FROM orders WHERE order_date SYSDATE; -- 正确用 TRUNC 截断到天 SELECT COUNT(*) FROM orders WHERE TRUNC(order_date) TRUNC(SYSDATE);逻辑说明TRUNC(SYSDATE)返回当天零点TRUNC(order_date)把订单日期截断到天两者相等才是同一天。但注意在ORDER_DATE上加TRUNC会导致索引失效如果数据量大改用ORDER_DATE TRUNC(SYSDATE) AND ORDER_DATE TRUNC(SYSDATE) 1。这是慢 SQL 优化的常见手法笔记里没展开但实际工作中一定会遇到。6. 手动建库与脚本化运维把重复劳动压成一条命令手动创建数据库是这份笔记里最硬核的部分也是最能拉开新手和熟手差距的地方。笔记里列了创建前的准备、创建方法、UNIX 环境变量、手动创建步骤我把它压成一条可复现的路径。首先创建目录结构mkdir -p /u01/app/oracle/oradata/orcl mkdir -p /u01/app/oracle/admin/orcl/adump mkdir -p /u01/app/oracle/admin/orcl/bdump mkdir -p /u01/app/oracle/admin/orcl/cdump mkdir -p /u01/app/oracle/admin/orcl/udump mkdir -p /u01/app/oracle/fast_recovery_area然后写参数文件init_orcl.oraDB_NAMEorcl DB_BLOCK_SIZE8192 CONTROL_FILES(/u01/app/oracle/oradata/orcl/control01.ctl, /u01/app/oracle/oradata/orcl/control02.ctl) DB_RECOVERY_FILE_DEST/u01/app/oracle/fast_recovery_area DB_RECOVERY_FILE_DEST_SIZE4G SGA_TARGET1G PGA_AGGREGATE_TARGET512M UNDO_TABLESPACEundotbs1逻辑说明DB_BLOCK_SIZE建库后不能改OLTP 系统一般 8K数据仓库可以 16K 或 32K。CONTROL_FILES至少两个放在不同物理磁盘上。SGA_TARGET和PGA_AGGREGATE_TARGET是自动内存管理的两个参数如果设了MEMORY_TARGET就不用单独设这两个。DB_RECOVERY_FILE_DEST_SIZE是快速恢复区上限归档日志默认放这里。启动到 NOMOUNT 并建库STARTUP NOMOUNT PFILE/tmp/init_orcl.ora; CREATE DATABASE orcl USER SYS IDENTIFIED BY change_on_install USER SYSTEM IDENTIFIED BY manager LOGFILE GROUP 1 (/u01/app/oracle/oradata/orcl/redo01.log) SIZE 100M, GROUP 2 (/u01/app/oracle/oradata/orcl/redo02.log) SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE /u01/app/oracle/oradata/orcl/system01.dbf SIZE 500M SYSAUX DATAFILE /u01/app/oracle/oradata/orcl/sysaux01.dbf SIZE 500M DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE /u01/app/oracle/oradata/orcl/temp01.dbf SIZE 100M UNDO TABLESPACE undotbs1 DATAFILE /u01/app/oracle/oradata/orcl/undotbs01.dbf SIZE 200M;逻辑说明CHARACTER SET AL32UTF8是 Unicode 字符集建库后不能改选错只能重建。EXTENT MANAGEMENT LOCAL是本地管理表空间现在默认就是。SYSAUX是 10g 之后必须的辅助表空间。建完库后跑?/rdbms/admin/catalog.sql和?/rdbms/admin/catproc.sql创建数据字典和存储过程再跑?/sqlplus/admin/pupbld.sql配置 SQLPLUS 环境。从那以后我每次手动建库都强制走一遍检查清单目录权限、参数文件、字符集、控制文件冗余、归档模式。有一次在测试环境建库忘了设DB_RECOVERY_FILE_DEST_SIZE归档日志把/u01撑满数据库直接挂起血泪教训。这份笔记的价值在于它把 SQL 和 Management 放在一起让你在写查询的时候知道数据存在哪个表空间在扩表空间的时候知道会影响哪些会话。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Java开发必备的10个高效工具,你用几个? 2026/10/2 8:31:39

Java开发必备的10个高效工具,你用几个?

IntelliJ IDEA:你的第二大脑别再用Eclipse折磨自己了。IDEA的智能补全、重构、调试、版本控制集成,每一项都在替你省时间。快捷键用熟了,鼠标都是多余的。CtrlAltL格式化,ShiftF6重命名,AltEnter快速修复。装个Transla…

阅读更多 →
从《事件发生与智能》的框架看中国古代命理学 2026/10/2 8:31:38

从《事件发生与智能》的框架看中国古代命理学

如果把前文的统一链条拿来观察中国古代命理学,可以得到一个比较清晰的定位: 量子场→量子态→环境纠缠→退相干→经典概率→条件化→统计分布→信息处理→智能/文化涌现 \text{量子场} \rightarrow \text{量子态} \rightarrow \text{环境纠缠} \rightarr…

阅读更多 →
Skills Manager:统一管理54+ AI编程工具的技能配置中枢 2026/10/2 8:31:37

Skills Manager:统一管理54+ AI编程工具的技能配置中枢

1. 为什么我们需要一个技能中枢过去一年我陆续在项目里接入了各种AI编程工具,从最早的代码补全插件,到后来的对话式编程助手,再到能自主执行任务的Agent框架,前前后后装了不下十几种。刚开始还挺兴奋,每个工具都有自己…

阅读更多 →
Xcelium xrun 数字验证实战:从编译选项到覆盖率与排错指南 2026/10/2 8:31:36

Xcelium xrun 数字验证实战:从编译选项到覆盖率与排错指南

简介:面向硬件验证工程师和芯片设计师,整理了一份 Cadence 数字仿真工具 Xcelium(xrun)的完整操作指南。文档从 Linux 环境下的安装检查、单步仿真、多阶段分离仿真和常用选项入手,随后深入讲解 xcelium.d 目录中 libr…

阅读更多 →
彻底清除Synares木马:伪装Synaptics.exe病毒手动清理实战 2026/10/2 8:31:35

彻底清除Synares木马:伪装Synaptics.exe病毒手动清理实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python面试必问:GIL到底是什么?一文讲透 2026/10/2 8:31:28

Python面试必问:GIL到底是什么?一文讲透

面试官问:“Python的GIL是什么?”你背出“全局解释器锁,导致多线程不能并行”。他点点头,又问:“那为什么多线程爬虫还是比单线程快?”你开始冒汗。GIL是Python面试的照妖镜,背概念的人露馅&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉