Oracle使用管理命令记录

Oracle使用记录

  • Oracle开启PDB模式
  • 创建表空间
    • 创建用户并指向表空间
    • 用户授权
    • remove回收权限
    • 导入
    • 删除表空间,含物理文件
    • Oracle 如何删除表空间
    • 修改对应的表空间和临时表空间
    • 删除用户
    • 常用权限
  • LINUX服务器重启Oracle数据库命令
    • 重启Oracle数据库
  • oracle怎样查看表空间
  • 编码问题
  • 查询权限分配情况
  • 高级子查询
  • 查看当前数据库连接的用户:
  • 用户的切换:
  • 单行函数:
  • 修改表名
  • 复制表数据
    • 1.表结构一样
    • 2.表结构不一样
    • 复制表结构和表数据
  • 常用命令记录

Oracle开启PDB模式

由于环境更新,Oracle版本换成19C,并开启了PDB模式。

使用平常启动数据库和监听方式启动数据库,显示都已成功,但是去连接数据库,报错报数据库未启动

解决方式:

sqlplus / as sysdba;–管理员登录

select con_id,name,open_mode from V$pdbs;

–查看pdb的状态 --发现服务orclpdb,处于mounted状态

解决办法:

alter pluggable database orclpdb open; --名称orclpdb

alter session set container=orclpdb;

创建表空间

create tablespace 表空间名 logging datafile 'D:\表空间名.dbf' size 1024m autoextend on next 50m maxsize unlimited extent management local;

创建用户并指向表空间

create user 用户名 identified by 口令 default tablespace 表空间名;

用户授权

角色权限:
DBA:用户具有数据库所有的权限。

connect:用户具有连接数据库的权限,用户只能登录Oracle,不可以创建实体、不可以创建数据库结构。

resource:用户可以创建实体,但是不可以创建数据库结构。

grant connect,resource,dba to 用户名;

对象权限 : 指的是其他拥有用户的对象的权限。
包括:select、delete、update、alter、insert、index、references、flashback、query、rewrite、on
commit refresh;(注意其他用户的权限没有drop权限!)

 //授权用户chenmh用户zhang下person表的select、delete、update、insert权限(增删改查),授予具体地对象权限是对于权限严格控制的一种方案。
grant select,delete,update,inster on zhang.person to chenmh;

//授予用户chenmh用户zhang下person表的所有权限

grant all privileges on zhang.person to chenmh;

remove回收权限

1、回收角色权限
remove connect,resource from chenmh;

2、回收系统权限
remove creat from chenmh;

3、回收用户对象权限,回收zhang用户下person表的所有权限,如果是单个授予的权限需要单个的收回
remove all privileges on zhang.person from chenmh;

导入

imp 用户名/口令@数据库 file=文件路径\文件 full=y;

> 例如: 
imp root/root file=D:\2022.dmp full=y ignore=y

删除表空间,含物理文件

drop tablespace 表空间名称 including contents and datafiles cascade constraint;

Oracle 如何删除表空间

1、删除无任何数据对象的表空间:

用drop tablespace xxx ,删除需要删除的表空间。

2、删除有任何数据对象的表空间

使用drop tablespace xxx including contents and datafiles;

修改对应的表空间和临时表空间

Alter user 用户 default tablespace 表空间; 
Alter user 用户 temporary tablespace 临时表空间; 

删除用户

drop user 用户 CASCADE;

常用权限

角色:

  connect  

  resource

  dba

  CONNECT角色: --是授予最终用户的典型权利,最基本的权力,能够连接到ORACLE数据库中,并在对其他用户的表有访问权限时,做SELECT、UPDATE、INSERTT等操作。
        ALTER SESSION --修改会话
        CREATE CLUSTER --建立聚簇
        CREATE DATABASE LINK --建立数据库链接
        CREATE SEQUENCE --建立序列
        CREATE SESSION --建立会话
        CREATE SYNONYM --建立同义词
        CREATE VIEW --建立视图

   RESOURCE角色: --是授予开发人员的,能在自己的方案中创建表、序列、视图等。
      CREATE CLUSTER --建立聚簇
      CREATE PROCEDURE --建立过程
      CREATE SEQUENCE --建立序列
      CREATE TABLE --建表
      CREATE TRIGGER --建立触发器
      CREATE TYPE --建立类型
      
DBA角色,是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限


四,授予权限

  1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限

  

  grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限,允许用户登录数据库

  grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

  grant create table to zhangsan;//授予创建表的权限

  grante drop table to zhangsan;//授予删除表的权限

  grant insert table to zhangsan;//插入表的权限

  grant update table to zhangsan;//修改表的权限

  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

  2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

  

  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

  grant drop on tablename to zhangsan;//授予删除表的权限

  grant insert on tablename to zhangsan;//授予插入的权限

  grant update on tablename to zhangsan;//授予修改表的权限

  grant insert(id) on tablename to zhangsan;

  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限


 五、撤销权限

  基本语法同grant,关键字为revoke

  六、查看权限

  select * from user_sys_privs;//查看当前用户所有权限

  select * from user_tab_privs;//查看所用用户对表的权限



  九、角色

  角色即权限的集合,可以把一个角色授予给用户

  create role myrole;//创建角色

  grant create session to myrole;//将创建session的权限授予myrole

  grant myrole to zhangsan;//授予zhangsan用户myrole的角色

  drop role myrole;删除角色
  sys;//系统管理员,拥有最高权限

  system;//本地管理员,次高权限

  scott;//普通用户,密码默认为tiger,默认未解锁

  oracle有三个默认的用户名和密码~
  1.用户名:sys密码:change_on_install
  2.用户名:system密码:manager
  3.用户名:scott密码:tiger

