在Ubuntu上安装和配置Oracle数据库可以通过多种方法实现,以下是一些关键步骤和最佳实践:
使用Docker容器:
sudo apt-get update
sudo apt-get install docker.io
docker pull store/oracle/database-enterprise:12.2.0.1
docker run -d --name oracle-db -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:12.2.0.1
手动安装:
sudo apt-get install alien libaio1 unixodbc
sudo useradd -u 501 -g oinstall -G dba,oper -s /bin/bash -m oracle
sudo passwd oracle
sudo mkdir -p /u01/app/oracle/product/12.2.0/dbhome_1
sudo chown -R oracle:oinstall /u01
cd /path/to/oracle/database/install/dir
./runInstaller
/etc/profile
或用户目录下的 .profile
文件,添加以下内容:export JAVA_HOME=/usr/bin/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
监听网络配置:
listener.ora
:LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle-histdb)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = extproc1521))
)
)
tnsnames.ora
:ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = extproc1521))
)
(CONNECT_DATA =
(SID = clrextproc)
)
)
性能优化:
ALTER SYSTEM SET buffer_pool_size=1G SCOPE=spfile;
ALTER SYSTEM SET processes=200 SCOPE=spfile;
CREATE INDEX idx_column_name ON table_name(column_name);
CREATE TABLE sales (sale_id NUMBER, sale_date DATE) PARTITION BY RANGE (sale_date) (
PARTITION p2019 VALUES LESS THAN (TO_DATE('2020-01-01', 'YYYY-MM-DD')),
PARTITION p2020 VALUES LESS THAN (TO_DATE('2021-01-01', 'YYYY-MM-DD')),
PARTITION p2021 VALUES LESS THAN (TO_DATE('2022-01-01', 'YYYY-MM-DD'))
);
ALTER SYSTEM SET SGA_TARGET=2G SCOPE=BOTH;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=500M SCOPE=BOTH;
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('schema_name');
EXPLAIN PLAN
分析查询计划,找出性能瓶颈并进行优化。在进行任何系统优化之前,建议备份重要的数据,并谨慎操作,以免引起其他问题。