记录1
#一定要在 oracle用户下执行
source /home/oracle/.bash_profile
sqlplus / as sysdba
1.查看Oracle运行状态的精简Shell命令
命令说明:
ps -ef - 列出所有进程
grep -E 'ora_|asm_' - 查找Oracle相关进程(包括ASM)
grep -v grep - 排除grep自身进程
|| echo "Oracle进程未运行" - 如果没有找到相关进程则显示提示信息
ps -ef | grep -E 'ora_|asm_' | grep -v grep || echo "Oracle进程未运行"
替代方案(如果配置了ORACLE_HOME):
$ORACLE_HOME/bin/lsnrctl status | grep -q "STATUS" && echo "Oracle监听运行中" || echo "Oracle监听未运行"
2.查看Oracle安装位置的最简Shell命令
ps -ef | grep pmon | grep -v grep | awk '{print $NF}' | sed 's/^ora_pmon_//;s/$//' | xargs -I {} grep -h "^ORACLE_HOME" /etc/oratab /var/opt/oracle/oratab $HOME/.oratab 2>/dev/null | cut -d: -f2 | head -1
但是实际没有啥反应哈哈
[root@localhost ~]# cat /proc/$(pgrep -f pmon)/environ 2>/dev/null | tr '\0' '\n' | grep ORACLE_HOME | cut -d= -f2
/u01/app/oracle/product/11.2.0
oratab文件不存在或位置不对:
[root@localhost ~]# ls -l /etc/oratab /var/opt/oracle/oratab ~/.oratab 2>/dev/null
-rw-rw-r--. 1 oracle oinstall 716 4月 11 14:22 /etc/oratab
查看对应的权限问题
[root@localhost ~]# sudo ls -l /etc/oratab
-rw-rw-r--. 1 oracle oinstall 716 4月 11 14:22 /etc/oratab
更可靠的替代方案:
# 方法1:直接查找Oracle二进制文件
find / -name "sqlplus" -type f -executable 2>/dev/null | head -1 | xargs dirname | xargs dirname
# 方法2:检查运行中的Oracle进程环境变量
cat /proc/$(pgrep -f pmon)/environ 2>/dev/null | tr '\0' '\n' | grep ORACLE_HOME | cut -d= -f2
# 方法3:查找所有可能的oratab文件
find / -name "oratab" 2>/dev/null | xargs grep "^ORACLE_HOME" | head -1 | cut -d: -f2
该命令不行 没有反应
3.查看 oracle的版本信息
[oracle@localhost root]$ $ORACLE_HOME/OPatch/opatch lsinventory | grep "Oracle Database" | head -1
Oracle Database 11g 11.2.0.1.0
[root@localhost ~]# sqlplus -v
4.查看当前运行中的SQL会话
会话出现死锁的情况下
SELECT
s.sid,
s.serial#,
s.username,
s.status,
s.machine,
s.program,
s.sql_id,
sq.sql_text,
s.blocking_session,
s.seconds_in_wait,
s.event,
s.wait_class
FROM
v$session s
JOIN
v$sql sq ON s.sql_id = sq.sql_id
WHERE
s.status = 'ACTIVE'
AND s.type = 'USER'
ORDER BY
s.seconds_in_wait DESC;
ALTER SYSTEM DISCONNECT SESSION '141,112' POST_TRANSACTION;
5.
唯一可信记录:2003年叙利亚海关曾使用Oracle 9i(通过黎巴嫩代理商进口)
国内替代Oracle的核心路径是:
短期:通过PostgreSQL/MySQL生态过渡,利用兼容工具降低迁移成本。
长期:采用国产分布式数据库(如OceanBase、TiDB、GaussDB)实现自主可控。
云化:借助阿里云、腾讯云等托管服务减少运维压力。
随着信创政策的推进和国产数据库技术的成熟,Oracle在国内市场的份额将持续下降,但完全替代仍需时间(尤其在高端企业场景)
6.列出所有以ora_开头的进程,这些进程通常是Oracle数据库的后台进程。
ps -ef | grep ora_ | grep -v grep
7.查看所有安装的组件
SELECT comp_name, status, version FROM dba_registry;
--下面是18个相关的组件信息
OWB
Oracle Application Express
Oracle Enterprise Manager #生成AWR报告
OLAP Catalog
Spatial
Oracle Multimedia
Oracle XML Database
Oracle Text
Oracle Expression Filter
Oracle Rules Manager
Oracle Workspace Manager
Oracle Database Catalog Views
Oracle Database Packages and Types
JServer JAVA Virtual Machine
Oracle XDK
Oracle Database Java Packages
OLAP Analytic Workspace
Oracle OLAP API
8.通过网页访问Oracle的AWR报告
Oracle Enterprise Manager #生成AWR报告
http://<数据库服务器IP>:<端口>/em
http://192.168.188.132:5500/em
root用户 确保防火墙允许访问 5500 端口
iptables -I INPUT -p tcp --dport 5500 -j ACCEPT
cat $ORACLE_HOME/em/emctl/config/emctl.config
sqlplus / as sysdba
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
/home/shelloracle/awrrpt_1_7_22.html
--之前没有权限 root用户下建立的/home/shelloracle
sudo chown oracle:oinstall /home/shelloracle
模拟生成AWR报告的场景
-- 生成起始快照
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
-- 执行模拟负载操作...
-- 创建测试表(约消耗1GB空间)
CREATE TABLE test_cpu_load AS
SELECT LEVEL AS id,
RPAD('CPU_STRESS', 1000, 'X') AS data
FROM DUAL
CONNECT BY LEVEL <= 1000000;
-- 执行全表扫描+聚合计算(触发CPU消耗)
SELECT COUNT(*) FROM (
SELECT t1.id, t2.data
FROM huang.test_cpu_load t1, huang.test_cpu_load t2
WHERE t1.id = t2.id
AND ROWNUM <= 100000
);
-- 创建测试表(初始数据)
CREATE TABLE huang.test_io_load (
id NUMBER PRIMARY KEY,
data CLOB
);
-- 插入大量LOB数据(每次插入1MB数据,共100次)
DECLARE
v_clob CLOB := RPAD('X', 1024*1024, 'Y'); -- 1MB数据
BEGIN
FOR i IN 1..100 LOOP
INSERT INTO huang.test_io_load VALUES (i, v_clob);
COMMIT;
END LOOP;
END;
/
-- 更新所有记录触发物理写入
UPDATE huang.test_io_load SET data = RPAD(data, 1024*1024, 'Z');
COMMIT;
-- 生成结束快照
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

被折叠的 条评论
为什么被折叠?