LINUX服务器重启Oracle数据库命令

---关闭数据库的命令:

用oracle用户名和密码登录Oracle数据库后,

su  -oracle     ---切换成oracle用户登录;

sqlplus  /nolog  ---切换至sqlplus控制台;

conn   /as  sysdba    ---以管理员的身份登录

show  parameter  db_recovery_file_dest      ---查看数据库中的文件,可以继续执行就不重启数据库,如果无法显示可以重启数据库;

shutdown  immediate   ---立即关闭数据库;

exit     ---推出sqlplus控制台;

-------关闭数据库后需要重启数据库的操作命令:

用oracle用户名和密码登录Oracle数据库后,

sqlplus  /nolog     ----切换到sqlplus控制台;

conn   / as  sysdba     ---以管理员的身份登录

startup   mount;

alter database   open;    -----启动Oracle数据库实例

show   parameter   db_recovery_file_dest      ----重启后继续查看数据库中的文件;

exit    -----使用完成退出

重启Oracle数据库

1、 以oracle身份登录数据库,命令:su - oracle
2、 进入Sqlplus控制台,命令:sqlplus /nolog
3、 以系统管理员登录,命令:connect / as sysdba
  可以合并为:sqlplus sys/密码 as sysdba
4、 启动数据库,命令:startup
5、 如果是关闭数据库,命令:shutdown immediate(shutdown abort)
6、 退出sqlplus控制台,命令:exit
7、 进入监听器控制台,命令:lsnrctl
8、 停掉监听器       命令:stop 
9、 启动监听器       命令:start
10、退出监听器控制台,命令:exit
11、重启数据库结束
12、查看数据库监听的状态    lsnrctl status

oracle怎样查看表空间

如果要查看当前用户使用的表空间情况,使用如下命令:
select * from user_users

如果要查看oracle下面所有的表空间,使用如下命令:
select * from Dba_Tablespaces

编码问题

select userenv(‘language’) from dual;

服务器gbk编码: AMERICAN_AMERICA.ZHS16GBK
服务器utf8编码: AMERICAN_AMERICA.AL32UTF8

–修改当前会话日期语言为中文
alter session set nls_language=‘SIMPLIFIED CHINESE’;
–修改后可以成功执行
SELECT TO_DATE(‘21-5月-2021’) FROM dual;

–修改会话日期语言为英文
ALTER SESSION SET nls_date_language=‘AMERICAN’;
–修改后可以成功执行
SELECT TO_DATE(‘21-MAY-2021’) FROM dual;

查询权限分配情况

role_sys_privs : 角色拥有的系统权限
role_tab_privs : 角色拥有的对象权限
user_role_privs : 用户拥有的角色
user_tab_privs_made : 用户分配的关于表对象权限
user_tab_privs_recd : 用户拥有的关于表对象权限
user_col_privs_made : 用户分配的关于列的对象权限
user_col_privs_recd : 用户拥有的关于列的对象权限
user_sys_privs : 用户拥有的系统权限

create user : 创建用户
grant : 分配权限
create role : 创建角色
alter user : 修改用户密码
revoke : 收回权限

高级子查询

多列子查询

select name,uid,fid from user
where (uid,fid)in(select uid,fid from user where status=1);

with子句
with子句将该子句中的语句执行一次并存储到用户的临时表空间中

with number as (select iphone from user where name ='baby')
select name from user where iphone = number;

查看当前数据库连接的用户:

show user

用户的切换:

conn 用户名/密码 [as sysdba ]

单行函数:


> 把小写的字符转换成大写的字符:

select upper('ccc') from dual

> 把大写的字符转换成小写的字符:

select lower ('ccc') from dual

> 把首字母大写:

select initcap ('ccc') from dual

> 字符串的可以使用concat:

select concat('hello','world') from dual

> 字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数是结束的索引,开始的索引使用1和0效果相同:

select substr('hello',1,3) from dual

> 获取字符串的长度:

select length('ccc') from dual

> 字符串替换:第一个参数是源字符,第二个参数被替换的字符,第三个是替换字符串:

select replace('hello','l','x') from dual

修改表名

1.alter table 旧表名 rename to 新表名
2.rename 旧表名 to 新表名

复制表数据

1.表结构一样

insert into 新表名 select * from 旧表名

2.表结构不一样

insert into 新表名(column1,column2...) select (column1,column2...) from 旧表名

复制表结构和表数据

create table 新表名 as select * from 旧表名

常用命令记录

连接Oracle数据库的SQLPLUS命令

sqlplus /nolog

输入用户名和密码

connect username/password@database_name
  1. IMPDP
    IMPDP是Oracle数据库中一个非常强大的工具。它可用于将数据从一个数据库导入到另一个数据库。以下是IMPDP命令的一些示例:
-- 导入table1表的数据
impdp username/password directory=data_pump_dir dumpfile=export.dmp tables=table1

EXPDP
EXPDP是IMPDP工具的互补工具。它可用于将数据从一个数据库导出到另一个数据库。以下是一些EXPDP命令示例:

-- 导出table1表的数据
expdp username/password directory=data_pump_dir dumpfile=export.dmp tables=table1

RMAN
RMAN是Oracle数据库的备份与恢复工具。

--备份数据库
backup database;

--还原数据库:
estore database;

你可能感兴趣的:(sql管理,oracle,数据库,sql)