PL SQL作为Oracle数据库常用的数据库管理工具,在日常使用维护应用很频繁。
1.批量运行SQL脚本
将需要批量运行的脚本按照绝对路径@@添加到新的SQL文件中。之后只要在窗口命令模式下运行新的SQL文件即可。
![b47f686e1993f9591339c87a658c86df.png](https://i-blog.csdnimg.cn/blog_migrate/765d8e5c52df5552fbf3589d8e40f162.jpeg)
![6596d2e5b4deba5640a2fbf84c075b9d.png](https://i-blog.csdnimg.cn/blog_migrate/1878bc1d81f5607d7ecf0ae75254d985.jpeg)
2.添加Oracle数据库只读用户
1.使用sqlplus命令的sysdba权限的用户连接数据库
2.使用命令create user XXX identified by passXXX创建用户并设定密码
3.赋予只读权限连接数据库权限connect
4.赋予权限查看所有表的权限(如需要存储过程或者视图权限,命令类似)
![ef608f7d13eeaca1d59ece71ecf52019.png](https://i-blog.csdnimg.cn/blog_migrate/6fe301257b2011f19d31f5fe7a25edda.jpeg)
NOTE:如果使用PL SQL连接Oracle的只读用户,需要选择ALL USER,否则可能看不到表。
![5ecf03e546cd79509a09ccdaabc33dce.png](https://i-blog.csdnimg.cn/blog_migrate/a8e0ef4b3e24f01a72bdc379d8bc9ca6.jpeg)
3.清理Oracle数据库日志,释放服务器磁盘空间
1)incident事件日志
每当一个错误发生的时候,oracle会创建一个incident,并且分配一个INCIDENT_ID号,同时在ADR HOME的INCIDENT目录中创建相应的INCIDENT 目录,每个错误号一个INCIDENT目录,目录被命名为incdir_。在incident 目录下含有相应的DUMP文件。
切换到oracle数据库用户,然后使用adrci命令。
![a066a998eb49c3c88b53949a064a2c6e.png](https://i-blog.csdnimg.cn/blog_migrate/ccd801e284762d820de67143da76d658.jpeg)
如果有多个ADR base,使用命令set homepath /oracle/app/oracle指定一个ADR为默认路径。
使用命令purge -age 14400 -type incident保留10天的日志.14400=10天*24小时*60分钟
![193e2d5571c0ff61cd996d9dda9759f2.png](https://i-blog.csdnimg.cn/blog_migrate/daeaf414ed0bd3e3d1e1baa2cf1a2d67.jpeg)
2)trace事件日志
tarce文件是oracle数据库在运行时产生的日志;跟踪文件(trace file)能提供调试信息,服务器遇到问题时,它会生成一个包含大量诊断信息的跟踪文件。
#查看超过30天的体日志文件
$find trace -ctime +30 |more
#删除超过30天的日志文件
$find trace -ctime +30 |xargs rm -f
4.Oracle用户解锁
Alert user omp account unlock;
![b36fd6c5c27dd3f4c9b22fefdc5c10d1.png](https://i-blog.csdnimg.cn/blog_migrate/63915c138c33470b65ba4b1011818812.jpeg)
5.SQL文件编码格式(UTF-8有无BOM)
在运行SQL脚本的过程中,经常会遇到脚本报错“Warning:Procedure created with compilation errors”
![8ff07cf7b7529c6405f197086545feea.png](https://i-blog.csdnimg.cn/blog_migrate/fc5613fd3f932724668d1254b7c989f5.jpeg)
这种情况下首先检查SQL脚本中使用的表和函数/存储过程是否都存在,如果都存在那很有可能是SQL文件格式的问题,用Notepad++打开SQL,在“格式”中,UTF-8编码有BOM和无BOM注意切换,如果在windows上运行脚本文件,要修改格式为有BOM。
6.PLSQL设置自动提交
PLSQL可以设置自动提交,但是有时候脚本报错的自动提交容易让维护人员错误判断已提交部分。
设置自动提交在“Tools”下面的Preferences下的对应SQL窗口及其他窗口设置栏。
![4a1ce708e09f5d3081eb8cc4a5d03b29.png](https://i-blog.csdnimg.cn/blog_migrate/a975572eff9c2c545ee2547fc927c482.jpeg)
对于不能严格控制脚本规范的开发团队,建议手动提交。在运行脚本后,手动点击下图提交或回退。
![80a47895b8ce0735418100bf18ccf085.png](https://i-blog.csdnimg.cn/blog_migrate/485d01d8a92edd179c4e1f015c5cf8e9.jpeg)
7.PL SQL的多数据库比对功能
开发的过程中,从开发环境-组装环境-功能测试环境-演练环境-生产环境,各个环境之间经过长期的运行,需要进行数据库的比对,以保证开发测试的准确性。在PLSQL"Tools"下面的Compare user Objects。可以对2个数据库的表结构/索引/SP/触发器等做比对。
1.选中要比较的表,视图,触发器,点击目标会话连接要比较的数据库对象
![0625bf684eb27a3fc8e3d5989f9fd498.png](https://i-blog.csdnimg.cn/blog_migrate/2fe7308baffb17dc4a47089ed79d9636.jpeg)
2.点击右下角的比较按钮,真正的比较就开始了,下面是结果
![72a268200b02ac444a18f895f61fe375.png](https://i-blog.csdnimg.cn/blog_migrate/9dd298ac4e12bae51f935bf5401e2e22.jpeg)