Oracle18版本数据库操作

发布 : 2021-03-26 分类 : 数据库 浏览 :

Oracle18 常用操作语句

1.连接数据库

1
2
3
4
5
6
7
8
9
10
11
sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on 星期五 3月 26 17:18:05 2021
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle. All rights reserved.


连接到:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

2.开启数据库: startup(现在我们处于cdb中)

1
2
SQL> startup;
ORA-01081: 无法启动已在运行的 ORACLE - 请先将其关闭

3.查看pdbs

1
2
3
4
5
6
SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 XEPDB1 READ WRITE NO

4.切换到pdbsu中 :

1
2
3
SQL> alter session set container=XEPDB1;

会话已更改。

5.查看当前pdb详情。

1
2
3
4
5
SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 XEPDB1 READ WRITE NO

6.创建用户空间

1
create tablespace mySpace logging datafile  'C:\APP\TEST\PRODUCT\18.0.0\ORADATA\XE\XEPDB1\mySpace.DBF' size 4m autoextend on next 4m maxsize 2048m extent management local;

7.创建用户

1
CREATE USER "username" IDENTIFIED BY "password" ACCOUNT UNLOCK DEFAULT TABLESPACE "mySpace" TEMPORARY TABLESPACE "TEMP" PROFILE "DEFAULT";

8.用户授权

1
2
3
4
--dba为最高级权限,可以创建数据库,表等。
grant connect,resource,dba to username;
--session会话权限
grant create session to username;

9.导入数据

1
imp username/password@localhost/XEPDB1 touser=username file="F:\db.dmp" full=y ignore=y statistics=none

兼容低版本

ORA-00904: “WMSYS”.“WM_CONCAT”: 标识符无效

高版本并没有这个函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- 设置实例
export ORACLE_SID=test1

--首先使用dba账号登录oracle数据库
sqlplus / as sysdba

--解锁wmsys用户
alter user wmsys account unlock;

--并为wmsys用户授权,可根据需要授权,不建议授权所有权限
grant all privileges to wmsys;

--如果不知道wmsys用户的密码,可以修改其密码
alter user wmsys identified by 123456;

--查看对应的pdb
show pdbs;
-- 切换到pdb
alter session set container=XEPDB1;

--并为wmsys用户授权,可根据需要授权,不建议授权所有权限
grant all privileges to wmsys;

--使用wmsys用户登录数据库
conn wmsys/123456

-- 切换到pdb,(必须在pdb中创建函数)
alter session set container=XEPDB1;

--在wmsys下创建可用的wm_concat函数,直接执行以下语句
--定义类型
CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
(
CURR_STR VARCHAR2(32767),
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,P1 IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER
);
/

--定义类型body:
CREATE OR REPLACE TYPE BODY WM_CONCAT_IMPL IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER IS
BEGIN
SCTX := WM_CONCAT_IMPL(NULL);
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,P1 IN VARCHAR2) RETURN NUMBER IS
BEGIN
IF (CURR_STR IS NOT NULL) THEN CURR_STR := CURR_STR || ',' || P1; ELSE CURR_STR := P1; END IF;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER) RETURN NUMBER IS
BEGIN
RETURNVALUE := CURR_STR;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS
BEGIN
IF (SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF;
RETURN ODCICONST.SUCCESS;
END;
END;
/
--自定义行变列函数:
CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL;
/

--创建完成,给其创建同义词及授权,以供其他用户能正常使用。
create public synonym WM_CONCAT_IMPL for wmsys.WM_CONCAT_IMPL
/
create public synonym wm_concat for wmsys.wm_concat
/
grant execute on WM_CONCAT_IMPL to public
/
grant execute on wm_concat to public
/
本文作者 : zhouinfo
原文链接 : http://blog.zhouinfo.site/2021/03/26/Oracle18%E7%89%88%E6%9C%AC%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/
版权声明 : 本博客所有文章除特别声明外,均采用 CC Apache License 2.0 许可协议。转载请注明出处!
留下足迹