在Linux上利用Oracle進行數據分析的步驟如下:
gcc
、libaio
等:sudo yum install -y gcc make libaio compat-libstdc++
oracle
用戶及oinstall
、dba
組:sudo groupadd oinstall dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle
sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:oinstall /u01
~/.bash_profile
,添加:export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
source ~/.bash_profile
sqlplus username/password@ORCL
(ORCL
為配置的數據庫服務名,需提前在tnsnames.ora
中設置)SELECT d.department_name, SUM(e.salary) AS total_salary, AVG(e.salary) AS avg_salary
FROM employees e JOIN departments d ON e.department_id = d.department_id
GROUP BY d.department_name
ORDER BY total_salary DESC;
-- 按部門排名
SELECT employee_id, department_id, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS dept_rank
FROM employees;
SELECT TO_CHAR(order_date, 'YYYY-MM') AS month,
SUM(quantity * unit_price) AS monthly_sales,
LAG(SUM(quantity * unit_price), 1) OVER (ORDER BY TO_CHAR(order_date, 'YYYY-MM')) AS prev_month_sales
FROM orders
GROUP BY TO_CHAR(order_date, 'YYYY-MM')
ORDER BY month;
PIVOT
將行轉列(如統計各產品在不同地區的銷量)。NTILE
將數據分桶(如將用戶按消費金額分為高、中、低三檔)。CREATE INDEX idx_employee_salary ON employees(salary);
。#!/bin/bash
sqlplus -s username/password@ORCL <<EOF
SPOOL /tmp/monthly_sales_report.csv
SELECT TO_CHAR(order_date, 'YYYY-MM') AS month, SUM(quantity * unit_price) AS sales
FROM orders
WHERE order_date >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1)
GROUP BY TO_CHAR(order_date, 'YYYY-MM')
ORDER BY month;
SPOOL OFF
EOF
alert.log
和trace
文件排查性能問題,使用tkprof
工具格式化跟蹤日志。通過以上步驟,可在Linux環境下高效利用Oracle完成數據提取、統計分析及可視化準備。