Linux系统下操作Oracle数据库

这篇具有很好参考价值的文章主要介绍了Linux系统下操作Oracle数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux系统下操作Oracle数据库

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

一、登录oracle数据库:
//切换至Oracle用户:

[root@localhost ~]# su - oracle

//进入sqlplus环境,nolog参数表示不登录:

[oracle@localhost ~]$ sqlplus /nolog

//注:
su 和 su - 命令的区别:
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;
而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。

//以管理员模式登录:

[oracle@localhost ~]$ sqlplus / as sysdba

//注:
sqlplus / as sysdba,是oracle登录三种方式之一
oracle登录身份有三种:
1、normal 普通身份;
2、sysdba 系统管理员身份;
3、sysoper 系统操作员身份;
a.若以 ‘sysdba’ 方式认证,登录用户为 ‘SYS’,为 Oracle ‘最高权限用户’
b.若以 ‘sysoper’ 方式认证,登录用户为 ‘PUBLIC’,仅有 ‘PUBLIC 对象权限’
sysdba可以建数据库,sysoper不能建数据库

//查询sys和system两个管理员的权限个数

SQL> select t.grantee, count(1) from dba_sys_privs t where t.grantee in ('SYS', 'SYSTEM')  group by t.grantee;

注:sys和system都是Oracle ‘内置用户’;sys拥有最高权限,存储 Oracle 的数据字典的基表和视图,这些基表和视图对 Oracle 的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys (‘超级管理员’) 的权限远大于 system (‘一般管理员’)。
//启动数据库

SQL> startup

//停止数据库

SQL> shutdown immediate

//查看数据库所有账号及账号状态

SQL>select username,account_status from dba_users;

//查询SID
在oracle中,sid是“System IDentifier”的缩写,是数据库的唯一标识符,是在建立数据库时系统自动赋予的一个初始ID,是以环境变量的形式出现的,用于将系统上fork的进程与其他实例进行区分。SID是在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE_SID(操作系统的环境变量),且它在注册表中也是存在的。而数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。

env|grep SID (不用进数据库,只需要su到oracle下就可以执行查询)

查看用户:

SQL> select * from v$instance;
SQL> select instance_name,host_name from v$instance;

设置SID:

 export ORACLE_SID=hhh

//查询数据库的DBID

SQL>select dbid,open_mode from v$database; 

DBID是DataBase IDentifier的缩写,是数据库的唯一识别码(代号),被记录在控制文件和数据文件中,跟学生表中的学号的功能是类似的,ID是系统自动分配的,如数据库名为testdb,dbid 为7。平时很少需要用这个参数。但在RMAN恢复时,若没有使用恢复目录(catalog),知道被恢复的数据库的DBID可以简化操作。例如要恢复一个已经丢失了控制文件的数据库的控制文件。
//oracle查询数据库密码哪一天过期(其中expiry_date即是过期的时间)

SQL>select username,account_status,expiry_date,profile from dba_users;

//查询数据库密码有效期

SQL>select * from dba_profiles s where s.profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

//配置用户密码过期时间

SQL>alter profile "default" limit password_life_time unlimited; 
配置用户密码永不过期
SQL>alter profile "default" limit password_life_time 100; 
配置用户密码100天过期

//修改密码

SQL>alter user 用户名  identified by  密码;

//创建、配置新用户及查看用户属性
//解锁新用户:

SQL>alter user scott account unlock;
SQL>alter user scott identified by tiger;

//删除oracle用户:
SQL>drop user username cascade; (删除与用户相关的所有对象)
这样该用户包括该用户下的表,试图,同义词,过程,索引,及相关的一切就删除了。

//创建用户并赋权限以及设置默认表空间。
以sysdba用户登陆进行以下设置:
– 创建用户

SQL>create user VHFSM
identified by vhnj1fsm
default tablespace MGRVHFSTBSDEF 此处是设置默认表空间。
temporary tablespace TEMP
profile DEFAULT
quota unlimited on mgrvhfstbs2010 此处是设置可操作的其他表空间
quota unlimited on mgrvhfstbsdef;

–授权

SQL>grant connect to VHFSM;
SQL>grant dba to VHFSM;

– 授予无限表空间权限

SQL>grant unlimited tablespace to VHFSM;

//查看所有用户:

SQL>select * from dba_users;
SQL>select * from all_users;
SQL>select * from user_users;

//查看用户或角色系统权限(直接赋值给用户或角色的系统权限):

SQL>select * from dba_sys_privs;
SQL>select * from user_sys_privs;

//查看角色(只能查看登陆用户拥有的角色)所包含的权限

SQL>select * from role_sys_privs;

//查看用户对象权限:

SQL>select * from dba_tab_privs;
SQL>select * from all_tab_privs;
SQL>select * from user_tab_privs;

//查看所有角色:

SQL>select * from dba_roles;

//查看用户或角色所拥有的角色:

