1. 神通数据库命令行入门指南第一次接触神通数据库命令行工具时我完全被那一堆参数搞懵了。直到真正上手操作才发现原来命令行才是最高效的管理方式。相比图形界面命令行操作不仅响应更快还能通过脚本实现自动化运维特别适合处理重复性工作。最基本的连接命令长这样isql -d osrdb -P 2003 -U sysdba/szoscar55这个命令拆解开来很简单-d指定数据库名-P是端口号-U后面跟着用户名和密码。我建议新手先在测试环境多练习几次因为输错密码会导致连接失败但系统不会明确提示是密码错误。连接成功后你会看到一个简洁的命令行提示符。这里有个实用技巧按Tab键可以自动补全命令比如输入sel按Tab就会自动补全为select。对于记不住长命令的新手特别友好。2. 数据库的创建与管理实战2.1 创建新数据库创建数据库远不止一个create命令那么简单。我遇到过字符集不匹配导致中文乱码的问题所以特别建议创建时就指定编码create database osrdb encoding GBK如果是金融类系统还需要考虑日志模式CREATE DATABASE HNBILL NOARCHIVELOG LOGFILE HNBILL01.log SIZE 10G AUTOEXTEND ON NEXT 100M DATAFILE HNBILL01.dbf SIZE 100M AUTOEXTEND ON NEXT 100M2.2 日常维护命令这几个命令我每周都会用到oscar -o install -d osrdb # 安装数据库实例 oscar -o normal -d osrdb # 正常启动 oscar -o uninstall -d osrdb # 卸载实例遇到数据库卡顿时我会先用oscaragent -Q -D osrdb查看实例状态。曾经有个坑在Windows平台卸载服务时忘记加-D参数结果把整个集群的服务都停了大家工作全中断...3. 用户与权限精细化管理3.1 用户账户安全创建用户时最容易忽略的是默认表空间设置CREATE USER stl_usr WITH DEFAULT TABLESPACE stlts PASSWORD stl_usr ROLE SYSDBA;我强烈建议定期修改密码特别是sysdba账户ALTER USER SYSDBA WITH PASSWORD UNIcom00;3.2 权限控制最佳实践权限管理有个黄金法则能用role就别直接授权。这是我的标准操作流程-- 创建角色 create role ROLE_ALL_SELECT; -- 批量授权语句 select grant select on ||TABLE_SCHEM||.||table_name|| to role ROLE_ALL_SELECT; from v_sys_tables where TABLE_SCHEM not in (INFO_SCHEM,SYSDBA);4. 高级运维与性能调优4.1 空间监控SQL大全这是我珍藏的空间监控脚本每天早上的第一件事就是运行它们-- 表空间使用率 SELECT T.TSNAME AS TSNAME, SUM(D.SIZE)/1048576 AS Size(MB), SUM(D.FREESIZE)/1048576 AS Free(MB) FROM SYS_TABLESPACE T LEFT JOIN V_SYS_DATAFILE_INFO D ON T.TSID D.TABLESPACEID GROUP BY T.TSNAME;4.2 性能问题排查遇到性能瓶颈时我通常会按这个顺序排查查看当前会话select SESSION ID, APPNAME, CURRENT SQL from v_sys_sessions where LOGON USER ! INVALID USER;分析等待事件select w.EVENT_NAME, s.CURRENT SQL from v_sys_sessions s, V$SESSION_WAIT w where s.SESSION IDw.SESSION_ID;必要时终止会话kill session 631 abort; -- 慎用5. 备份恢复实战经验5.1 物理备份要点生产环境我推荐使用brcmd工具做物理备份brcmd -O backup -d HNBILL -t full -k file \ -f /backup/test_T.osrbk -c TRUE关键参数说明-t full完全备份-c TRUE启用压缩-f指定备份路径5.2 逻辑备份技巧对于数据迁移osrexp更好用osrexp -hlocalhost -p2003 -usysdba/szoscar55 -dosrdb \ levelfull file/backup/full.dmp log/backup/exp.log \ modeentirety ignorefalse最近遇到个坑备份20TB数据库时没加ignorefalse参数结果一个表错误导致整个备份失败。所以现在我的备份脚本都会加上这个参数。6. 常见问题排查指南6.1 连接问题如果isql连接失败按这个顺序检查确认oscaragent服务状态oscaragent -Q检查端口是否监听netstat -an | grep 2003测试telnet连接telnet 127.0.0.1 20036.2 性能问题慢查询是最常见的问题我的排查三板斧查看执行计划explain select * from large_table where id100;检查索引状态select * from V_SYS_IND_SUBPARTITIONS where IDXUSABLEf;分析表统计信息select * from V_SYS_TABLE_STATISTICS where RELNAMEslow_table;记得有次一个查询突然变慢最后发现是统计信息过时执行analyze table slow_table后就恢复了。