اجرای دیتابیس در محیط داکر می تواند مزایای متعددی را به همراه داشته باشد، که به عنوان نمونه می توان به “سادگی و افزایش سرعت در نصب و راه اندازی”، “اجرای نسخه های متعدد در یک هاست” و یا “اجرای دیتابیس در سیستم عاملهایی که امکان نصب مستقیم دیتابیس بر روی آنها وجود ندارد”، اشاره کرد.
در این مستند قصد داریم با گرفتن image از Oracle Container Registry، دیتابیس اوراکل را در محیط داکر اجرا کنیم برای این کار ابتدا باید در سایت oracle.com امور مقدماتی نظیر ایجاد اکانت را انجام دهیم و با توجه به انکه این متن بیشتر برای افرادی که با دیتابیس اوراکل آشنا نیستند، نوشته شده است، تمامی مراحل را با جزییات شرح داده ایم.
ساخت اکانت در oracle.com
در قدم اول اگر اکانتی در سایت اوراکل ندارید، با رفتن به آدرس زیر، این اکانت را ایجاد کنید:
https://profile.oracle.com/myprofile/account/create-account.jspx
لاگین به Oracle Container Registry
پس از ایجاد اکانت، برای گرفتن image باید به Oracle Container Registry رفته و در صفحهOracle Standard Terms and Restrictions””، License Agreement … مربوط به enterprise edition را accept کنیم:
https://container-registry.oracle.com/
بعد از انجام گامهای فوق، با اجرای دستور زیر به Oracle Container Registry لاگین می کنیم:
[root@OEL8 ~]# docker login container-registry.oracle.com Username: vahidusefzadeh@gmail.com Password: Login Succeeded
توجه! اگر مراحل قبلی به خوبی انجام نشود، ممکن است با خطای زیر مواجه شویم:
[root@OEL8 ~]# docker pull container-registry.oracle.com/database/enterprise:latest Trying to pull repository container-registry.oracle.com/database/enterprise ... repository container-registry.oracle.com/database/enterprise not found: does not exist or no pull access
دانلود image از Oracle Container Registry
بعد از لاگین به Oracle Container Registry، همه چیز برای اجرای دستور Docker pull و گرفتن image اوراکل 21c فراهم شده است. با اجرای دستور زیر، این image را دانلود می کنیم:
[root@OEL8 ~]# docker pull container-registry.oracle.com/database/enterprise:latest
Trying to pull repository container-registry.oracle.com/database/enterprise ... latest: Pulling from container-registry.oracle.com/database/enterprise 401a42e1eb4f: Pulling fs layer a13a3f09d2fa: Pulling fs layer a55a58a3063b: Pulling fs layer d6422a9150b2: Pulling fs layer 3f5226c779db: Pulling fs layer 66207182418e: Pull complete 4f4fb700ef54: Pull complete 6301a5016e85: Pull complete 2128b7461b3d: Pull complete 230583c9b6af: Pull complete 03a70c5def3e: Pull complete b0c50ef7f6ce: Pull complete ad5d40d1ad41: Pull complete 1df8da7ded44: Pull complete 8468eaae030d: Pull complete f6a297cf3e35: Pull complete d2cf778aef3c: Pull complete 7fc2e6378f82: Pull complete d75364e69c1f: Pull complete ab367856c5a4: Pull complete c7a06d3cf4b4: Pull complete ecf69af16abc: Pull complete 6d7250093d8c: Pull complete abdc267d415e: Pull complete 6901acfc36f9: Pull complete 626ae36f0ce1: Pull complete Digest: sha256:bcd69bfc2ef9ca3bd951c7003313727a6f5681eddb04ba0217ff7e5549e68aa6 Status: Downloaded newer image for container-registry.oracle.com/database/enterprise:latest
توجه: در نظر داشته باشید که فضای کافی بر روی ماشین مجازی موجود باشد در غیر این صورت با خطای no space left on device مواجه خواهیم شد:
failed to register layer: Error processing tar file(exit status 1): write /opt/oracle/product/21c/dbhome_1/python/lib/python3.9/site-packages/pandas/_libs/tslibs/timedeltas.cpython-39-x86_64-linux-gnu.so: no space left on device
بعد از کامل شدن فرایند pull، در لیست imageها، image مربوط به دیتابیس اوراکل را خواهیم دید:
[root@OEL8 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE container-registry.oracle.com/database/enterprise latest 085b78f09b56 3 months ago 8.15 GB
اجرای container
قصد داریم containerای را با نام db21c اجرا کنیم برای این کار، به 2GB فضای RAM و 21GB فضای دیسک نیاز است. دستور زیر می تواند دیتابیسی را با تنظیمات پیش فرض ایجاد کند. البته در ادامه همین متن، به custom کردن قسمت های مختلف آن خواهیم پرداخت.
[root@OEL8 ~]# docker volume create OracleVOL OracleVOL
[root@OEL8 ~]# docker run --name db21c -p 1521:1521 -v OracleVOL:/opt/oracle/oradata container-registry.oracle.com/database/enterprise:latest
[2022:09:08 19:11:53]: Acquiring lock .ORCLCDB.create_lck with heartbeat 30 secs [2022:09:08 19:11:53]: Lock acquired [2022:09:08 19:11:53]: Starting heartbeat [2022:09:08 19:11:53]: Lock held .ORCLCDB.create_lck ORACLE EDITION: ENTERPRISE LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 08-SEP-2022 19:11:53 Copyright (c) 1991, 2021, Oracle. All rights reserved. Starting /opt/oracle/product/21c/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 21.0.0.0.0 - Production System parameter file is /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/3c9e72f28e21/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 21.0.0.0.0 - Production Start Date 08-SEP-2022 19:11:53 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/3c9e72f28e21/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) The listener supports no services The command completed successfully Prepare for db operation 8% complete Copying database files 31% complete Creating and starting Oracle instance 32% complete 36% complete 40% complete 43% complete 46% complete Completing Database Creation 51% complete 54% complete Creating Pluggable Databases 58% complete 77% complete Executing Post Configuration Actions 100% complete Database creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/ORCLCDB. Database Information: Global Database Name:ORCLCDB System Identifier(SID):ORCLCDB Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details. SQL*Plus: Release 21.0.0.0.0 - Production on Thu Sep 8 19:20:55 2022 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> System altered. SQL> System altered. SQL> Pluggable database altered. SQL> PL/SQL procedure successfully completed. SQL> SQL> Session altered. SQL> User created. SQL> Grant succeeded. SQL> Grant succeeded. SQL> Grant succeeded. SQL> User altered. SQL> SQL> Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 The Oracle base remains unchanged with value /opt/oracle Executing user defined scripts /opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/savePatchSummary.sh /opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/swapLocks.sh [2022:09:08 19:20:59]: Releasing lock .ORCLCDB.create_lck [2022:09:08 19:20:59]: Lock released .ORCLCDB.create_lck [2022:09:08 19:20:59]: Acquiring lock .ORCLCDB.exist_lck with heartbeat 30 secs [2022:09:08 19:20:59]: Lock acquired [2022:09:08 19:20:59]: Starting heartbeat [2022:09:08 19:20:59]: Lock held .ORCLCDB.exist_lck DONE: Executing user defined scripts The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### Executing user defined scripts /opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/startup/runDatapatch.sh Datafiles are already patched. Skipping datapatch run. DONE: Executing user defined scripts The following output is now a tail of the alert.log: ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS" ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS" 2022-09-08T19:20:55.490781+00:00 ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE; 2022-09-08T19:20:55.523215+00:00 ALTER SYSTEM SET local_listener='' SCOPE=BOTH; ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
بعد از اتمام اجرای دستور فوق، با دستور زیر خواهیم دید که db21c در وضعیت healthy در حال اجرا است:
[root@OEL8 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c9e72f28e21 container-registry.oracle.com/database/enterprise:latest "/bin/sh -c 'exec ..." 11 minutes ago Up 11 minutes (healthy) db21c
البته با توجه به انکه از سوییچ detach در زمان اجرای container استفاده نکردیم، با بستن session مربوطه، Container هم از حالت اجرا خارج خواهد شد. در این صورت برای اجرای مجدد این Container می توانیم از دستور زیر استفاده کنیم.
[root@OEL8 ~]# docker container start db21c db21c
برای مشاهده پشت صحنه اجرای این دستور، می توان از دستور logs استفاده کرد در انتهای اجرای دستور logs، اطلاعاتی از alert log نمایش داده می شود. با کمک سوییچ f، به صورت انلاین محتویات alert log را پایش می کنیم.
[root@OEL8 ~]# docker container logs -f db21c
The following output is now a tail of the alert.log: CJQ0 started with pid=57, OS id=311 Completed: alter database open alter pluggable database all open Completed: alter pluggable database all open 2022-09-08T19:29:19.876187+00:00 =========================================================== Dumping current patch information =========================================================== No patches have been applied =========================================================== 2022-09-08T19:29:21.581600+00:00 ORCLPDB1(3):Resize operation completed for file# 10, fname /opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf, old size 337920K, new size 358400K
اتصال به دیتابیس ایجاد شده
همانطور که مشاهده کردید دیتابیس با تنظیمات پیش فرض در کانیتنر db21c ایجاد شده است و صرفا از طریق سوییچ -p، پورت 1521 را به بیرون expose کردیم تا بتوانیم خارج از host به این پورت دسترسی داشته باشیم.
بنابرین برای اتصال به دیتابیس ایجاد شده، باید نام دیتابیس یا به طور دقیق تر service_name دیتابیس ایجاد شده را مشخص کنیم. برای این کار نیاز داریم به صورت interactive به container مورد نظر وصل شویم.
[root@OEL8 ~]# docker container exec -it db21c /bin/bash
bash-4.2$ sqlplus "/as sysdba" SQL*Plus: Release 21.0.0.0.0 - Production on Thu Sep 8 19:44:15 2022 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO
همانطور که می بینید، PDB با نام ORCLPDB1 ایجاد شده است و به تبع آن، service nameای هم با همین نام ایجاد خواهد شد. قبل از اتصال به این دیتابیس، کاربری را در محیط ORCLPDB1 ایجاد می کنیم:
bash-4.2$ sqlplus "/as sysdba" SQL> alter session set container=ORCLPDB1; Session altered. SQL> create user usef identified by a; User created. SQL> grant dba to usef; Grant succeeded.
برای اتصال به دیتابیس(خارج از هاست)، از ابزار plsql deveopler استفاده کرده ایم:
ایجاد دیتابیس به صورت custom
در بستر docker می توان دیتابیس اوراکل را به صورت سفارشی ایجاد کرد مثلا می توان نام دیتابیس، نوع CHARACTERSET، میزان حافظه مصرفی و … را به مقداری دلخواه تنظیم کرد. این کار از طریق متغیرهای محیطی زیر قابل انجام است:
docker run -d --name <container_name> \ -p <host_port>:1521 -p <host_port>:5500 \ -e ORACLE_SID=<your_SID> \ -e ORACLE_PDB=<your_PDBname> \ -e ORACLE_PWD=<your_database_password> \ -e INIT_SGA_SIZE=<your_database_SGA_memory_MB> \ -e INIT_PGA_SIZE=<your_database_PGA_memory_MB> \ -e ORACLE_EDITION=<your_database_edition> \ -e ORACLE_CHARACTERSET=<your_character_set> \ -e ENABLE_ARCHIVELOG=true \ -v [<host_mount_point>:]/opt/oracle/oradata \ container-registry.oracle.com/database/enterprise:21.3.0.0
برای دوستانی که با دیتابیس اوراکل آشنایی ندارند، کاربرد هر کدام از این متغیرهای محیطی را شرح داده ایم:
ORACLE_SID: نام instance
ORACLE_PDB: نام دیتابیسی که قرار است اطلاعات application در ان ذخیره شود. ما به ازای این نام، service nameای هم ایجاد می شود که برای اتصال به این PDB می توانیم از ان استفاده کنیم.
ORACLE_PWD: پسورد کاربر sys و system که دسترسی بسیار بالایی دارند.
INIT_SGA_SIZE: میزان فضایی که برای shared memory در نظر گرفته می شود. این مقدار به صورت اختصاصی به instance تعلق خواهد گرفت.
INIT_PGA_SIZE:فضای اختضاصی به PGA
ORACLE_CHARACTERSET: کاراکترست مورد نظر را با این متغیر محیطی تنظیم می کنیم.
ENABLE_ARCHIVELOG: دیتابیس در حالت آرشیولاگ قرار بگیرد(مناسب برای بکاپ گیری از طریق RMAN)؟
ORACLE_EDITION:اوراکل به صورت enterprise نصب شود یا به صورت standard ؟ نسخه enterprise که مقدار پیش فرض است، هزینه و قابلیتهای بیشتری دارد(البته برای خارج از ایران!).
*سوییچ v برای تعریف volume استفاده می شود.
بعد از آشنایی با پارامترهای فوق، به صورت custom دیتابیسی را در این محیط ایجاد می کنیم.
[root@OEL8 ~]# docker container run -d --name OracleDatabase21c \ > -p 1521:1521 -p 5500:5500 \ > -e ORACLE_SID=IRANDB \ > -e ORACLE_PDB=TehranDB \ > -e ORACLE_PWD=KArbar__1401 \ > -e INIT_SGA_SIZE=2048MB \ > -e INIT_PGA_SIZE=500MB \ > -e ORACLE_EDITION=enterprise \ > -e ORACLE_CHARACTERSET=AL32UTF8 \ > -e ENABLE_ARCHIVELOG=true \ > -v OracleVOL:/opt/oracle/oradata \ > container-registry.oracle.com/database/enterprise:latest
9938c1f4c5ffa06a891bf3925a33be57ab4368161a8b152083fed7e27d478c36
با توجه به volume استفاده شده، فایلهای این دیتابیس در مسیر زیر ایجاد شده است:
[root@OEL8 _data]# docker volume inspect --format '{{.Mountpoint}}' OracleVOL /var/lib/docker/volumes/OracleVOL/_data
[root@OEL8 ~]# cd /var/lib/docker/volumes/OracleVOL/_data [root@OEL8 _data]# ls -l drwxr-xr-x. 3 54321 54321 20 Sep 16 20:22 dbconfig drwxr-x---. 5 54321 54321 251 Sep 16 20:16 IRANDB
[root@OEL8 _data]# ls -l dbconfig/IRANDB/ -rw-r--r--. 1 54321 54321 114 Sep 16 20:22 IRANDB.lspatches -rw-r--r--. 1 54321 54321 234 Sep 16 20:14 listener.ora -rw-r-----. 1 54321 54321 2048 Sep 16 20:16 orapwIRANDB -rw-r--r--. 1 54321 54321 779 Sep 16 20:22 oratab -rw-r-----. 1 54321 54322 3584 Sep 16 20:22 spfileIRANDB.ora -rw-r--r--. 1 54321 54321 54 Sep 16 20:14 sqlnet.ora -rw-r-----. 1 54321 54321 195 Sep 16 20:22 tnsnames.ora
[root@OEL8 _data]# ls -l IRANDB drwxr-x---. 2 54321 54321 32 Sep 16 20:22 archive_logs -rw-r-----. 1 54321 54322 18726912 Sep 16 20:30 control01.ctl -rw-r-----. 1 54321 54322 18726912 Sep 16 20:30 control02.ctl drwxr-x---. 2 54321 54321 111 Sep 16 20:17 pdbseed -rw-r-----. 1 54321 54322 209715712 Sep 16 20:22 redo01.log -rw-r-----. 1 54321 54322 209715712 Sep 16 20:22 redo02.log -rw-r-----. 1 54321 54322 209715712 Sep 16 20:30 redo03.log -rw-r-----. 1 54321 54322 608182272 Sep 16 20:28 sysaux01.dbf -rw-r-----. 1 54321 54322 1394614272 Sep 16 20:27 system01.dbf drwxr-x---. 2 54321 54321 104 Sep 16 20:22 TEHRANDB -rw-r-----. 1 54321 54322 248520704 Sep 16 20:19 temp01.dbf -rw-r-----. 1 54321 54322 125837312 Sep 16 20:27 undotbs01.dbf -rw-r-----. 1 54321 54322 5251072 Sep 16 20:27 users01.dbf
با اتصال به این container، مشخصات دیتابیس را بررسی می کنیم:
[root@OEL8 ~]# docker container exec -it OracleDatabase21c /bin/bash
bash-4.2$ echo $ORACLE_SID IRANDB
bash-4.2$ sqlplus "/as sysdba" SQL*Plus: Release 21.0.0.0.0 - Production on Fri Sep 9 20:36:16 2022 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: SQL> show parameter instance_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ instance_name string IRANDB SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEHRANDB READ WRITE NO
SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ allow_group_access_to_sga boolean FALSE lock_sga boolean FALSE pre_page_sga boolean TRUE sga_max_size big integer 2G sga_min_size big integer 0 sga_target big integer 2G SQL> show parameter pga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_limit big integer 2G pga_aggregate_target big integer 500M
SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/oradata/IRANDB/archive_logs Oldest online log sequence 1 Next log sequence to archive 3 Current log sequence 3
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /opt/oracle/oradata/IRANDB/system01.dbf /opt/oracle/oradata/IRANDB/sysaux01.dbf /opt/oracle/oradata/IRANDB/undotbs01.dbf /opt/oracle/oradata/IRANDB/pdbseed/system01.dbf /opt/oracle/oradata/IRANDB/pdbseed/sysaux01.dbf /opt/oracle/oradata/IRANDB/users01.dbf /opt/oracle/oradata/IRANDB/pdbseed/undotbs01.dbf /opt/oracle/oradata/IRANDB/TEHRANDB/system01.dbf /opt/oracle/oradata/IRANDB/TEHRANDB/sysaux01.dbf /opt/oracle/oradata/IRANDB/TEHRANDB/undotbs01.dbf /opt/oracle/oradata/IRANDB/TEHRANDB/users01.dbf
bash-4.2$ sqlplus "sys/KArbar__1401@172.17.0.2:1521/tehrandb as sysdba" SQL*Plus: Release 21.0.0.0.0 - Production on Fri Sep 9 20:40:48 2022 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. SQL>
سلام وقت بخیر ممنون از آموزش خوبتون من یه مشکلی دارم در دانلود ایمیج اوراکل و نمیتونم دانلود کنم آیا شما از شکن استفاده میکنید یا روشی دیگری برای دانلود ایمیج دارید ممنون میشم بگید چطوری میتونم ایمیج رو دانلود کنم
سلام وقت شما هم بخیر
با شکن میتونید دانلود کنید.
سلام وقت بخیر مهندس . اقای مهندس من از دنبال کنندگان همیشگیه شما هستم . یه مشکلی دارم امیدوارم حل بشه . من زمانی ک میخوام از امکس ریکویست با post بفرستم سمت سایتی با ارور زیر مواجه میشم :
network access denied by access control list (ACL)
کدهایی ک اجرا میکنم :
create or replace function ws_pedpo(req_data in out json_object_t)
return json_object_t
as
res_text clob;
req utl_http.req;
res utl_http.resp;
url varchar2(4000) := ‘https://*******/api/concactus/concactus’;
— name varchar2(4000);
buffer varchar2(4000);
content clob;
Salt_num varchar2(50) ;
HashedValue varchar2(200) ;
begin
— myHashvalue(Salt_num ,HashedValue);
— req_data.put(‘CompanyCode’ , get_code_company);
— req_data.put(‘Salt’ , Salt_num);
— req_data.put(‘HashedValue’ , HashedValue);
content := req_data.to_string;
req := utl_http.begin_request(url, ‘POST’,’ HTTP/1.1′);
— utl_http.set_header(req, ‘user-agent’, ‘mozilla/4.0’);
utl_http.set_header(req, ‘content-type’, ‘application/json’);
— utl_http.set_header(req, ‘Content-Length’, length(content));
utl_http.write_text(req, content);
res := utl_http.get_response(req);
begin
loop
utl_http.read_line(res, buffer);
dbms_output.put_line(buffer);
res_text := res_text || buffer;
end loop;
utl_http.end_response(res);
exception
when utl_http.end_of_body then
utl_http.end_response(res);
end;
return json_object_t.parse(res_text);
end;
/
و
declare
data_res json_object_t;
json_data json_object_t;
begin
json_data:= new json_object_t;
json_data.put(‘Title’ ,’title’);
json_data.put(‘Description’ ,’description’);
json_data.put(‘Name’ ,’name’);
json_data.put(‘Email’ ,’email’);
data_res := ws_pedpo(json_data);
dbms_output.put_line(data_res.to_string);
end;
/
راه حلی ک واسه رفع مشکل میرم ولی بازم مشکل رفع نشد :
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE
(
HOST => ‘www.******.ir’,
LOWER_PORT => NULL,
UPPER_PORT => NULL,
ACE => XS$ACE_TYPE(PRIVILEGE_LIST => xs$name_list(‘http’,’smtp’,’resolve’,’connect’),
PRINCIPAL_NAME => ‘sys’,
PRINCIPAL_TYPE => xs_acl.ptype_db
)
);
END;
/
ممنون میشم راهنمایی کنین
ببخشید توی پست قبلی باید اپکس مینوشتم ک به اشتباه اپکس نوشتم .
من از اپکس ک ریکویست میفرستم با ارور مواجه میشم . برای رفع ارور از کد ذکر شده در اخر پست قبلی در اورکل اجرا میگیرم
سلام ممنون از آموزش خوبتون من یه مشکلی دارم ، برای oracle 19.3c ورژن enterprise edition وقتی Mount دیتارو persist نمیشه