SQL>select * from dba_role_privs;
SQL>select * from user_role_privs;

//查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)

SQL>select * from V$PWFILE_USERS

//注意:
//以下语句可以查看Oracle提供的系统权限

SQL>select name from sys.system_privilege_map

//查看一个用户的所有系统权限(包含角色的系统权限)

SQL>SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'DATAUSER'
UNION
SELECT privilege
FROM dba_sys_privs
WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee = 'DATAUSER');

二、数据库监听

  //启动监听服务

  [root@localhost ~]# su - oracle
  [oracle@localhost ~]$ lsnrctl start
 
  //停止监听服务
  [oracle@localhost ~]$ lsnrctl stop
 
  //查看监听状态
  [oracle@localhost ~]$ lsnrctl status

Listener主要负责下面方面功能:
1、 监听客户端请求
监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程。Windows上名为TNSLSNR,Linux/Unix平台上是lsnrctl。
2、 为客户端请求分配Server Process
监听器只负责接听请求,之后将请求转接给Oracle Server Process。在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)作为代理。
3、 注册实例服务。
本质上讲,listener是建立实例和客户端进程之间联系的桥梁。Listener与实例之间的联系,就是通过注册的过程来实现的。注册的过程就是实例告诉监听器,它的数据库数据库实例名称instance_name和服务名service_names。监听器注册上这样的信息,对客户端请求根据监听注册信息,找到正确的服务实例名称。目前Oracle版本中,提供动态注册和静态注册两种方式。
4、错误转移failover。
Failover是RAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。可以提供很大程度上的可用性(Availability)功能。这个过程中,发现实例已经崩溃,并且将请求转移到其他实例上,就属于是listener的功能。
5、 负载均衡衡量。
在RAC架构中,Oracle实现了负载均衡。当一个客户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。在早期RAC版本中,负载轻重的衡量是根据监听器当前维护连接数目来确定的,而不是实时查看多实例的负载。RAC环境中的监听器之间进行沟通通信。
三、用户权限管理
注:以下命令都需要DBA权限。
//查询哪些用户拥有DBA权限:

SQL>select * from dba_role_privs t where t.granted_role = 'DBA';

//创建用户

SQL>create user 用户名 identified by 123456 ;

//赋予用户的表空间权限

SQL>alter user 用户名default tablespace 用户名;

//或者两条命令合并为

SQL>create user 用户名identified by 123456 default tablespace 用户名;

注:新创建的用户是没有任何权限的,登录的权限都没有。因此需要再继续做授权操作,但必须是具有授权能力的用户,例如:sys、system;角色是指由系统权限集合,通常给某个用户授权时,如果没有角色存在的话,则需要一条条的操作。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限),dba,resource(在任何表空间建表)。

//授予用户管理权限

SQL>grant connect,resource,dba to 用户名;

//删除用户

SQL>drop user“name”cascade;

注:cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数。“name”的引号有无都是一样的。
四、数据表及表空间
=什么是表空间=
表空间是Oracle数据对象和数据存储的容器,它只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。如图所示:

//创建表空间

create tablespace ittbank datafile '/u01/app/oracle/oradata/ORCL/ittbank.dbf' size 300m autoextend on;

注:末尾带autoextend on参数表示当表空间大小不够用时会自动扩容,of则代表不自动扩容,所以建议加上autoextend on参数。

//查询当前表空间

select * from v$tablespace;

//查询所有表空间
select * from sys.dba_tablespaces; --查询表空间

//查看用户当前连接数

select count(*) from sys.v_$session;

//查询空闲空间

select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space;

//增加Oracle表空间
先查询数据文件名称、大小和路径的信息,语句如下:

select tablespace_name,file_id,bytes,file_name from dba_data_files;

//修改文件大小语句如下

alter database datafile'需要增加的数据文件路径,即上面查询出来的路径'resize 800M;

五、desc常用查询文章来源地址https://www.toymoban.com/news/detail-405176.html

 desc dba_temp_files; 查询临时表空间
 
 desc v$database; 查看数据库
 
 desc dba_data_files; 查看数据文件
 
 desc user_segments; 查看oracle segment(段)
 
 desc dba_segments; 查看ORACLE segment
 
 desc dba_tables; 查看表
 desc dba_objects 查看对象
 desc dba_users; 查看用户
 desc dba_tablespaces; 查看表空间
 
 desc user_segments; 查看数据段
 
 desc dba_jobs; 查看job
 
 desc dba_role_privs; 查看角色权限
 
 desc dba_constraints 查看约束
 
 desc dba_cons_columns 查看列约束
 
 show parameter log_archive_dest; 查看archive log所在位置
 
 archive log list; 查看归档目录以及log sequence
 
select * from V$FLASH_RECOVERY_AREA_USAGE; 查看flash_recovery_area 使用情况。
 
select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 计算flash_recovery_area已经占用的空间。
 
show parameter recover; 查找recovery目录
 
