数据库起步
安装
Docker安装
构建Docker镜像
1
|
git clone --depth=1 https://github.com/oracle/docker-images.git
|
在Oracle Technology Network下载所需的数据库版本,然后放在dockerfiles/<version>
,所需的文件名应该类似linuxx64__database.zip。
然后进入dockerfiles
目录,并运行buildDockerImage.sh脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[oracle@localhost dockerfiles]$ ./buildDockerImage.sh -h
Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [Docker build option]
Builds a Docker Image for Oracle Database.
Parameters:
-v: version to build
Choose one of: 11.2.0.2 12.1.0.2 12.2.0.1 18.3.0 18.4.0 19.3.0
-e: creates image based on 'Enterprise Edition'
-s: creates image based on 'Standard Edition 2'
-x: creates image based on 'Express Edition'
-i: ignores the MD5 checksums
-o: passes on Docker build option
* select one edition only: -e, -s, or -x
LICENSE UPL 1.0
Copyright (c) 2014-2019 Oracle and/or its affiliates. All rights reserved.
|
基于RPM安装
从Oracle Database 18c开始,您可以使用RPM软件包安装单实例Oracle数据库或Oracle Database Instant Client软件。
基于RPM的安装执行预安装检查,提取数据库软件,将提取的软件的所有权重新分配给预配置的用户和组,维护Oracle清单,并执行为单实例Oracle配置Oracle数据库软件所需的所有根操作数据库创建和配置。
基于RPM的安装过程会检测当不满足安装的最低要求时,提示您完成这些最低预安装要求。
基于RPM的安装执行仅限软件的Oracle数据库安装并创建Oracle主目录。创建Oracle主目录后,您可以使用Oracle数据库配置助手(Oracle DBCA)创建Oracle数据库。
基于RPM的安装过程为您提供了使用/etc/init.d/oracledb_ORCLCDB-19c服务配置脚本使用默认设置创建数据库的选项。
以下命令需以root用户登录运行
安装数据库
1
2
3
4
5
6
7
8
9
10
11
12
|
# Oracle Linux
yum -y install oracle-database-preinstall-19c
# CentOS
curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
# 日志:/var/log/oracle-database-preinstall-18c/backup/timestamp/orakernel.log
# 安装完成后可删除RPM文件
rm oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
# 下载RPM软件包
curl https://download.oracle.com/otn/linux/oracle19c/190000/oracle-database-ee-19c-1.0-1.x86_64.rpm?AuthParam=1556298955_996cba12c2e750f722b598036f05bc7f -o oracle-database-ee-19c-1.0-1.x86_64.rpm
# 安装
yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
|
创建并配置数据库
通过修改/etc/sysconfig/oracledb_ORCLCDB-19c.conf文件来修改Oracle数据库配置参数
1
2
|
/etc/init.d/oracledb_ORCLCDB-19c configure
# 日志:/opt/oracle/cfgtoollogs/dbca/ORCLCDB
|
也可以修改/etc/init.d/oracledb_ORCLCDB-19c脚本来进行更多控制
后续操作
配置环境
1
2
3
4
5
6
7
8
9
|
#Added by Weixin
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=ORCLCDB
export PDB_NAME=ORCLPDB1
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:$PATH
|
1
2
3
4
|
systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld # 临时
systemctl disable firewalld # 永久
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# Oracle Linux6:
/etc/init.d/oracledb_ORCLCDB-18c stop
/etc/init.d/oracledb_ORCLCDB-18c start
# Oracle Linux7:
systemctl start oracledb_ORCLCDB-19c
systemctl stop oracledb_ORCLCDB-19c
systemctl restart oracledb_ORCLCDB-19c
# 通过SQL*PLUS
$ sqlplus / as sysdba #sqlplus sys/wxroot@orclpdb1 as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP
SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
|
1
2
3
|
lsnrctl status
lsnrctl start
lsnrctl stop
|
1
2
3
4
5
6
7
|
# Oracle Linux6:
/sbin/chkconfig oracledb_ORCLCDB-18c on
/sbin/service oracledb_ORCLCDB-18c start
# Oracle Linux7:
systemctl daemon-reload
systemctl enable oracledb_ORCLCDB-18c
|
1
2
3
4
5
6
|
# 以oracle的账号登录删除实例,删除监听,再以root的账号删除软件。
$ cd $ORACLE_HOME/bin
$ ./dbca
$ cd $ORACLE_HOME/bin
$ ./netca
# yum -y remove oracle-database-ee-18c
|
建议的操作
- 备份
root.sh
- 设置NLS_开头的参数
- 重新编译无效对象
1
2
|
sqlplus "/ AS SYSDBA"
SQL> @Oracle_home/rdbms/admin/utlrp.sql
|
- 更新Oracle ORAchk Health Check Tool
- 从12.2.0.1开始,System Global Area (SGA)读写权限仅限于Oracle安装用户,也就是oracle用户。如果希望OSDBA用户组也有权限读写SGA,需将
ALLOW_GROUP_ACCESS_TO_SGA
修改为TRUE,强烈不建议这么干!
初始化
配置数据库
解锁并重置用户密码
1
2
3
4
5
|
$ $ORACLE_HOME/bin/sqlplus
SQL> CONNECT SYS as SYSDBA
Enter password: sys_password
ALTER USER account IDENTIFIED BY password ACCOUNT UNLOCK;# 以解锁账户并修改密码
|
除了SYS, SYSTEM,和DBSNMP用户外,其他用户解锁后密码立即失效,必须修改!
解锁HR账户以启用HR示例schema
1
|
ALTER USER HR IDENTIFIED BY your_password ACCOUNT UNLOCK;
|
忘记密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
--conn和connect是一样的
-- 忘记非SYS/SYSTEM用户密码
CONN SYS/PASS_WORD AS SYSDBA; --用SYS (或SYSTEM)用户登录
ALTER USER user_name IDENTIFIED BY "newpassword"; --修改用户的密码,密码不能是数字开头,否则会出现:ORA-00988: 口令缺失或无效
--忘记SYS/SYSTEM用户密码
CONN SYS/PASS_WORD AS SYSDBA; --如果是忘记SYSTEM用户的密码,可以用SYS用户登录。
ALTER USER SYSTEM IDENTIFIED BY "newpassword";
CONN SYSTEM/PASS_WORD AS SYSDBA; --如果是忘记SYS用户的密码,可以用SYSTEM用户登录。
ALTER USER SYS IDENTIFIED BY "newpassword";
--全部密码忘记
su oracle
sqlplus /nolog;
connect / as sysdba
alter user sys identified by "wxroot";
alter user system identified by newpassword;
|
创建用户
1
2
3
4
5
|
CREATE TABLESPACE APPS_DATA datafile 'apps_data.dbf' SIZE 10M autoextend ON;
CREATE TABLESPACE APPS_INDEX datafile 'apps_index.dbf' SIZE 10M autoextend ON;
create temporary tablespace apps_temp tempfile 'apps_temp.dbf' SIZE 5M autoextend on;
CREATE USER apps IDENTIFIED BY apps DEFAULT TABLESPACE APPS_DATA TEMPORARY TABLESPACE apps_temp;
GRANT CONNECT,RESOURCE,DBA TO apps;
|
连接数据库
1
2
3
4
5
6
7
|
--连接CDB
CONN system/password@//localhost:1521/cdb1
CONN system/password@cdb1
--连接PDB
CONN system/password@//localhost:1521/pdb1
CONN system/password@pdb1
ALTER DATABASE OPEN;
|
保存状态
sqlplus sys/passwd as sysdba
1
2
3
4
5
6
7
|
-- method 1
ALTER PLUGGABLE DATABASE orclpdb1 OPEN;
alter pluggable database all open/close;
-- method 2
alter pluggable database orclpdb1 save state;
alter pluggable database all SAVE/DISCARD state;
alter pluggable database all except pdb_name1, pdb_name2 save state;
|