一、安装部署
1、查看Swap分区空间(不能小于2G)
grep SwapTotal /proc/meminfo | awk '{print $2/1024/1024 " GB"}'
2、修改CentOS系统标识 (由于Oracle默认不支持CentOS)
echo 'redhat-7' > /etc/redhat-release
3、修改sysctl.conf
cat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 2147483648
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
EOF
#重新加载
sysctl -p
4、安装必须的软件包
yum -y install binutils* compat-libcap1* compat-libstdc++* gcc* gcc-c++* glibc* glibc-devel* ksh* libaio* libaio-devel* libgcc* libstdc++* libstdc++-devel* libXi* libXtst* make* sysstat* elfutils* unixODBC* unzip lrzsz
5、创建安装oracle程序和DBA用户组
groupadd oinstall && groupadd dba
6、创建用户oracle 并加入到dba组
useradd -g dba -m oracle
7、将用户oracle加入到oinstall组
usermod -a -G oinstall oracle
8、修改用户oracle的密码
passwd oracle
9、查看用户oracle的信息
id oracle
10、创建oracle目录
mkdir -p /data/{oracle,inventory,src}
11、修改目录权限
chown -R oracle:oinstall /data/
12、查看目录权限
ll /data
13、修改oracle用户的安全性能设置
cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
14、修改用户环境变量
cat >> /home/oracle/.bashrc << EOF
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
EOF
#重新加载环境变量
source /home/oracle/.bashrc
15、上传安装包
链接: https://pan.baidu.com/s/1-hR8KrFiRqlIwgi60-_wFQ?pwd=1122 提取码: 1122
使用lrzsz或者xftp都可,这里就不做过多演示了
16、unzip两个zip安装包并授权
unzip linux.x64_11gR2_database_1of2.zip -d /data/src/
unzip linux.x64_11gR2_database_2of2.zip -d /data/src/
chown -R oracle:oinstall /data/src/
ll /data/src/
17、关闭selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
18、重启机器
reboot
19、进入Oracle用户
su oracle
20、编辑数据库安装文件 记得提权!!
sudo sed -i 's|^oracle.install.option=.*|oracle.install.option=INSTALL_DB_SWONLY|g;
s|^ORACLE_HOSTNAME=.*|ORACLE_HOSTNAME=oracle|g;
s|^UNIX_GROUP_NAME=.*|UNIX_GROUP_NAME=oinstall|g;
s|^INVENTORY_LOCATION=.*|INVENTORY_LOCATION=/data/inventory|g;
s|^SELECTED_LANGUAGES=.*|SELECTED_LANGUAGES=en,zh_CN|g;
s|^ORACLE_HOME=.*|ORACLE_HOME=/data/oracle/product/11.2.0/db_1|g;
s|^ORACLE_BASE=.*|ORACLE_BASE=/data/oracle|g;
s|^oracle.install.db.InstallEdition=.*|oracle.install.db.InstallEdition=EE|g;
s|^oracle.install.db.DBA_GROUP=.*|oracle.install.db.DBA_GROUP=dba|g;
s|^oracle.install.db.OPER_GROUP=.*|oracle.install.db.OPER_GROUP=oinstall|g;
s|^oracle.install.db.config.starterdb.type=.*|oracle.install.db.config.starterdb.type=GENERAL_PURPOSE|g;
s|^oracle.install.db.config.starterdb.globalDBName=.*|oracle.install.db.config.starterdb.globalDBName=orcl|g;
s|^oracle.install.db.config.starterdb.SID=.*|oracle.install.db.config.starterdb.SID=orcl|g;
s|^oracle.install.db.config.starterdb.characterSet=.*|oracle.install.db.config.starterdb.characterSet=AL32UTF8|g;
s|^oracle.install.db.config.starterdb.memoryLimit=.*|oracle.install.db.config.starterdb.memoryLimit=800|g;
s|^oracle.install.db.config.starterdb.password.ALL=.*|oracle.install.db.config.starterdb.password.ALL=oracle|g;
s|^DECLINE_SECURITY_UPDATES=.*|DECLINE_SECURITY_UPDATES=true|g' /data/src/database/response/db_install.rsp
-
根据以下值修改
oracle.install.option=INSTALL_DB_SWONLY # 安装类型 ORACLE_HOSTNAME=oracle # 主机名称 UNIX_GROUP_NAME=oinstall # 安装组 INVENTORY_LOCATION=/data/inventory # INVENTORY目录 SELECTED_LANGUAGES=en,zh_CN # 选择语言 ORACLE_HOME=/data/oracle/product/11.2.0/db_1 # oracle_home ORACLE_BASE=/data/oracle # oracle_base oracle.install.db.InstallEdition=EE # oracle版本 oracle.install.db.DBA_GROUP=dba # dba用户组 oracle.install.db.OPER_GROUP=oinstall # oper用户组 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 数据库类型 oracle.install.db.config.starterdb.globalDBName=orcl # globalDBName oracle.install.db.config.starterdb.SID=orcl # SID oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 默认数据库编码 oracle.install.db.config.starterdb.memoryLimit=800 # 自动管理内存的最小内存(M) oracle.install.db.config.starterdb.password.ALL=oracle # 设定所有数据库用户使用同一个密码 DECLINE_SECURITY_UPDATES=true # 设置安全更新
20、安装oracle
/data/src/database/runInstaller -silent -responseFile /data/src/database/response/db_install.rsp -ignorePrereq
在另一个窗口输入命令如下://如果报错没有这个目录或者文件,等待一会执行即可
/data/oracle/product/11.2.0/db_1/root.sh
执行完后,再回到之前窗口按下回车!!!!!!
21、编辑监听配置文件
根据以下值修改
INSTALL_TYPE=""custom"" # 安装的类型
LISTENER_NUMBER=1 # 监听器数量
LISTENER_NAMES={"LISTENER"} # 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"} # 监听器使用的通讯协议列表
LISTENER_START=""LISTENER"" # 监听器启动的名称
sed -i 's|INSTALL_TYPE=.*|INSTALL_TYPE="custom"|;
s|LISTENER_NUMBER=.*|LISTENER_NUMBER=1|;
s|LISTENER_NAMES=.*|LISTENER_NAMES={"LISTENER"}|;
s|LISTENER_PROTOCOLS=.*|LISTENER_PROTOCOLS={"TCP;1521"}|;
s|LISTENER_START=.*|LISTENER_START="LISTENER"|' /data/src/database/response/netca.rsp
查看是否替换成功:
grep -E 'INSTALL_TYPE=.*"custom"|LISTENER_NUMBER=.*|LISTENER_NAMES=.*|LISTENER_PROTOCOLS=.*|LISTENER_START=.*"LISTENER"' /data/src/database/response/netca.rsp
22、执行以下命令
/data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /data/src/database/response/netca.rsp
23、编辑数据库实例文件
根据以下值修改
RESPONSEFILE_VERSION = "11.2.0" // 不要变哦
OPERATION_TYPE = "createDatabase" // 操作为创建实例
GDBNAME = "orcl" // 数据库实例名
SID = "orcl" // 实例名字
TEMPLATENAME = "General_Purpose.dbc" // 建库用的模板文件
SYSPASSWORD = "oracle" // SYS管理员密码
SYSTEMPASSWORD = "oracle" // SYSTEM管理员密码
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION = /data/oracle/oradata // 数据文件存放目录
RECOVERYAREADESTINATION = /data/oracle/flash_recovery_area // 恢复数据存放目录
CHARACTERSET = "AL32UTF8" // 字符集
NATIONALCHARACTERSET= "AL16UTF16" // 字符集
TOTALMEMORY = "1638" // 1638MB,物理内存2G*80%
sed -i -e 's/^RESPONSEFILE_VERSION = "11.2.0"/RESPONSEFILE_VERSION = "11.2.0"/' \
-e 's/OPERATION_TYPE = "createDatabase"/OPERATION_TYPE = "createDatabase"/' \
-e 's/GDBNAME = "orcl11g.us.oracle.com"/GDBNAME = "orcl"/' \
-e 's/SID = "orcl11g"/SID = "orcl"/' \
-e 's/TEMPLATENAME = "General_Purpose.dbc"/TEMPLATENAME = "General_Purpose.dbc"/' \
-e 's/^#SYSPASSWORD = "password"/SYSPASSWORD = "oracle"/' \
-e 's/^#SYSTEMPASSWORD = "password"/SYSTEMPASSWORD = "oracle"/' \
-e 's/^#SYSMANPASSWORD = "password"/SYSMANPASSWORD = "oracle"/' \
-e 's/^#DBSNMPPASSWORD = "password"/DBSNMPPASSWORD = "oracle"/' \
-e 's|^#DATAFILEDESTINATION.*$|DATAFILEDESTINATION = /data/oracle/oradata|' \
-e 's|^#RECOVERYAREADESTINATION.*$|RECOVERYAREADESTINATION = /data/oracle/flash_recovery_area|' \
-e 's|^#CHARACTERSET.*$|CHARACTERSET = "AL32UTF8"|' \
-e 's|^#NATIONALCHARACTERSET.*$|NATIONALCHARACTERSET = "AL16UTF16"|' \
-e 's|^#TOTALMEMORY.*$|TOTALMEMORY = "1638"|' /data/src/database/response/dbca.rsp
修改查看
grep -E '^(RESPONSEFILE_VERSION|OPERATION_TYPE|GDBNAME|SID|TEMPLATENAME|SYSPASSWORD|SYSTEMPASSWORD|SYSMANPASSWORD|DBSNMPPASSWORD|DATAFILEDESTINATION|RECOVERYAREADESTINATION|CHARACTERSET|NATIONALCHARACTERSET|TOTALMEMORY) =' /data/src/database/response/dbca.rsp | awk '!seen[$1]++'
24、执行以下命令
/data/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /data/src/database/response/dbca.rsp
25、查看实例是否运行
ps -ef | grep ora_ | grep -v grep
26、修改启动和关闭实例的程序
将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1
sed -i 's#ORACLE_HOME_LISTNER=$1#ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1#g' /data/oracle/product/11.2.0/db_1/bin/dbstart
sed -i 's#ORACLE_HOME_LISTNER=$1#ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1#g' /data/oracle/product/11.2.0/db_1/bin/dbshut
27、修改/etc/oratab
如果没有这个文件或者文件内容为空的情况下,使用echo追加即可!!!
echo 'orcl:/data/oracle/product/11.2.0:Y' | sudo tee -a /etc/oratab
28、启动实例
/data/oracle/product/11.2.0/db_1/bin/dbstart
29、开机启动Oracle(以下命令都是在root用户下!!!)
重新打开一个窗口运行
chmod +x /etc/rc.d/rc.local
cat >> /etc/rc.d/rc.local << EOF
su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/dbstart"
EOF
30、进入数据库
使用oracle用户进入 //如果报错没有sqlpush命令,检查环境变量设置
sqlplus / as sysdba
二、常用语句
2.1、控制语句
- 登陆 sqlplus:sqlplus /nolog
- 使用sysdba链接oracle:connect /as sysdba
- 使用自定义 u1 连接oracle:connect u1 /123456
- 开启数据库:startup
- 关闭数据库:shutdown immediate;
- 查看数据库状态:select * from v$instance;
- 监听状态($ORACLE_HOME/bin):lsnrctl status
- 开启监听:lsnrctl start
- 关闭监听:lsnrctl stop
2.2、查询语句
- 查询当前数据库 : select name from v$database;
- 查询当前实例名 : select instance_name from v$instance;
- 查询表空间:select default_tablespace, d.username from dba_users d;
- 查看数据库用户:select * from dbs_users;
- 查询表空间路径:select status,fuzzy,tablespace_name,name from v$datafile_header;
- 显示当前连接用户:show user;
- 显示系统下所有用户:select * from all_users;
- 显示用户空间下所有表格:select table_name from user_tables;
- 显示用户下表格中的数据:select * from "HFTEST"."stu";
2.3、创建语句
-
创建表空间:create TableSpace 表空间名称 DataFile 表空间数据文件路径 Size 初始大小 AutoExtend on;
-
创建用户:create user 用户名 identified by 密码 default tablespace 表空间;
CREATE USER username IDENTIFIED BY password;
-
用户授权:Grant connect, backup any table, select any dictionary, dba to 用户;
2.4、删除语句
- 删除用户:drop user 用户名 cascade;
- 删除表空间:Drop tablespace 表空间名 including contents and datafiles CASCADE CONSTRAINTS;
- 删除表:drop table "stu";
三、oracle数据类型(常用)
分类 | 数据类型 | 描述 |
---|---|---|
字符类型 | Varchar | 表示一个字符串,固定长度的字符串 |
varchar2 | 表示一个字符串,可变长度的字符串 | |
NCHAR/NVARCHAR2 | Unicode字符集类型 | |
LONG | 可变长字符串,最大长度2GB | |
数值类型 | NUMBER | NUMBER(n)表示一个整数,长度是 n NUMBER(m,n):表示一个小数,总长度是 m,小数是 n,整数是 m-n |
日期时间类型 | DATE | NUMBER(m,n):表示一个小数,总长度是 m,小数是 n,整数是 m-n |
TIMESTAMP | 秒值精确到小数点后6位 | |
lob类型 | CLOB | CLOB 大对象,表示大文本数据类型,可存 4G |
BLOB | BLOB 大对象,表示二进制数据,可存 4G |