【工作记录】Centos7静默安装Oracle11g和plsql远程操作Oracle(含SQL语法)

Centos7静默安装Oracle11g

RPM软件

系统包要求

以下系统包或以上版本(32个)必须满足:
binutils-2.17.50.0.6
compat-libstdc+±33-3.2.3
compat-libstdc+±33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c+±4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc+±4.1.2
libstdc+±4.1.2 (32 bit)
libstdc+±devel 4.1.2
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
elfutils-libelf-devel-static-0.125
kernel-headers-2.6.18
libgomp-4.1.2

  • 检查命令:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

安装oracle软件

  1. 创建组及用户

root用户下执行如下命令
groupadd oinstall
groupadd dba
useradd -m -d /u01/oracle -g oinstall -G dba oracle

  1. 系统参数修改

kernel.shmmni = 4096
kernel.shmmax = 8589934592
kernel.shmall = 2097152
fs.file-max = 6815744
kernel.sem = 500 65280 500 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=8388608
net.core.rmem_max=8388608
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576

修改后,使设置生效sysctl -p

  1. 用户限制设置

在文件/etc/security/limits.conf中加入以下内容:
vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 65536
oracle hard nproc 65536

/etc/profile中加入以下内容:
vi /etc/profile

if [ $USER = "oracle" ]; then
         if [ $SHELL = "/bin/ksh" ]; then
                   ulimit -p 16384
                   ulimit -n 65536
         else
                   ulimit -u 16384 -n 65536
         fi
fi
  1. 关闭SELinux
    vi /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled
  1. 创建安装目录