desc v$process 通过v$process视图,我们获的是当前系统中所有进程信息,包括“后台进程”,也包括“服务器进程”。select addr, program from v$process;

desc v$bgprocess 通过v$bgprocess视图,我们获得当前系统中启动的Oracle“后台进程”信息。select paddr, name from v$bgprocess where paddr<>'00';
 
通过v$bgprocess.paddr与v$process.addr关联起来的,关联后查询结果显而易见只会有Oracle“后台进程”的信息
 select a.paddr, a.name, a.description from v$bgprocess a, v$process b where a.paddr=b.addr;

到了这里,关于Linux系统下操作Oracle数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Linux操作系统中的MySQL数据库操作(三十)

    MySQL数据库安装 目录 一、概述 (一)什么是数据库 (二)数据库能干什么     1、企业应用     2、金融行业     3、电子商务     4、社交媒体     5、物联网 (三)为什么要用数据库,优势、特性?     1、可靠性和稳定性     2、数据管理能力     3、数据共享和集成  

    2024年02月15日
    浏览(44)
  • 用SQL语句操作Oracle数据库——数据更新

    数据库中的数据更新操作有3种:1)向表中添加若干行数据(增);2)删除表中的若干行数据(删);3)修改表中的数据(改)。对于这3种操作,SQL语言中有3种相应的语句与之对应。接下来让我们逐一详细地了解一下。 本文我们依然使用以下三个表来进行数据更新操作:

    2024年01月19日
    浏览(53)
  • Python优雅地操作Oracle数据库

    方案一: 直接套用脚本,需可以看懂一些脚本逻辑 改代码中 类名为 OracleConnector,它可以同时连接多个 Oracle 数据库,并提供执行增删改查操作的方法。 以下是代码解释: 这个封装类使得可以同时连接多个 Oracle 数据库,并在它们上执行增删改查操作。而在执行非查询操作时

    2024年02月03日
    浏览(27)
  • C# Dapper 操作Oracle数据库

    nuget安装内容   1.配置连接字符串 OracleConnectionString这个可用  2.读取配置文件类 3.Dapper数据库操作类  4.操作数据实例 

    2024年02月10日
    浏览(28)
  • Oracle rac环境的数据库导入操作记录

    搞某一大项目的性能测试,将Oracle数据库dmp文件(211G)导入性能测试环境。 因为Oracle部署方式为rac,数据存储到共享磁盘。但由于对rac了解不足,这个过程中犯了两个错误: ① 表空间、临时表空间没有创建到共享磁盘,而是创建到了数据库服务本地磁盘; ② 发现应该创建

    2024年02月08日
    浏览(32)
  • Oracle/PL/SQL数据库基础操作(持续更新)

            PL/SQL不是一个独立的编程语言;它是Oracle编程环境中的工具。 SQL* Plus是一个互动的工具,它可以在命令提示符下键入SQL和PL/SQL语句。这些命令发送到数据库进行处理。语句处理之后将结果发回,并在屏幕上显示出来。 分类 命令 DDL create:创建;drop:删除;alter:

    2024年02月09日
    浏览(41)
  • Linux下oracle数据库启动

    1.登录到Linux服务器(ssh) 2.切换到oracle用户权限 (命令是: # su –l oracle ) 3.进入sqlplus界面(命令是:$ sqlplus /nolog 或 sqlplus / as sysdba) 原本的画面会变为 SQL 接着请输入 SQLconn / as sysdba ; 输入 SQL startup (作用:启动数据库实例) 另外停止数据库的指令如下: SQL shutdown immediate 回到

    2024年02月10日
    浏览(31)
  • 基于Linux操作系统中的MySQL数据库SQL语句(三十一)

    MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入  4、删除 5、更改 6、练习 三、数据表操作 (一)数据类型 1、数值类型 1.1、TINYINT 1.2、SMALLINT 1.3、INT 1.4、BIGINT 1.5、FLOAT(M,D) 2、时间

    2024年02月15日
    浏览(47)
  • Linux环境下重启Oracle数据库

    Linux环境下重启Oracle数据库 1、Linux下以Oracle帐户进入Linux系统。 2、执行以下命令查看数据库监听器的状况: 3、执行以下命令停止数据库监听器运行: 4、杀掉所有session,命令: 5、执行以下命令进入SQLPlus: 6、执行以下命令退出SQLPlus: 7、启动,查看数据库监听器: 8、启动

    2024年02月03日
    浏览(38)
  • linux 下Oracle数据库的连接方式

    在连接到Linux终端后,输入命令“sqlplus / as sysdba”,点击回车,即可登录Oracle数据库。 看下sqlplus的详细介绍先: 用法1: sqlplus-H |-V -H显示SQL*Plus版本和使用帮助。 -V显示SQL*Plus版本。 用法2: 用法2:sqlplus[[option][{logon|/nolog}][start]] option含义是:[-AC][-C版本][-L][-M“options”][-NOLO

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包