mkdir -p /u01/oracle
mkdir -p /u01/oracle/product/11gR2
mkdir -p /u01/dbdata/appdata
mkdir -p /u01/dbdata/oradata
mkdir -p /u01/dbdata/flash_recovery_area
chown oracle.oinstall -R /u01/dbdata
chown oracle.oinstall -R /u01/oracle/*
  1. 设置环境变量
    su - oracle
    vi ~/.bash_profile
    该文件位置在product同级目录
    在这里插入图片描述
unset USERNAME
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11gR2
export PATH=.:$ORACLE_HOME/bin:$PATH:$HOME/bin:$PATH
export ORACLE_SID=ORAC
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export NLS_LANG=american_america.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/nls/admin/data

注意,除了ORACLE_BASE和ORACLE_SID,( /etc/profile和.bash_profile中)不设置任何oracle相关环境变量(ORACLE_HOME, PATH,LD_LIBRARY_PATH等)。

  1. 静默安装软件
  • 创建oraInst.loc

su - root
vi /etc/oraInst.loc

inventory_loc=/u01/oracle/oraInventory
inst_group=oinstall

chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc

  • 创建响应文件,并安装oracle软件

su - oracle

  • 修改database/response/db_install.rsp文件,如下所示:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=db
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/oracle/product/11gR2
ORACLE_BASE=/u01/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ORAC
oracle.install.db.config.starterdb.SID=ORAC
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=7168
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/dbdata/oradata
oracle.install.db.config.starterdb.password.ALL=dba
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/u01/dbdata/flash_recovery_area
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
PROXY_PORT=
PROXY_HOST=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
  • 执行如下命令:
./runInstaller -silent -showProgress -responseFile /u01/oracle/database/response/db_install.rsp

出现类似如下提示表示安装完成:

#------------------------------------------------------------------- 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 460082 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 17407 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2016-04-12_12-47-08AM. Please wait ...[oracle@ip-10-0-4-21 database]$ You can find the log of this install session at:
 /u01/oracle/oraInventory/logs/installActions2016-04-12_12-47-08AM.log

Prepare in progress.
..................................................   9% Done.

Prepare successful.

Copy files in progress.
..................................................   14% Done.
..................................................   20% Done.
..................................................   26% Done.
..................................................   31% Done.
..................................................   36% Done.
..................................................   41% Done.
..................................................   47% Done.
..................................................   52% Done.
..................................................   57% Done.
..................................................   63% Done.
..................................................   68% Done.
..................................................   73% Done.
..................................................   78% Done.
..................................................   83% Done.
..............................
Copy files successful.

Link binaries in progress.
..........
Link binaries successful.

Setup files in progress.
..................................................   88% Done.
..................................................   94% Done.

Setup files successful.
The installation of Oracle Database 11g was successful.
Please check '/u01/oracle/oraInventory/logs/silentInstall2016-04-12_12-47-08AM.log' for more details.

Execute Root Scripts in progress.

As a root user, execute the following script(s):
        1. /u01/oracle/oraInventory/orainstRoot.sh
        2. /u01/oracle/product/11gR2/root.sh


..................................................   100% Done.

Execute Root Scripts successful.
Successfully Setup Software.

#------------------------------------------------------------------- 
  • 使用root用户执行脚本 /u01/oracle/product/11gR2/root.sh

  • NET配置的响应文件,并安装配置监听

使用Oracle默认即可,无需修改,该文件在Oracle安装包的路径:

netca  /silent /responsefile /u01/oracle/database/response/netca.rsp
  • 执行后出现如下提示:
----------------------------------------------------------------------------
Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /u01/oracle/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
    Running Listener Control:
      /u01/oracle/product/11gR2/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
----------------------------------------------------------------------------
  • 创建数据库的响应文件,并安装数据库实例

修改dbca.rsp,如下所示:

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]
GDBNAME = "ORAC"
SID = "ORAC"
TEMPLATENAME = "General_Purpose.dbc"
DATAFILEDESTINATION = "/u01/dbdata/oradata"
RECOVERYAREADESTINATION= "/u01/dbdata/flash_recovery_area"
CHARACTERSET = "ZHS16GBK"
NATIONALCHARACTERSET= "AL16UTF16"
  • 执行如下命令:
$ORACLE_HOME/bin/dbca -silent -cloneTemplate -gdbName ORAC  -sid ORAC -sysPassword dba -systemPassword dba -datafileDestination /u01/dbdata/oradata -responseFile /u01/oracle/database/response/dbca_orac.rsp
执行结果如下所示:
-------------------------------------------------------------------------
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/oracle/cfgtoollogs/dbca/erp/erp.log" for further details.
-------------------------------------------------------------------------
  • 更改process数量

查看当前process数量show parameter process
alter system set processes=800 scope = spfile;
重启数据库

  • 查看1521端口是否已经开始服务

Oracle命令行使用

在sql语句的后面都需要commit;

  • 进入实例/u01/oracle/product/11gR2/bin然后sqlplus /nolog

  • 管理员连接connect sys/bookstore as sysdba

  • 普通用户连接connect username/password

  • 管理员创建新用户CREATE USER stu1 IDENTIFIED BY password123;

  • 查看当前用户下表SELECT table_name FROM user_tables;

  • 更改数据UPDATE 表名 SET 字段=值 WHERE 字段=值

  • 添加数据insert into table2 values (2,'cbvv');

  • 删除数据delete from table2 where name='ccc';

  • 修改表名Alter Table table2 Rename to table22;

  • 修改表字段大小 Alter Table 表名 Modify 字段名 数据类型(约束);

  • 删除表记录Delete From 表名 Where 列名称 = 值

  • 创建表create table1是不可以的,要有括号

CREATE TABLE employees (
    employee_id NUMBER PRIMARY KEY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    hire_date DATE
);
  • 创建库是使用脚本建库,根据报错内容里的1504结合看
  • 添加表字段ALTER TABLE table2 ADD note VARCHAR2 (200);
  • SELECT
SELECT * FROM 表名 WHERE 字段>=2000 AND 字段<=2500;
SELECT * FROM 表明 WHERE 字段 BETWEEN 2000 AND 2500
  • 查询排序 select 字段1,字段2 from 表名 where 字段1 is not null order by 字段1 desc;ASC:正序;DESC:倒序
  • 分组查询 select 字段2, count(*) from 表名 group by 字段2;
  • having 查询是对分组之后的结果进行查询 SELECT 字段2,COUNT(*) FROM 表名 GROUP BY 字段2 HAVING AVG(字段1)>2000
  • 模糊查询SELECT * FROM TABLE2 WHERE NAME LIKE '%v%';
  • %:表示任意0到多个字符 ; _ : 表示任意单个字符
  • left join on … and … : 以左表为基,保留所有左边查询数据,查不到为空
  • left join on … where … : 先匹配,后筛选,不符合条件的会被去除
  • 查找最近表的修改记录SELECT * FROM tableName AS OF TIMESTAMP(SYSDATE-30/24/60)
  • 查找是否存在重复数据
SELECT COUNT(NAME) as 出现次数,  NAME FROM  表名
GROUP BY  NAME   HAVING count(NAME) >= 2   ORDER BY  出现次数   DESC 

关联查询

  • 关联查询:内连接(等值、不等值)、外连接(左、右、全)、交叉连接

根据两个表或多个表的列之间的关系,从这些表中查询数据。

FROM join_table join_type join_table[ON (join_condition)]其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。join_type 指出连接类型。join_condition指连接条件。

连接分为三种:内连接、外连接、交叉连接

  • 内连接(INNER JOIN)

select * from T_student s,T_class c where s.classId = c.classId使用比较运算符(包括=、>、<、<>、>=、<=、!>和!<)进行表间的比较操作,查询与连接条件相匹配的数据。根据比较运算符不同,内连接分为等值连接和不等连接两种。

  • 外连接分为左连接(LEFT JOIN)或左外连接(LEFT OUTER JOIN)、右连接(RIGHT JOIN)或右外连接(RIGHT OUTER JOIN)、全连接(FULL JOIN)或全外连接(FULL OUTER JOIN)。我们就简单的叫:左连接、右连接和全连接
  1. 左连接:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。select * from T_student s left join T_class c on s.classId = c.classId总结:左连接显示左表全部行,和右表与左表相同行(没有的用NULL填上)。
  2. 右连接:恰与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。
  3. 全连接:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值
  4. 交叉连接(CROSS JOIN):也称迪卡尔积。不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积(例如:T_student和T_class,返回4*4=16条记录),如果带where,返回或显示的是匹配的行数。

plsql远程操作Oracle

报错集合

官网报错集合

ORA-00906:缺失左括号

create table 表名
create table myTable(id number(5,2),name varchar(10))
括号里是字段约束

ORA-01031: 权限不足

在创建表的时候,报错了,于是在系统管理员权限中:
GRANT CREATE TABLE TO username;即可

ORA-01501创建库失败/01504名称不符合参数

一个用户在一个数据库实例(一个oracle安装包)里面只拥有一个数据库,数据库的名称就是SID的配置值。在新建用户时,也可以自动创建这个库。如果手动创建,名字也需要和SID一样。所以新创建用户就相当于新创建一个库。
在这里插入图片描述
可以理解为创库就是新建用户

ORA-01100 数据库已挂载

数据库已挂载,意思是挂载之前你创新数据库才行,别挂载再创建

关闭数据库,然后在命名阶段启动它,然后应用create database语句

SQL>shutdown immediate;
SQL>startup nomount;
SQL>CREATE database name

startup一句话等于下面三句话,不要startup,要把他们分开

startup nomount
alter database mount
alter database open

可以自动创建这个库。如果手动创建,名字也需要和SID一样,否则报错1504

ORA-12170: TNS:Connect timeout occurred

plsql连接时,记得关闭虚拟机防火墙
systemctl stop firewalld

plsql 连接以后远程数据库有数据,但是查询没有显示结果

plsql动态执行表不可访问,本会话的自动统计被禁止

  • select不显示

并不是版本不对,11g对应11.2的远程client

grant select on v_$session to username;
grant select on v_$sesstat to username;
grant select on v_$statname to username;
grant select on v_$mystat to username; 

Insert不成功

insert into table2 values (2,'cbc');
select * from table2;

这样可以正确显示和插入数据,但是分开执行insert就不能插入数据,单独执行select也不显示数据,为什么?

事务未提交:在一个事务中分开执行这两个语句,并且没有显式地提交事务,那么在第一个语句执行后插入的数据尚未被提交到数据库中,在执行第二个语句时可能看不到插入的数据。解决方法是在插入数据后执行 COMMIT; 提交事务。

ORA 1701

connect sys as sysdba 然后再输入密码
还有就是记得su - oracle 在root肯定报错
sqlplus / as sysdba 也可以

ORA 12514/12505

/u01/oracle/product/11gR2/network/admin/listener.ora修改

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.19.200.167)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/oracle


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = ORAC)
      (ORACLE_HOME = /u01/oracle/product/11gR2)
    )
  )
 

然后lsnrctl stop 再 start

1521端口没启动

su - oracle

图形化参考文章

麒麟服务器操作系统V10sp2-0524-x86_64安装Oracle11gr2
【银河麒麟V10】【服务器】Oracle11g部署

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值